01 - 裸机开发特点
1.1 - 51 / Arduino / STM等单片机
回顾最简单的51单片机,到方便开发的Arduino,到能迅速成型的STM,在裸机的开发角度而言,表现为存在越来越丰富强大的API,以及编译链接等细节对程序员越来越透明化,可以得出如下特点:
1、方便的IDE,编译套件一条龙服务,一键编译下载运行调试
2、配置寄存器,功能模块化,任务顺序执行
3、程序从main()开始,C/C++语言编程
4、程序只运行在后台(大循环)和前台(中断
5、程序的逻辑设计固定,逻辑比较简单,功能比较单一
6、程序员不需要关心堆栈内存等问题
7、程序员直接使用修饰符就可以使用中断函数
1.2 - ARM单片机
1、不固定的编辑工具,原始的gcc编译链,额外的下载器,调试方法单一
2、配置寄存器,功能模块化,任务顺序执行
3、程序从汇编start.S开始,汇编 / shell / C语言编程
4、程序能运行在若干种模式内,宏观上也分为后台(大循环)和前台(异常)
5、程序的逻辑设计固定,逻辑比较简单,功能比较单一
6、程序员需要设置程序运行的堆栈,管理内存
7、中断需要程序员去配置寄存器、分辨触发位、以及提供中断函数
02 - 总结
对ARM裸机而言,更像是从轮子造起,需要用大量的工作去配置一个能让main()
执行的环境,其实51-STM等强大丰富的IDE比如keil已经替我们完成了前面的工作,所以ARM裸机开发是完完全全反应了一个单片机真实的运行流程
内容 | 51 / Arduino / STM | ARM单片机 |
---|---|---|
编辑 | IDE套件 | 任意文本编辑器 |
编译 | IDE套件 | 原始gcc编译链 |
下载 | IDE套件 | 特定的额外下载器 |
调试 | IDE套件 | 串口 / LCD 等可视化设备 |
编程语言 | 纯C/C++ | 汇编 + shell + C |
程序的开始点 | main() | start.S |
堆栈内存问题 | 不关心 | 需要自定义配置管理 |
中断使用 | 修饰符 | 需要对CPU模式和寄存器操作 |