当前位置:文档之家› 嵌入式系统BOOTLOADER的设计与实现

嵌入式系统BOOTLOADER的设计与实现

嵌入式系统BOOTLOADER的设计与实现
嵌入式系统BOOTLOADER的设计与实现

复旦大学

硕士学位论文

嵌入式系统BOOTLOADER的设计与实现

姓名:朱晶

申请学位级别:硕士

专业:计算机应用技术

指导教师:涂时亮

20040427

摘要y-

651830

嵌入式系统是把计算机直接嵌入到应用系统中,它融合了计算机软硬件技术,通信技术和半导体微电子技术,嵌入式设备已经越来越多地应用在现代人的工作和生活中,它在当今的应用正变得越来越广泛。BOOTLOADER作为嵌入式系统软件的重要组成部分,对它的研究和实现无疑也具有重要的现实意义。

本文首先对嵌入式系统BOOTLOADER的特点和作用进行了介绍。然后从嵌入式系统的角度对如何实现BOOTLOADER进行了比较全面的分析。

本文对嵌入式系统的硬件初始化,串u驱动及传输协议,网口驱动及传输协议,USB驱动及传输协议,FLASH的驱动等等都做了比较洋细的分析。并结合EV4480丌发板,给出了实现的具体细节。

最后,对已经实现的BOOTLOADER进行了测试和评估,并就今后的改进方向提出了自己的意见。

关键字:嵌入式系统;BOOTLOADER;UCLINUX

Abstract

Virtuallyeveryelectronicdevicedesignedandmanufacturedtodayisallembeddedsystem.Briefly,BOOTLOADERisthefirstsoftwareprogramthatrunswhenacomputerstarts.Itisresponsibleforloadingandtransferringcontroltotheoperatingsystemkernelsoftware.ThisessayintroduceshowtodesignBOOTLOADERinanembeddedsystem.

FirstthepaperintroducesthefeaturesandthnctionofBOOTLOADER,thenindetailanalyzesBOOTLOADERfromviewofembeddedfield,andbringsupasystemmodelofBOOTLOADER.

Inthispaper,italsohaveadetailresearchonsomepartofBOOTLOADER,suchashardwareinitial,UARTdriverandtransferprotocai,lancarddriverandtflp/ipprotocai,USBdriverandtransferprotocal,FLASHdriveretc.

Finally,thispaperimplementsandtestsBOOTLOADERinEV4480evaluationboard,thenbringsupsortieadviceontheimprovementinthefuture.

Keyword:BOOTLOADER,embeddedsystem,UCLINUX

第一章绪论

第一节引言

嵌入式系统是把计算机直接嵌入到应用系统中,它融合了计算机软硬件技术,通信技术和半导体微电子技术,嵌入式设备已经越来越多地应用在现代人的JT作和生活中。

嵌入式处理器是嵌入式系统的核心,RISC型处理器具有结构简单,处理速度快和处理功能强等特点,新型的嵌入式系统大多采用RISIC型处理器作为核,如ARM公司的ARM。ARM公司是嵌入式RISC处理器的知识产权IP提供商,它为ARM架构处理器提供了ARM处理器内核,如ARM7TDMI。在本应用中,采用的s3c44BO处理器就是ARM7TDMI的内核。

简单的嵌入式系统一般并不使用操作系统,只包含一些控制流程。但是当系统所提供的功能复杂化以后,比如需要提供图形界面等等,这个时候就必须考虑使用操作系统。

如今,在专用的嵌入式板子运行Uclinux系统已经变得越来越流行。

一个嵌入式Linux系统从软件的角度看通常可以分为四个层次:

1.引导加载程序。包括固化在固件(firmware)中的boot代码(可选),和BootLoader两大部分。

2.Linux内核。特定于嵌入式板子的定制内核以及内核的启动参数。

3.文件系统。包括根文件系统和建立于Flash内存设备之上文件系统。通常用

ralTldisk来作为rootfilesystem。

4.用户应用程序。特定于用户的应用程序。有时在用户应用程序和内核层之间

可能还会包括一个嵌入式图形用户界面。常用的嵌入式GUI有:

MicroWindows和MiniGUI等。

引导加载程序是系统加电后运行的第一段软件代码。回忆一下Pc的体系

结构我们可以知道,Pc机中的引导加载程序由BIOS(其本质就是一段固件程序)

和位于硬盘MBR中的OSBootLoader(比如,LILO和GRUB等)一起组成。

BIOS在完成硬件检测和资源分配后,将硬盘MBR中的BootLoader读到系统

的RAM中,然后将控制权交给OsBootLoader。BootLoader的主要运行任务

就是将内核映象从硬盘上读到RAM中,然后跳转到内核的入口点去运行,也

即开始启动操作系统。

而在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入

式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全

由BootLoader来完成。比如在一个基于ARM7TDMI内核的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。

在把Uclinux移植到开发板后,这段引导程序的软件模块就是hcad—micetek.O,它随后调用misc.O这个解压缩模块中的解压缩函数,解压piggy.o这个Uelinu_x内核,把内核解到开发板的rain中后,跳到内核入口处执行。

下面将从BootLoader的概念、BootLoader的主要任务、BootLoader的框架结构等三个方面来讨论嵌入式系统的BootLoader。

第二节BOOTLOADER的概念

简单地说,BootLoader就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。

通常,BootLoader是严重地依赖于硬件而实现的,特别是在嵌入式世界。因此,在嵌入式世界里建立~个通用的BootLoader几乎是不可能的。尽管如此,我们仍然可以对BootLoader归纳出一些通用的概念来,以应用于各种特定的BootLoader设计与实现。

1.BootLoader所支持的CPU和嵌入式板

每种不同的CPU体系结构都有不同的BootLoader。有些BootLoader也支持多种体系结构的CPU,比如U—Boot就同时支持ARM体系结构和MIPS体系结构。除了依赖于CPU的体系结构外,BootLoader实际上也依赖于具体的嵌入式板级设备的配置。这也就是说,对于两块不同的嵌入式板而言,即使它们是基于同一种CPU而构建的,要想让运行在一块板子上的BootLoader程序也能运行在另一块板子上,通常也都需要修改BootLoader的源程序。

2.BootLoader的安装媒介(InstallatiOnMedium)

系统加电或复位后,所有的CPU通常都从某个由CPU制造商预先安排的地址上取指令。比如,基于ARM7TDMIGore的CPU在复位时通常都从地址Ox00000000取它的第一条指令。而基于CPU构建的嵌入式系统通常都有某种类型的固态存储设备(比如:ROM、EEPROM或FLASH等)被映射到这个预先安排的地址上。因此在系统加电后,CPU将首先执行BootLoader程序。

3.用来控制BootLoader的设备或机制

主机和目标机之间一般通过串口建立连接,BootLoader软件在执行时通常

会通过串口来进行I/O,比如:输出打印信息到串口,从串口读取用户控制字符等。

4.BootLoader的启动过程是单阶段(SingleStage)还是多阶段(Multi—Stage)通常多阶段的BootLoader能提供更为复杂的功能,以及更好的可移植性。从固态存储设备上启动的BootLoader大多都是2阶段的启动过程,也即启动过程可以分为stagel和stage2两部分。而至于在stage1和stage2具体完成哪些任务将在下面讨论。

5.BootLoader的操作模式(OperationMode)

大多数BootLoader都包含两种不同的操作模式:”启动”模式和”下载调试”模式,这种区别仅对于开发人员才有意义。但从最终用户的角度看,BootLoader的作用就是用来加载操作系统,而并不存在所谓的启动模式与下载调试模式的区别。

启动模式:这种模式也称为”自主”(Autonomous)模式。也即BootLoader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程并没有用户的介入。这种模式是BootLoader的正常工作模式,因此在嵌入式产品发布的时侯,BootLoader显然必须工作在这种模式下。

下载调试模式:在这种模式下,目标机上的BootLoader将通过串口连接或网络连接等通信手段从主机(Host)下载文件,比如:下载内核映像和根文件系统映像等。从主机下载的文件通常首先被BootLoader保存到目标机的RAM中,然后再被BootLoader写到目标机上的FLASH类固态存储设备中。BootLoader的这种模式通常在第一次安装内核与根文件系统时被使用;此外,以后的系统更新也会使用BootLoader的这种工作模式。工作于这种模式下的BootLoader通常都会向它的终端用户提供一个简单的命令行接口。

像Blob或U.Boot等这样功能强大的BootLoader通常同时支持这两种工作模式,而且允许用户在这两种工作模式之间进行切换。比如,Blob在启动时处于正常的启动加载模式,但是它会延时10秒等待终端用户按下任意键而将blob切换到下载模式。如果在10秒内没有用户按键,则blob继续启动Linux内核。

6.BootLoader与主机之间进行文件传输所用的通信设备及协议

最常见的情况就是,目标机上的BootLoader通过串口与主机之间进行文件传输,传输协议通常是Xmodem/Ymodem/Zmodem/Kermit协议中的一种。在本应用中,开发了串口驱动,使用了Xmodem作为传输协议。但是,串口传输的速度是有限的,因此可以通过其它方式来下载文件。

一种是通过以太网连接并借助TFTP协议来下载文件。这就涉及到以太网

卡的驱动及相关IP协议栈的开发实现,在本文的第四章中详细介绍了这部分的内容。

另一种则是通过USB接口并开发相应协议来下载文件。这涉及到USB芯片的驱动及主机驱动程序的开发。在本文的第五章中详细介绍了这部分的内容。

此外,在论及这个话题时,主机方所用的软件也要考虑。比如,在通过以太网连接和TFTP协议来下载文件时,主机方必须有一个软件Tftpserver用来的提供TFTP服务。

在通过USB接1:3连接来下载文件时,主机方必须有一个软件Usbdownload用来提供服务。

第二章BOOTLOADER的总体介绍

第一节BOOTLOAI)ER的主要任务和结构框架

在第一章中已经提到,BOOTLOADER包括两种操作模式,~个是启动模式,…个是下载模式。

在启动模式下,BOOTLOADER的主要任务是从主机上快速传送UCLlNUX内核到开发板的RAM上,正确地调用内核来执行,如果需要的话,还要把RAM中的UCLINUX内核写到FLASH中。

为此目标,在系统上电后,首先进入启动模式,并开始启动一个计数器,在10秒内允许用户中断启动模式,进入下载调试模式。如果在10秒内,用户不中断启动模式,则随即自动用TFTP方式传送UCLINUX内核到开发板的RAM中特定地址中去,传送完毕后,自动启动UCLINUX内核。

如果在规定时间内,用户中断启动模式,进入下载调试模式。则系统提供了大量的命令供用户使用,主要命令简要介绍如下:

1)文件传送类命令

总共提供了三个文件传送类命令。

UART—LOAD:该命令从串行通信口用XMODEM协议传送文件到开发板内存。TFTP__LOAD:该命令从网口用TFTP协议传送文件到开发板内存。

USB—LOAD:该命令从USB口用BULKUSB协议传送文件到开发板内存。

2)内存调试类命令

MDISPLAY:该命令用于显示内存的值。

MMODIFY:该命令用于修改内存的值。

3)FLASH操作命令:

FERASE:提供多种方式实现对FLASH的修改和删除。

4)运行命令:

GO:从指定地址开始运行程序。

另外,由于BOoTLOADER的实现依赖于CPU的体系结构,因此大多数BootLoader都分为stageI和stage2两大部分。依赖于CPU体系结构的代码,比如设备初始化代码等,通常都放在stagel中,而且通常都用汇编语言来实现,以达到短小精悍的目的。而stage2则通常用c语言来实现,这样可以实现较复杂的功能,而且代码会具有更好的可读性和可移植性。

/BootLoader的stagel通常包括以下步骤:

硬件设备初始化。

为加载BootLoader的stage2准备RAM空问。

拷贝BootLoader的stage2到RAM空间中。

设置好堆栈。

跳转到stage2的C入口点。

/BootLoader的stage2通常包括以下步骤:

初始化本阶段要使用到的硬件设备。

检测系统内存映射(memorymap)。

驱动各外部设备(串口,网口,USB口)

在下载调试模式下,接收外部命令,与主机进行各种通信。在启动模式下,跳到UCLINUX中运行操作系统。

下图阐述了BOOTLOADER的存储器映射

图2.1BOOTLOADER的存储器映射

第二节硬件的开发环境和硬件的初始化

硬件环境:EV4480丁f=发板。它是适合三星¥3C4480微处理器手持设备和通用应用的代码开发平台。它由¥3C4480处理器,BOOTFLASH,SDRAM,LCD接口,两个串行通信接口,以太网接口,USB接口,键盘接口,IIS(声音)接口,RTC,JTAG接口和八段数码管组成。

S3C44BOX由16/32位RISC(ARM7TDMI)CPU核,8KBcache,可选的内部SRAM,LCD控制器,带握手协议的双通道UART,4通道DMA,系统管理器(片选逻辑,FP/EDO/SDRAM控制器),6通道带PWM定时器,7l位通用I/O端口,RTC,8通道lO位ADC,IIC总线接口,IIS总线接口,Sync.SIO接口和时钟PLL组成。

系统硬件框图如下:

网圈曰固日国曰

图2.2系统硬件框图

基于AItM的芯片多数为复杂的片上系统,这种复杂系统里的多数硬件模块都是可配置的,需要由软件来设置其需要的工作状态。因此在用户的应用程序之前,需要由专门的一段代码来完成对系统的初始化。由于这类代码直接面对处理器内核和硬件控制器进行编程,一般都是用汇编语言。

10

曰圈因

下面先简单介绍一下板子初始化的流程,流程图如下所示:否

[三困

禁止中断

l初始化ClockControlRegister

l初始化memorycontroller

图2.3硬件初始化流程

●中断向量表

ARM要求中断向量表必须放置在从0地址开始,连续的8个4字节的空间内。

每当一个中断发生以后,ARM处理器便强制把Pc指针置为向量表中对应中断类型的地址值。因为每个中断只占据向量表中1个字的存储空间,只能放置一条

ARM指令,使程序跳转到存储器的其他地方,再执行中断处理。

中断向量表的程序实现通常如下表示:

ENTRY:

BResetHandler

BUndefHandler

BSWIHandler

BPreAbortHandler

BDataAbortHandler

NOP

BIRQHandler

BFIQHandler

其中关键字ENTRY是指定编译器保留这段代码,因为编译器可能会认为这是一段亢余代码而加以优化。链接的时候要确保这段代码被链接在0地址处,并且作为整个程序的入口。

●初始化存储器系统

S3C44BOX有6个ROM/SRAM槽(ROM0槽用于bootROM)和2个ROM/sRAM,EDO/SDRAM槽。

S3C44BOX上的系统管理器可以通过软件控制访问时间和每个槽的数据总线宽度。其中数据总线宽度由BWSCON控制寄存器控制,访问时间由系统管理器上的BANKCONO~7控制寄存器控制。

槽6、7上的存储器类型必须一致(例如RoM&ROM,sD洲&sDRAM)。ROM

槽0用来作为BOOTROM插槽。

在系统RESET的时候,执行对BWSCON,BANKCON0—7,REFRESH,BANKSIZE,MRSRB6/7的控制,使用的是一些特殊命令,如LDMIA和STMIA。

对特殊寄存器进行配置的示例代码如下:

ldrr0.=SMRDATA

ldmiar0,{rl—r13}

ldrro,=Re臣_BWSCON/}BWSCONAddress+/

stmiar0,{rl?r13}

SMRDATA这个地址中存放了将要赋给各相关寄存器的值。

这些值依次赋给从BWSCON开始的这十三个寄存器。

●初始化堆栈

因为ARM有7种执行状态,而每一种状态的堆栈指针寄存器(sP)都是独立的。因此,对程序中需要用到的每一种模式都要给sP定义一个堆栈地址。方法是改变状态寄存器内的状态位,使处理器切换到不同的状态,然后给SP赋值。

第三节软件的开发环境和软件部分的总体框图

软件开发环境:使用GNU的ARM-ELF—AS,ARM—ELF—GCC,ARM—ELF—LD工具编译链接源文件,生成ELF目标代码后,到HITOOL集成环境下进行调试。在开发过程中,参考了Uclinux2.4.X这个操作系统的部分代码。

先介绍一下BOOTLOADER的总体结构框架

如下图所示:

图2.4BOOTLOADER的总体结构框架

由上图可以看出,BOOTLOADER软件的开发主要由三部分组成。其中硬件的初始化部分由汇编语言编写,已经在前面作了描述。驱动层和应用协议层部分主要由C语言编写,也嵌入了部分的ARM汇编。

接下来在第三章中将主要描述串行FI的驱动及传输协议。第四章中将主要描述网口的驱动及传输协议。第五章中将主要描述usB的驱动和传输协议。第六章将主要描述FLASH部分的编程模型。

第三章串口驱动及传输协议

第一节串行通讯口驱动程序的编写

?概述

串行通讯是微计算机之间一种常见的近距离通讯手段,因为使用方便、编程简单而广泛使用,几乎所有的微控制器、PC机都提供串行通讯接口。

¥3C4480的UART单元提供两个独立的异步串行通讯口(Asynchronous

SerialI/O,SIO),每个通讯口均可工作在中断模式或DMA模式,UART能产生内部中断请求或DMA请求,从而在CPU和串行I/O口之间传送数据。

¥3C4480的UART单元特性包括:

1波特率可编程2支持红外发送与接收

31至02个停止位45,6,7或8个数据位

5奇偶校验

每一个异步串行通讯口都具有独立的波特率发生器、发送器、接收器和控制单元。波特率发生器可由片内系统时钟MCLK驱动:发送器和接收器都有独立的16个字节的数据缓冲寄存器和数据移位器。待发送的数据首先传送到发送缓冲寄存器,然后拷贝到发送移位器并通过发送数据引脚TXDn发送出去。接收数据首先从接收数据引脚RXDn移入移位器,当接收到一个字节时就拷贝到接收缓冲寄存器。

●相关寄存器的介绍

1.UART波特率除数因子寄存器(UBRDIV0、LIBRDWl)

UART波特率除数因子寄存器UBRDIV0、UBRDWl的值,决定了发送、接收的波特率。

计算公式如下:rUBRDIV0=((int)(MCLK/16/baud+O.5)一1)

其中MCLK是系统时钟,本系统中采用40M。

baud为波特率,本应用设定为115200。

2.UART线路控制寄存器(ULCON0,ULCONl)

该寄存器的值,决定了相应串行通信口的特性,如奇偶校验的种类,数据位长度,停止位长度,是正常传送还是红外传送等。

本应用中,设定为正常传送,无奇偶校验,一个停止位,8个数据位。

3.UART控制寄存器(UCON0,UCONl)

该寄存器的值,决定了接收发送的模式等等

4.UART缓冲控制寄存器(uFCoNO,UFcONl)

14

该寄存器,决定了该串行通信口使用FIFO的情况为简单起见,没有使用FIFO。

5.UART发送缓冲寄存器(UTxH0,UTXHl)该寄存器,存放待发送的8位数据。

6.UART接收缓冲寄存器(uRxHO,URXHl)该寄存器,存放接收到的8位串行数据。

7.UART接收和发送的状态寄存器(uTRs丑玎O,该寄存器的值,指明了发送和接收的状态。

本应用中,由于时间限制,UTRSTATl)

当往发送缓冲寄存器中写数据时,必须等状态寄存器中的发送缓冲区为空置位。当状态寄存器表明接收缓冲区有数据,才能接收数据。

第二节串口通讯协议:X_MODEM及其它

为了能从主机上下载文件,必须开发和主机能相互间通信的协议。

就串行通信而言,一般PC机上都自带超级终端软件,该软件支持以下通信协议:xMODEM,YMODEM,ZMODEM,KERMIT等等

为简单起见,下面仅就如何在开发板上实现XMODEM协议作一个介绍。

●XMODEM协议的介绍

)aⅥ0DEM是~个简单的串行通信协议,首先解释几个术语

SOH=CTRL.A,一个传送数据包的开头

EOT=CTRL.D,代表结束一个传输过程

ACK=CTRL.F,对上一个传送的肯定回复

NAK=CTRL.U,对上一个传送的否定回复

CAN=CTRL.X,命令取消本次传输过程

被传输的文件被分成一个个数据包进行传送,每个数据包中包含的实际数据大小是128个字节。

每个数据包都有一个数据包号,数据包号是从l开始的,以后往上递增,当数据包号大于255时,就减去256,以便使数据包号一直都在0到255之间。

每个数据包的格式如下:

图2.2XMODEM协议中数据包的格式

对数据包号的取补,就是简单的用255减去数据包号。

校验码:校验的过程也相对简单,是把实际传送的这128个字节相加,得到的值如果大于255的话,就减去256,以便使最后得到的校验码一直都在0至11255之间。传送的过程是从下载方(在本应用中,就是EV4480开发板)向主机(即Pc机)发出一个NAK信号开始的。

主机在接受至JJNAK信号后,就发出第一个数据包,如下:

1.SOH(一个字节)

2.数据包号(一个字节)

3.数据包号的补码(一个字节)

4.实际数据(128个字节)

5.校验码(一个字节)

以上这五部分构成了一个数据块。

下载方在接受到一块数据后,做以下工作:

1.看收到的数据包号与上次收到的数据包号是否匹配,如上次收到的是3,那这次收到的数据包号应该是4。如果不是,就取消传送。

2.看数据包号与数据包号的补码是否匹配,即相加结果是否是255。如果不是,就取消传送。

3.把收到的128个字节相加,得到一个校验值。

4.如果该校验值与发送过来的校验值一致,则认为接收和发送正确。就把接收到的数据添加在接受文件后面,同时给发送方发出ACK信号,要求传送下一块数据。

5.如果该校验值与发送过来的校验值不一致,则认为接收和发送出错。给发送方发出NAK信号,要求重新传送这一块数据。

6.如果下一块数据不是以SOH开始,而是以EOT开始,说明发送方已经发送完相关数据,这时给发送方发出ACK信号,以结束本次传送过程。

16

简单的实现流程图(EV4480倾0)

图2.3XMODEM实现流程图

第四章网口驱动及传输协议

第一节网卡芯片及相应驱动的编写

1.网卡芯片介绍及与系统的连接。

开发板上使用的是一个带双绞线(10BaseT&100BaseT)接口的以太网端口。SMSCLAN91C113用以作为¥3C4480和以太网媒体的中介。

该网卡芯片的主要特点是:

i.单片的以太网控制器

ii.10/100Mbps传输速率

试内置8k字节的发送,接收缓冲器

iv.支持8/16位的CPUACCESS。

v.内部16位数据通道。

vi.支持突发数据的传输

vm功耗小,提升了电源管理

网卡是把开发板和局域网连接起来的网络适配器,它涉及到网络物理层和数据链路层,其基本功能是数据转换,包的装配和拆卸,网络存取控制,数据缓存和网络信号。

以下是开发板上网卡的连接图:

地址线

/\TS6121RJ45

\f———√\r—叫

.数据线。SMSC

LAN9lCl3

¥3c44b0一NOE—_-

一NGCS—_.

一NWBE--

'11-EXINTI——

一NWE—_.

图3.1网卡芯片与系统的连接图

为了让网卡能正常的工作,必须开发相应的网卡驱动程序。

网络驱动程序在BOOTLOADER系统网络部分架构中的位置如下:

lTFTP应用程序

luDP协议

lIP协议

囤卜一网卡驱动程序

l网卡硬件

图3.2网络部分的简单OSI模型

sMscLAN9lCll3主要寄存器介绍:

●BANK选择寄存器:偏移地址0xoe

以下是实现BANK选择的函数。

voidSMCSELECT_BANK(intx)

writew(0xe,x);

●TRANSMITCONTROL寄存器:BANK0,OFFSET0

发送控制寄存器,如是否允许发送,带不带校验码,●RECEIVECONTROL寄存器:BANK0,OFFSET4

接受控制寄存器,如是否允许接受,接受的帧格式,●CONFIGURATION寄存器:BANK1,OFFSET0

配置寄存器,配置好后在运行时期不可改变。

●CONTROL寄存器:BANK1,OFFSETC应用层

运输层

网络层

数据链路层

物理层

长度控制等等。冲突控制等等

控制寄存器。当其中的AUTORELEASE位被置位时,在一个发送页被发送成功后,会被自动释放。发送成功的包号也不会被写到TXCOMPLETIONFIFO中去。

19

●MMUCOMMAND寄存器:BANK2,OFFSET0

该寄存器主要控制内存的申请,释放,和发送,接受FIFO的控制。在初始化时,要用到其中的RESET命令,复位所有的内存,指针和中断。在发送数据包时,要用到其中的ALLOC命令和ENQUEUE命令,前者是申请内存。后者是把要发送的数据包放到内存中去。在接收数据包时,要用到其中的RELEASE命令,释放接收到的数据包所占用的内存。

?ALLOCRESULT寄存器:BANK2,OFFSET3

发送数据包时,在ALLOC命令后,从这个寄存器中能读到ALLOCATEDPACKETNUMBER。

?FIFOPORTS寄存器:BANK2,OFFSET4

接收数据包时,从这个寄存器中读出接收的数据包号。

?POINTER寄存器:BANK2,OFFSET6

指针寄存器。决定了发送或者接收数据包时候对数据寄存器的操作方式。当其中的AUT01NCR被置位时,对数据寄存器的存取地址会自动改变。当其中的

READ被置位1时,表明操作将是读取,被置位0时,表明操作将是写。当其中的RCV被置位l时,表明采用的是接收区域的地址,并且用RXFIFO寄存器的输出值作为接收数据包的号。当其中的RCV被置位0时,表明采用的是发送区

域的地址,并且用PACKETNUMBER寄存器的输出值作为发送数据包的号。●DATA寄存器:BANK2,OFFSET8一OFFSETB

数据寄存器。可以用BYTE/WORD方式读取,地址由指针寄存器给定。

●INTERRUPTSTA=兀,S寄存器:BANK2,OFFSETC、

中断状态寄存器,读该寄存器,了解各种中断发生的情况。

●INTERRUPTMASK寄存器:B砧哌2,OFFSETD

中断屏蔽寄存器,在相应位上置0,可以屏蔽掉相关的中断。

2.网卡芯片的初始化流程。

以下给出了初始化网卡的一些必要步骤。

●初始化网卡的mac地址

首先需要初始化网卡的mac地址,方法是向BANKl的INDIVIDUALADDRESSREGISTER中写入所预先设定的mac地址

具体函数如下:

voideth_macinit()

inti;

阐述对BootLoader的理解和分析

` 物理与电子工程学院 《嵌入式系统设计》 设计性实验报告 题目阐述对BootLoader的理解和分析 系别 年级专业 班级学号 学生姓名 指导教师 实验时间

目录 课题要求 ................................................................ 错误!未定义书签。 1.本课题的目的.............................. 错误!未定义书签。 2.运行环境.................................. 错误!未定义书签。正文 . (2) 一.BootLoad简介 (2) 二.系统设计 (5) 三.技术实现问题 (7) 四.总结与体会 (8) 设计性实验报告成绩:指导教师签名: (10)

摘要 在嵌入式系统中,由于不具有自举开发的能力,其BootLoader除了引导操作系统之外,还要担负辅助开发的责任,如与主机通信、与用户交互、更新系统等功能。 虽然嵌入式系统不可能实现通用的BootLoader,但是各系统的BootLoader依然具有一定的相同性,因此,嵌入式系统中常用的BootLoader也都具有可移植性,可以在大部分代码不更改的情况下,根据本系统的情况,通过修改具体硬件相关的代码并进行相应的配置来使用。 关键字:概述,作用,操作模式,分类,基本原理。 正文 一.BootLoad简介 1.1 BootLoader的概述 BootLoader是操作系统和硬件的纽带,它负责初始化硬件,引导操作系统内核,检测各种参数给操作系统内核使用。事实上,一个功能完备的大型BootLoader,就相当于一个小型的操作系统。在嵌入式领域中,操作系统移植的关键在于BootLoader的移植以及操作系统内核与硬件相关部分的移植。Bootloader是在操作系统运行之前执行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射表,从而将系统软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。通常,Bootloader是严重依赖于硬件而实现的,特别是在嵌入式世界里,嵌入式产品型号众多,硬件环境复杂,建立一个通用的Bootloader几乎是不可能的。尽管如此,仍然可以对Bootloader归纳出一些通用的概念来,以指导特定的Bootloader设计与实现。因此,正确进行Linux移植的条件是具备一个与Linux配套、易于使用的Bootloader,它能够正确完成硬件系统的初始化和Linux的引导。 Bootloader不但依赖于CPU的体系结构,而且依赖于嵌入式系统板级设备的配置。对于两块不同的嵌入式板而言,即使它们使用同一种处理器,要想让运行在一块板子上的Bootloader程序也能运行在另一块板子上,一般也都需要修改Bootloader的源程序。反过来,大部分Bootloader仍然具有很多共性,某些Bootloader也能够支持多种结构的嵌入式系统。通常它们能够自动从存储介质上启动,都能够引导操作系统启动,并且大部分都可以支持串口和以太网接口。

(完整word版)嵌入式系统设计与应用

嵌入式系统设计与应用 本文由kenneth67贡献 ppt文档可能在W AP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。 课程名称:课程名称:嵌入式系统设计与应用 总学时:其中讲课36学时,上机实践环节12 36学时12学时总学时:其中讲课36学时,上机实践环节12学时教材:嵌入式系统设计教程》教材:《嵌入式系统设计教程》电子工业出版社马洪连参考书:参考书:1、《嵌入式系统开发与应用》北航出版社、田泽编著. 嵌入式系统开发与应用》北航出版社、田泽编著. 2、《ARM体系结构与编程》清华大学出版社杜春雷编著ARM体系结构与编程体系结构与编程》嵌入式系统设计与实例开发—ARM ARM与C/OS3、《嵌入式系统设计与实例开发ARM与μC/OS-Ⅱ》清华大学出版社王田苗、魏洪兴编著清华大学出版社王田苗、ARM嵌入式微处理器体系结构嵌入式微处理器体系结构》4、《ARM嵌入式微处理器体系结构》北航出版社、马忠梅等著. 北航出版社、马忠梅等著. 张石.ARM嵌入式系统教程嵌入式系统教程》5、张石.《ARM嵌入式系统教程》.机械工业出版2008年社.2008年9月 1 课程内容 绪论:绪论: 1)学习嵌入式系统的意义2)高校人才嵌入式培养情况嵌入式系统设计(实验课)3)嵌入式系统设计(实验课)内容安排 第1章嵌入式系统概况 1.1 嵌入式系统的定义1.2 嵌入式系统的应用领域及发展趋势1.3 嵌入式系统组成简介 第2章嵌入式系统的基本知识 2.1 2.2 2.3 嵌入式系统的硬件基础嵌入式系统的软件基础ARM微处理器的指令系统和程序设计ARM微处理器的指令系统和程序设计 2 第3章 3.1 3.2 3.3 基于ARM架构的嵌入式微处理器基于ARM架构的嵌入式微处理器ARM 概述嵌入式微处理器的组成常用的三种ARM ARM微处理器介绍常用的三种ARM 微处理器介绍 第4章 4.1 4.2 4.3 4.4 4.5 4.6 嵌入式系统设计 概述嵌入式系统的硬件设计嵌入式系统接口设计嵌入式系统人机交互设备接口嵌入式系统的总线接口和网络接口设计嵌入式系统中常用的无线通信技术 3 第5章嵌入式系统开发环境与相关开发技术 5.1 5.2 5.3 5.4 5.5 6.1 6.2 6.3 6.4 概述嵌入式系统的开发工具嵌入式系统调试技术嵌入式系统开发经验嵌入式系统的Bootloader Bootloader技术嵌入式系统的Bootloader技术μC/OS-II操作系统概述C/OS-II操作系统概述ADS开发环境ARM ADS开发环境C/OS-II操作系统在ARM系统中的移植操作系统在ARM μC/OS-II操作系统在ARM系统

嵌入式系统设计与应用

嵌入式系统设计与应用第五章程序设计与分析(1) 西安交通大学电信学院 任鹏举

本章主要内容 Software Design Cycle ●嵌入式软件中的组件(状态机 、循环缓存器、队列) ●编程模型,如数据流和控制图●编译方法介绍 ●根据性能、大小和功耗来分析 和优化程序 ●如何测试程序以验证其正确性

1 嵌入式程序组件 ●状态机(State machine) 用变量来表示内部的状态,根据输入完成状态的转移交通灯控制、CPU design controller ●循环缓冲区(Circular buffer) I/O input buffer ●队列(Queue)

状态机(1) ● 反应系统(reactive system ):响应外部事件的系统。 ●外部输入是间歇到达● 适合使用状态机描述 ● 有限状态机是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。 ●Moore 机:● Mealy 机:输出只由当前状态确定 输出依赖于当前状态和输入

状态机(2) 例子:一个简单的座位安全带控制器 idle buzzer seated belted 未入座/-入座/定时器启动 未系安全带且定时器未超时/- 未系安全带/定时器启动系好安全带/-系好安全带/蜂鸣器关闭 定时器超时/蜂鸣器启动 未入座/-未入座/蜂鸣器关闭输入/输出-= 无动作

状态机(3) #define IDLE 0#define SEATED 1#define BELTED 2#define BUZZER 3switch (state) { case IDLE: if (seat) { state = SEATED; timer_on = TRUE; } break; case SEATED: if (belt) state = BELTED; else if (timer) state = BUZZER; break; case BELTED: if (!seat) state = IDLE; else if (!belt) state = SEATED; break; case BUZZER: if (belt) state = BELTED; else if (!seat) state = IDLE; break; } Inputs :seat, belt, timer Outputs: buzzer

嵌入式Linux之我行——u-boot-2009_08在2440上的移植详解(六) - Bootloader移植篇 - hbhuanggang

嵌入式Linux之我行——u-boot-2009.08在2440上的移植 详解(六) 嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤。一为总结经验, 二希望能给想入门嵌入式Linux的朋友提供方便。如有错误之处,谢请指正。 ?共享资源,欢迎转载:https://www.doczj.com/doc/4e10834407.html, 一、移植环境 ?主机:VMWare--Fedora 9 ?开发板:Mini2440--64MB Nand,Kernel:2.6.30.4 ?编译器:arm-linux-gcc-4.3.2.tgz ?u-boot:u-boot-2009.08.tar.bz2 二、移植步骤 上接:u-boot-2009.08在2440上的移植详解(五) 10)u-boot利用tftp服务下载内核和利用nfs服务挂载nfs文件系统。 知识点: 1.tftp服务的安装与配置及测试; 2.nfs服务的安装与配置及测试; 3.u-boot到kernel的参数传递(重点)。 我们知道使用tftp下载内核和使用nfs挂载文件系统的好处是,当我们重新编译内核或文件系 统后不用重新把这些镜像文件再烧录到flash上,而是把这些镜像文件放到开发主机的tftp或nfs 服务的主目录下,通过网络来加载他们,不用频繁的往flash上烧,这样一可以保护flash的使用 寿命,二可以方便的调试内核或文件系统,提高开发效率。可见,让u-boot实现这个功能是一件很有意义的事情。 实现这样的功能很简单,网上也有很多资料。但有很多细节的东西如果稍不注意就导致失败,这里就结合本人实现的过程进行讲述和一些问题的分析。 ?tftp服务的安装与配置及测试 要使用tftp服务及测试它要安装两个软件包,一个就是tftp服务器,另外一个就是tftp客户端,这里安装客户端只是用于在主机本地测试tftp服务器是否正常运行的,来确保u-boot能够访 问tftp服务(u-boot中已有tftp客户端的功能,其实在前面几篇中都已经使用了tftp下载内核或 文件系统到开发板上,如果那里都做到了,这里就可以直接跳过)。 首先使用rpm命令查看你的主机上是否已经安装了tftp服务器和客户端,如果没有安装就去下 载这两个软件包进行安装或者可以使用yum命令进行在线安装,yum会自动的去搜索适合你主机平 台的最新软件包进行下载安装,如果主机已经安装了,则会提示软件包已经安装了最新的版本。如 下图所示:

嵌入式系统课程设计

《嵌入式系统设计与应用》课程设计 题目嵌入式系统的实践教学探讨 1.嵌入式系统设计与应用课程的内容概述 1.1 内容概述 本课程适用于计算机类专业,是一门重要的专业课程。它的任务是掌握嵌入式系统的基本概念;掌握嵌入式处理器 ARM 体系结构,包括ARM总体结构、存储器组织、系统控制模块和I/O外围控制模块;掌握ARM指令集和Thumb指令集;掌握ARM汇编语言和C语言编程方法;了解基于ARM 的开发调试方法。它的目的是了解和掌握嵌入式处理器的原理及其应用方法。 1)介绍嵌入式系统开发的基础知识,从嵌入式计算机的历史由来、嵌入式系统的定义、嵌入式系统的基本特点、嵌入式系统的分类及应 用、嵌入式系统软硬件各部分组成、嵌入式系统的开发流程、嵌入 式技术的发展趋势等方面进行了介绍,涉及到嵌入式系统开发的基 本内容,使学生系统地建立起的嵌入式系统整体概念。 2)对ARM技术进行全面论述,使学生对ARM技术有个全面的了解和掌握,建立起以ARM技术为基础的嵌入式系统应用和以ARM核为基础 的嵌入式芯片设计的技术基础。 3)ARM指令系统特点,ARM 指令系统,Thumb 指令系统,ARM 宏汇编,ARM 汇编语言程序设计,嵌入式 C 语言程序设计。 1.2实践教学探讨 在IEEE 计算机协会2004年6月发布的Computing Curricula Computer Engineering Report, Ironman Draf t 报告中把嵌入式系统课程列为计算机工程学科的领域之一,把软硬件协同设计列为高层次的选修课程。美国科罗拉多州立大学“嵌入式系统认证”课程目录包括实时嵌入式系统导论、嵌入式系统设计和嵌入式系统工程训练课程。美国华盛顿大学嵌入式系统课程名称是嵌入式系统

嵌入式系统设计与应用复习资料.docx

嵌入式系统设计与应用复习资料 (一)?单项选择题: 1. 下面哪个系统属于嵌入式系统。 ( 八、“天河一号”计算机系统 C 、联想S10±网木 D ) B 、联想T400笔记本计算机 D 、联想OPhone 手机 2. 软硕件协同设计方法与传统设计方法的最大不同Z 处在于(B )。 A 、软硬件分开描述 C 、协同测试 3. 卜?面关于哈佛结构描述正确的是(A A 、程序存储空间与数据存储空间分离 C 、程序存储空间与数据存储空间合并 4. 下面哪一种工作模式不属于ARM 特权模式 A 、用户模式 B 、系统模式 C 、 5. ARM7TDM1的工作状态包括(D )。 A 、测试状态和运行状态 C 、就绪状态和运行状态 6. USB 接口移动硬盘最合适的传输类型为( A 、控制传输 B 、批量传输 C 、 7. 下而哪一种功能单元不属于I/O 接口电路。(D ) A 、USB 控制器 B 、UART 控制器 C 、以太网控制器 &下面哪个操作系统是恢入式操作系统。(B ) As Red-hat Linux B 、 PCLinux C 、 Ubuntu Linux D 、 SUSE Linux 9. 使用Host-Target 联合开发嵌入式应用,(B )不是必须的。 A 、宿主机 B 、银河麒麟操作系统 C 、目标机 D 、交叉编译器 10. 下面哪个系统不属于嵌入式系统(D )。 A 、MP3播放器 B 、GPS 接收机 C 、“银河玉衡”核心路由器 D 、“犬河一号”计算机系统 11. 在嵌入式系统设计中,嵌入式处理器选型是在进行(C )吋完成。 A 、需求分析 B 、系统集成 C 、体系结构设计 D 、软便件设计 12. 下面哪一类嵌入式处理器最适合于用于工业控制(B )。 A 、嵌入式微处理器 B 、微控制器 C 、DSP D 、以上都不合适 13. 关于ARM 了程序和Thumb 了程序互相调用描述正确的是(B )。 A 、 系统初始化Z 后,ARM 处理器只能工作在一种状态,不存在互相调用。 B 、 只要遵循一定调用的规则,Thumb 子程序和ARM 子程序就可以互相调用。 C 、 只要遵循一定调用的规则,仅能Thumb 子程序调用ARM 子程序。 D 、 只耍遵循一定调用的规则,仅能ARM 子程序调用Thumb 子程序。 14. 关于ARM 处理器的异常的描述不正确的是(C )。 A 、复位属于异常 B 、除数为零会引起异常 B 、软硬件统一描述 D 、协同验证 B 、存储空间与10空间分离 D 、存储空间与10空间合并 (A )0 软中断模式 D 、FTQ 模式 B 、挂起状态和就绪状态 D 、ARM 状态和Thumb 状态 B )0 中断传输 D 、等时传输 D 、LED

F BOOTROM引导模式和程序

28335使用串口烧写程序 串口烧写是一种相对较方便的烧写方式,相对于仿真器或是CAN烧写,相对于仿真器或是USB转CAN的设备,串口是一种非常廉价的烧写方式,而且也不需要安装专业的集成开发环境CCS等,但是不能实现在线调试,因此也只适用于程序基本不用再调整或大批量的场合。 F28335的存储器映射图如下:

BOOTROM 是一块8K X 16的只读存储器,位于地址空间0x3FE000~0x3FFFFF,片内BOOTROM在出厂时固化了引导加载程序以及定点和浮点数据表,片上BOOTROM的存储映射如下图所示: 1.内BOOT ROM数学表: 在BOOT ROM中保留了4K X 16位空间,用以存放浮点和IQ数据公式表,这些数据 公式表有助于改善性能和节省SARAM空间。 向量表: CPU向量表位于ROM存储器0x3FE000~0x3FFFFF段内,如下图所示。复位后,当VMAP=1,ENPIE=0(PIE向量表禁止)时,该向量表激活。

在内部BOOT ROM引导区中能够调用的唯一向量就是位于0x3FFFC0的复位向量。复位向量在出厂时被烧录为直接指向存储在BOOT ROM空间中的InitBoot函数,该函数用于开启引导过程。然后通过通用I/O引脚上的检验判断,决定具体引导模式。引导模式与控制引脚之间的关系如下图所示: Bootloader特性: Bootloader是位于片上引导ROM中的在复位后执行的程序,用于在上电复位后,将程序代码从外部源转移到内部存储器。这允许代码暂时存储在掉电不丢失数据的外部存储器内,然后被转移到高速存储器中执行。 引导ROM中的复位向量将程序执行重定向至InitBoot函数。执行器件初始化之后,bootloader将检查GPIO引脚的状态以确定您需要执行哪种引导模式。这些选项包括:跳转至闪存、跳转至SARAM、跳转至OTP或调用其中一个片上引导加载例程。

STM32的BOOT概述

STM32的BOOT概述 STM32 三种启动模式对应的存储介质均是芯片内置的,它们是:1)用户 闪存= 芯片内置的Flash。2)SRAM = 芯片内置的RAM 区,就是内存啦。3)系统存储器= 芯片内部一块特定的区域,芯片出厂时在这个区域预置了一段Bootloader,就是通常说的ISP 程序。这个区域的内容在芯片出厂后没有人 能够修改或擦除,即它是一个ROM 区。 在每个STM32 的芯片上都有两个管脚BOOT0 和BOOT1,这两个管脚在芯 片复位时的电平状态决定了芯片复位后从哪个区域开始执行程序,见下表:BOOT1=x BOOT0=0 从用户闪存启动,这是正常的工作模式。 BOOT1=0 BOOT0=1 从系统存储器启动,这种模式启动的程序功能由厂家设置。BOOT1=1 BOOT0=1 从内置SRAM 启动,这种模式可以用于调试。 在系统上电的时候,cpu 首先根据这两个脚来确定是哪种模式的启动,然后 就是把相应模式的起始地址映射到0 地址处,并从0 地址处开始执行。在芯片 出厂时,st 烧写了一个bootloader 到rom 中,也就是system memory。这个bootloader 的主要任务就是通过uart1 下载程序到内置flash 中去。工作流程如下:system memory boot 模式,在执行完成它的任务之后是必须要退出的。这个退出方式是通过一次硬件reset 来实现的。在reset 的时候,必须要配置BOOT[1:0]这两个脚以使cpu 在重启之后进入适当的模式。 要注意的是,一般不使用内置SRAM 启动(BOOT1=1 BOOT0=1),因为SRAM 掉电后数据就丢失。多数情况下SRAM 只是在调试时使用,也可以做其他一些用途。如做故障的局部诊断,写一段小程序加载到SRAM 中诊断板上的 其他电路,或用此方法读写板上的Flash 或EEPROM 等。还可以通过这种方法解除内部Flash 的读写保护,当然解除读写保护的同时Flash 的内容也被自动清

三级嵌入式系统

三级嵌入式系统学习总结 一第一章 1.嵌入式系统概论 嵌入式系统中的软件一般都固化在只读存储器中,用户不能随意更改其中的程序功能。 嵌入式系统的逻辑组成:1)处理器2)存储器3)I/O设备与I/O接口4)数据总线5)软件 嵌入式处理芯片有四种类型:1)微处理器2)数字信号处理器3)微控制器(单片机)4)片上系统 微控制器MCU的低端产品并不会因为高端产品的出现而衰落 在32位MCU中,绝大多数使用RAM内核 EDA:电子设计自动化 IP核可以分为三种:软核、硬核、固核 2.嵌入式系统与数字媒体 计算机中常用的最广泛的西文字符及其编码是ASCII字符集和ASCII码,即美国标准信息交换码,共有128个字符,一个字符占一个字节。 我国目前广泛使用的汉字编码国家标准有GB2312和GB18030 GB2312只有6763个汉字,不够用 GB18030字符集与国际标准UCS/Unicode字符集基本兼容。GB18030采用不等长的编码方法,单字节编码表示ASCII码,双字节编码表示汉字,与GB2312保持向下兼容,四字节编码表示其他字符 Unicode最新版本是6.3。UCS/Unicode在计算机中具体实现时采用不同的编码方案,最常用的是UTF-8和UTF-16,UTF-8采用的是单字节可变长编码;UTF-16采用的是双字节可变长编码 文本的类型可以分为简单文本、丰富格式文本、超文本 图像的数据量=图像水平分辨率*图像垂直分辨率*像素深度/8(像素深度指的是每个像素用多少个二进制数来表示) 数字视频的数据量非常大,在进行传输时必须进行压缩,压缩编码标准是国际标准化组织(ISO)制定的,其名称为MPEG。 无线局域网采用的协议主要是IEEE 802.11(俗称WIFI) 3.数字通信与计算机网络 微波是一种300MHz-300GHz的电磁波 计算机网络的组成:1)计算机等智能电子设备2)数据通信链路3)通信协议4)网络软件 以太局域网: 1)发送数据设备必须把要传输的数据分成小块(帧)进行传输,一次只能传输1帧; 2)局域网中的每一个终端都有自己唯一的标识,称为物理地址或MAC地址,在发送的每一帧数据中,必须包含自己的MAC地址和接收终端的MAC地址 3)IP协议定义了主机的概念,所有主机及使用一种统一格式的地址标识,称为IP地址。4)以太局域网大多是由集线器或者交换机组网 计算机网络的类型:1)局域网2)城域网2)广域网 IP地址分为A、B、C三类。 IP是由四段数字组成,共32位,8位一段。 A类IP段0.0.0.0 到127.255.255.255 (0段和127段不使用)

嵌入式系统设计与应用-西安交通大学教师个人主页

嵌入式系统设计与应用第六章进程和操作系统(3)西安交通大学电信学院孙宏滨 i n S u n i 'a n J i a o t o n g U i v e r s i t y I n t e r n a l T e a c h i n g U s e O n l y

● 我们该如何评估调度策略?● 能满足所有截止时限 ● CPU 利用率---CPU 执行有用工作所占的时间比例● 调度开销---做调度决策所需的时间 i n S u n i 'a n J i a o t o n g U i v e r s i t y I n t e r n a l T e a c h i n g U s e O n l y

● 分配优先级主要有两种方法:● 静态优先级:在整个执行过程中优先级始终不变● 动态优先级:在执行过程中优先级发生变化 i n S u n i 'a n J i a o t o n g U i v e r s i t y I n t e r n a l T e a c h i n g U s e O n l y

● 单调速率调度(Rate-Monotonic Scheduling, RMS ):首先为实时操作系统开发的调度策略之一,直至现在仍然被广泛使用。● RMS 属于静态调度策略。事实证明,固定优 先级的做法在许多情况下都足以有效地调度进程。● RMS 的理论基础是单调速率分析(Rate Monotonic Analysis, RMA )。i n S u n i 'a n J i a o t o n g U i v e r s i t y I n t e r n a l T e a c h i n g U s e O n l y

《嵌入式系统》设计方案

移动打印终端终嵌入式系统设计方案 阅读目录 一项目概述 (2) 二系统总体架构 (2) 2.1.1 各功能部件作用 (3) 2.2.1 手持式扫描仪 (3) 2.2.2 嵌入式开发板 (4) 2.2.3 微型打印机的选型 (5) 2.2.4.远程服务器 (5) 三软/硬件设计 (5) 3.2 硬件设计 (7) 3.2.1 嵌入式开发板和扫描仪的连接 (7) 3.2.2嵌入式开发板和远程服务器的连接 (7) 3.2.3 嵌入式开发板和微型打印机的连接 (7) 四各驱动程序的设计(软件设计) (7) 4.1 打印机驱动的设计 (7) 4.1.1定义设备号和设备名 (7) 4.1.2 设备驱动初始化函数和清除函数 (8) 4.编译扫描仪制备驱动 (12) 5.加载设备 (12) 4.1.3 扫描仪驱动设计 (13) 4.1.4 网络通信模块及服务器的开发 (14) 4.1.5系统应用程序设计 (15) 五系统调试 (16)

一 项目概述 1.1 系统设计的必要性与PC 终端的比较 在信息社会中,打印终端应用非常广泛,比如超市的收银系统、图书管的借还书系统、移动营业厅的话费打印系统等场合,我们都可以看到打印终端的身影。传统打印终端通常都是由PC 加上一个微型打印机构成,这种架构的打印终端价格比较昂贵,体积庞大,移动笨拙,使用十分不方便。 随着嵌入式技术的发展,许多原来基于PC 的应用都纷纷转向基于嵌入式技术来实现。基于嵌入式技术的产品具有非常明显的优势,如价格便宜、功耗低、体积小及移动方便等。 具体到打印终端这个产品上来说,可以从下表看出基于PC 的打印终端和基于嵌入式的打印 1.2 系统的主要功能 本项目实例中拟开发的嵌入式移动打印终端是解决从数据输入、数据处理和数据输出的一体化系统,它提供下列几个功能 ● 数据录入功能:支持从扫描仪端录入数据; ● 通过网络到数据库查询; ● 数据打印功能 二 系统总体架构 嵌入式移动终端是一套完整的嵌入式应用系统,包括和硬件和软件两部分,这一节先说一下硬件方面的设计。 2.1 系统硬件组成的部件 ● 数据输入部件(手持扫描仪)—完成数据输入功能; ● 数据处理部件(嵌入式开发板和远程服务器)—完成数据处理任务 ● 数据输出部件(微型打印机)—完成数据打印功能; 各个部件之间的关系如图

江苏科技大学通信专业嵌入式系统设计及应用_复习大纲

嵌入式系统设计复习 题型: 1、填空,15分左右 2、选择,30分左右 3、简答题40分左右 4、综述15分左右 第一章嵌入式系统概述 提纲: 1、掌握嵌入式系统的定义 2、了解嵌入式系统的一般组成 嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序 (嵌入式系统一般由嵌入式计算机和执行部件组成。其中嵌入式计算机是整个嵌入式系统的核心,主要包括硬件层、中间层、系统软件层以及应用软件层) 知识点: 1、嵌入式系统的定义与特点 定义:是以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统 特点:软件硬件可裁剪 ①专用性:嵌入式系统具有特定的功能,用于特定的任务; ②低成本:嵌入式系统极其关注成本; ③低功耗:嵌入式系统大都有功耗的要求; ④高实时性OS; ⑤嵌入式系统的运行环境广泛; ⑥嵌入式系统的软件通常要求固态化存储; ⑦嵌入式系统的软件、硬件可靠性要求更高; 2.RISC指令系统的特点 答:指令系统:RISC设计者把上要精力放在那些经常使用的指令上,尽量使它们具有简单高效的特色。对不常用的功能,常通过组合指令来实现。因此,在RISC机器上实现特殊功能时,效率可能较低。但可以利用流水技术和超标量技术加以改进和弥补。 存储器操作:RISC对存储器操作有限制,使控制简单化 程序:RISC汇编语言程序一般需要较大的内存空间,实现特殊功能时程序复杂,不易设计 中断:RISC机器在一条指令执行的适当地方可以响应中断 CPU:由于RISC CPU包含少的单元电路,因而面积小、功耗低 设计周期:RISC微处理器结构简单,布局紧凑,设计周期短,且易于采用最新技术易用性:RISC微处理器结构简单,指令规整,性能容易把握,易学易用 应用范围:由于RISC指令系统的确定与特定的应用领域有关,所以RISC机器更适合于嵌入式应用 3、嵌入式系统由硬件与软件组成,其中软件的组成 答:由实时多任务操作系统、文件系统、图形用户界面接口、网络系统及通用组件模块组成 4、嵌入式系统的运行可靠性指标

嵌入式系统BOOTLOADER的设计与实现

复旦大学 硕士学位论文 嵌入式系统BOOTLOADER的设计与实现 姓名:朱晶 申请学位级别:硕士 专业:计算机应用技术 指导教师:涂时亮 20040427

摘要y- 一 651830 嵌入式系统是把计算机直接嵌入到应用系统中,它融合了计算机软硬件技术,通信技术和半导体微电子技术,嵌入式设备已经越来越多地应用在现代人的工作和生活中,它在当今的应用正变得越来越广泛。BOOTLOADER作为嵌入式系统软件的重要组成部分,对它的研究和实现无疑也具有重要的现实意义。 本文首先对嵌入式系统BOOTLOADER的特点和作用进行了介绍。然后从嵌入式系统的角度对如何实现BOOTLOADER进行了比较全面的分析。 本文对嵌入式系统的硬件初始化,串u驱动及传输协议,网口驱动及传输协议,USB驱动及传输协议,FLASH的驱动等等都做了比较洋细的分析。并结合EV4480丌发板,给出了实现的具体细节。 最后,对已经实现的BOOTLOADER进行了测试和评估,并就今后的改进方向提出了自己的意见。 关键字:嵌入式系统;BOOTLOADER;UCLINUX

Abstract Virtuallyeveryelectronicdevicedesignedandmanufacturedtodayisallembeddedsystem.Briefly,BOOTLOADERisthefirstsoftwareprogramthatrunswhenacomputerstarts.Itisresponsibleforloadingandtransferringcontroltotheoperatingsystemkernelsoftware.ThisessayintroduceshowtodesignBOOTLOADERinanembeddedsystem. FirstthepaperintroducesthefeaturesandthnctionofBOOTLOADER,thenindetailanalyzesBOOTLOADERfromviewofembeddedfield,andbringsupasystemmodelofBOOTLOADER. Inthispaper,italsohaveadetailresearchonsomepartofBOOTLOADER,suchashardwareinitial,UARTdriverandtransferprotocai,lancarddriverandtflp/ipprotocai,USBdriverandtransferprotocal,FLASHdriveretc. Finally,thispaperimplementsandtestsBOOTLOADERinEV4480evaluationboard,thenbringsupsortieadviceontheimprovementinthefuture. Keyword:BOOTLOADER,embeddedsystem,UCLINUX

2019嵌入式课程设计-嵌入式系统设计与应用(第2版)-王剑-清华大学出版社

嵌入式系统课程设计计划 具体内容、进度安排及要求 (附课表,包含指导、答疑、上机的时间、地点,指导教师,学生班级,分组情况等)一、内容及要求: 通过本次课设,使学生了解嵌入式系统的特点,进一步理解和巩固课堂所学的嵌入式系统的基本理论和知识。掌握嵌入式系统的基本设计与分析方法,从而达到理论与实际相结合,并为今后从事嵌入式系统设计及其相关领域的各项工作打下坚实的基础。具体要求如下: 1、掌握嵌入式系统的硬件设计原理。 2、掌握嵌入式linux操作系统下的C语言应用程序设计技术 3、掌握嵌入式linux操作系统驱动程序设计技术 4、掌握嵌入式linux操作系统的移植技术 5、掌握嵌入式linux操作系统的交叉编译与动态调试技术 具体内容如下: (1)熟悉嵌入式硬件系统基础知识及基于Linux的应用开发环境的建立和程序设计方法 熟悉嵌入式硬件系统基础知识,熟悉嵌入式操作系统Linux的特点,了解Linux的主要模块及各自的功能。掌握虚拟机VMW ARE的使用方法,掌握通过交互式的环境来设计和定制内核、选择系统特性,然后进行编译和调试的全过程。了解BSP在嵌入式系统中位置及其作用。掌握在嵌入式操作系统Linux上搭建嵌入式应用开发环境的方法,熟悉Bootloader的使用方法。 (2)嵌入式操作系统Linux平台的编译移植搭建 安装嵌入式实验开发平台的BSP。根据嵌入式实验开发平台的特点和系统需求,利用VMARE环境配置Linux操作系统的特性和功能, 熟悉Bootloader的使用方法,使用TOOLCHAIN进行交叉编译、链接生成操作系统内核,生成系统映像文件ZImage。下载并运行编译好的Linux系统内核。对文件系统同样进行相关编译移植下载至嵌入式开发平台上。 (3)嵌入式数据库SQLITE与UI开发工具QT的掌握。 (4)根据所学理论知识和嵌入式硬件开发平台的具体情况,设计一个具有一定规模较复杂功能的嵌入式系统(如嵌入式系统设备驱动程序),一般来讲需要2个学生共同完成. (5)编写课设报告。课设报告要求: 1.要求使用A4纸打印,必须有封面和目录。封面内容有课设题目、班级、序号(两位)、姓名、指导教师、日期等内容。 2.课设内容一般应包含如下部分: ①课设名称、目的、要求、内容。 ②嵌入式系统a8开发硬件平台的基本概述。 ③嵌入式操作系统Linux配置、编译、移植的基本原理和过程及测试程序设计。 ④嵌入式数据库sqlite的移植过程及程序设计。 ⑤基于QT的数据库应用程序设计。 ⑥目标系统如嵌入式设备驱动程序的设计。 ⑦课设结果及分析。 ⑧收获、体会和建议。 二、进度安排: 1.嵌入式开发平台的熟悉(硬件设计环境和软件开发环境)(1天) 2.嵌入式操作系统Linux平台的编译移植搭建(1天) 3.嵌入式linux操作系统的交叉编译与动态调试(1天) 4.嵌入式数据库SQLITE的熟悉(1天)

AN945 EFM8 Factory Bootloader用户指南中文版

AN945:EFM8 Factory Bootloader用户指南 本文档介绍了工厂编程的引导加载程序可用于EFM8设备。除了描述引导程序的功能,本文档还详细介绍了如何使用引导加载程序并更新Bootloader固件源代码或python主机软件,如果需要定制。 关键点 EFM8工厂编程的引导加载程序提供基本的生产编程或现场更新支持。?主机端都提供源代码python工具和bootloader 件来启用自定义。

1介绍 EFM8设备在工厂中使用引导加载程序进行编程。此引导程序启用: 1. 生产编程- 可以在生产环境中对设备进行编程,而无需使用调试接口需要PCB上的接入点和调试适配器。 2. 2.现场更新- 可以在现场的设备上发布更新,无需最终用户访问调试引脚或使用调试适配器硬件。 引导加载程序主要用于具有最小功能集的生产编程,但也可用于现场更新。因为几个EFM8变体可以有2 KB的闪存,引导程序的设计尽可能小。例如,UART和SMBus版本消耗单个512闪存页面,USB版本消耗1.5 KB闪存。另外,bootloader通常位于代码安全页面中,以使引导程序能够写入和擦除锁定的应用程序空间。更多信息在每个设备上的引导加载程序放置位置可以在设备数据手册或参考手册中找到。 22. USB或UART引导加载程序入门 这些步骤假定使用入门套件。使用自定义硬件时,步骤相同。 这些步骤还假设应用笔记zip文件已经下载到PC,或者使用Simplicity访问文件 工作室。应用程序zip文件可以在Silicon Labs网站(https://www.doczj.com/doc/4e10834407.html,/8bit-appnotes)上找到。 ?将Bootloader下载到设备 如果引导加载程序尚未在设备上,请使用Simplicity Studio将Bootloader下载到设备,并按以下步骤操作。 日期代码在设备勘误表中列出的日期之后的顶部标记的设备可以支持引导加载程序并可能具有 bootloader预装。在此之前的日期代码的设备将不能与引导程序一起使用。 ?打开Simplicity Studio。 ?将入门工具包连接到PC。 ?将套件开关移动到[AEM]位置。 ?单击Simplicity Studio左窗格中的[Refresh detected hardware]按钮。该套件应显示在[Detected Hardware] 区。 ?单击工具包,然后单击Simplicity Studio的[tool]区域中的[Flash Programmer]图块。 ?单击[Erase]按钮。 ?单击[Browse]按钮,导航到套件设备的预编译引导加载程序十六进制文件,单击[Open],然后单击[Program]。

嵌入式系统设计与应用课程设计报告

《嵌入式系统设计与应用》课程设计报告 专业: 班级: 姓名: 学号: 指导教师:

目录 一、设计目的 (3) 二、开发环境 (3) 三、设计任务及要求 (3) 四、实现过程 (3) 用户应用程序设计 (3) 服务器端程序 (3) 五、总结 (4)

一、设计目的 (1)、熟悉并掌握在Linux开发环境下C语言程序设计及编译方法、嵌入式系统;(2)、掌握嵌入式linux下基础网络编程:socket编程 (3)、独立编写客户机/服务器通信程序; 二、开发环境 (1) 编程环境:在Linux开发环境下设计及编译C语言程序。 (2) 硬件设备:PXA270开发板,PC机。 三、设计任务及要求 设计一套可远程调用求和函数并返回客户端的程序。 四、实现过程 用户应用程序设计 1.程序 int sum(); 2.程序 #include <> int sum(){ int i=1,sum=0; while(i<=100){ sum=sum+i; i++; } return sum; } 服务器端程序 /******************************* * 服务器端程序*

********************************/ #include #include #include <> #include <> #include <> #include <> #include <> #include #include “” main() { int sockfd,new_fd,numbytes; struct sockaddr_in my_addr; struct sockaddr_in their_addr; int sin_size,sum; char buff[100] ,temp[100]; sum=sum(); itoa(sum, temp, 10); ..\n"); ,100,0)==-1) { perror("send"); exit(1); } socket success! Sockfd=3; bind success; Listening... Hello!I am Client. (5)、在PC机上运行客户端程序 # ./ result:5050 五、总结 通过本次课程设计,让我熟悉并掌握在Linux开发环境下C语言程序设计及编译方法、嵌入式系统、明白了嵌套字的使用方法、嵌入式linux下基础网络编

bootloader分析

Bootloader分析

?熟悉BootLoader的实现原理?认识Bootloader的主要任务?熟悉BootLoader的结构框架?U-boot使用

引言本章详细地介绍了基于嵌入式系统中的OS启动加载程序――Boot Loader的概念、软件设计的主要任务以及结构框架等内容。 一个嵌入式Linux系统从软件的角度看通常可以分为四个层次: ?1.引导加载程序。包括固化在固件(firmware)中的boot代码(可 选),和Boot Loader两大部分。 ?2.Linux内核。特定于嵌入式板子的定制内核以及内核的启动参数。 ?3.文件系统。包括根文件系统和建立于Flash内存设备之上文件 系统。通常用ram disk来作为root fs。 ?4.用户应用程序。特定于用户的应用程序。有时在用户应用程序和 内核层之间可能还会包括一个嵌入式图形用户界面。常用的嵌入式GUI有:MicroWindows和MiniGUI。

?引导加载程序是系统加电后运行的第一段软件代码。回忆一下PC 的体系结构我们可以知道,PC机中的引导加载程序由BIOS(其本质就是一段固件程序)和位于硬盘MBR中的OS Boot Loader(比如,LILO和GRUB等)一起组成。 ?BIOS在完成硬件检测和资源分配后,将硬盘MBR中的Boot Loader读到系统的RAM中,然后将控制权交给OS Boot Loader。 Boot Loader的主要运行任务就是将内核映象从硬盘上读到RAM 中,然后跳转到内核的入口点去运行,也即开始启动操作系统。 而在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由Boot Loader来完成。 ?比如在一个基于ARM7TDMI core的嵌入式系统中,系统在上电 或复位时通常都从地址0x00000000处开始执行,而在这个地址 处安排的通常就是系统的Boot Loader程序。

嵌入式系统设计与应用复习资料

嵌入式系统设计与应用复习资料 (一).单项选择题: 1.下面哪个系统属于嵌入式系统。( D ) A、“天河一号”计算机系统 B、联想T400笔记本计算机 C、联想S10上网本 D、联想OPhone手机 2.软硬件协同设计方法与传统设计方法的最大不同之处在于( B )。 A、软硬件分开描述 B、软硬件统一描述 C、协同测试 D、协同验证 3.下面关于哈佛结构描述正确的是( A )。 A、程序存储空间与数据存储空间分离 B、存储空间与IO空间分离 C、程序存储空间与数据存储空间合并 D、存储空间与IO空间合并 4.下面哪一种工作模式不属于ARM特权模式( A )。 A、用户模式 B、系统模式 C、软中断模式 D、FIQ模式 5.ARM7TDMI的工作状态包括( D )。 A、测试状态和运行状态 B、挂起状态和就绪状态 C、就绪状态和运行状态 D、ARM状态和Thumb状态 https://www.doczj.com/doc/4e10834407.html,B接口移动硬盘最合适的传输类型为( B )。 A、控制传输 B、批量传输 C、中断传输 D、等时传输 7.下面哪一种功能单元不属于I/O接口电路。( D ) A、USB控制器 B、UART控制器 C、以太网控制器 D、LED 8.下面哪个操作系统是嵌入式操作系统。( B ) A、Red-hat Linux B、μCLinux C、Ubuntu Linux D、SUSE Linux 9.使用Host-Target联合开发嵌入式应用,( B )不是必须的。 A、宿主机 B、银河麒麟操作系统 C、目标机 D、交叉编译器 10.下面哪个系统不属于嵌入式系统( D )。 A、MP3播放器 B、GPS接收机 C、“银河玉衡”核心路由器 D、“天河一号”计算机系统 11.在嵌入式系统设计中,嵌入式处理器选型是在进行( C )时完成。 A、需求分析 B、系统集成 C、体系结构设计 D、软硬件设计 12.下面哪一类嵌入式处理器最适合于用于工业控制( B )。 A、嵌入式微处理器 B、微控制器 C、DSP D、以上都不合适 13.关于ARM子程序和Thumb子程序互相调用描述正确的是( B )。 A、系统初始化之后,ARM处理器只能工作在一种状态,不存在互相调用。 B、只要遵循一定调用的规则,Thumb子程序和ARM子程序就可以互相调用。 C、只要遵循一定调用的规则,仅能Thumb子程序调用ARM子程序。 D、只要遵循一定调用的规则,仅能ARM子程序调用Thumb子程序。 14.关于ARM处理器的异常的描述不正确的是( C )。 A、复位属于异常 B、除数为零会引起异常 C、所有异常都要返回 D、外部中断会引起异常

相关主题
文本预览
相关文档 最新文档