中科大软院嵌入式期末总结.docx

上传人:b****8 文档编号:27798933 上传时间:2023-07-05 格式:DOCX 页数:30 大小:1.30MB
下载 相关 举报
中科大软院嵌入式期末总结.docx_第1页
第1页 / 共30页
中科大软院嵌入式期末总结.docx_第2页
第2页 / 共30页
中科大软院嵌入式期末总结.docx_第3页
第3页 / 共30页
中科大软院嵌入式期末总结.docx_第4页
第4页 / 共30页
中科大软院嵌入式期末总结.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

中科大软院嵌入式期末总结.docx

《中科大软院嵌入式期末总结.docx》由会员分享,可在线阅读,更多相关《中科大软院嵌入式期末总结.docx(30页珍藏版)》请在冰豆网上搜索。

中科大软院嵌入式期末总结.docx

中科大软院嵌入式期末总结

复习提纲:

(C语言翻译汇编)

1、概述

1.嵌入式系统是“用于控制、监视或者辅助操作机器和设备的装置

国内普遍认同的嵌入式系统定义为:

以应用为中心、以计算机技术为基础、软硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。

2.嵌入式系统的几个重要特征(简述5特征)

(1)嵌入式系统工业是不可垄断的高度分散的工业

从某种意义上来说,通用计算机行业的技术是垄断的。

嵌入式系统则不同,它是一个分散的工业,充满了竞争、机遇与创新,没有哪一个系列的处理器和操作系统能够垄断全部市场。

(2)操作系统内核小

由于嵌入式系统一般是应用于小型电子装置的,系统资源相对有限,所以内核较之传统的操作系统要小得多。

比如ENEA公司的OSE分布式系统,内核只有5K,而Windows的内核则要大得多。

(3)专用性强

嵌入式系统的个性化很强,其中的软件系统和硬件的结合非常紧密,一般要针对硬件进行系统的移植。

即使在同一品牌、同一系列的产品中也需要根据系统硬件的变化和增减不断进行修改。

同时针对不同的任务,往往需要对系统进行较大更改,程序的编译下载要和系统相结合,这种修改和通用软件的“升级”是完全不同的概念。

(4)系统精简

嵌入式系统一般没有系统软件和应用软件的明显区分,不要求其功能设计及实现上过于复杂,这样一方面利于控制系统成本,同时也利于实现系统安全。

(5)高实时性OS

这是嵌入式软件的基本要求,而且软件要求固态存储,以提高速度。

软件代码要求高质量和高可靠性、实时性。

6)嵌入式软件开发走向标准化

嵌入式系统的应用程序可以没有操作系统直接在芯片上运行。

为了合理地调度多任务、利用系统资源、系统函数以及和专家库函数接口,用户必须自行选配RTOS(Real-TimeOperatingSystem)开发平台,这样才能保证程序执行的实时性、可靠性,并减少开发时间,保障软件质量。

(7)嵌入式系统开发需要开发工具和环境

由于其本身不具备自主开发能力,即使设计完成以后,用户通常也是不能对其中的程序功能进行修改,必须有一套开发工具和环境才能进行开发。

这些工具和环境一般是基于通用计算机上的软硬件设备以及各种逻辑分析仪、混合信号示波器等。

开发时往往有主机和目标机的概念,主机用于程序的开发,目标机作为最后的执行机,开发时需要交替结合进行。

(8)嵌入式系统运行环境差异很大:

(9)嵌入式系统比通用PC系统资源少得多:

(10)一般的嵌入式系统具有低功耗、体积小、集成度高、成本低等特点:

(11)建立完整的嵌入式系统的系统测试和可靠性评估体系,保证嵌入式系统高效、可靠、稳定工作:

(12)具有较长的生命周期

3.嵌入式系统的组成(最后的图,有印象)

嵌入式硬件系统

嵌入式处理器

各种类型存储器

模拟电路及电源

接口控制器及接插件

嵌入式软件系统

实时操作系统(RTOS)

板级支持包(BSP)

设备驱动(DeviceDriver)

协议栈(ProtocolStack)

应用程序(Application)

4.嵌入式系统的实时性

二、嵌入式系统设计方法、过程(2.3ppt)

1.交叉开发环境、

先在通用PC机上编程,然后通过交叉编译链接,将程序做成目标平台上可以运行的二进制代码格式。

最后将程序下载到目标平台上的特定位置由目标板上启动代码运行这段二进制代码。

  交叉开发:

在一台通用计算机上进行软件的编辑编译,然后下载到嵌入式设备中运行调试的开发方式。

开发计算机一般称宿主机,嵌入式设备称为目标机,在宿主机上编译好的程序,下载到目标机上运行。

  交叉开发环境一般由运行于宿主机上的交叉开发软件、宿主机到目标机的调试通道组成。

如基于ARM9、µCOS的嵌入式系统开发,需要安装交叉编译工具ADS。

基于VxWorks的开发环境:

Tornado

2.几种常用的调试方法、

指令集模拟器

一种利用PC机端的仿真开发软件模拟调试的方法。

如:

Skyeye清华大学陈渝主持的自由软件项目,

ARM公司的ARMulator模拟器

驻留监控软件

驻留监控程序运行在目标板上,PC机端调试软件可通过并口、串口、

网口与之交互,以完成程序执行、存储器及寄存器读写、断点设置等任务

ARM公司的Angel是长驻在目标机Flash中的监控程序

JTAG仿真器(基于JTAG的ICD(In-CircuitDebugger))

通过ARM芯片的JTAG边界扫描口与ARM核进行通信,不占用目

标板的资源,是目前使用最广泛的调试手段

在线仿真器ICE(In-CircuitEmulator)

使用仿真头代替目标板上的CPU,可以完全仿真ARM芯片的行为。

但结构较复杂,价格昂贵,通常用于ARM硬件开发中

(ARM-LINUX开发一般过程不要求)

三、Bootloader(3个常用)

1、什么是bootloader

Bootloader,为引导加载程序,是嵌入式系统加电后运行的第一段代码,相当于PC机的BIOS。

Bootloader的位置:

通常固化在硬件上的某个固态存储设备上,加电后自启动。

Bootloader功能:

初始化硬件设备、建立内存空间的映射图(有的CPU没有内存映射功能如 S3C44B0x),将系统的软、硬件环境带到一个合适的状态,以便为最终调用操作系统内核或用户应用程序准备好正确的环境。

Bootloader的地址:

在嵌入式系统中,系统加电复位后,几乎所有的CPU都从由复位地址上取指令。

2、Bootloader操作模式

两种不同的操作模式:

“启动加载”模式和“下载”模式。

其区别对于开发人员才有意义。

从最终用户的角度看,Bootloader的作用就是用来加载操作系统,而并不存在所谓的启动加载模式与下载模式的区别。

启动加载(Bootloading)模式

启动加载模式称为“自举”(Autonomous)模式。

即Bootloader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程并没有用户的介入。

启动加载模式是Bootloader的正常工作模式,在嵌入式产品发布的时侯,Bootloader必须工作在这种模式下。

下载(Downloading)模式

下载方式:

在这种模式下,目标机上的Bootloader将通过串口连接或网络连接等通信手段从主机下载文件。

下载内容及存储:

主要是下载内核映像和根文件系统映像等。

从主机下载的文件通常首先被Bootloader保存到目标机的RAM中,然后再被Bootloader写到目标机上的FLASH类固态存储设备中。

下载模式应用场合:

Bootloader的这种模式通常在第一次安装内核与根文件系统时被使用;此外,以后的系统更新也会使用到这种工作模式。

用户应用接口:

工作于这种模式下的Bootloader通常都会向它的终端用户提供一个简单的命令行接口。

如在RedBoot下,将出现“RedBoot>”提示符;在viviBootloader下出现“vivi>”提示符。

 

3、Bootloader启动过程

Bootloader的启动可以分为两个阶段

1、第一阶段

阶段1主要包含依赖于CPU体系结构及硬件设备的初始化等。

通常都用汇编语言来实现。

这个阶段的任务有5:

(1)、基本的硬件设备初始化

这是Bootloader一开始就执行的操作,其目的是为阶段2的执行、以及随后kernel的执行准备好一些基本的硬件环境。

它通常包括以下工作:

关闭处理器内部指令/数据cache等

关闭中断

关闭看门狗

配置PLL

配置内存

初始化各工作模式的堆栈

配置中断

拷贝RW段,初始化ZI段

(2)、为阶段2代码准备RAM空间

为了获得更快的执行速度,通常把阶段2的代码加载到RAM空间中来执行。

准备RAM空间考虑的因素:

阶段2代码大小、堆栈、页大小(4KB的倍数)、安排位置等。

(3)、拷贝阶段2代码到RAM空间

(4)、设置好堆栈

堆栈指针sp设置在1MB的RAM空间的最顶端(堆栈向下生长)。

(5)、跳转到阶段2的C程序入口点

在上述一切都就绪后,就可以跳转到Bootloader的stage2去执行了。

2、第二阶段

阶段2通常用C语言来实现,以便实现更复杂的功能,也使程序有更好的可读性和可移植性。

这个阶段的主要任务有5:

(1)、初始化本阶段要使用到的硬件

至少初始化一个串口,以便和终端用户进行I/O输出信息等。

(2)、检测系统内存映射(memorymap)

所谓内存映射,就是指在整个物理地址空间中有哪些地址范围被分配用来作为系统的RAM单元。

为后面使用RAM、运行程序做好准备。

(3)、将kernel和根文件系统映像从flash读到RAM空间

(4)、为kernel设置启动参数

这是在调用内核之前应该做的准备工作。

Linux2.4.x以后的内核都期望以标记列表(taggedlist)的形式来传递启动参数。

启动参数标记列表方法:

以ATAG_CORE标记开始,以ATAG_NONE标记结束。

在嵌入式Linux系统中,通常需要由BootLoader设置的启动参数有:

ATAG_CORE、ATAG_MEM(内存映射)、ATAG_NONE等。

(5)、调用内核

Bootloader调用Linuxkernel的方法是直接跳转到内核的第一条指令处。

在跳转时必须满足下列条件:

1)、CPU寄存器的设置:

R0为0;R1为机器类型ID;R2为启动参数,标记列表在RAM中的起始基地址。

(机器类型参见linux/arch/arm/tools/mach-types目录)

2)、CPU模式:

CPU必须设置为SVC模式,必须禁止中断(IRQs和FIQs)。

3)、MMU和Cache的设置:

MMU必须关闭;指令Cache可以打开也可以关闭;数据Cache必须关闭。

4、有哪些常用的Bootloader

Bootloader是严重地依赖于硬件而实现的。

每种不同体系结构的处理器都有不同的Bootloader。

1、vivivivi是韩国Mizi公司开发的Bootloader,适用于ARM9处理器。

2、RedBootRedBoot即红帽(RedHat)嵌入式调试引导程序,是一种用于嵌入式系统的独立开放源代码引导/装载器。

3、U-BootU-Boot(UniversalBootloader)由德国DENX小组开发,是一款目前功能较为强大的开源Bootloader程序,它支持多种处理器平台,包括ARM、PowerPC、MIPS等。

四、嵌入式微处理器

1、嵌入式系统硬件基础知识(体系结构,指令集)

1)冯·诺依曼体系结构和哈佛体系结构

冯·诺依曼体系结构

数据和指令都存储在一个存储器中的计算机被称为冯·诺依曼机

指令的执行周期T

1)取指令(InstructionFetch):

TF

2)指令译码(InstructionDecode):

TD

3)执行指令(InstructionExecute):

TE

4)存储(Storage):

TS

每条指令的执行周期:

T=TF+TD+TE+TS

冯·诺依曼体系结构特点:

1)数据与指令都存储在存储器中

2)被大多数计算机所采用

3)冯诺依曼体系:

英特尔公司的8086,英特尔公司的其他中央处理器、ARM的ARM7、MIPS公司的MIPS处理器。

哈佛体系结构

数据和指令存储在各自独立的存储器中的计算机体系结构称为哈佛体系结构

哈佛体系结构特点:

1)程序存储器与数据存储器分开

2)提供了较大的数据存储器带宽

3)适合于数字信号处理

4)大多数DSP都是哈佛结构

5)Microchip公司的PIC16芯片、摩托罗拉公司的MC68系列、Zilog公司的Z8系列、ATMEL公司的AVR系列和ARM公司的ARM9、ARM10和ARM11。

很难在哈佛机上编写出一个自修改程序(写入数据值然后使用这些值作为指令的程序

2)CISC与RISC

CISC:

复杂指令集(ComplexInstructionSetComputer)

8/2原则:

80%的程序只使用20%的指令

具有大量变长形式的不同指令

大多数程序只使用少量的指令就能够运行。

PUSHAX

MOVAL,80H

MOVAX,1090H

RISC:

精简指令集(ReducedInstructionSetComputer)

RISC是在开发高性能微处理器过程中的一个进步

在通道中只包含最有用的指令(少而简单)

确保数据通道快速执行每一条指令

使CPU硬件结构设计变得更为简单

指令格式和长度固定,且指令类型很少、指令功能简单、寻址方式少而简单,指令译码控制器采用硬布线逻辑,这样易于流水线的实现,进而获得高性能;

由于RISC指令系统强调了对称、均匀、简单,使得程序的优化编译效率更高;

大多数指令单周期完成;

分开的load-store结构的存取指令,也只有load-store结构的存取指令访问存储器,而数据处理指令只访问寄存器。

而CISC处理器一般允许将存储器中的数据作为数据处理指令的操作数;

3)流水线、超标量

4)缓存

如何减少CPU与内存之间的速度差异?

(4种)

1、为什么采用高速缓存

微处理器的时钟频率比内存速度提高快得多,高速缓存可以提高内存的平均性能。

2、高速缓存的工作原理

高速缓存是一种小型、快速的存储器,它保存部分主存内容的拷贝。

5)总线和总线桥

ARM微控制器使用的是AMBA总线体系结构

AMBA(AdvancedMicrocontrollerBusArchitecture)是ARM公司公布的总线标准,先进的AMBA规范定义了三种总线:

AHB总线(AdvancedHigh-performanceBus):

用于连接高性能系统模块。

它支持突发数据传输方式及单个数据传输方式,所有时序参考同一个时钟沿。

ASB总线(AdvancedSystemBus):

用于连接高性能系统模块,它支持突发数据传输模式。

APB总线(AdvancePeripheralBus):

是一个简单接口支持低性能的外围接口。

 

2、ARM编程模型(2工作状态,7种模式,重点)

ARM处理器的几大特点如下:

小体积、低功耗、成本低、高性能;

支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件;

大量使用寄存器,大多数数据操作都在寄存器中完成,指令执行速度更快;

寻址方式灵活简单,执行效率高;

指令长度固定;

全球众多的合作伙伴。

当前ARM体系结构的扩充包括:

Thumb:

16位指令集,用以改善代码密度;

DSP:

用于DSP应用的算术运算指令集;

Jazeller:

允许直接执行Java代码的扩充。

ARM7TDMI处理器有两种工作状态:

*******************

ARM-32-bit,按字排列的ARM指令集

Thumb-16-bit,按半字排列的Thumb指令集

测试编译器属哪种模式

  下面这段代码可以用来测试一下你的编译器是大端模式还是小端模式:

shortintx;

  charx0,x1;

  x=0x1122;

  x0=((char*)&x)[0];//低地址单元

  x1=((char*)&x)[1];//高地址单元

  若x0=0x11,则是大端;若x0=0x22,则是小端......

上面的程序还可以看出,数据寻址时,用的是低位字节的地址。

3、ARM指令集中常用指令(寻址方式、数据处理指令、加载/存储指令等)*

4、汇编语言与C/C++的混合编程(3种编程方式,APCS,ATPCS)

APCS(ARMProduceCallStandard)是ARM程序中子程序调用的基本规则,目的是为了使单独编译的C语言程序和汇编程序之间能够相互调用。

这些基本规则包括子程序调用过程中寄存器的使用规则、数据栈的使用规则和参数的传递规则。

汇编语言与C/C++的混合编程通常有以下几种方式:

-在C/C++代码中嵌入汇编指令。

-在汇编程序和C/C++的程序之间进行变量的互访。

-汇编程序、C/C++程序间的相互调用。

在以上的几种混合编程技术中,必须遵守一定的调用规则,如物理寄存器的使用、参数的传递等。

一般情况:

程序的初始化部分用汇编语言完成,

然后用C/C++完成主要的编程任务,

汇编程序和C/C++程序之间一般没有参数的传递,也没有频繁的

相互调用,因此,整个程序的结构显得相对简单,容易理解。

5、嵌入式程序设计技巧(时间换空间,8个例子)

变量定义

参数传递

循环条件

以空间换时间

数学方法解决问题

使用位操作

嵌入汇编

五、硬件系统结构

1、S3C2410存储系统组织(8个端口,确定宽度)

S3C2410X有117个输入/输出端口。

这些端口是:

A口(GPA):

23个输出口

B口(GPB):

11个输入/输出口

C口(GPC):

16个输入/输出口

D口(GPD):

16个输入/输出口

E口(GPE):

16个输入/输出口

F口(GPF):

8个输入/输出口

G口(GPG):

16个输入/输出口

H口(GPH):

11个输入/输出口

2、S3C2410的外设管理

3、I/O口的组织及一般应用(引脚)、

4、UART

S3C2410的UART(通用异步串行口)有三个独立的异步串行I/O端口:

UART0、UART1、UART2,每个串口都可以在中断和DMA两种模式下进行收发。

UART支持的最高波特率达230.4kbps。

每个UART包含:

波特率发生器、接收器、发送器和控制单元。

波特率发生器以PCLK或UCLK为时钟源。

发送器和接收器各包含1个16字节的FIFO寄存器和移位寄存器。

S3C2410的3个UART都有遵从1.0规范的红外传输功能,UART0、UART1有完整的握手信号,可以连接MODEM。

当发送数据的时候,数据先写到FIFO然后拷贝到发送移位寄存器,然后从数据输出端口(TxDn)依次被移位输出。

被接收的数据也同样从接收端口(RxDn)移位输入到移位寄存器,然后拷贝到FIFO中。

编写一程序,使用S3C2410X的UART2进行串行数据收发,要求用脉冲请求中断的方式、使用收/发FIFO,8个数据位、1个停止位、不校验,波特率为125kb/s。

设Pclk为50MHz。

(提示:

主程序对UART2初始化、引脚配置、中断初始化等,并进行一次发送;中断服务程序进行数据收发,标签清除中断请求标志和中断服务标志)

解:

(1)计算波特率除数:

由公式:

UBRDIVn=(int)(CLK/(fB*16))-1

这里:

Pclk=50MHz,fB=125kb/s

计算得:

UBRDIVn=25-1=24

(2)UART2控制寄存器:

线路控制寄存器:

ULCON2=00000011=0x03

含义:

非红外、不校验、1个停止位、8个数据位

控制寄存器:

UCON2=0b00000000101=0x05

含义:

选Pclk、发/收中断脉冲请求、关闭接收超时中断、允许接收错误中断、不回送、不发送暂停信号、发/收用中断方式。

FIFO控制寄存器:

UFCON2=0b10010001=0x91

含义:

发/收FIFO选8字节触发、保留位为0、不复位发/收FIFO、使能FIFO。

(3)引脚配置

需要设置TxD2、RxD2,它们对应GPH6、GPH7,在GPH配置寄存器GPHCON中的位置为:

0b1010************

方法:

GPHCON=GPHCON&~(0xF<<12)|(0xA<<12)

(4)中断寄存器设置

中断模式寄存器:

INTMOD&=~(1<<15)

INT_UART2位于第15位,将UART2设置为IRQ中断

中断屏蔽寄存器:

INTMSK&=~(1<<15)

中断优先级寄存器PRIORITY:

不设置,使用固定优先级。

子中断屏蔽寄存器:

INTSUBMSK&=~(7<<6)

INT_ERR2、INT_TXD2、INT_RXD2位于子中断屏蔽寄存器中的8、7、6位。

(5)在中断服务程序中对寄存器的操作

清除中断标志寄存器相应位:

SRCPND&=~(1<<15)

清除中断服务寄存器相应位:

INTPND&=~(1<<15)

5、时钟和功耗管理(解决方案简述2410的功耗解决方案)

时钟功能

有两个锁相环MPLL、UPLL(Phase-LockedLoop)产生系统所需要的不同频率的时钟。

(1)为CPU产生FCLK时钟

(2)为AHB产生HCLK时钟

使用HCLK的设备:

中断控制器、存储器管理器、DMA控制器、LCD控制器、FLASH控制器、USBHost(不用PLL时)、总线控制器、片外设备。

(3)为APB产生PCLK时钟

使用PCLK的设备:

117个通用I/O口GPIO、ADC、5个定时器与4个PWM、3个UART、2个SPI、IIC、USBDevice(不用PLL时)、RTC、WDT、SD卡接口、IIS接口

(4)为USB(HostandDevice)产生UCLK时钟(48MHz)

2、电源管理功能

具有4种电源管理模式:

正常模式、慢时钟模式、空闲模式、掉电模式。

(1)正常模式:

1)锁相环工作;2)为CPU和所有片内外设提供时钟。

此模式系统功耗最大。

(2)慢时钟模式:

锁相环不工作,CPU等直接使用原始时钟、或原始时钟的分频工作。

此模式工作时钟频率低而使功耗低,并且锁相环不工作也使功耗降低。

(3)空闲模式:

停止为CPU提供时钟,CPU不工作(其外设均工作)。

退出方法:

任何中断请求可唤醒CPU工作,退出空闲模式。

(4)断电模式:

时钟模块断电,除了唤醒电路之外所有部分均不供电。

系统需分成两部分供电。

此模式功耗最低。

必须设置有外中断

退出方法:

用中断唤醒。

(1)外部中断EINT0---15;

(2)实时钟报警中断。

如何降低2410的功耗

在能够满足功能正常的前提下,尽可能选择低电压工作的CPU能够在总体功耗方面得到较好的效果。

对于已经选定的CPU来讲,降低供电电压和工作频率,也是一条节省功率的可行之路。

CPU采用内置Flash的方式

如果可以通过选取合适的前后级芯片来避免Buffer的使用,对于能量来讲是一个很大的节约。

我们可以通过控制CPU进入不同的模式来达到省电的目的

关闭不需要的外设控制器

在适当的情况下使用DC-DC的电压转换线路,可以有效地节约能量

 

6、程序实例

六、实时操作系统

1、实时操作系统概念(可重入,任务集翻转)

RTOS的基本特

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1