- 1、本文档共33页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式软件开发简介-宋海平-马晓平
编程注意事项 在函数的开始部分,最好进行边界检查 在函数中,应该预测到程序出错的条件,并设置恰当的错误处理通路。 在调用函数memset()进行内存块初始化时,最好用sizeof()来指定需初始化的内存块的大小,而不要用常量。 绝对不能使用memcpy()函数来对内存块进行初始化,这样不能用所希望的值来初始化,如: memcpy(a,0x0,sizeof(a)); 编程注意事项 必须执行NULL指针检查,并给出相应的异常处理 尽量不要编很耗时的循环,这样会阻止其他事件的及时处理,从而导致系统复位 在调用函数后,应对返回值进行检查,对成功或失败情况均应作相应的处理 由于REX是多任务的基于优先级的实时操作系统,当一个任务要调用其他任务的函数时,应尽量通过设信号或发命令的方式进行调用,而不要直接调用以避免出现互斥问题 在使用malloc动态分配内存时,使用完后必须用free函数进行释放,否则会导致内存泄漏 OVER 嵌入式软件开发简介 中国海洋大学 2011/12 宋海平 马晓平 嵌入式软件开发简介 嵌入式系统的特点 嵌入式系统设计的生命周期 执行环境 独特的软件技术 ADS编译器相关知识 编程注意事项 嵌入式系统特点 嵌入式系统一般用于特定的任务 嵌入式系统通常及其关注成本 嵌入式系统有实时约束 嵌入式系统一般用实时操作系统(RTOS) 嵌入式系统大多有功耗约束 嵌入式系统的系统资源有限 嵌入式系统通常在ROM中存放所有目标代码 嵌入式系统设计生命周期 产品定义(需求分析) 开发计划的制定 软件设计(概要设计和详细设计) 编码及单元测试 硬件和软件集成 系统测试 产品发布 维护和升级 执行环境 内存结构 系统启动 中断响应周期 栈帧 执行环境 内存结构 一般微处理器的内存映像如下图: 系统空间 代码空间 ROM数据空间 I/O空间 RAM数据空间 堆 栈 图1 处理器的内存映像 内存结构 系统空间为存放异常向量表的内存空间。处理器用异常向量标识出在系统遇到中断或其他异常(比如被零除、溢出错误、内存操作出错或指令错误)时将运行哪段代码,进行相应的处理。 在系统空间之上的代码空间存放着指令。一般要把系统和代码空间存放在同一ROM物理设备中。 在代码空间之上,ROM数据空间存放常量数值,比如错误信息和其他字符串。 栈用来保存当前运行状态和所有暂停运行的进程的上下文。因此,栈包含所有局部变量以及函数和中断的返回地址。只有提供了栈空间,程序才能进行中断服务或调用函数。栈一般位于内存的高端,即栈从上向下增长。 内存结构 所有静态分配的读/写变量都放在自由内存(RAM数据空间)中。全局变量是静态分配变量最常见的形式,C语言中的“static”型变量也放在这里。任何拥有全局生存期的可修改变量都存放在自由内存中。 所有动态分配(使用new或malloc())的对象和变量都放在堆中。许多嵌入式系统并没有使用堆。 最后的内存组成部分是映射到内存的外部设备寄存器(如键盘、显示屏、耳机、光感应器、充电器)。这些设备的状态放在I/O空间区域。 系统启动 系统启动有两个阶段:硬件阶段和软件阶段。 硬件阶段:一旦复位线有效(装电池或按“电源”键),处理器就进入到硬件阶段。此阶段的主要职责是使CPU开始运行程序或运行一些要把CPU控制权转交给程序的代码,程序的最初几行代码定义了如何启动软件。 软件阶段:此阶段的职责是初始化核心元件和内存的关键结构(用来建立完整的运行时环境)。 系统启动的具体过程与处理器的类型有关。 系统启动过程举例(Arm微处理器) 从程序的初始入口点处开始运行,这里用ENTRY伪操作标识程序入口点; 调用复位异常处理中断(如boot_reset_handler)函数; 对存储器和外围控制硬件进行初始化; 执行ROM和RAM有效性校验和测试,如验证ROM中是否包含一个有效的应用映像; 将已初始化的数据( ROM 中)拷贝到可写的数据区( RAM 中),并将剩下的RAM 空间初始化为0; 初始化数据栈指针 调用main()函数开始运行主程序 中断响应周期 定义:当CPU接收到中断信号,他就把正在做的事情放在一边,执行处理此中断的指令,然后回到先前的任务。 当某个设备发出中断信号给CPU,CPU将: 把下一条指令(返回地址)的地址压入栈中 从异常向量表加载ISR(中断服务程序)地址到程序计数器中 禁止中断 恢复运行正常的取指周期,此时取出的是ISR指令 栈帧(StackFrame) 定义:分配给一个函数的所有栈空间(参数、返回地址和局部变量)称为栈帧 栈被用来存放所有的函数局部变量和参数,函数调用的处理流程如下: 把所有参数压栈 调用函数 为所有局部变量在栈中分配存储空间 执行函数 释放分配给局部变量的栈空间 从函数返回 释放参数
您可能关注的文档
- 山东省枣庄三十九中2016届中考数学一模试题(含解析).doc
- 山东省日照秦楼中心初级中学九年级数学 24.2.2直线与圆的位置关系课件 北师大版.ppt
- 山东省淄博市沂源县2015-2016学年八年级(下)期末化学试卷(五四学制)(解析版).doc
- 山东省济南市实验中学2014-2015七年级数学上册同步课件:2-2 整式的加减复习课.ppt
- 展示设计(全套课件) 第十二章 展馆控制要素—色彩和照明.pptx
- 山东省莱芜市2014年中考化学试卷.doc
- 山东省莱芜市2014年中考化学真题试题(含解析).doc
- 山东省莱芜市2014年中考化学试题(word版,含解析).doc
- 山东省青岛市2017年中考物理试题(word版含答案).doc
- 山东省高密市银鹰文昌中学九年级物理全册 17 欧姆定律故障分析课件 (新版)新人教版.ppt
- 2023-2024学年广东省深圳市龙岗区高二(上)期末物理试卷(含答案).pdf
- 2023-2024学年贵州省贵阳市普通中学高一(下)期末物理试卷(含答案).pdf
- 21.《大自然的声音》课件(共45张PPT).pptx
- 2023年江西省吉安市吉安县小升初数学试卷(含答案).pdf
- 2024-2025学年广东省清远市九校联考高一(上)期中物理试卷(含答案).pdf
- 广东省珠海市六校联考2024-2025学年高二上学期11月期中考试语文试题.pdf
- 2024-2025学年语文六年级上册第4单元-单元素养测试(含答案).pdf
- 2024-2025学年重庆八中高三(上)月考物理试卷(10月份)(含答案).pdf
- 安徽省安庆市潜山市北片学校联考2024-2025学年七年级上学期期中生物学试题(含答案).pdf
- 贵州省部分校2024-2025学年九年级上学期期中联考数学试题(含答案).pdf
文档评论(0)