从 8位或 16位微控制器向 ARM移植软件
与简单的8 位微控制器相比,ARM Cortex-M 微控制器在外设里通常有更多的寄存器。ARM 微控制器
的外设通常功能更多,因此可利用的编程寄存器也更多。但是别担心,ARM 微控制器供应商会提供设备驱
动程序库,只需调用少数几个函数就可以配置外设。
与大多数8 位或16 位架构相比,ARM 微控制器的编程更加灵活。例如,没有硬件堆栈限制,函数可
递归调用(局部变量存储在堆栈而不是静态存储器中),也不用担心特殊寄存器在中断处理程序中的保存问
题,它在中断入口由微控制器进行处理。例如,对MSP430 来说,您可能会在乘法处理过程中禁用中断,
而对于PIC,您可能会在中断处理程序中保存表指针和乘法寄存器。
有个小知识非常实用: 对于一个架构来说,正确使用数据类型非常重要,因为它能使代码长度和性能
产生很大差别,ARM 的微控制器和8 位/16 位微控制器的某些数据类型大小是不一样的。
如果应用程序依赖于数据类型的大小,例如,预计某个整数要在16 位边界溢出,那么,该代码就需
要修改,便于在ARM 微控制器上运行,数据大小差异的另一个影响是数组的大小。例如:
8 位微控制器应用程序对ROM 中的整型数组可定义为: const int mydata = { 1234, 5678, …};
对于ARM 微控制器,为避免不必要地增大,其定义应该改为: const short int mydata = { 1234,
5678, …};
|