您的位置 首页 电源

C言语嵌入式体系编程修炼之一:布景篇!

不同于一般形式的软件编程,嵌入式系统编程建立在特定的硬件平台上,势必要求其编程语言具备较强的硬件直接操作能力。无疑,汇编语言具备这

不同于一般方式的软件编程嵌入式体系编程树立在特定的硬件渠道上,必然要求其编程言语具有较强的硬件直接操作能力。无疑,汇编言语具有这样的特质。可是,归因于汇编言语开发进程的杂乱性,它并不是嵌入式体系开发的一般挑选。而与之比较,C言语–一种”高档的初级”言语,则成为嵌入式体系开发的最佳挑选。笔者在嵌入式体系项目的开发进程中,一次又一次感受到C言语的精妙,沉醉于C言语给嵌入式开发带来的便当。

  图1给出了本文的评论所根据的硬件渠道,实践上,这也是大多数嵌入式体系的硬件渠道。它包括两部分:

  (1)以通用处理器为中心的协议处理模块,用于网络操控协议的处理;

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

  本文的评论首要环绕以通用处理器为中心的协议处理模块进行,因为它更多地牵涉到详细的C言语编程技巧。而DSP编程则要点重视详细的数字信号处理算法,首要触及通讯范畴的知识,不是本文的评论要点。

  着眼于评论遍及的嵌入式体系C编程技巧,体系的协议处理模块没有挑选特别的CPU,而是挑选了众所周知的CPU芯片–80186,每一位学习过《微机原理》的读者都应该对此芯片有一个根本的知道,且对其指令集比较了解。80186的字长是16位,能够寻址到的内存空间为1MB,只要实地址形式。C言语编译生成的指针为32位(双字),高16位为段地址,低16位为段内编译,一段最多64KB。


图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空间的内容。


图2 穿插开发环境

  后续章节将从软件架构、内存操作、屏幕操作、键盘操作、功能优化等多方面论述C言语嵌入式体系的编程技巧。软件架构是一个微观概念,与详细硬件的联络不大;内存操作首要触及体系中的FLASH、RAM和NVRAM芯片;屏幕操作则触及显现操控器和实时钟;键盘操作首要触及键盘操控器;功能优化则给出一些详细的减小程序时刻、空间耗费的技巧。

  在咱们的修炼旅途中将通过25个关口,这些关口主分为两类,一类是技巧型,有很强的适用性;一类则是知识型,在理论上有些含义。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/dianyuan/260217.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部