ARM使⽤C语⾔编程基本规则
在应⽤系统的程序设计中,若所有的编程任务均由汇编语⾔来完成,其⼯作量巨⼤,并且不易移植。由于ARM的程序执⾏速度较⾼,存储器的存储速度和存储量也很⾼,因此,C语⾔的特点充分发挥,使得应⽤程序的开发时间⼤为缩短,代码的移植⼗分⽅便,程序的重复使⽤率提⾼,程序架构清晰易懂,管理较为容易等等。因此,C语⾔的在ARM编程中具有重要地位。
在ARM程序的开发中,需要⼤量读写硬件寄存器,尽量缩短程序的执⾏时间,因此部分初始化代码⼀般使⽤汇编语⾔来编写,⽐如ARM的启动代码,ARM的操作系统的移植代码等,除此之外,绝⼤多数代码可以使⽤C语⾔来完成。
C语⾔使⽤的是标准的C语⾔,ARM的开发环境实际上就是嵌⼊了⼀个C语⾔的集成开发环境,只不过这个开发环境和ARM的硬件紧密相关。
在使⽤C语⾔时, 有时要⽤到和汇编语⾔的混合编程。当汇编代码较为简洁,则可使⽤直接内嵌汇编的⽅法,否则,将汇编程序以⽂件的形式加⼊项⽬当中,通过ATPCS(ARM/Thumb Procedure Call Standard)的规定与C程序相互调⽤与访问。
ATPCS,就是ARM、Thumb的过程调⽤标准,它规定了⼀些⼦程序间调⽤的基本规则。如寄存器的使⽤规则,堆栈的使⽤规则,参数的传递规则等。
在C程序和ARM的汇编程序之间相互调⽤必须遵守ATPCS。⽽使⽤ADS的C语⾔编译器编译的C语⾔⼦程序满⾜⽤户指定的ATPCS的规则。但是,对于汇编语⾔来说,完全要依赖⽤户保证各个⼦程序遵循ATPCS的规则。具体来说,汇编语⾔的⼦程序应满⾜下⾯3个条件: .  在⼦程序编写时,必须遵守相应的ATPCS规则;
.  堆栈的使⽤要遵守相应的ATPCS规则;
.  在汇编编译器中使⽤-atpcs选项。
基本的ATPCS规定,详情请见相关PDF⽂档,简单说明就是:
1. 汇编程序调⽤C程序
.  汇编程序的设置要遵循ATPCS规则,保证程序调⽤时参数正确传递。
.  在汇编程序中使⽤IMPORT伪指令声明将要调⽤的C程序函数。
.  在调⽤C程序时,要正确设置⼊⼝参数,然后使⽤BL调⽤。
2. C程序调⽤汇编程序
.
c语言编译器怎么用?  汇编程序的设置要遵循ATPCS规则,保证程序调⽤时参数正确传递。
.  在汇编程序中使⽤EXPORT伪指令声明本⼦程序,使其他程序可以调⽤此⼦程序。
.  在C语⾔中使⽤extern关键字声明外部函数(声明要调⽤的汇编⼦程序)。
在C语⾔的环境内开发应⽤程序,⼀般需要⼀个汇编的启动程序,从汇编的启动程序,跳到C语⾔下的主程序,然后,执⾏C程序,在C环境下读写硬件的寄存器,⼀般是通过宏调⽤,在每个项⽬⽂件的Startup2410/INC⽬录下都有⼀个2410addr.h的头⽂件,那⾥⾯定义了所有关于2410的硬件寄存器的宏,对宏读写,就能操作2410的硬件,具体的编程规则同标准C语⾔。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。