基于ARM的C语言程序设计简介
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三基于ARM的C语言程序设计简介
一、实验目的
1.了解ARM C语言的基本框架,学会使用ARM的C语言编程
二、实验内容
1. 用C语言编写一个简单的应用程序
三、实验设备
1. EL-ARM(DSP)-挂箱教学实验箱,PentiumII以上的PC机,仿真器。
2. PC操作系统WIN98或WIN2000或WINXP,ADS1.2集成开发环境,
仿真器驱动程序
四、ARM C语言简介与使用规则
1. ARM使用C语言简介
在应用系统的程序设计中,若所有的编程任务均由汇编语言来完成,其工作量巨大,
并且不宜移植。由于ARM的程序执行速度较高,存储器的存储速度和存储量也很高,因此,C语言的特点充分发挥,使得应用程序的开发时间大为缩短,代码的移植十
分方便,程序的重复使用率提高,程序架构清晰易懂,管理较为容易等等。因此,
C语言的在ARM编程中具有重要地位。
2. ARM C语言程序的基本规则
在ARM程序的开发中,需要大量读写硬件寄存器,并且尽量缩短程序的执行时间的
代码一般使用汇编语言来编写,比如ARM的启动代码,ARM的操作系统的移植代码
等,除此之外,绝大多数代码可以使用C语言来完成。
C语言使用的是标准的C语言,ARM的开发环境实际上就是嵌入了一个C语言的集
成开发环境,只不过这个开发环境和ARM的硬件紧密相关。
在使用C语言时,要用到和汇编语言的混合编程。当汇编代码较为简洁,则可使用
直接内嵌汇编的方法,否则,使用将汇编文件以文件的形式加入项目当中,通过
ATPCS的规定与C程序相互调用与访问。
ATPCS,就是ARM、Thumb的过程调用标准(ARM/Thumb Procedure Call Standard),
它规定了一些子程序间调用的基本规则。如寄存器的使用规则,堆栈的使用规则,
参数的传递规则等。
在C程序和ARM的汇编程序之间相互调用必须遵守ATPCS。而使用ADS的C语言编
译器编译的C语言子程序满足用户指定的ATPCS的规则。但是,对于汇编语言来说,
完全要依赖用户保证各个子程序遵循ATPCS的规则。具体来说,汇编语言的子程序
应满足下面3个条件:
●在子程序编写时,必须遵守相应的ATPCS规则;
●堆栈的使用要遵守相应的ATPCS规则;
●在汇编编译器中使用-atpcs选项。
汇编程序调用C程序
汇编程序的设置要遵循ATPCS规则,保证程序调用时参数正确传递。
在汇编程序中使用IMPORT伪指令声明将要调用的C程序函数。
在调用C程序时,要正确设置入口参数,然后使用BL调用。
C程序调用汇编程序
汇编程序的设置要遵循ATPCS规则,保证程序调用时参数正确传递。
在汇编程序中使用EXPORT伪指令声明本子程序,使其他程序可以调用此子程序。
在C语言中使用extern关键字声明外部函数(声明要调用的汇编子程序)。
在C语言的环境内开发应用程序,一般需要一个汇编的启动程序,从汇编的启动程序,跳到C语言下的主程序,然后,执行C程序,在C环境下读写硬件的寄存器,一般是通过宏调用,在每个项目文件的Startup2410/INC目录下都有一个2410addr.h的头文件,那里面定义了所有关于2410的硬件寄存器的宏,对宏的读写,就能操作2410的硬件。
具体的编程规则同标准C语言。
3. 主程序的源码分析
#include "..\inc\config.h" //嵌入包括硬件的头文件unsigned char data; //定义全局变量
void Main(void)
{
Target_Init(); //目标板初始化,定义串口的硬件初始化在
//target.c中定义
Delay(10); //延时
data = 0x55; //给全局变量赋值
while(1)
{
Uart_Printf("%x ",data); //串口0输出
Delay(10); }
}
把data = 0x55;语句中的0x55,换成其他8位数,重新编译,下载,看看串口工具上输出是什么内容。
五、实验步骤
1.本实验仅使用实验教学系统的CPU板,串口。在进行本实验时,LCD电源开关等均应处在关闭状态。
2.在PC机并口和实验箱的CPU板上的JTAG接口之间,连接仿真器,以及串口间连接公/母接头串口线。
3.检查连接是否可靠,可靠后,接入电源线,系统上电。
4.打开ADS1.2开发环境,从里面打开实验程序\硬件实验\ADS\实验三\C.mcp项目文件,进行编译。
5.编译通过后,首先打开AXD调试软件,按照试验一设置仿真器,然后加载实验程序\硬件实验\ADS\实验三\C_Data\Debug中的映象文件程序映像C.axf。
6.打开串口调试工具,配置为波特率为115200,校验位无,数据位为8,停止位为1。不要选十六进制显示。之后,在ADS调试环境下全速运行映象文件,本程序连续发送55。