2022年embedded嵌入式系统知识点 .pdf
1、CMD:即连接器命令文件。输入指明输出,描述了硬件资源中的存储资源以及代码、变量、常量等与存储空间的对应关系。根据目标系统寄存器的配置,以及用户自定义的程序和数据的存放地址,由汇编器产生的浮动地址目标文件,生成绝对地址可执行文件。2、CMD 文件的用途:描述配置:-o 编译后的输出文件;-l 副文件; -stack 栈的大小; -heap 堆的大小描述内存空间的分布情况开始于结束的位置内容空间的分配:内容与存储空间对应。内容包括代码、变量、常量、矢量、far 4、RTS6000.lib ,即实时运行库文件,保证能够有C语言的实时运行支撑环境5、进行性能分析测试的目的:检验程序是否能达到实时必要需求关注点:空间复杂度:代码的尺寸(size)时间复杂度:调用次数、周期(单次运行时间)6、DMA:即直接存储器访问。其功能是在CPU不介入下实现存储器映象两个区域之间数据的传输。实现过程:确定使用的通道对选定通道的寄存器进行设置:主控寄存器、 源/目的地址寄存器、 计数寄存器主控寄存器只能设置 (star)启动或停止,可查询 (status)状态(是否中断或结束)7、线性汇编改写的格式1)定义函数名称、实现参数传递。2)为暂时存放临时数据的寄存器定名,由.reg ( register)完成。3)数据初始化。4)处理程序的循环体部分。首先定义一个标号作为循环返回的标志;之后,将循环变量vptr(即 count)减一;利用 C6x指令的条件执行功能通过对vptr 是否为零的判断条件执行跳转指令。最后, .return 实现数据的返回。5) 一切工作完成后,使用 .endproc 作为函数结束的标志。记住变量所是的寄存器 (.reg) 8、完整的汇编程序包括:数据初始化、子程序、复位程序、连接器命令文件9、C程序的优化用到的方法:循环展开、内联函数、字访问(强制类型转换)1、嵌入式系统: 以应用为中心、以计算机技术为基础,软硬件可裁剪,应用系统对功能、可靠性、成本、体积、功耗和应用环境有特殊要求的专用计算机系统。是将应用程序、操作系统和计算机硬件集成在一起的系统。2、嵌入式系统的核心 -嵌入式微处理器3、嵌入式系统特点:功耗限制、低成本、多速率、环境相关性、系统内核小、专用性强、不可垄断性、产品相对稳定性、实时性4、实时性的本质 :任务处理所花费时间的可预测性,即任务需要在规定的时限内完成。硬实时 &软实时: “ 软” 意味着如果没有满足指定的时间约束并不会导致灾难性的后果,而对于硬实时系统来说却是灾难性的。5、软实时和硬实时之间的区别:通常与系统的时间精度有关,软实时任务的调度精度必须大于千分之一秒,而硬实时任务为微秒级。6、嵌入式系统组成 :软件子系统【应用程序、操作系统(协议栈)】硬件子系统【处理器、外围设备(存储器、输入接口、输出接口)】名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 7 页 - - - - - - - - - 7、最小硬件系统 :嵌入式控制器时钟系统、供电系统(电源)、存储器系统 (可选)、复位及其配置系统、调试测试接口(可选) 8、嵌入式处理器分类 :微处理器(Microprocessor Unit, MPU)、微控制器(Microcontroller Unit, MCU) 嵌入式DSP (Embedded Digital Signal Processor, EDSP)、片上系统(System On Chip,SOC ) 9、嵌入式系统设计主要步骤:需求分析、规格说明、结构设计、构件设计、调试与集成10、CISC:复杂指令集( 寻址方式复杂 )RISC :精简指令集( Load/Store结构)具有大量的指令和寻址方式, 指令长度可变只包含最有用的指令,指令长度固定8/2 原则: 80% 的程序只使用 20% 的指令确保数据通道快速执行每一条指令大多数程序只使用少量的指令就能够运行使 CPU硬件结构设计变得更为简单11、冯 诺依曼体系结构: 须有存储器、控制器、运算器、输入输出设备。指令和数据共享同一总线。哈佛体系结构: 指令与数据,占用总线分开12、C62XX数据通路 :2 个通用寄存器组( A 和 B) ,各 15 个寄存器;8 个功能单元( .L1,.L2,.S1,.S2,.M1,.M2,.D1, 和 D2) ;2 个存储器读取通路( LD1和 LD2) ;2 个存储器存储通路( ST1和 ST2 ) ;2 个寄存器组交叉通路( 1X和 2X) ;2 个数据寻址通路 (DA1和 DA2);13、寄存器的功能单元:分为A、B 两组(共 8 个).L 算术运算;.S 逻辑运算; .M 乘法; .D 地址产生 +数据运算14、并行操作:一个取指包8 条 32bit 指令( 18 个执行包);执行包中的每一条指令使用的功能单元必须各不相同影响并行的因素:资源冲突、延迟间隙15、C6201芯片共多少个片外存储空间?4 个C6201芯片的片外存储空间的大小?52M MAP0 模式下 SDRAM是否可以接入 C6201芯片的片外存储空间CE2中?可以。16、在嵌入式系统中,程序的存放由用户自己指定,实际分配过程是由连接器完成的。17、流水线: 任何指令的处理皆可分成几个子操作,每个子操作由不同单元来完成。对每个单元来说,每隔一个时钟周期可进入一条新指令,因而在同一时间内,在不同单元中可处理多条指令,这种工作方式称为“流水线”工作方式。18、取指包:取 8 条指令, 8 条指令组成一个取指包( FP) ,取指包中的 8 条指令同时顺序通过 PG ,PS ,PW ,PR四个节拍。执行包:在流水线的DP节拍中,取指包指令根据并行性分成各执行包,执行包由1 至 8条并行指令组成。 在 DP节拍期间一个执行包的指令分别分配到相应的功能单元。延迟间隙: 指一条指令在第一个执行节拍E1后占用的 CPU 周期数。具有延迟间隙的指令,在最后一个延迟间隙之前,其结果不能被使用。如乘法指令有一个延迟间隙,这意味着这条乘法指令的结果可被隔一个CPU 周期的下一条指令使用。19、多功能缓冲串口 (McBSP ) 串口,三个通道,可分多个,可缓冲, (2 发送3 接收)特点:?收/发独立、全双工、双缓冲数据通信,允许连续的数据流?可以接标准的编 /解码器、模拟接口芯片?支持多种协议下的接口传输:T1 /E1、MVIP、ST-BUS 、IOM-2、AC97 、IIS 、SPI ?支持多通道操作( 128)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 7 页 - - - - - - - - - ?内置 u-律(美日)和 A-律(欧)压扩硬件: G.711协议 PCM编码方式的一部分。?内部传输时钟和帧同步信号可编程程度高?数据字长可以是 8/12 /16/20/24/32bit 20、数据通道:完成数据的接收和发送,DX负责发送, DR负责接收。21、传输缓冲收发 (收多发少 ):接收操作采取三级缓冲方式:接收移位寄存器RSR 、接收缓冲寄存器RBR 、数据接收寄存器 DRR发送操作采取两级缓冲方式:数据发送寄存器DXR 、发送移位寄存器XSR 22、片内数据存储器 IDRAM 1)总容量 64k bytes(甚至 512k bytes) ;2)单周期双存取3)CPU与 DMC间为 2*64-bit 数据总线; 4)DMC与 IDRAM间 4*16-bit 数据总线23、中断:为使 DSP具有对外界异步事件的处理能力而设置。处理器需要怎样做支持中断:1)保存当前处理现场; 2)完成中断任务;3)恢复各寄存器和现场; 4)返回继续执行被暂时中断的程序24、编译、汇编和连接 .out文件优化器选项: -o0 优化寄存器使用; -o1 本地优化; -o2/-o 全局优化; -o3 文件级优化25、C语言数据类型: char(1 字节) ,short(2 字节),int(4 字节) ,long(40 位)27、数据初始化方法1. 调试器加载程序 (loader)自动完成原理:用.short ,.word等汇编指令生成变量及其初始值;连接器为这些变量分配地址调试器从.out文件中读取变量初值,通过主机接口,放入目标存储器中相应的变量地址缺点:只适用于程序开发阶段使用,不适用于嵌入式系统。2. 人工初始化在应用程序前插入数据初始化程序段MVK MVKH STW 缺点: 每个数据的初始化要用三条指令,占用很大程序空间3. 拷贝法 : 数据从 ROM拷贝到 RAM 所谓拷贝法,就是将变量的初值即初始化数据单独存放在一个初始化数据段内(ROM)。程序复位后,一段初始化程序将初始化数据段内的变量初值拷贝到相应变量地址。这种方法简省程序存储空间,也是C程序进行初始化的方法。28、拷贝法使用步骤:1.常量定义;2. 定义变量;3. 变量初始化; 4.数据段分配:在连接器命令文件内做 *.cmd 29、程序复位原因: DMA 把应用程序从片外ext 1 搬移到片内程序 RAM。需要程序控制在上电后从 0 地址转移到片内应用程序。30、定界: 数据或代码在存储器内的开始地址有一定要求。常数定界遵循先大后小;代码无定界要求;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 7 页 - - - - - - - - - 3、存储器映射MEMORY /内存描述 EPROM :origin= oh,lengh= 800h IP_RAM :SBSRAM :ID_RAM : SECTIONS /内存分配 myCode : EPROM myDate : SBSRAM 命令 SECTIONS 用于把目标文件中的各个代码段和数据分配到MEMORY定义的存储器内。采用连接器命令文件说明系统存储器配置和映射,方便程序在不同系统之间移植7、线性汇编改写的格式 .def _DP /定义函数名称_DP .cproc cptr0,cptr1,vptr /实现参数传递/*为暂时存放临时数据的寄存器定名*/ .reg addr_a,addr_x .reg m,n .reg product,sum /* 数据初始化 */MV cptr0,addr_a MV cptr1,addr_x ZERO sum /* 处理程序的循环体部分 */Loop:LDH *addr_a+,m LDH *addr_x+,n MPY m,n,product ADD sum,product,sum SUB vptr,1,vptr vptr B loop .return sum /实现数据的返回 .endproc /函数结束的标志名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 7 页 - - - - - - - - - 26、用汇编指令编写y=mx+b 1)数据取入寄存器: m,x,b 存储器 寄存器1a. 初始化数据指针:把数据地址放入指针寄存器(指令 MVK 和 MVKH) 1b. 取数据 : 进行存储器和寄存器之间的读写操作2)乘法; 3)加法; 4)存储数据: y 寄存器 存储器1a MVK .S1 m, A0 MVKH .S1 m, A0 ; &mA0 MVK .S1 x, A2 MVKH .S1 x, A2 ; &xA2 MVK .S1 b, A4 MVKH .S1 b, A4 ; &bA4 1b LDH .D1 *A0, A1 ; 取m LDH .D1 *A2, A3 ; 取x LDH .D1 *A4, A5 ; 取b NOP 4 31、汇编语言优化1) 使用并行指令2) 用有用的指令(取代NOP )填充延迟间隙: 前后对比loop:ldh.d1 *A8+,A2 | ldh.d2 *B9+,B3 nop 4 mpy.mlx A2,B3,A4 nop add.l1 A4,A6,A6 sub.12 B0,1,B0 b0 b.s1 loop nop 5loop:ldh.d1 *A8+,A2 | ldh.d2 *B9+,B3 sub.12 B0,1,B0 b0 b.s1 loop nop 2 mpy.mlx A2,B3,A4 nop add.l1 A4,A6,A6 ?LD的 nop 由 4 降为 2 ?B 的 nop 由 5 降为 2 3) 循环展开4) 字长优化(使用LDW/MPYH :使用字访问半字数据)5) 软件流水a1 a0 A0 LDW.D1 *A5+,A0 X x1 x0 A1 LDW.D1 *A6+,A1 = A7 A3 MPY.M1 A0,A1,A3 A1*x1 a0*x0 MPYH.M1 A0,A1,A7 + a1x1+a0X0 A4 ADD.L1 A3,A7,A4 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 7 页 - - - - - - - - - 32、混合语言编程编写C可调用的汇编程序A)建立 C环境1)在 C程序前声明线性汇编函数2)调用汇编函数Parent.C Int child(int,Int); /* prototype */ Void main (void) int x = 7; Int y; Y = child(x,5); /* call function */ B)建立汇编环境1)汇编函数的入口地址声明为全局变量汇编函数的入口地址 C函数名前加下划线2) 定义函数入口地址;child.ASM .def _child ; make the label_func ; visible to linker _child :; define functionsInstr ; entry point Instr Instr . . C)编写线性汇编函数:入口代码、算法、出口代码.def _DP ;声明函数名,建立汇编环境_DP: .cproc param0,param1;函数参数.reserve reserve_reg ;需要保护的寄存器.reg local_val0,local_val1,;函数内的寄存器变量MV param0,local_val0 ;建立函数参数与MV param1,local_val1 ;寄存器变量名得关系;算法.return return_value ;函数返回, return_value 为物理寄存器或寄存器变量名.endproc 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 7 页 - - - - - - - - - 29、点积实验 C代码#include short DP(short *m, short *n, short count); /声明点积运算子函数DP( ) /* 参与点积运算的两数组a, x 初始化 */ short a30 = 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59 ; short x30 = 60, 58, 56, 54, 52, 50, 48, 46, 44, 42, 40, 38, 36,34, 32, 30, 28, 26, 24, 22, 20, 18, 16, 14, 12, 10, 8, 6, 4, 2 ; short y=0; /存放运算结果的变量y 初始化void main() y = DP(a, x, 30); /进行点积运算 / short DP(short *m, short *n, short count) short i ; short product ; short sum = 0 ; for(i=0;icount;i+) product = mi * ni ; sum += product ; return(sum) ; 点积的完整线性汇编Dotp: .cproc p_m, p_n, count .reg p_m, m, p_n, n, prod,sum,count zero sum loop: .trip 40 ldh *p_m+, m ldh *p_n+, n mpy m, n, prod add prod, sum, sum count sub count, 1, count count b loop .return sum .endproc名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 7 页 - - - - - - - - -