嵌入式第五章作业
嵌入式系统应用教程第五章
5.1 GCC
5.1.2 GCC的使用
-lname:ld链接程序链接函数库文件“libname.a”。ld链接程序会 自动链接常用的函数库文件,对于一些特殊的函数库文件,例如 “libpthread.a”,和用户自定义的函数库文件需要使用该参数。
-v:显示编译器调用的程序及版本信息。
--version:显示版本信息。
5.1 GCC
5.1.2 GCC的使用
-O:对编译、链接过程进行优化,产生的可执行代码的执行效率可 以提高,但是速度会慢一些。 -O2:比-O更好的优化,但过程会更慢。 -E:仅作预处理,处理结果在标准输出设备(显示器)输出。 -M:输出文件之间的依赖关系,通常为make程序所需要。 -MM:输出文件之间的依赖关系,但不包括头文件,通常为make程 序所需要。 -S:编译到汇编语言。 -Wall:编译时显示警告信息。 -Idirname :当源程序中出现“ #include “myh.h””语句时, cpp预处理程序查找头文件“myh.h”的顺序为当前目录、dirname目 录、系统预设目录(一般为/usr/include)。 -Ldirname : ld 链接程序查找函数库文件的顺序为 dirname 目录, 系统预设目录(一般为/usr/lib)。
表5-1 GCC所支持的文件名后缀
文件名后缀
文件类型 C语言源程序文件 由目标文件构成的档案库文件
.C或.cc或.cxx
.h .i
C++源程序文件
头文件 已经预处理过的C源程序文件
.ii
.m .o
已经预处理过的C++源程序文件
Object C源程序文件 编译后的目标文件
.s
.S
汇编语言源程序文件
微处理器系统结构与嵌入式系统设计 第五章 答案
5.10 用16K×1位的DRAM芯片组成64K×8位存储器,要求:(1) 画出该存储器的组成逻辑框图。
(2) 设存储器读/写周期为0.5μS, CPU在1μS内至少要访问一次。
试问采用哪种刷新方式比较合理?两次刷新的最大时间间隔是多少?对全部存储单元刷新一遍所需的实际刷新时间是多少?(1)组建存储器共需DRAM芯片数N=(64K*8)/(16K*1)=4*8(片)。
每8片组成16K×8位的存储区,A13~A0作为片内地址,用A15、A14经2:4译码器产生片选信号,逻辑框图如下(图有误:应该每组8片,每片数据线为1根)(2)设16K×8位存储芯片的阵列结构为128行×128列,刷新周期为2ms。
因为刷新每行需0.5μS,则两次(行)刷新的最大时间间隔应小于:为保证在每个1μS内都留出0.5μS给CPU访问内存,因此该DRAM适合采用分散式或异步式刷新方式,而不能采用集中式刷新方式。
●若采用分散刷新方式,则每个存储器读/写周期可视为1μS,前0.5μS用于读写,后0.5μS用于刷新。
相当于每1μS刷新一行,刷完一遍需要128×1μS=128μS,满足刷新周期小于2ms的要求;●若采用异步刷新方式,则应保证两次刷新的时间间隔小于15.5μS。
如每隔14个读写周期刷新一行,相当于每15μS刷新一行,刷完一遍需要128×15μS=1920μS,满足刷新周期小于2ms的要求;需要补充的知识:刷新周期:从上一次对整个存储器刷新结束到下一次对整个存储器全部刷新一遍为止的时间间隔。
刷新周期通常可以是2ms,4ms或8ms。
DRAM一般是按行刷新,常用的刷新方式包括:●集中式:正常读/写操作与刷新操作分开进行,刷新集中完成。
特点:存在一段停止读/写操作的死时间,适用于高速存储器。
(DRAM 共128行,刷新周期为2ms ,读/写/刷新时间均为0.5μS )● 分散式:一个存储系统周期分成两个时间片,分时进行正常读/写操作和刷新操作。
嵌入式技术应用教程——SC第五章
第五章中断中断是指计算机在执行程序的过程中,当出现异常情况或特殊请求时,计算机停止现行程序的运行,转向对这些异常情况或特殊请求的处理,处理结束后再返回现行程序的间断处,继续执行原程序。
中断是单片机或ARM实时地处理内部或外部事件的一种机制。
换言之,中断可以作为ARM外围设备与CPU之间的一种联系或通信方式。
S3C2410A中有56个中断源,这些中断源分别为:表 5.1假如UART0的接收缓存收到了来自外部的数据,那么设备UART0要通知CPU已经收到数据,请示CPU进行下一步工作。
那么UART0要通过什么方式告知CPU收到数据了呢?设想一下,UART是通用异步收发器的英文缩写,一般在ARM芯片与外部进行数据传输的时候并不是一直不断地进行数据交换,而是断断续续地进行数据通信,那么CPU不可能一直监视着UART设备。
在UART设备不进行数据收发时,CPU可以去进行别的程序处理。
一旦UART 设备需要和外部进行数据传输的时候,比如收到了来自外部设备的一帧数据,此时CPU还在进行着别的程序处理,那么UART设备就要告知CPU收到数据了,需要对数据进行处理,UART会通过中断的方式通知CPU,打断CPU正在进行的工作,让CPU对UART收到的数据进行处理。
此时CPU收到UART的中断通知,那么他会停下正在处理的工作,保存当前的数据,转向UART的数据处理程序(UART中断服务程序)对UART收到的数据进行处理,处理完毕后如果没有其他设备的中断请求,CPU会跳转回UART中断之前的程序,调出中断时保存的数据继续运行中断之前的程序。
S3C2410A是以ARM920T为内核的ARM,ARM920T内核有两种中断模式:FIQ和IRQ。
IRQ全称为Interrupt Request,即是“中断请求”的意思。
FIQ全称为Fast Interrupt Request,即是“快速中断请求”的意思。
FIQ模式是特权模式中的一种,同时也属于异常模式一类。
中北大学嵌入式习题答案第5章
第五章 linux与C语言编程基础一、填空题1、在宿主机上使用编译器软件将嵌入式应用、嵌入式操作系统编译成为可以在目标机上运行代码的过程,称为交叉编译,而采用的编译器称为交叉编译器。
2、C语言中采用 _ asm 标记实现嵌汇编。
3、使用gcc命令若想生成调试信息,应该给gcc加参数 -g ,若想生成警告信息,应该给gcc加参数 -Wall 。
4、有源文件test.c,若想生成目标文件test.o,正确的命令是 gcc -c test.c 。
5、gdb对可执行文件进行调试。
6、工程管理器make读入的配置文件为__makefile__。
7、不带缓存的文件I/O操作,主要用到的5个函数为open、close、read、write和 lseek 。
这里的不带缓存是指每一个函数都只调用系统中的一个函数(不理解这句话的含义)。
这些函数虽然不是ANSI C的组成部分,但是是POSIX 的组成部分。
lseek函数(随机访问文件)移动文件读/写指针使用UNIX系统调用来读取文件容时,系统究竟是从文件的哪一个位置读取数据,完全由文件指针决定。
例如:刚开始读取数据时,文件指针通常是指向文件的起始位置。
二、选择题1、假设当前目录下有文件Makefile,下面是其容:pr1: prog.o subr.ogcc –o pr1 prog.o subr.oprog.o: prog.c prog.hgcc –c –l prog.o prog.csubr.o: subr.cgcc –c –o subr.o subr.cclear:rm –f pr1*.o现在执行命令make clear,实际执行的命令是( A ):A、rm –f pr1*.oB、gcc –c –l prog.o prog.cC、gcc –c –o subr.o subr.cD、都执行2、_ B 命令是在vi编辑器中执行存盘退出。
A ) qB ) wq C) q! D) WQ3、在vi编辑器中执行不存盘退出的命令为( A )A、:q 编译结束,退出viB、:sqC、:q! 不保存编辑过的文档,强制退出D、:wq 保存文档并推出4、vi编辑器中不包括下面哪种模式( A )A、编辑模式B、命令行模式C、插入模式D、底行模式【解】:命令行模式——初始模式插入模式底行模式5、下面哪种语言GCC编译器不支持( C )A、CB、JavaC、ASPD、C++ASP即Active Server Pages,是MicroSoft公司开发的服务器端脚本环境,可用来创建动态交互式网页并建立强大的web应用程序。
嵌入式系统开发 第五章 课后作业答案
第五章 硬件电路与接口技术
1、写出最小系统的定义,并画出最小系统原理框图.
答:单片机最小系统即单片机的时钟电路和单片机的复位电路。
2、电源电路设计有哪些要点? 答:必须考虑的因素有:输出的电压、电流和功率;输入的电压、
电流;安全因素;输出纹波;电磁兼容和电磁干扰;体制限制;功耗限制;成本限制。
3、LPC2000系列ARM时钟系统如何设计?
答:设计电路:
时钟系统 调试测试接口
嵌入式控制器 复位及复位配置系统
存储器系统
供电系统 LPC2000 X1X2
4、写出Nand和Nor型Flash的异同点。
答:区别:
两者工艺不一样,Nor读取速度快,成本高,容量不易做
大,Nand读取慢,成本低,容量很容易作大。
相同点:
都是采用FLASH技术生产
功能:
Nor适合作为芯片程序存储的ROM使用,Nand适合作为
非易失性数据存储器。
山东科技大学嵌入式系统设计作业习题
《嵌入式系统设计》作业习题第一章:嵌入式系统概述1 .和PC系统机相比嵌入式系统不具备以下哪个特点(C)。
A、系统内核小B、专用性强C、可执行多任务D、系统精简2 .嵌入式系统有硬件和软件部分构成,以下(C)不属于嵌入式系统软件。
A.系统软件B.驱动C.FPGA编程软件D.嵌入式中间件3 .以下哪个不是嵌入式系统设计的主要目标?(D)A低成本B低功耗C实时要求高D超高性能4 .下面哪个系统不属于嵌入式系统(C)A、MP3播放器B、GPS接收机C、“银河”巨型计算机D、“银河玉衡”核心路由器5 .下面关于哈佛结构描述正确的是(A)A程序存储空间与数据存储空间分离B存储空间与IO空间分离C程序存储空间与数据存储空间合并D存储空间与IO空间合并6 .嵌入式操作系统的主要目标并不包括(A)A强大多任务支持B实时处理能力C代码体积D与硬件的交互能力7 .以下属于嵌入式操作系统的是(BC)A、LinUX操作系统B、μC∕0S∙ll操作系统C、VXWorkS操作系统D、UbUntU操作系统8 .嵌入式系统的基本定义为:以O中心,以()为基础,O可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的O系统。
应用计算机技术软硬件专用计算机9 .以MCU为核心的嵌入式产品至少应包括(BCD)A、显示部分B、输入部分C、输出部分D、通信部分10、一般而言,嵌入式系统的构架可以分为4个部分:分别是(处理器)、存储器、输入/输出和软件,一般软件亦分为操作系统相关和(应用软件)两个主要部分。
第二章:STM32微控制器概述LCorteX-M处理器采用的架构是(D)(A)v4T(B)v5TE(C)v6(D)v72 .Cortex-M3的提供的流水线是(B)(A)2级(B)3级(C)5级(D)8级3 .Cortex-M3系列处理器支持Thumb-2指令集。
(对)4.STM32系歹IJMCU在使用电池供电时,提供3.3~5V的低电压工作能力。
嵌入式系统开发作业指导书
嵌入式系统开发作业指导书第一章前言嵌入式系统是一种特定用途的计算机系统,通常被嵌入到其他设备中,以完成特定的任务。
嵌入式系统开发涉及到硬件设计、软件开发和系统验证等多个方面。
本指导书旨在帮助学生理解并顺利完成嵌入式系统开发的作业。
第二章实验要求2.1 实验目标本次作业的实验目标是设计并实现一个简单的嵌入式系统,完成指定任务并满足特定要求。
通过这个实验,学生将会了解嵌入式系统的基本概念、开发流程和相关工具的使用。
2.2 实验内容在本次作业中,学生需要完成以下任务:1. 硬件设计:根据要求,设计并实现嵌入式系统的硬件电路。
2. 软件开发:使用指定的编程语言,编写适配于目标硬件的嵌入式系统软件。
3. 系统验证:测试和验证已开发的嵌入式系统,确保其满足设计要求。
2.3 实验要求1. 学生需要按照实验指导书中的指导完成实验要求。
2. 实验过程中需要注意安全,并且遵循实验规范。
3. 学生需要详细记录实验过程,包括设计理念、实施方法、结果分析等。
4. 实验报告需要包括硬件设计图、软件源代码和系统测试结果等。
第三章实验流程3.1 硬件设计在硬件设计阶段,学生需要完成以下步骤:1. 确定嵌入式系统的功能和性能要求。
2. 根据要求设计硬件电路,包括主控芯片、外设接口等。
3. 完成原理图设计和PCB布局,并进行必要的仿真和验证。
3.2 软件开发在软件开发阶段,学生需要完成以下步骤:1. 选择适当的编程语言和开发工具。
2. 根据硬件设计和功能需求,编写嵌入式系统的软件代码。
3. 进行编译、烧录和调试,确保软件能够正确运行。
3.3 系统验证在系统验证阶段,学生需要完成以下步骤:1. 设计合适的测试用例,包括功能测试和性能测试。
2. 运行测试用例,记录测试结果并进行分析。
3. 优化系统的设计和实现,以满足性能要求。
第四章实验注意事项1. 本实验需要学生具备一定的硬件和软件开发基础知识。
2. 在实验过程中,学生需要按照指导书中的要求和步骤进行实验。
嵌入式软件开发技术作业5_北工大
嵌入式软件开发技术作业51.Windows内存管理的体系结构及各组成元素的特点。
答: Windows采用层次化的结构进行内存管理。
不同层次的内存管理都提供了一些接口供应用程序使用。
应用程序可以根据所需要的内存管理类型和相关的功能在操作系统中是如何实现的来确定使用何种类型的内存模型。
1)物理内存管理跟踪物理内存的使用,为换页程序抓取可用的物理页面,释放不用的物理页面。
2)虚存管理管理系统的地址映射,页面的换入换出。
3)逻辑内存(堆、栈)管理进程空间内部的动态内存释放与回收,以支持程序的动态数据结构2.Windows CE文件系统的组成及特点。
答:组成:Window CE中的文件系统和所有与文件相关的API 都是通过FileSys.exe进程来管理的。
FileSys.exe 由ROM文件系统、存储管理器、对象存储组成。
1)ROM文件系统ROM 文件系统连接到统一文件系统中的“\Windows”文件夹。
基于RAM 的文件系统通常连接到呈现给应用程序的统一文件系统的根。
就是说,文件“\MyFile.txt”位于统一系统的根和RAM 文件系统的根中。
这意味着,ROM 中的所有文件均可作为“\Windows”文件夹中的只读文件来访问。
2)存储管理器存储管理器包含四个部分:存储驱动程序、分区驱动程序、文件系统驱动程序、文件系统筛选器。
存储管理器是一个分层结构,因此一次完整的磁盘I/O必然经过其各个层:首先是过滤层,进行加密、压缩、病毒扫描等工作;之后到达文件系统驱动层,在此对参数进行格式化,将文件名转换为设备地址;然后经分区管理器或直接交由块设备驱动程序完成最终的I/O操作。
当系统发现新的外围设备时,存储管理器为其加载分区驱动程程序和文件系统驱动程序:a)设备管理器负责装载块设备的驱动程序b)该设备发一个通知,告知存储管理器该设备名及其GUID;c)存储管理器根据配置信息为该设备加载分区驱动程序;d)存储管理器为每个分区加载文件系统驱动程序3)对象存储对象存储是一个内存堆,包含RAM 系统注册表、RAM 文件系统和属性数据库。
嵌入式linux实战教程第五章[16页]
• 5.1 驱动原理 • 5.2 内核模块的相关命令使用 • 5.3 设备分类 • 5.4 设备驱动程序开发步骤 • 5.5 应用程序、库、内核、驱动程序的关系 • 5.6 Linux驱动程序开发步骤 • 5.7 驱动程序的加载和卸载 • 5.8 关键概念 • 5.9 中断与异常 • 5.10 并发和竞态
5.7 驱动程序的加载和卸载
在linux系统开发中可以将驱动程序静态编译进内核 中,也可以将它作为模块在使用时再加载。在配置内 核时,如果某个配置项设为m,就表示它将会被编译成 一个模块。在linux 2.6内核中,模块的扩展名为.ko,可 以使用insmod命令加载,使用rmmod命令卸载,使用 lsmod命令查看内核中已经加载了哪些模块。 • 当使用insmod加载模块时,模块的初始化函数被调 用,它用来向内核注册驱动程序;当使用rmmod卸载 模块时,模块的清除函数被调用。 • 注意:模块有多种,比如文件系统也可以编译为模块, 并不是只有驱动程序。
Linux内核中采用可加载的模块化设计(LKMs, Loadable Kernel Modules),一般情况下编译的Linux内 核是支持可插入式模块的,也就是将最基本的核心代 码编译在内核中,其他的代码可以编译到内核中,或 者编译为内核的模块文件(在需要时动态加载)。
5.2 内核模块的相关命令使用
5.8 关键概念
• 5.8.1 不可剥夺型(non-preemptive kernel):(分时操作系统内核) • 5.8.2 可剥夺型内核(preemptive kernel):(实时操作系统内核) • 5.8.3 可重入函数: • 5.8.4 资源: • 5.8.5 共享资源: • 5.8.6 代码的临界段 • 5.8.7 实时系统的特点 • 5.8.8 死锁: • 5.8.9 Linux将进程状态描述为如下五种: • 5.8.10 linux内核的三种调度方法: • 5.8.11 所有任务都采用linux分时调度策略时 • 5.8.12 所有任务都采用FIFO时 • 5.8.13 所有任务都采用RR调度策略时 • 5.8.14 进程调度依据(系统进程调度原理 • 5.8.15 描述进程的数据结构task_struct(任务结构体) • 5.8.16 Linux使用内核函数goodness()对进程进行加权处理
嵌入式系统作业(第5~8章)-保证有正确答案
您的本次作业分数为:100分单选题1.致力于IP核质量衡量,提升IP核安全性和有关标准研发的组织不包括()。
A VSIAB OCP-IPC SPIRTD VCID正确答案:D单选题2.以下哪种方式不是Verilog对设计建模的方式()。
A 行为描述方式---用过程化结构建模B 接口描述方式---用模块化结构建模C 数据流方式---使用连续赋值语句方式建模D 结构化方式---用门和模块实例语句描述建模正确答案:B单选题3.XC系列FPGA是下列哪个公司的产品?A XilinxB AlteraC IntelD AMD正确答案:A单选题4.下列哪种存储设备在掉电情况下会丢失数据?A 内存B FlashMemoryC CF卡D 硬盘单选题5.Linux是UNIX类操作系统的一种,它对UNIX有很好的兼容性,下面不是它特点的是()。
A 实时性强B 互操作性强C 多硬件平台支持,多处理器支持。
D 内存保护模式,共享库支持,TCP/IP、SLIP和PPP支持。
正确答案:A单选题6.用来描述一个任务,使得任务得以独立运行的数据结构是()。
A TLBB TCBC BSPD 以上皆不是正确答案:B单选题7.设备名”/sd0”对应的设备类型是()。
A 串口设备B 软盘驱动器C 管道设备D SCSI设备正确答案:D单选题8.当任务等待的资源变得可用时,会触发的任务状态的转换是()。
A 运行-->阻塞B 阻塞-->就绪C 延迟-->就绪D 运行-->延迟单选题9.目前Leon系列处理器包括以下哪个型号()。
A Leon2B Leon1C Leon4D Leon5正确答案:A单选题10.VxWorks操作系统是WindRiver公司推出的一种32位嵌入式实时操作系统,下面不是它优点的是()。
A VxWorks源码开源,用户的开发成本低。
B 简洁、紧凑、高效的内核。
C 支持多任务,实时性强。
D 较好的兼容性和对多种硬件环境的支持。
嵌入式操作系统教程-第五章
嵌 入 式 操 作 系 统 基 础 第 五 章 uC/OS-II
§5.2 任务的创建
1.任务创建必须完成的三大工作:任务堆栈的初始 化、任务控制块的初始化和任务调度。
创建函数OSTaskCreate() 创建函数OSTaskCreate() 创建函数OSTaskCreateExt() 创建函数OSTaskCreateExt()
2
嵌 入 式 操 作 系 统 基 础 第 五 章 uC/OS-II
变量OSRedyGrp和OSRdyTbl[]的对应关系: 变量OSRedyGrp和OSRdyTbl[]的对应关系: OSRedyGrp 的对应关系
当OSRdyTbl[0]中的任何一位是1时,OSRdyGrp的第0位置1, 当OSRdyTbl[1]中的任何一位是1时,OSRdyGrp的第1位置1, 当OSRdyTbl[2]中的任何一位是1时,OSRdyGrp的第2位置1, 当OSRdyTbl[3]中的任何一位是1时,OSRdyGrp的第3位置1, 当OSRdyTbl[4]中的任何一位是1时,OSRdyGrp的第4位置1, 当OSRdyTbl[5]中的任何一位是1时,OSRdyGrp的第5位置1, 当OSRdyTbl[6]中的任何一位是1时,OSRdyGrp的第6位置1, 当OSRdyTbl[7]中的任何一位是1时,OSRdyGrp的第7位置1,
嵌 入 式 操 作 系 统 基 础 第 五 章 uC/OS-II #if OS_TASK_DEL_EN INT8U OSTaskDel (INT8U prio) ;
3.任务删除函数
4.查询任务信息
INT8U OSTaskQuery ( INT8U prio, OS_TCB *pdata )
12
3
嵌 入 式 操 作 系 统 基 础 第 五 章 uC/OS-II
精品文档-嵌入式Linux开发技术及实践-第5章
第5章 驱 动 移 植
编译成可以被动加载或卸载的模块。此方式可以在 内核配置时进行选择,不会增加内核的大小。
一般情况下,Linux最基础的驱动,如CPU、PCI总线、 TCP/IP协议等驱动程序直接编译进内核文件中,而类似声 卡或网卡的驱动程序则是通过编译成模块进行加载。在内 核配置时,若某个选项被配置成[m],那么它将被编译为一 个模块。在Linux2.6内核中,驱动程序编译后的扩展名 为.ko。
Linux内核:执行异常处理函数,并根据编程库传 入的参数进行操作,例如,根据open( )函数打开设备的设 备名称找到相应设备的驱动程序。
第5章 驱 动 移 植
驱动程序:与硬件设备的接口,包含所有设备的 open( )、read( )、write( )、ioctl( )等函数,可实现对硬 件设备的读、写以及控制等操作,是内核组成的一部分。
第5章 驱 动 移 植
2. 设备号 设备号是一个数字,是设备的标志,分为主设备号和次 设备号,其中:
主设备号:表明了设备的类型,与一个确定的驱动 程序对应,即所有主设备号相同的设备拥有同一个驱动程序。
次设备号:通常是用于标明设备不同的属性,例如 不同的使用方法、不同的位置、不同的操作等,它标志着某 个具体的物理设备。
如果说系统调用是Linux内核和应用程序之间的接口, 那么设备驱动程序则可以看成是Linux内核与外部设备之间的 接口。当应用程序调用open( )、read( )、write( )、 ioctl( )等函数时,最终的过程是内核使用驱动程序中提供的 open( )、read( )、write( )、ioctl( )相关函数对设备来进 行操作。
第5章 驱 动 移 植
2) 模块卸载命令rmmod( ) 用户不需要该模块时,可以使用rmmod( )命令进行卸载。 当系统执行rmmod( )命令时,调用由module_exit( )指定的 模块注销函数,由该函数完成设备的卸载。 3) 模块查看命令lsmod( ) 任何时候用户都可以使用命令lsmod( )来查看目前已经 加载的模块以及正在使用该模块的用户数。 一个简单的模块源码如下所示。
ARM嵌入式体系结构与接口技术(Cortex-A53版) 第五章
ANDS Wd, Wn, #bimm32 d = Wn AND bimm32,根据结果设置N和Z条件标志位,并清除C和V条件标志位。
ANDS Xd, Xn, #bimm64
Xd = Xn AND bimm64,根据结果设置N和Z条件标志位,并清除C和V条件标志位
// X1中的值右移5位,X0加X1,结果赋值给X2 // X0中的值左移2位,结果赋值给X1 // X0中的值右移4位,X2减X0,结果赋值给X1
内存访问指令寻址方式
在AArch64指令集中的加载/存储寻址模式大致遵循T32,使用通用寄存器Xn(n = 0-30)或当前堆栈指针SP的64位 基址,具有立即数或寄存器偏移量方式。完整的寻址模式如表5-4所示。某些类型的加载/存储指令可能仅支持其中的 一部分。
指令格式
MOVZ Wt, #uimm16{, LSL #pos} MOVZ Xt, #uimm16{, LSL #pos} MOVN Wt, #uimm16{, LSL #pos} MOVN Xt, #uimm16{, LSL #pos} MOVK Wt, #uimm16{, LSL #pos} MOVK Xt, #uimm16{, LSL #pos}
语法
1
#<immediate>
2
<Xm>
3
<Xm>, LSL #<shift_imm>
4
<Xm>, LSL <Rs>
5
<Xm>, LSR #<shift_imm>
6
<Xm>, LSR <Rs>
7
<Xm>, ASR #<shift_imm>
嵌入式-5
13
• 从运行结果可以看到,任务MyTask就不会在任务YouTas k访问共享资源s期间来访问s了。这样就避免了多个任务 使用同一个共享资源时所出现的冲突现象。 • 如果把任务YouTask代码中的发信号语句“ac_key=TRU E;”删掉,再运行这个程序就会发现,由于任务YouTask 不发信号,所以会使得高优先级别的任务MyTask虽然获 得了CPU的使用权,但由于始终得不到信号量而不能运 行,当然也就没有机会让出CPU的使用权,从而也就导 致任务YouTask不能运行,于是应用程序就死掉了。 • 解决上述问题的一个合理的办法就是给等待信号量的任 务设置一个等待时限。当等待信号量的任务因等待某信 号量的时间超过这个时限时,可以使等待任务脱离等待 状态而继续运行,这样就不会出现上述的死机现象了 (这部分的内容见本节“等待任务列表”部分)。
• OSEventTbl[] 和 OSEventGrp 很像前面讲到的OSRdyTbl[] 和OSRdyGrp,只不过前两者包含的是等待某事件的任务, 而后两者包含的是系统中处于就绪状态的任务。 • OSEventCnt 当事件是一个信号量时,该量是用于信号量 的计数器。
24
成员OSEventType可能的取值见下表:
为了实现各任务之间的合作和无冲突的运行,在 各任务之间必须建立一些制约关系: ● 直接制约关系:源于任务之间的合作。 ● 间接制约关系:源于对资源的共享。
• 直接制约关系举例:有2个任务,任务A和任务B,他们需 要通过访问同一个数据缓冲区,合作完成一项工作,任务 A负责向缓冲区写入数据,任务B负责从缓冲区读数据。 显然,任务A还未向缓冲区写入数据时(缓冲区为空时), 任务B因不能从缓冲区得到有效数据而处于等待状态。只 有等任务A向缓冲区写入了数据后,才应该通知任务B去 取数据。相反,当缓冲区的数据还未被任务B读取时(缓 冲区还满时),任务A就不能向缓冲区写入新的数据而应 该处于等待状态,只有等任务B自缓冲区读取数据后,才 应该通知任务A去写入数据。
嵌入式完整系统(第二版)第一至第五章课后答案
第一章思考与练习1、举出3个书本中未提到的嵌入式系统的例子。
答:红绿灯控制,数字空调,机顶盒2、什么叫嵌入式系统嵌入式系统:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
3、什么叫嵌入式处理器?嵌入式处理器分为哪几类?嵌入式处理器是为完成特殊的应用而设计的特殊目的的处理器。
嵌入式微处理器(Embedded Microprocessor Unit, EMPU)嵌入式微控制器(Microcontroller Unit, MCU)嵌入式DSP 处理器(Embedded Digital Signal Processor, EDSP)矚慫润厲钐瘗睞枥庑赖。
嵌入式片上系统(System On Chip)4、什么是嵌入式操作系统?为何要使用嵌入式操作系统?是一段在嵌入式系统启动后首先执行的背景程序,首先,嵌入式实时操作系统提高了系统的可靠性。
其次,提高了开发效率,缩短了开发周期。
再次,嵌入式实时操作系统充分发挥了32 位CPU 的多任务潜力。
聞創沟燴鐺險爱氇谴净。
第二章1、嵌入式系统项目开发的生命周期分哪几个阶段?各自的具体任务是什么?项目的生命周期一般分为识别需求、提出解决方案、执行项目和结束项目4 个阶段。
识别需求阶段的主要任务是确认需求,分析投资收益比,研究项目的可行性,分析厂商所应具备的条件。
提出解决方案阶段由各厂商向客户提交标书、介绍解决方案。
执行项目阶段细化目标,制定工作计划,协调人力和其他资源;定期监控进展,分析项目偏差,采取必要措施以实现目标。
结束项目阶段主要包括移交工作成果,帮助客户实现商务目标;系统交接给维护人员;结清各种款项。
2、为何要进行风险分析?嵌入式项目主要有哪些方面的风险?在一个项目中,有许多的因素会影响到项目进行,因此在项目进行的初期,在客户和开发团队都还未投入大量资源之前,风险的评估可以用来预估项目进行可能会遭遇的难题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
答:此空间有2类不同的物理存储空间,一个是特殊功能寄存器区,一个是RAM区。直接寻址访问特殊功能寄存器,间接寻址访问RAM区。
7.写出完成下列要求的C语言程序。
(1)将地址为4000H的片外数据存储单元内容,送入地址为30H的片内数据存储单元中。答:可使用绝对地址访问函数实现DBYTE[0x30] = XBYTE[0x4000];
(2)将地址为4000H的片外数据存储单元内容,送入地址为3000H的片外数据存储单元中。
答:可使用绝对地址访问函数实现XBYTE [0x3000] = XBYTE[0x4000];
(3)将地址为0800H的程序存储单元内容,送入地址为30H的片内数据存储单元中。
答:可使用绝对地址访问函数实现DBYTE [0x30] = CBYTE[0x0800];
#inclucle <intrins.h>
_cror_(DBYTE [0x30],4);
10.编写程序,用30H单元内容除以40H单元内容,商送入50H单元,余数送入51H单元。答:
涉及直接地址,用汇编实现:
ORG 0000H
MOV SP,#49H
MOV A,30H ;被除数
MOV B,40H;除数
MOV R0,A;答:字节操作指令R0=(A)=38H
MOV 29H,R0;答:字节操作指令(29H)=(R0)=38H
SETB RS0;答:位操作指令(RS0)=1
MOV R1,A;答:字节操作指令R1=(A)=38H
MOV 26H,A;答:字节操作指令(26H)=(A)=38H
MOV 28H,C;答:位操作指令(28H)=(C)=0
(4)将片内数据存储器中地址为30H与40H的单元内容交换。
答:
unsigned char temp;
temp= DBYTE [0x40];
DBYTE [0x40]= DBYTE [0x30];
DBYTE [0x30]= temp;
(5)将片内数据存储器中地址为30H单元的低4位与高4位交换。
答:使用C51提供的本征函数_cror_实现;
如fosc=12MHz,这段程序的执行时间=11μs
23.在C51中为何要尽量采用无符号的字节变量或可提高代码效率的方法就是减小变量的长度,使用ANSI C编程时,一般习惯于对变量使用int类型,而对于像80C51这类8位的单片机来说这是一种极大的浪费。
80C51单片机机器指令只支持字节和位变量,所以应该仔细考虑所声明的变量值的可能的取值范围,然后选择合适的变量类型。尽可能地选择变量类型为char、unsigned char或bit,它们只占用1B或1位。
24.为了加快程序的运行速度,C51中频繁操作的变量应定义在哪个存储区?
答:
局部变量和全局变量可以被定义在任何一个存储区中,根据前面的讨论,把经常使用的变量放在内部RAM中时,可使程序的速度得到提高。
除此之外,还缩短了程序代码,因为外部存储区寻址的指令,相对要麻烦一些。考虑到存取速度,推荐读者按data→idata→pdata→xdata的顺序使用存储器,当然要记得在idata空间中留出足够的堆栈空间。
25.为何在C51中避免使用float浮点型变量?
答:
在80C51单片机系统上使用32位浮点数是得不偿失的,这样做会浪费单片机大量的存储器资源和程序执行时间。一定要在系统中使用浮点数的时候,可以通过提高数值数量级或使用整型运算代替浮点运算。
在运算时,可以进行定点运算的尽量进行定点运算,避免进行浮点运算。尽量减少乘除法运算,如*2n或/2n,可以使用移位操作代替乘除法运算,这样不仅可以减少代码量,同时还能大大提高程序执行效率。处理ints和longs比处理doubles和floats要方便得多,代码执行起来会更快,C51编译器也不用连接处理浮点运算的模块。
3.何为寻址方式?80C51单片机有哪些寻址方式?答:80C51单片机共有7种寻址方式:
寄存器寻址
寄存器间接寻址
直接寻址
立即寻址
基址寄存器+变址寄存器的间接寻址
相对寻址
位寻址
4.什么是源操作数?什么是目的操作数?通常在指令中如何加以区分?
答:
在双操作数的指令中,指令执行后的结果放在其中的一个操作数中,这个操作数是目的操作数,另外一个是源操作数。80C51指令系统中,不靠近指令操作码的是源操作数,源操作数可以是立即数。80C51指令系统中,紧跟在指令操作码之后是目的操作数,算术运算和大多数逻辑运算其目的操作数必须是累加器A,目的操作数不允许使用立即数寻址方式。
using m指明该中断服务程序所对应的工作寄存器组,取值范围为0~3。指定工作寄存器组的缺点是所有被中断调用的过程都必须使用同一个寄存器组,否则参数传递会发生错误。通常不设定using m,除非保证中断程序中未调用其他子程序。
使用C51编写中断服务程序,程序员无须关心ACC、B、DPH、DPL、PSW等寄存器的保护,C51编译器会根据上述寄存器的使用情况在目标代码中自动增加压栈和出栈。
DIV AB;A/B
MOV 50H,A ;商存50H单元
MOV 51H,B ;余存51H单元
SJMP $ ;程序在此死循环
END
17.
答:
CLR C;答:位操作指令(C)= 0
CLR RS1;答:位操作指令(RS1)= 0
CLR RS0;答:位操作指令(RS0)= 0
MOV A,#38H;答:字节操作指令A=38H
5.查表指令是在什么空间上的寻址操作?
答:由于对程序存储器只能读而不能写,因此其数据传送是单向的,即从程序存储器读取数据,且只能向累加器A传送。这类指令共有两条,其功能是对存放于程序存储器中的数据表格进行查找传送,所以又称查表指令。
MOVC A,@A+DPTR
MOVC A,@A+PC
这两条指令都为变址寻址方式。前一条指令以DPTR作为基址寄存器进行查表,使用前可先给DPTR赋予任何地址,因此查表范围可达整个程序存储器的64KB空间。后一条指令以PC作为基址寄存器,虽然也提供16位基址,但其值是固定的。由于A的内容为8位无符号数,所以这种查表指令只能查找所在地址以后256B范围内的常数或代码。
26.如何定义C51的中断函数?
答:
80C51的中断系统十分重要,C51编译器允许在C语言源程序中声明中断和编写中断服务程序,从而减轻了采用汇编程序编写中断服务程序的烦琐程度。通过使用interrupt关键字来实现。定义中断服务程序的一般格式如下:
关键字interrupt后面的n是中断号,n的取值范围为0~31。编译程序从8n+3处产生中断向量,即在程序存储器8n+3地址处形成一条长跳转指令,转向中断号n的中断服务程序。中断号对应着IE寄存器中的使能位,换句话说IE寄存器中的0位对应着外部中断0,相应的外部中断0的中断号是0。