当前位置:天才代写 > tutorial > C语言/C++ 教程 > C语言嵌入式系统编程修炼之配景篇

C语言嵌入式系统编程修炼之配景篇

2017-11-03 08:00 星期五 所属: C语言/C++ 教程 浏览:612

差异于一般形式的软件编程,嵌入式系统编程成立在特定的硬件平台上,势须要求其编程语言具备较强的硬件直接操纵本领。无疑,汇编语言具备这样的特质。可是,归因于汇编语言开拓进程的巨大性,它并不是嵌入式系统开拓的一般选择。而与之对比,C语言–一种"高级的初级"语言,则成为嵌入式系统开拓的最佳选择。笔者在嵌入式系统项目标开拓进程中,一次又一次感觉到C语言的精妙,沉浸于C语言给嵌入式开拓带来的便利。

图1给出了本文的接头所基于的硬件平台,实际上,这也是大大都嵌入式系统的硬件平台。它包罗两部门:

(1) 以通用处理惩罚器为中心的协议处理惩罚模块,用于网络节制协议的处理惩罚;

(2) 以数字信号处理惩罚器(DSP)为中心的信号处理惩罚模块,用于调制、解和谐数/模信号转换。

本文的接头主要环绕以通用处理惩罚器为中心的协议处理惩罚模块举办,因为它更多地牵涉到详细的C语言编程能力。而DSP编程则重点存眷详细的数字信号处理惩罚算法,主要涉及通信规模的常识,不是本文的接头重点。

着眼于接头普遍的嵌入式系统C编程能力,系统的协议处理惩罚模块没有选择出格的CPU,而是选择了众所周知的CPU芯片–80186,每一位进修过《微机道理》的读者都应该对此芯片有一个根基的认识,且对其指令集较量熟悉。80186的字长是16位,可以寻址到的内存空间为1MB,只有实地点模式。C语言编译生成的指针为32位(双字),高16位为段地点,低16位为段内编译,一段最多64KB。

C语言嵌入式系统编程修炼之布景篇

图1 系统硬件架构

协议处理惩罚模块中的FLASH和RAM险些是每个嵌入式系统的必备设备,前者用于存储措施,后者则是措施运行时指令及数据的存放位置。系统所选择的FLASH和RAM的位宽都为16位,与CPU一致。

及时钟芯片可觉得系统按时,给出当前的年、月、日及详细时间(小时、分、秒及毫秒),可以设定其颠末一段时间即向CPU提出间断或设定报警时间到来时向CPU提出间断(雷同闹钟成果)。

NVRAM(非易失去性RAM)具有掉电不丢失数据的特性,可以用于生存系统的配置信息,譬如网络协议参数等。在系统掉电或从头启动后,仍然可以读取先前的配置信息。其位宽为8位,比CPU字长小。文章特意选择一个与CPU字长纷歧致的存储芯片,为后文中一节的接头缔造条件。

UART则完成CPU并行数据传输与RS-232串行数据传输的转换,它可以在吸收到[1~MAX_BUFFER]字节后向CPU提出间断,MAX_BUFFER为UART芯片存储吸收到字节的最大缓冲区。

键盘节制器和显示节制器则完成系统人机界面的节制。

以上提供的是一个较完备的嵌入式系统硬件架构,实际的系统大概包括更少的外设。之所以选择一个完备的系统,是为了后文更全面的接头嵌入式系统C语言编程能力的方方面面,所有设备城市成为后文的阐明方针。

嵌入式系统需要精采的软件开拓情况的支持,由于嵌入式系统的方针机资源受限,不行能在其上成立复杂、巨大的开拓情况,因而其开拓情况和方针运行情况彼此疏散。因此,嵌入式应用软件的开拓方法一般是,在宿主机(Host)上成立开拓情况,举办应用措施编码和交错编译,然后宿主机同方针机(Target)成立毗连,将应用措施下载到方针机长举办交错调试,颠末调试和优化,最后将应用措施固化到方针机中实际运行。

CAD-UL是合用于x86处理惩罚器的嵌入式应用软件开拓情况,它运行在Windows操纵系统之上,可生成x86处理惩罚器的方针代码并通过PC机的COM口(RS-232串口)或以太网口下载到方针机上运行,如图2。其驻留于方针机FLASH存储器中的monitor措施可以监控宿主机Windows调试平台上的用户调试指令,获取CPU寄存器的值及方针机存储空间、I/O空间的内容。

C语言嵌入式系统编程修炼之布景篇

图2 交错开拓情况

后续章节将从软件架构、内存操纵、屏幕操纵、键盘操纵、机能优化等多方面叙述C语言嵌入式系统的编程能力。软件架构是一个宏寓目法,与详细硬件的接洽不大;内存操纵主要涉及系统中的FLASH、RAM和NVRAM芯片;屏幕操纵则涉及显示节制器和及时钟;键盘操纵主要涉及键盘节制器;机能优化则给出一些详细的减小措施时间、空间耗损的能力。

在我们的修炼旅途中将颠末25个关隘,这些关隘主分为两类,一类是能力型,有很强的合用性;一类则是知识型,在理论上有些意义。

So, let’s go.

 

    关键字:

天才代写-代写联系方式