c语言嵌入式开发

c语言嵌入式开发

ID:19873930

大小:147.50 KB

页数:34页

时间:2018-10-07

c语言嵌入式开发_第1页
c语言嵌入式开发_第2页
c语言嵌入式开发_第3页
c语言嵌入式开发_第4页
c语言嵌入式开发_第5页
资源描述:

《c语言嵌入式开发》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C语言嵌入式开发纲要嵌入式C开发背景介绍硬件平台和交叉编译环境软件结构设计内存操作屏幕操作键盘操作性能优化背景不同于一般形式的软件编程,嵌入式系统编程建立在特定的硬件平台上,势必要求其编程语言具备较强的硬件直接操作能力。无疑,汇编语言具备这样的特质。但是,由于汇编语言开发的复杂性,它并不是嵌入式系统开发的一般选择。而与之相比,C语言--一种"高级的低级"语言,则成为嵌入式系统开发的最佳选择。硬件平台(1)以通用处理器为中心的协议处理模块,用于网络控制协议的处理; (2)以数字信号处理器(DSP)为中心的信号处理模块,用于调制、解调和数/模信号转换硬件

2、说明CPU:80186字长是16位,可以寻址到的内存空间为1MBFLASH和RAM几乎是每个嵌入式系统的必备设备,前者用于存储程序,后者则是程序运行时指令及数据的存放位置。系统所选择的FLASH和RAM的位宽都为16位,与CPU一致实时钟芯片可以为系统定时,给出当前的年、月、日及具体时间(小时、分、秒及毫秒),主要作用是提供中断裁决NVRAM(非易失去性RAM)具有掉电不丢失数据的特性,可以用于保存系统的设置信息UART则完成CPU并行数据传输与RS-232串行数据传输的转换键盘控制器和显示控制器则完成系统人机界面的控制交叉编译环境嵌入式系统需要良好

3、的软件开发环境的支持,由于嵌入式系统的目标机资源受限,不可能在其上建立庞大、复杂的开发环境,因而其开发环境和目标运行环境相互分离。嵌入式应用软件的开发方式一般是在宿主机(Host)上建立开发环境,进行应用程序编码和交叉编译,然后宿主机同目标机(Target)建立连接,将应用程序下载到目标机上进行交叉调试,经过调试和优化,将应用程序固化到目标机中实际运行软件结构设计模块划分多任务还是单任务单任务程序典型架构中断服务程序硬件驱动模块C的面向对象化模块划分硬件驱动模块,一种特定硬件对应一个模块;软件功能模块,其模块的划分应满足低偶合、高内聚的要求硬件驱动模

4、块中断服务程序ISR硬件初始化a.修改寄存器,设置硬件参数(如UART应设置其波特率,AD/DA设备应设置其采样速率等);b.将中断服务程序入口地址写入中断向量表:3.设置CPU针对该硬件的控制线a.如果控制线可作PIO(可编程I/O)和控制信号用,则设置CPU内部对应寄存器使其作为控制信号;b.设置CPU内部的针对该设备的中断屏蔽位,设置中断方式(电平触发还是边缘触发)。4.提供一系列针对该设备的操作接口函数。例如,对于LCD,其驱动模块应提供绘制像素、画线、绘制矩阵、显示字符点阵等函数;而对于实时钟,其驱动模块则需提供获取时间、设置时间等函数。多

5、任务还是单任务所谓"单任务系统"是指该系统不能支持多任务并发操作,宏观串行地执行一个任务。而多任务系统则可以宏观并行(微观上可能串行)地"同时"执行多个任务单任务用于简单的低端硬件平台,比如哑终端之类的,使用死循环处理任务流程多任务用于较高端的平台,如uclinux,Wince,Vxworks,使用中断调用处理任务流程单任务程序典型架构从CPU复位时的指定地址开始执行;跳转至汇编代码startup处执行;跳转至用户主程序main执行,在main中完成:a.初试化各硬件设备;b.初始化各软件模块;c.进入死循环(无限循环),调用各模块的处理函数中断服务

6、程序中断是嵌入式系统中重要的组成部分,但是在标准C中不包含中断。许多编译开发商在标准C上增加了对中断的支持,提供新的关键字用于标示中断服务程序(ISR),类似于__interrupt、#programinterrupt等。当一个函数被定义为ISR的时候,编译器会自动为该函数增加中断服务程序所需要的中断现场入栈和出栈代码。中断服务程序需要满足如下要求:(1)不能返回值;(2)不能向ISR传递参数;(3)ISR应该尽可能的短小精悍;(4)printf(char*lpFormatString,…)函数会带来重入和性能问题,不能在ISR中采用。C的面向对象化

7、#ifndefC_Class#defineC_Classstruct#endifC_ClassA {C_ClassA*A_this;/*this指针*/void(*Foo)(C_ClassA*A_this);/*行为:函数指针*/inta;/*数据*/intb; };我们可以利用C语言模拟出面向对象的三个特性:封装、继承和多态,但是更多的时候,我们只是需要将数据与行为封装以解决软件结构混乱的问题。C模拟面向对象思想的目的不在于模拟行为本身,而在于解决某些情况下使用C语言编程时程序整体框架结构分散、数据和函数脱节的问题内存操作篇数据指针函数指针数组vs

8、.动态申请关键字const关键字volatileCPU字长与存储器位宽不一致处理数据指针嵌入式编程中需要指针

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

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

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