在嵌入式Linux的C语言开发中,C语言的基本编程依然是最重要的内容。除此之外,与一般的C语言编程相比,嵌入式Linux的C语言编程有以下一些要点:
1、库函数与系统调用
在进行C语言编程的时候,使用库函数是不可避免的。关于使用库函数的最简单的例子就是printf()。
在Linux环境下的C语言编程中,库函数包括两个部分:一种是C语言的标准库函数,例如包含srting.h头文件的字符处理函数、包含stdio.h头文件的标准输入/输出函数、包含math.h头文件的数学函数等;另一种是UNIX和Linux特定的库函数,例如UNIX特定的文件操作函数、权限处理函数以及特定的系统调用等。
类似其它的UNIX系统,Linux的很多库函数是通过系统调用完成的。库函数依然通过包含标准C语言头文件的方式使用,在库函数实现中使用Linux的系统调用完成。在嵌入式Linux中,很多标准的C语言库函数需要考虑系统特定的情况。
例如printf()的功能是将内容打印到标准的输出。在通用的计算机中,标准的输出一般默认是显示器。但是在嵌入式的系统中,标准的输出是不确定的,可能是某种显示设备(比如显示器),也可能是串口等。这些与嵌入式Linux操作系统内核的配置有关。
2、C语言高级应用
目前,计算机技术高速发展,各种编程语言发展迅速。各种高级语言有着各自的优势:C++具有完全面向对象的特点以及非常全面的功能;Java具有与平台无关的特性;C#借助微软的强力支持,前景也非常广阔;各种脚本语言则有着无需编译、简单易懂等特点。
与上诉语言相比,C语言是一种面向过程的语言,介于高级语言与低级语言之间。确切地说,在通用计算机应用层的软件开发部分,C语言与各种高级语言相比没有优势。这是由于各种高级语言不但适合复杂应用逻辑的组织和实现,而且提供了更好的编程环境和应用程序接口。开发者使用高级语言可以快速、高效地开发出各种的应用程序。
C语言的优势在于它有着高效地运行效率,因此虽然在应用程序的开发领域C语言并不占优势,但是在嵌入式Linux的开发中,C语言却占据主导的地位。
事实上,C语言的一些高级技术,在嵌入式Linux的开发中得到很好的发挥和使用。这些技术让C语言这种面向过程、与硬件联系紧密的计算机语言可以完成更复杂的逻辑组织功能。这对于非常重视效率,而又具有特定程序逻辑的嵌入式系统是非常重要的。
3、嵌入式系统开发中C语言特殊语法
在嵌入式的C语言编程中,所使用的语言依然在C语言的范畴内,但是一些用法和传统的C语言编程有一定的差别。
这些特殊的语法包括:使用C语言对目标硬件寄存器的操作问题;不同体系的处理器的大写端问题;内存操作的对齐问题;程序中绝对内存地址的跳转等。
4、嵌入式系统开发中C语言编程的要点
在嵌入式系统中,由于资源非常有限,对程序运行效率的要求比较高。因此,一些在通用计算机系统中不用考虑的性能问题,在嵌入式系统中都需要考虑。在嵌入式开发中,性能是一个核心的问题,也是C语言编程的要点所在。
对于一种程序实现的评价,主要可以从两个方面考虑,一个方面是程序运行的效率,另一个是程序需要的存储器空间。对于前者,主要是指程序运行所需要的处理器空间,与占用系统处理器地时间有关;对于后者,包括程序存储所占用的空间和程序运行所占用的空间,与占用系统ROM和RAM大小有关。由于C语言自身的性质,也使其在嵌入式开发的性能优化以及调试方面具有独特的方法。