华农《嵌入式软件开发技术》课程的复习提纲Word文档下载推荐.docx
- 文档编号:19239133
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:25
- 大小:2.98MB
华农《嵌入式软件开发技术》课程的复习提纲Word文档下载推荐.docx
《华农《嵌入式软件开发技术》课程的复习提纲Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《华农《嵌入式软件开发技术》课程的复习提纲Word文档下载推荐.docx(25页珍藏版)》请在冰豆网上搜索。
o)规模不大,开发难度较大
p)嵌入式应用程序与嵌入式操作系统一体化
q)代码质量要求高、关键功能模块实现要求较高的可靠性与实时性
r)嵌入系统软硬件设计的协同性
s)嵌入式系统软件开发平台的交叉特性
●嵌入式软件调试过程(重点,课本P19,图1-8)
2.ARM处理器基础
本章只出1条选择题。
只需了解ARM是RISC处理器,共有37个寄存器(31+6)等基本知识。
ARM微处理器共有37个32位寄存器,其中31个为通用寄存器,6个为状态寄存器。
3.程序优化技巧
实验一相关
a)了解从源代码->
中间代码->
机器码之间,编译器、连接器等做的工作
即编译器是将一种语言翻译成另一种语言的程序。
链接器将一系列的目标文件、库、及可能的命令文件作为它的输入,然后将输出的
目标文件作为产品结果,此外也可能有诸如加载映射信息或调试器符号文件的副产品
编译器和汇编器创建了目标文件(包含由源程序生成的二进制代码和数据)。
链接器
将多个目标文件合并成一个,加载器读取这些目标文件并将它们加载到内存中(在一个集成
编程环境中
b)ARM编译器优化级别(重点,能具体解释各个级别的内容)
i.-O0——DEBUG
关闭大多数优化.
最好的调试信息,最少的优化
ii.
-O1——DEBUGREL
多数优化选项许可
给一个满意的调试,好的代码密度
iii.
-O2——RELEASE(default)
完全的优化
有限的调试信息,最好的代码密度
为代码大小或运行速度的优化,可选择:
-Ospace(默认的)或-Otime.
使用-g选像可包含源码级调试信息
c)清楚理解自动优化、冗余代码清除、指令编排、嵌套优化、内联例子等概念和实际应用,能通过阅读例子代码,解释以上优化做了什么事情
i.自动优化–O0
ii.冗余代码清除
iii.指令编排
iv.嵌套优化
v.内联
d)使用ARM编译器编码参数传递(4、6参数的区别,解释)
e)循环终止(实验一的相关内容,重点)
f)局部和全局数据
全局变量和局部变量的区别主要在于生存周期不同,全局变量在整个程序生成期间可见,局部变量在自己的作用域内可见。
全局变量的内存分配是静态的,位于PE文件在数据区,在main()前由C、C++运行期函数初始化,如果没有初值,会被初始化为0。
局部变量的内存分配是动态的,位于线程堆栈中。
如果没有初始化的,初值视当前内存内的值而定。
g)堆栈的用法
4.多任务操作系统
PPT&
BOOK
a)OAL、BSP概念(重点)
OAL:
OAL(OEM适配层,OEMAdaptationLayer),用来引导系统核心映像和初始化、管理硬件。
它是BSP驱动的一部分。
BSP板级支持包(BoardSupportPackage),是介于硬件和操作系统中驱动层程序之间的一层,一般认为它属于操作系统一部分,主要是实现对操作系统的支持,为上层的驱动程序提供访问硬件设备寄存器的函数包,使之能够更好的运行于硬件主板。
b)BSP在嵌入式系统和Windows系统中的不同
其实运行在PC机上的Windows或Linux系统也是有BSP的。
只是PC机均采用统一的X86体系架构,这样一定操作系统(Win、Linux……)的BSP相对x86架构是单一确定的,不需要做任何修改就可以很容易支持OS在x86上正常运行,所以在PC机上谈论BSP这个概念也没什么意义了。
而对嵌入式系统来说情况则完全不同,目前市场上多种结构的嵌入式CPU(RISC)并存(PPC、ARM、MIPS...),为了性能的需要,外围设备也会有不同的选择和定义。
一个嵌入式操作系统针对不同的CPU,会有不同的BSP,即使同一种CPU,由于外设的一点差别(如外部扩展DRAM的大小,类型改变),BSP相应的部分也不一样。
所以根据硬件设计编写和修改BSP,保证系统正常的运行是非常重要的。
c)BSP在嵌入式开发中的位置和作用(重点)
BSP开发处于整个嵌入式开发的前期,是后面系统上应用程序能够正常运行的保证。
大概步骤如下:
1.硬件主板研制,测试。
2.操作系统的选定,BSP编程。
3.上层应用程序的开发。
BSP部分在硬件和操作系统,上层应用程序之间。
所以这就要求BSP程序员对硬件,软件和操作系统都要有一定的了解。
这样才能做好BSP编程。
熟悉工具方面:
电表,示波器,逻辑分析仪。
硬件仿真器,仿真调试环境
语言方面:
汇编语言,C语言
d)什么是“共享资源”,举出并行编程中的例子
可以被一个以上任务使用的资源叫做共享资源。
为了防止数据被破坏,每个任务在与共享资源打交道时,必须独占该资源,这叫做互斥。
e)优先级反转问题(重点)
1)不允许任何任务在临界区中执行时被抢占
当一个任务阻塞一个或多个优先级更高的任务时,将该任务的优先级暂时提高到被它阻塞的所有任务中具有的最高优先级,从而使该任务能够抢占它所阻塞的所有任务而进入临界区,并且不影响与它所进入的临界区无关的其他高优先级的任务的执行。
当任务退出临界区时恢复原来的优先级。
2)优先级继承协议
优先级上限协议定义了信号量的优先级上限(priorityceiling),一个信号量的优先级上限与可能锁定该信号量的所有任务中优先级最高的任务相等;
调度的时候不仅比较任务之间的优先级,还要比较信号的优先级上限。
当一个进程要进入一个临界区的时候,如果该进程的优先级不比已经被其他进程锁定的所有信号量的优先级上限高,则会被阻塞。
5.Uclinux(PPT)\Wince(PPT)
●UCLINUX
a)嵌入式uClinux基本架构(了解BootLoader、内核初始化、系统调用函数/捕获函数、设备驱动、文件系统)
BOOTLOADER:
负责Linux内核的启动,它用于初始化系统资源,包括SDRAM。
这部分代码用于建立Linux内核运行环境和从Flash中装载初始化ramdisk。
内核初始化:
Linux内核的入口点是start_kernel()函数。
它初始化内核的其他部分,包括捕获,IRQ通道,调度,设备驱动,标定延迟循环,最重要的是能够fork“init”进程,以启动整个多任务环境。
系统调用函数/捕获函数:
在执行完“init”程序后,内核对程序流不再有直接的控制权,此后,它的作用仅仅是处理异步事件(例如硬件中断)和为系统调用提供进程。
设备驱动:
设备驱动占据了Linux内核很大部分。
同其他操作系统一样,设备驱动为它们所控制的硬件设备和操作系统提供接口。
文件系统:
Linux最重要的特性之一就是对多种文件系统的支持。
这种特性使得Linux很容易地同其他操作系统共存。
文件系统的概念使得用户能够查看存储设备上的文件和路径而无须考虑实际物理设备的文件系统类型。
Linux透明的支持许多不同的文件系统,将各种安装的文件和文件系统以一个完整的虚拟文件系统的形式呈现给用户。
●WINCE
⏹WinCE5系统架构(图)
NK.EXE:
⏹系统API调用机制(重点)
⏹了解WinCE各模块的功能
⏹WinCE6系统架构(重点)
⏹WinCE5与WinCE6的内存管理区别(只出选择题)
◆每个进程都有2GB的虚拟内存
◆32K进程
◆统一内核
●关键的OS组件都移到了kernel空间
⏹WinCE6下驱动程序两种不同模式的区别(了解)
⏹其他部分只出选择题,阅读ppt就可以了
6.驱动程序开发(PPT)
a)设备驱动程序的概念
设备驱动程序是与硬件设备进行通信的系统程序。
一个设备可以是物理设备,也可以是一个逻辑实体。
通常,这些实体需要操作系统对其进行控制,资源管理。
设备驱动程序就是管理这些物理设备或者虚拟设备、协议或者系统服务的软件模块。
对于每一个的设备,设备驱动程序都是必不可少。
b)了解WinCE驱动程序概述的内容
“一般”驱动程序开发的理解
必须使用汇编语言对端口进行读写
设备驱动程序是操作系统的一部分,难于开发与调试。
设备驱动程序控制硬件
中断比较难于处理
对于逻辑设备驱动程序,采用Win32APIs从硬件获取数据
设备驱动程序是操作系统的一部分,难于开发与调试
对于UNIX/Linux或者是Windows9x,设备驱动程序是与操作系统映像连接的,并运行于系统内核态。
对于WindowsCE,大多数的设备驱动程序运行于用户态,简单的来说就是一个DLL文件。
设备驱动程序控制硬件
大多数的设备驱动程序用来控制硬件。
对于某些硬件,是没有驱动的。
CPU
内存
对于虚拟设备驱动程序,没有物理设备。
文件系统驱动程序
RAMdisk
c)WinCE设备驱动的分类(内置驱动、总线、流接口)
内置驱动
硬件所必须的驱动程序,这些驱动程序通常由设计OEM厂商进行设计。
如:
键盘,触摸屏,音频设备。
可能不支持一般的驱动接口,也有可能带有扩展的接口或者完全提供一个用户自定义的接口。
内置驱动通常需要针对具体的操作系统进行小幅改动。
总线
管理系统总线如PCI总线等,PCMCIA与CompactFlash也在其列。
负责处理总线上硬件的询问,以及资源的分配。
同时也请求设备管理器为总线上的硬件安装适当驱动程序。
流接口
流接口驱动包括所有提供流接口函数的驱动程序,不管由这个驱动控制的设备是什么类型。
典型的流接口驱动程序有:
文件系统驱动(iostream,fstream)
COM,LPT
d)了解WinCE下驱动的安装、加载过程
e)Linux下设备的分类
f)设备文件与设备号;
设备驱动的功能
7.嵌入式软件开发
a)开发工具划分
i.集成开发环境;
VS,ECLIPSE
ii.调试、跟踪、分析工具;
CORESIGHT、ICE&
TRACE
iii.软件仿真技术;
QUARTUSII
iv.图形化开发工具;
v.高效编译工具
b)问题1-问题5,了解
问题1——如何加快开发周期?
问题2——工具之间如何配合?
问题3——以图形替代文本
问题4:
如何调试?
尤其是OS
问题5:
如何提高编译性能?
尤其是对复杂处理器、多核处理器的
c)嵌入式系统设计流程(重点)
i.系统需求分析
这个阶段的主要任务是确认需求,分析投资收益比,研究项目的可行性,分析厂商所应具备的条件。
ii.体系结构设计
主要由各厂商向客户提交标书、介绍解决方案.
iii.硬件/软件设计
基于体系结构,对系统的软件,硬件进行详细设计。
iv.系统集成
把系统的软件,硬件和执行装置集成在一起,进行调试,发现并改进单元设计过程中的错误。
v.系统测试
对设计好的系统进行测试,看其是否满足规格说明书中给定的功能要求。
8.MVC架构图
a)详细了解MVC中M/V/C各部分内容,能画出虚/实线的各模块之间的调用及联系,以及所采用的技术(重点重点)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式软件开发技术 华农 嵌入式 软件 开发 技术 课程 复习 提纲