收稿日期
:2002 - 05 - 10
?/p>
姜换?/p>
,
硕士
,
主研领域
:
数字通信、嵌?/p>
式及网络编程?/p>
ARM
嵌入式系?/p>
C
语言编程
姜换?/p>
(
惠普中国软件研发中心
上海
201206)
?/p>
?/p>
无操作系统支持的嵌入式系统软?/p>
,
包括系统引导
(BOOT)
、驱动程序、动态内存管理?/p>
I
P
O
、?/p>
信以及应用软件等方面?/p>
本文详细介绍了嵌入式平台上用
C
语言编写系统软件和应用软件的方法?/p>
虽然是针?/p>
ARM
平台介绍?/p>
,
但基
本经验和算法也?/p>
合于其他嵌入式平台的软件设计?/p>
关键?/p>
嵌入式系?/p>
软件
C
语言
ARM
PROGRAMMING C ON ARM EMBEDDED PLATFORM
Jiang Huanxin
( China Software Solutions Center , Hewlett - Packard Company , Shanghai 201206)
Abstract
Programming C on ARM embedded platform is a complicated project.Modules including system
boot ,drivers ,dynamic memory manage
2
ment ,I
P
O interface ,communications and applications should be considered carefully.With an excellent experience on
ARM embedded system ,the au
2
thor gives a detailed description in this paper on the methods and algorithms about programming ARM. Though ARM is
the only discussed item ,this
paper is useful for programming on any other embedded platforms.
Keywords
Embedded system
Software
C programming language
ARM
1
?/p>
言
无操作系统支持的嵌入式软件包括系统引?/p>
(BOOT)
、外
围驱动程序、存储管理、系?/p>
I
P
O
、通信、应用程序等方面
,
需?/p>
结合采用汇编语言
(
约占
10 %)
?/p>
C
语言
(
约占
90 %)
。本文结
合作者实?/p>
,
详细介绍
ARM
嵌入式平台的
C
编程方法。考虑
到通信软件涉及范围较大
,
本文不进行讨论?/p>
2
系统引导?/p>
main
函数
通常
C
语言是从
main
函数开始的?/p>
main
函数的原型是
:
int main(int argc ,char
3 3
argv)
其中
argc
是参数的个数
, argv
是指向各参数的指针的数组?/p>
main
函数由操作系统内核启?/p>
,
操作系统内核完成函数所需?/p>
变量初始化工?/p>
,
并在调用结束后检?/p>
main
函数的返回?/p>
,
?/p>
返回值为
0 ,
表明程序运行正常
,
否则表明程序运行出错。在?/p>
入式系统?/p>
,
由于没有操作系统内核存在
,
?/p>
main
函数的初?/p>
化工作只能由系统引导
(BOOT)
模块完成?/p>
系统引导
(BOOT)
部分完成系统初始化工?/p>
,
用汇编语言
实现。它的工作包括硬件初始化、栈寄存器的设置、全局变量
的初始化或清
0
?/p>
RAM
中运行的模块的加载、堆参数的初始化
等。完成这些工作后
,
再把控制权交?/p>
C
?/p>
main
函数。显?/p>
,
对嵌入式系统?/p>
main
而言
,argc
?/p>
argv
这两个参数及返回值都