27
第一部分教学研讨篇
嵌入式系统的C语言编程
何煦岚
夏霖
朱正礼
南京林业大学信息学院计算机系.南京,210037
掩要本文务绍丁嵌入式系统的c语言癌程的一些重要特壬£。从工程设置、数据建构、算法谴计三个方
面进行诜明。通过和PC机嫡程过程相比较,指出了嵌入式系统缩程本身特有的属性和方法。通过对各个墒
程环节的分析和嵌入式系统自身特点的研究,提出了一些提高鳊程质量的思路。
关键词嵌八式系统,字节序.指针,宏,参数停递
引
言
当前用于开发嵌入式系统最常用的是c语言。c语占像留了很多低级语言的特征.对于嵌人式系统的开
发非常重要。在福多高校的c语言教学过程中,把它当成一门普通的高级语言击学习。在这种环境下培养出
来的学生.其f语言知识结构不容易满足嵌人式系统开发的要求。本文鼠三个方面来讲述学习面向嵌人式系
统的C语言编程时,必须掌握的一些知识。
2
系统的工程结构设置
生成一个嵌人式系统的工程文件和其他系统中的工程文件有较大区别。PC机c语言程序的工程,可以
依靠开发系统自动生成。嵌入式系统的编程和所面向的目标硬件结构密切相关.在生成一个工程文件的时候,
至少要考虑以F几点。
①选择系统的处理器类型。一个嵌入式系统可以使用的处理器类型不只一种,根据不同的处理器类型,
编译系统会生成不同的代码,所以开发人员必须选择好当前系统的处理器类型。一般是首先确定处理器的厂
家,再去寻找该址理器的具体类型。
②确定系统的可用存销区的起始地址和系统所能提供的只凄以及可读/写存储区的容量。因为整个系统
的可寻址空间总是比实际存储空间大,只有开发人员明确指出系统的存储区特性,编译连接工具才能正确确定
将编译连接后的镜像文件送往系统哪个存储区。
③系统中字节序的确定。字节序有两种,一种是小字节序,另一种是大字节序。小字节序就是一个多字
节的数据,高位在高地址.地位在低地址。比如一个四字节的长整型数0x12345678,它的地址是100,那么第
100字节单元的内容是Ox?8,101字节单元的内容是0x56,102和103字节单元的内容分鄹是0x34和0xt2。
太字节序刚好相反。开发人员应该选择正确的字节序,否则.本系统和其他系统的信息传送.本系统内部的信
息传送中,有可能发生数据错误。
④结构体的对齐方式。结构体是嵌入式系统经常使用的一种数据类型,编译系统在编译结构体数据时,
会使用不同的对齐方式。一般有1字节对齐、2字节对齐、4字节对齐、8字节对齐方式。所谓的n字节对齐。
就是一个结构体数据编译后,总字节数一定是rt的整数倍,如不足则后面添0凑齐。正因为这个关系,很多时
候,一段数据在处理后会“莫名其妙”地多出几个字节来。开发人员在编写程序时,如果投有对编译结构体的对
齐方式加以考虑.可能会编写出错误的代码。
3嵌入式系统编程的数据结构设计
嵌人式系统的数据结构设计和PC机编程相比也有自己的一些特色.必须加以注意。
①符号常量的使用。嵌入式系统的设计中,会使用到很多常量,而这些常量往往和系统的硬件特性有关,
比如说,一个系统的分频值,定时嚣长度等。在不同的开发阶段,这些常量还可能更残。如果在程序中使用直
接常量,那么程序的可读性就会变得很差,理解和修改起来非常困难。所以,在设计程序时,应该尽量使用宏来
定义和使用这些常量。而在设计宏名时.一定要让宏名反映出这个常量的硬件特性。例如:
#define UART—RATE 9600
全部评论(0)