探究arm嵌入式系统c语言编程

探究arm嵌入式系统c语言编程

ID:6033105

大小:29.00 KB

页数:7页

时间:2017-12-31

探究arm嵌入式系统c语言编程_第1页
探究arm嵌入式系统c语言编程_第2页
探究arm嵌入式系统c语言编程_第3页
探究arm嵌入式系统c语言编程_第4页
探究arm嵌入式系统c语言编程_第5页
资源描述:

《探究arm嵌入式系统c语言编程》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、探究ARM嵌入式系统C语言编程  【摘要】ARM是一种高性能、低功耗的32位RISC嵌入式处理器系列。目前在各种嵌入式系统中ARM获得了广泛的应用。无操作系统支持的嵌入式软件包括系统引导(BOOT)、外围驱动程序、存储管理、系统I/O、通信、应用程序等方面,需要结合采用汇编语青(约占10%)和C语言(约占90%)。本文详细介绍嵌入式系统平台的C编程方法。从概念介绍入手,介绍了系统引导与main函数、数局部变量的个数、存储管理与LCD终端(系统I/O)及驱动程序与应用程序的设计等内容,为ARM嵌入式系统C语言编程提供了可靠的依据。【关键词】ARM嵌入式系

2、统;C语言编程;探析中图分类号:G623.58文献标识码:A文章编号:一、前言随着计算机技术尤其是计算机信息控制技术的深入发展,嵌入式技术得以出现,并已在众多消费类电子产品中得到成熟应用,如汽车电子设备、视频电子产品、智能家电等,目前正在向装备制造业领域、工业自动化控制、航天产品、网络等高端领域蔓延。ARM嵌入式系统C语言编程也是其中应用的重要的一方面,本文对这一方面进行了探索,具有很大的价值。7二、嵌入式系统及ARM概念介绍嵌入式系统也即嵌入式计算机系统,主要用于对机器装置乃至大型厂房等进行控制或监视,其特点可与普通的Pc机系统对比来体现:1、PC机

3、系统面向大众和大部分行业领域,而嵌入式计算机系统一般只针对特定应用;2、PC机系统的软件一般存储于磁盘或硬盘当中,而嵌入式系统软件则基本上固化在存储器芯片或单片机上;3、嵌入式系统要依赖一套专门的开发工具或编程环境来实现间接开发。嵌入式系统也同PC机一样由操作软件和应用软件组成,总的来看,其架构包含了嵌入式处理器、嵌入式外围设备、嵌入式操作系统和嵌入式应用软件,而这其中嵌入式处理器如同PC机的CPU,是整个嵌入式系统的核心部件。ARM系列微处理器便是嵌入式处理器中的佼佼者,其因处理速度快、功耗低且价格低廉而拥有着良好的应用前景,目前基ARM微处理器已广

4、泛应用于电子产品、通信网络系统和军事系统等领域。三、系统引导与main函数通常c语言是从main函数开始的。main函数的原型是:Intmain(intargc,char7***argv),其中argv是参数的个数,argv是指向各参数的指针的数组。main函数由操作系统内核启动,操作系统内核完成函数所需的变量初始化工作,并在调用结束后检查main函数的返回值,若返回值为0,表明程序运行正常,否则表明程序运行出错。在嵌入式系统中,由于没有操作系统内核存在,对main函数的初始化工作只能由系统引导(BOOT)模块完成。系统引导(BOOT)部分完成系统初始

5、化工作,用汇编语言实现。它的工作包括硬件初始化、栈寄存器的设置、全局变量的初始化或清0、RAM中运行的模块的加载、堆参数的初始化等。完成这些工作后,再把控制权交给C的“main函数。显然,对嵌入式系统的main而言,argc和argv这两个参数及返回值都是没有意义的(如果返回,表明系统出现严重错误)。另外,为了避免产生混淆,我们还必须给main函数另外取一个名字。否则,编译器将会给main函数生成一大堆初始化代码,导致c程序的主人口与系统引导模块的接口错误。四、函数局部变量的个数为了加快程序的执行速度,函数编译时应尽可能将局部变量都分配在寄存器中。当局

6、部变量多于可用的寄存器时,编译器会将多余的变量压入堆栈(即存入存储器中),因此必须控制局部变量的个数。ARM处理器采用RISC结构,带有丰富的内部寄存器。在编译器使用一apcs开关选项,即支持ATPCS(ARM—ThumbProcedureCall7Standard)标准时,理论上有14个寄存器(R0~R12,R14)可以用来存放局部变量。但是实际上有些寄存器有自身特殊的用途,例如R9在与读写位置无关(RWPI)的编译情况下作为静态基址寄存器使用,R12作为子程序内部调用的临时过渡寄存器使用。因此,应尽量限制局部变量的数目:(1)对于函数的参数个数应控

7、制在4个以内,只有R0~R3可用来保存参数,当参数多于4个时将被压人堆栈。如果由于实际应用的需要,参数多于4个,也可以采用结构体来组织参数,传递结构体指针来实现。(2)函数内部局部变量的个数应控制在12个以内(R0~R11),R12~R15都有特定用途。五、存储管理与LCD终端(系统I/O)1、存储管理存储管理是一个复杂的课题。从广义的角度来说,磁盘文件系统、内存、片内高速Cache等都属于这个范畴。嵌入式系统中,较有意义的是内存的动态分配与释放及Flash存储器管理两方面。本文要介绍的是我们在嵌人式系统中实现的动态内存管理。C语言中动态内存分配与释放

8、主要由malloc和free两个标准库函数实现。malloc从系统空闲内存中分配合适的内存块,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。