全球旧事资料 分类
收稿日期20020510。姜换新硕士主研领域数字通信、嵌入式及网络编程。
ARM嵌入式系统C语言编程
姜换新
惠普中国软件研发中心
上海201206


无操作系统支持的嵌入式系统软件包括系统引导BOOT、驱动程序、动态内存管理、IPO、通
信以及应用软件等方面。本文详细介绍了嵌入式平台上用C语言编写系统软件和应用软件的方法。虽然是针对ARM平台介绍的但基本经验和算法也适合于其他嵌入式平台的软件设计。关键词嵌入式系统软件
C语言ARM
PROGRAMMINGCONARMEMBEDDEDPLATFORM
Jia
gHua
xi
Chi
aSoftwareSolutio
sCe
terHewlettPackardCompa
ySha
ghai201206
Abstract
Programmi
gCo
ARMembeddedplatformisacomplicatedprojectModulesi
cludi
gsystem
bootdriversdy
amicmemoryma
age2me
tIPOi
terfacecommu
icatio
sa
dapplicatio
sshouldbeco
sideredcarefullyWitha
excelle
texperie
ceo
ARMembeddedsystemtheau2thorgivesadetaileddescriptio
i
thispapero
themethodsa
dalgorithmsaboutprogrammi
gARMThoughARMistheo
lydiscusseditemthispaperisusefulforprogrammi
go
a
yotherembeddedplatformsKeywordsEmbeddedsystemSoftwareCprogrammi
gla
guageARM
1


无操作系统支持的嵌入式软件包括系统引导BOOT、外围驱动程序、存储管理、系统IPO、通信、应用程序等方面需要结合采用汇编语言约占10和C语言约占90。本文结合作者实践详细介绍ARM嵌入式平台的C编程方法。考虑到通信软件涉及范围较大本文不进行讨论。
2
系统引导与mai
函数
通常C语言是从mai
函数开始的。mai
函数的原型是
i
tmai
i
targcchar33argv
其中argc是参数的个数argv是指向各参数的指针的数组。
mai
函数由操作系统内核启动操作系统内核完成函数所需的
变量初始化工作并在调用结束后检查mai
函数的返回值若返回值为0表明程序运行正常否则表明程序运行出错。在嵌入式系统中由于没有操作系统内核存在对mai
函数的初始化工作只能由系统引导BOOT模块完成。系统引导BOOT部分完成系统初始化工作用汇编语言实现。它的工作包括硬件初始化、栈寄存器的设置、全局变量的初始化或清0、RAM中运行的模块的加载、堆参数的初始化等。完成这些工作后再把控制权交给C的mai
函数。显然对嵌入式系统的mai
而言argc和argv这两个参数及返回值都
f是没有意义的如果返回表明系统出现严重错误。另外为了避免产生混淆我们还必须给mai
函数另外取一个名字比如Mai
。否则编译器将会给mai
函数生成一大堆初始化代码导致C程序的主入口与系统引导模块的接口错误。系统引导模块完成各种初始化工作后用一条r
好听全球资料 返回顶部