您的当前位置:首页正文

探讨ARM嵌入式系统C语言编程

来源:个人技术集锦
Embedded Technology・嵌入式技术 探讨ARM嵌入式系统C语言编程 【关键词】ARM嵌入式系统C语言 随着现代科学技术和计算机技术的发展, 嵌入式系统广泛地应用在各类电子产品中,比 如视频电子产品、汽车电子产品以及智能家电 等,目前正朝向工业自动化控制、网络、航天 产品等高端领域迈进。ARM是高端嵌入式处 理器的代表,但其不具备自我开发能力,必需 借助程序环境或开发工具来实现自我开发能 力,而C语言正是实现ARM嵌入式系统强大 动力的基础。本文简要概述ARM及嵌入式概 念,探讨基于ARM嵌入式系统上C语言编程 的一些方法。 1 ARM和嵌入式系统概述 嵌入式系统也成嵌入式计算机系统,其主 要用于控制、监控机器装置或大型厂房,和普 通的PC机相比,有以下差别:①普通PC机 系统面向大众行业大众群体,嵌入式系统针对 特定的应用范围;②普通PC机的软件储存在 硬盘或者磁盘当中,嵌入式系统软件固化在单 片机或存储器芯片上;③普通PC机具备自身 开发能力,而嵌入式系统要基于一个编程环境 或一套开发工具实现自身开发。和普通PC机 相同的是,嵌入式系统由操作软件、应用软件 两部分组成。嵌入式系统包括嵌入式处理器、 外围设备、操作系统和应用软件,其中嵌入式 处理器和普通PC机的CPU类似,其是嵌入 式系统核心部件。 ARM嵌入式处理器是各种各样嵌入式处 理器中性能较好的一款处理器,其具有功耗低、 处理速度快、价格低廉等优点,因此,有极为 广泛的应用前景。 文/邹奠 黄鹏飞 2基于ARM嵌入式系统的C语言编程 其中,argc代表参数个数,argv代表指向参 数的指针数组。Main函数运行原理如下:操 嵌入式系统中的系统引导、存储管理、外 作系统内核启动main函数,在操纵系统内核 围驱动及其它一些应用程序多数都需要c语 指导下函数完成变量初始化,调用结束之后, 言来编程,因此,下面分析ARM嵌入式系统 检查main函数返回值,如果返回值是0,说 和c语言编程两者技术融合,并详细地从存 明运行正常,如果返回值是1,说明程序运行 储管理、外围驱动程序以及程序引导等技术融 错误。ARM嵌入式系统中,没有操作系统内核, 合方面进行研究。 所以,对main函数初始化由系统引导模块完 2.1存储管理 成。 嵌入式系统缺乏操作系统的内核,系统对 存储管理较为复杂,广泛意义上讲,片 main函数初始化需要借助系统引导模块完成, 内高速Cache、磁盘文件系统以及内存等都属 而汇编语言可以完成系统引导的工作。一般而 于存储管理范畴,而ARM嵌入式系统下存储 言,系统引导模块完成初始化任务后,在一条 管理指动态内存管理。ARM嵌入式平台c语 跳转指令的引导下进入主入口main,最终可 言编程通过malloc和free两个标准库函数实 实现应用程序控制权转移。从这个意义上来说, 现内存动态分配和释放,其中,malloc主要 ARM嵌入式系统和C语言的技术融合点在嵌 完成从ARM嵌入式系统空闲的内存中分配合 入式系统引导可通过控制权转移至C语言的 适内存块,而free则主要负责内存块回收。 main函数。 malloc和free均需要操作系统内棱支持,一般 在ARM裸平台上不可直接调用。基于此,编 3结语 写m alloc和m free函数实现动态存储管理功 随着嵌入式应用的普及,嵌入式软件受到 能。 了大众的关注,本文简要介绍了ARM嵌入式 2.2外围驱动程序 系统和C语言的结合,通过ARM嵌入式系统 和C语言的结合,有效解决了ARM嵌入式系 ARM嵌入式系统中驱动程序主要指最底 统自身存在的一些问题,比如内存资源有限而 层中断处理程序以及在其基础上建立的驱动程 栈容量不能自动扩展,或标准库函数不能直接 序两部分,一般情况下,驱动程序和外围设备 借用等等,基于ARM嵌入式平台上的C语言 关系密切,因此,驱动程序较为复杂。外围 很大程度上促进了ARM系统的完善,提升了 设备通过中断和嵌入式系统通信,在处理中 嵌入式的技术水平。随着嵌入式软件、系统的 断的相关变量时要谨慎小心。一般情况下,编 不断成熟和c语言编程的运用,相信ARM嵌 译器优化选项打开之后,有关变量的操作要放 入式系统会越来越广泛地应用在生活中的各个 置在寄存器中,中断服务往往会通过改变某 领域。 些全局变量通知应用程序外部事件发生,但 被改变的全局变量通常情况下是不能被优化 的。为解决这个问题,在声明变量的时候要加 参考文献 …1过怡.基于ARM的高效C语言编程【J】. 上volatile修饰符,用这个修饰符通知编译器 单片机与嵌入式系统应用,2010. 某个变量有可能被异步事件改变。另外,在c 【2】孙婧.ARM嵌入式系统c语言编程分析【J]. 语言编写过程中要考虑C语言编写形式,比如, 计算机光盘软件与应用,2012. Array[idx/4]=&一1实现对数组元素的操作,这 【3】孙曼曼,姬龙涛.浅谈基于ARM的嵌入式 里不能写为Array[idx>>4]=&~1,“>>”是一 系统[J].福建电脑,2010. 种移位运算符,有其对应的机器指令,“/” 是一种除法运算符,运算方法很复杂。 作者单位 2.3系统引导 1.贵州航天天马机电科技有限公司 贵州省 遵义市56300 3 C语言从main函数开始,main函数指令 2.遵义钛业股份有限公司 贵州省遵义市 原型为:im main(int argc,char argv), 563OO3 Electronic Technology&Software Engineering电子技术与软件工程・223 

因篇幅问题不能全部显示,请点此查看更多更全内容