嵌入式ARM

2024-10-07

嵌入式ARM(精选12篇)

嵌入式ARM 篇1

现在社会是一个高度信息化、网络化的社会,计算机和网络已经全面渗透到日常生活的每个角落,信息时代、数字时代使得嵌入式产品获得了巨大的发展契机。嵌入式系统应用非常广泛[1],军事国防是嵌入式系统的一个重要应用领域。现在各种武器控制如火炮控制、导弹控制和智能炸弹制导引爆控制,以及坦克、舰艇、轰炸机、陆海空各种军用电子装备,雷达、电子对抗军事通信装备和野战指挥作战等各种专用设备上,都可见嵌入式系统的影子。

1 系统总体概述

1.1 系统结构

本系统由ARM板、ADU3600板、显示器、母板等组成。

1.2 ARM处理器特点

ARM(Advanced RISC Machine)微处理器体系结构目前被公认为是嵌入式应用领域领先的32位嵌入式RISC微处理器结构,采用32位地址和数据总线,其地址空间达到了232=4GB[2],具有功耗低、性价比高和代码密度高等特点;大量使用寄存器,多数数据操作都在寄存器中完成,指令执行速度更快;寻址方式灵活简单,执行效率高。

1.3 ADU3600板特性

克服了惯性定向产品精度随时间和温度漂移的缺陷,用载波测量技术和快速求解整周模糊度技术,解算出两个GPS接收机天线处位置和两天线相位中心连线与真北之间的夹角。

2 系统硬件设计

2.1 数据接收电路

选用的GPS天线为零相位测量型天线,馈线与天线在阻抗、增益、放大倍数等方面与标配的天线有很好地匹配。

前天线:用天线馈线一端连接接口,另一端连接GPS前天线(前进方向)。

后天线:用天线馈线一端连接接口,另一端连接GPS后天线(后退方向)。

GPS后天线相位中心到GPS前天线相位中心的连线我们称为基线。基线与真北间的夹角我们称为方位角。基线越长定向精度就越高,通常基线长度增加一倍,定向精度也会提高一倍。应尽可能将两个天线安装间距拉长,这样可提高定向精度。

2.2 数据处理电路

接收板通过两条GPS天线接收到数据后,进行第一次数据处理、分类、打包等,然后通过串口把处理后的数据经由母板传送给主板,主板接收到数据后,进行第二次数据处理、分类、打包等一系列工作,最后通过显示屏把相应的数据进行显示,并同时通过串口经由母板把数据发送给外设。

2.3 接口电路

(1) 显示接口

液晶显示器(LCD)具有耗电省、体积小等特点,被广泛应用于嵌入式系统中。LCD显示器就是通过给不同的液晶单元供电,控制其光线的通过与否,从而达到显示的目的。

(2) 串行接口

本系统采用的RS-232C是由美国电子工业协会EIA制定并采用的一种串行通信接口标准,已经发展成为一种国际通用的串行通信接口标准。

3 系统软件设计

嵌入式软件可以分为三大类:系统软件、应用软件和支撑软件。系统软件控制和管理嵌入式系统资源,为嵌入式应用提供支持的各种软件,如设备驱动程序、嵌入式操作系统等;应用软件是嵌入式系统中的上层软件,它定义了嵌入式设备的主要功能和用途,并负责与用户进行交互;支撑软件是辅助软件开发的工具软件,如交叉编译器、在线仿真工具等。本系统中的系统软件和应用软件是运行在嵌入式设备上,支撑软件运行在普通PC机上。

3.1 板级支持包

设备驱动层也叫板级支持包(Board Support Package,BSP),它包含了嵌入式系统中所有与硬件相关的代码,并向上提供一个虚拟的硬件平台使操作系统运行其上。它包括引导加载程序Bootloader和设备驱动程序。Bootloader是在操作系统内核运行之前运行的一小段程序,通过这段程序,我们可以初始化硬件设备、建立内存空间的映射图、从而将系统的软硬件环境设置到一个合适的状态,以便为最终调用操作系统内核做好准备;设备驱动程序就是一组库函数,用来对硬件进行初始化和管理。并向上层软件提供良好的访问接口。

3.2 嵌入式操作系统(Embedded Operating System,EOS)

本系统采用的VxWorks是美国WindRiver System公司开发的一款嵌入式实时操作系统,具有良好的可靠性和卓越的实时性,是目前嵌入式系统领域中使用最广泛、市场占有率最高的商业系统。它基于微内核的体系结构,采用GNU类型的编译和调试器,多数API函数都是专有的。

3.3 集成开发环境

Tornado是WindRiver公司推出的一个集成开发环境[2]。

3.4应用软件

本系统程序采用标准C语言编写,在Tornado集成开发环境中调试,通过串口或网络通信线路传输并装载到ARM板中,最终脱离宿主机在ARM板中单独运行。

4 系统性能指标

(1) 定位误差不大于30 m,定向误差不大于0.06°;

(2) 定位定向不超过2 min;

(3) 阳光下可读的EL显示器;

(4) 总功率不超过10 W;

(5) 包装箱体积不大于410 mm×322 mm×216 mm,质量不大于20 kg;

(6) 适合于-40 ℃~50 ℃工作,适合于-55 ℃~60 ℃储存。

5 结束语

本系统在综合考虑硬件平台、嵌入式处理器、外围设备、接口电路的基础上进行硬件设计,经测试达到硬件的稳定性和可靠性要求;软件设计中嵌入式平台、操作系统、编程语言、集成开发环境的选择上充分考虑了系统的实时性和可扩展性。

摘要:依据开发周期中软、硬件的划分,介绍系统在ARM处理器强大功能的基础之上,运算、处理、显示ADU3600板收集到的数据的过程;在详细阐述系统综合性能指标的基础上展现了产品应用的广阔前景。

关键词:ARM,ADU3600,处理数据

参考文献

[1]李忠民,杨刚,顾亦然,等.ARM嵌入式VxWorks实践教程[M].北京:北京航空航天大学出版社,2006.

[2]魏洪兴.嵌入式系统设计师教程[M].北京:清华大学出版社,2006.

嵌入式ARM 篇2

第一章

1.嵌入式微处理器的分类。

a)什么是嵌入式微处理器?

1.嵌入式微处理器是嵌入式系统硬件层的核心,嵌入式微处理器将通用CPU中许多由板卡完成的任务集成到芯片内部,从而有利于系统设计趋于小型化、高效率和高可靠性。嵌入式微处理器大多工作在为特定用户群所专门设计的系统中。

2.嵌入式微处理器的体系结构可以采用冯·诺依曼体系结构或哈佛体系结构,指令系统可以选用精简指令系统(Reduced Instruction Set Computer,RISC)和复杂指令集系统CISC(Complex Instruction Set Computer, CISC)。b)嵌入式微处理器分类

1.按照系列分:ARM系列、MIPS系列、PowerPC系列。2.按照指令复杂程度分:CISC和RISC两类

2.微处理器划分:

a)嵌入式微控制器 b)嵌入式微处理器 c)DSP处理器

d)嵌入式片上系统 e)多核处理器

3.嵌入式操作系统(EOS)的特性

EOS除具备了一般操作系统最基本的任务调度、同步机制、中断处理、文件处理等功能外,还具有如下特点:强实时性;支持开放性和可伸缩性的体系结构,具有可裁减性;提供统一的设备驱动接口;提供操作方便、简单、友好的图形GUI和图形界面;支持TCP/IP协议及其他协议,提供TCP/UDP/IP/PPP协议支持及统一的MAC访问层接口,提供强大的网络功能。

第二章

1.ARM7TDMI命名

2.3级流水线与总线架构 三级流水线:

流水线使用3个阶段,因此指令分为3个阶段执行 1.取指:从程序存储器中读取指令,放入流水线中

2.译码:操作码和操作数被译码,决定执行什么功能,为下一个始终周期准备数据路

径所需要的控制信号。

3.执行:执行已译码的指令

注:程序计数器(PC)指向被取指的指令,而不是指向正在执行的指令 在正常操作的过程中,在执行一条指令的同时对下一条指令进行译码,并将第三条指令从存储器中取出

3.ARM的两种状态与7种工作模式

a)两种状态。

i.ARM状态:32位,这种状态下执行的是字方式的ARM指令; ii.Thumb状态:16位,这种状态下执行半字方式的Thumb指令。注:两个状态之间的切换并不影响处理器模式或寄存器内容,可以使用BX指令切换两种状态.状态寄存器CPSR的T位反应了处理器运行不同指令的当前状态.b)7种工作模式。

注:除用户模式外,其它模式均为特权模式。ARM内部寄存器和一些片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式。

题目:ARM微处理器复位后,PC的地址通常是 0x0,初始的工作模式是Supervisor 4.ARM常用几个寄存器功能

在ARM7TDMI处理器内部有37个用户可见的寄存器。31个通用32位寄存器,6个状态寄存器。

a.堆栈寄存器(SP):R13,在ARM指令集当中,没有以特殊方式使用R13的指令或其它

功能,只是习惯上都这样使用。但是在Thumb指令集中存在使用R13的指令。

b.链接寄存器(LR):R14,在结构上有两个特殊功能:

1.在每种模式下,模式自身的R14版本用于保存子程序返回地址; 2.当发生异常时,将R14对应的异常模式版本设置为异常返回地址(有些异常有一

个小的固定偏移量)。c.程序计数器(PC):R15,在ARM状态,位[1:0]为0,位[31:2]保存PC。在Thumb状

态,位[0]为0,位[31:1]保存PC。对于ARM指令集而言,PC总是指向当前指令的下

两条指令的地址,即PC的值为当前指令的地址值加8字节。

d.程序状态寄存器(CPSR):R16,在所有处理器模式下都可以访问CPSR。每种异常模

式都有一个程序状态保存寄存器(SPSR),在异常发生时,SPSR用于保存CPSR的状

态。5.条件代码标志

N 运算结果的最高位反映在该标志位。对于有符号二进制补码,结果为负数时N=1,结果为正数或零时N=0;

Z 指令结果为0时Z=1(通常表示比较结果“相等”),否则Z=0;

C 当进行加法运算(包括CMN指令),并且最高位产生进位时C=1,否则C=0。当进行

减法运算(包括CMP 指令),并且最高位产生借位时C=0,否则C=1。对于结合移位

操作的非加法/减法指令,C为从最高位最后移出的值,其它指令C通常不变;

V 当进行加法/减法运算,并且发生有符号溢出时V=1,否则V=0,其它指令V通常不

变。

附:控制位

I、F中断控制位——控制允许和禁止中断 T控制(标志)位——反映处理器的运行状态 M控制位——决定了处理器的运行模式 6.中断号、中断向量与优先级。(7种异常)7.存储器格式。

a)ARM体系结构使用232个字节的单

一、线性地址空间。将字节地址做为无符号数看待,范围为0~232-1 b)对于字对齐的地址A,地址空间规则要求如下:

● 地址位于A的字由地址为A、A+

1、A+2和A+3的字节组成; ● 地址位于A的半字由地址为A和A+1的字节组成;

● 地址位于A+2的半字由地址为A+2和A+3的字节组成; ● 地址位于A的字由地址为A和A+2的半字组成。注:这样并不能完全定义字,半字和字节之间的映射。存储器采用下列映射机制中的一种。

大端存储:字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中

小端存储:低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节

例如,假设一个32位字长的微处理器上定义一个int类型的常量a,其内存地址位 于0x6000处,其值用十六进制表示为0x23456789。如图1.2.2(a)所示,如果按小端法存储,则其最低字节数据0x89存放在内存低地址0x6000处,最高字 节数据0x23存放在内存高地址0x6003处。如图1.2.2(b)所示,如果按大端法存储,则其最高字节数据0x23存放在内存的低地址0x6000处,而最低字节数据0x89存放在内存的高地址0x6003处。

第三章

一:寻址方式。1.寄存器寻址

操作数的值在寄存器中,指令中的地址码字段给出的是寄存器编号,寄存器的内容是操作数,指令执行时直接取出寄存器值操作。

例如指令:

MOV R1,R2 ;R1←R2 SUB R0,R1,R2 ;R0←R1-R2 2.立即寻址

在立即寻址指令中数据就包含在指令当中,立即寻址指令的操作码字段后面的地址码部分就是操作数本身,取出指令也就取出了可以立即使用的操作数(也称为立即数)。立即数要以“#”为前缀,表示16进制数值时以“0x”表示。

SUBS R0,R0,#1;R0减1,结果放入R0,并且影响标志位 MOV R0,#0xFF000;将立即数0xFF000装入R0寄存器 3.寄存器移位寻址。

寄存器移位寻址是ARM指令集特有的寻址方式。当第2个操作数是寄存器移位方式时,第2个寄存器操作数在与第1个操作数结合之前,选择进行移位操作。寄存器移位寻址指令举例如下:

MOV R0,R2,LSL #3;R2的值左移3位,结果放入R0,即是R0=R2×8 ANDS R1,R1,R2,LSL R3;R2的值左移R3位,然后和R1相“与”操作,结果放入R1 4.寄存器间接寻址

寄存器间接寻址指令中的地址码给出的是一个通用寄存器的编号,所需的操作数保存在寄存器指定地址的存储单元中,即寄存器为操作数的地址指针。寄存器间接寻址指令举例如下:

LDR R1,[R2];将R2指向的存储单元的数据读出保存在R1中

SWP R1,R1,[R2];将寄存器R1的值和R2指定的存储单元的内容交换 5.基址寻址

基址寻址就是将基址寄存器的内容与指令中给出的偏移量相加,形成操作数的有效地址。基址寻址用于访问基址附近的存储单元,常用于查表、数组操作、功能部件寄存器访问等。基址寻址指令举例如下:

LDR R2,[R3,#0x0C];读取R3+0x0C地址上的存储单元的内容,放入R2 STR R1,[R0,#-4]!;先R0=R0-4,然后把R1的值寄存到保存到R0指定的存储单元

6.多寄存器寻址

多寄存器寻址一次可传送几个寄存器值,允许一条指令传送16个寄存器的任何子集或所有寄存器。多寄存器寻址指令举例如下:

LDMIA R1!,{R2-R7,R12};将R1指向的单元中的数据读出到R2~R7、R12中(R1自

动加1)STMIA R0!,{R2-R7,R12};将寄存器R2~R7、R12的值保存到R0指向的存储单元中

R0自动加1 7.堆栈寻址

堆栈是一个按特定顺序进行存取的存储区,操作顺序为“后进先出”。堆栈寻址是隐含的,它使用一个专门的寄存器(堆栈指针)指向一块存储区域(堆栈),指针所指向的存储单元即是堆栈的栈顶。存储器堆栈可分为两种:

向上生长:向高地址方向生长,称为递增堆栈 向下生长:向低地址方向生长,称为递减堆栈 8.块拷贝寻址

多寄存器传送指令用于将一块数据从存储器的某一位置拷贝到另一位置。如: STMIA R0!,{R1-R7};将R1~R7的数据保存到存储器中。

;存储指针在保存第一个值之后增加,;增长方向为向上增长。STMIB R0!,{R1-R7};将R1~R7的数据保存到存储器中。

;存储指针在保存第一个值之前增加,;增长方向为向上增长。9.相对寻址

相对寻址是基址寻址的一种变通。由程序计数器PC提供基准地址,指令中的地址码字段作为偏移量,两者相加后得到的地址即为操作数的有效地址。相对寻址指令举例如下:

BL SUBR1;调用到SUBR1子程序

BEQ LOOP;条件跳转到LOOP标号处

...LOOP MOV R6,#1...SUBR1...二:指令集(LDR STR MOV ADD SUB)

1.ARM指令集 2.Thumb指令集 3.常用指令

a)LDR:加载字数据 b)STR:存储字数据

LDR/STR指令寻址非常灵活,它由两部分组成,其中一部分为一个基址寄存器,可以为任一个通用寄存器;另一部分为一个地址偏移量。地址偏移量有以下3种格式: 立即数。立即数可以是一个无符号的数值。这个数据可以加到基址寄存器,也可以从基址寄存器中减去这个数值。如:LDR R1,[R0,#0x12] 寄存器。寄存器中的数值可以加到基址寄存器,也可以从基址寄存器中减去这个数值。如:LDR R1,[R0,R2] 寄存器及移位常数。寄存器移位后的值可以加到基址寄存器,也可以从基址寄存器中减去这个数值。

如:LDR R1,[R0,R2,LSL #2]

从寻址方式的地址计算方法分,加载/存储指令有以下4种格式: 零偏移。如:LDR Rd,[Rn] 前索引偏移。如:LDR Rd,[Rn,#0x04]!程序相对偏移。如:LDR Rd,labe1 后索引偏移。如:LDR Rd,[Rn],#0x04 c)MOV:数据传送指令

d)ADD:加法运算指令

e)SUB:减法运算指令

第四章

一:最小系统一个嵌入式处理器自己是不能独立工作的,必须给它供电、加上时钟信号、提供复位信号,如果芯片没有片内程序存储器,则还要加上存储器系统,然后嵌入式处理器芯片才可能工作。这些提供嵌入式处理器运行所必须的条件的电路与嵌入式处理器共同构成了这个嵌入式处理器的最小系统。而大多数基于ARM7处理器核的微控制器都有调试接口,这部分在芯片实际工作时不是必需的,但因为这部分在开发时很重要,所以也把这部分也归入最小系统中。

二:时钟产生单元

目前所有的微控制器均为时序电路,需要一个时钟信号才能工作,大多数微控制器具有晶体振荡器。简单的方法是利用微控制器内部的晶体振荡器,但有些场合(如减少功耗、需要严格同步等情况)需要使用外部振荡源提供时钟信号。

三:I2C的概念与应用

I2C BUS(Inter Integrated Circuit BUS,内部集成电路总线)是由Philips公司推出的二线制串行扩展总线,用于连接微控制器及其外围设备。I2C总线是具备总线仲裁和高低速设备同步等功能的高性能多主机总线,直接用导线连接设备,通信时无需片选信号。

如图6.2.1所示,在I2C总线上,只需要两条线—串行数据SDA线和串行时钟SCL线,它们用于总线上器件之间的信息传递。SDA和SCL都是双向的。每个器件都有一个唯一的地址以供识别,而且各器件都可以作为一个发送器或接收器(由器件的功能决定)。2C总线有如下操作模式:主发送模式、主接收模式、从发送模式、从接收模式。下面介绍其通用传输过程、信号及数据格式。

*数据有效:在传输数据的时候,SDA线必须在时钟的高电平周期保持稳定,SDA的高或低电平状态只有在SCL线的时钟信号是低电平时才能改变.*起始停止

当I2C接口处于从模式时,要想数据传输,必须检测SDA线上的启动信号,启动信号由主器件产生。如图6.2.2所示,在SCL信号为高时,SDA产生一个由高变低的电平变化,即产生一个启动信号。当I2C总线上产生了启动信号后,那么这条总线就被发出启动信号的主器件占用了,变成“忙”状态;如图6.2.2所示,在SCL信号为高时,SDA产生一个由低变高的电平变化,产生停止信号。停止信号也由主器件产生,作用是停止与某个从器件之间的数据传输。当I2C总线上产生了一个停止信号后,那么在几个时钟周期之后总线就被释放,变成“闲”状态。主器件产生一个启动信号后,它还会立即送出一个从地址,用来通知将与它进行数据通信的从器件。1个字节的地址包括7位的地址信息和1位的传输方向指示位,如果第7位为“0”,表示马上要进行一个写操作;如果为“1”,表示马上要进行一个读操作。

*传输格式 SDA线上传输的每个字节长度都是8位,每次传输中字节的数量是没有限制的。在起始条件后面的第一个字节是地址域,之后每个传输的字节后面都有一个应答(ACK)位。传输中串行数据的MSB(字节的高位)首先发送。

*应答信号

为了完成1个字节的传输操作,接收器应该在接收完1个字节之后发送ACK位到发送器,告诉发送器,已经收到了这个字节。ACK脉冲信号在SCL线上第9个时钟处发出(前面8个时钟完成1个字节的数据传输,SCL上的时钟都是由主器件产生的)。当发送器要接收ACK脉冲时,应该释放SDA信号线,即将SDA置高。接收器在接收完前面8位数据后,将SDA拉低。发送器探测到SDA为低,就认为接收器成功接收了前面的8位数据。

*I2C总线的数据传输过程

① 开始:主设备产生启动信号,表明数据传输开始。

② 地址:主设备发送地址信息,包含7位的从设备地址和1位的数据方向指示位(读或写位,表示数据流的方向)。

③ 数据:根据指示位,数据在主设备和从设备之间进行传输。数据一般以8位传输,最重要的位放在前面;具体能传输多少量的数据并没有限制。接收器产生1位的ACK(应答信号)表明收到了每个字节。传输过程可以被中止和重新开始。

④ 停止:主设备产生停止信号,结束数据传输。

第五章

一:串口的概念(串行接口)常用的数据通信方式有并行通信和串行通信两种。当两台数字设备之间传输距离较远时,数据往往以串行方式传输。串行通信的数据是一位一位地进行传输的,在传输中每一位数据都占据一个固定的时间长度。与并行通信相比,如果n位并行接口传送n位数据需时间T,则串行传送的时间最少为nT。串行通信具有传输线少、成本低等优点,特别适合远距离传送。

① 串行数据通信模式

串行数据通信模式有单工通信、半双工通信和全双工通信3种基本的通信模式。● 单工通信:数据仅能从设备A到设备B进行单一方向的传输。● 半双工通信:数据可以从设备A到设备B进行传输,也可以从设备B到设备A进行传输,但不能在同一时刻进行双向传输。

● 全双工通信:数据可以在同一时刻从设备A传输到设备B,或从设备B传输到设备A,即可以同时双向传输。

② 串行通信方式 a.异步通信方式

异步通信时数据是一帧一帧传送的,每帧数据包含有起始位(”0”)、数据位、奇偶校验位和停止位(”1”),每帧数据的传送靠起始位来同步。一帧数据的各位代码间的时间间隔是固定的,而相邻两帧的数据其时间间隔是不固定的。在异步通信的数据传送中,传输线上允许空字符。

异步通信对字符的格式、波特率、校验位有确定的要求。● 字符的格式

每个字符传送时,必须前面加一起始位,后面加上1、1.5或2位停止位。例如ASCII码传送时,一帧数据的组成是:前面1个起始位,接着7位ASCII编码,再接着一位奇偶校验位,最后一位停止位,共10位。

● 波特率

传送数据位的速率称为波特率,用位/秒(bit/s)来表示,称之为波特。例如,数据传送的速率为120字符/秒,每帧包括10个数据位,则传送波特率为:

10×120=1200b/s=1200波特

每一位的传送时间是波特的倒数,如1/1200=0.833ms。异步通信的波特率的数值通常为:150、300、600、1200、2400、4800、9600、14400、28800等,数值成倍数变化。

● 校验位

在一个有8位的字节(byte)中,其中必有奇数个或偶数个的“1”状态位。对于偶校验就是要使字符加上校验位有偶数个“1”;奇校验就是要使字符加上校验位有奇数个“1”。例如数据“00010011”,共有奇数个“1”,所以当接收器要接收偶数个“1”时(即偶校验时),则校验位就置为“1”,反之,接收器要接收奇数个“1”时(即奇校验时),则校验位就置为“0”。

一般校验位的产生和检查是由串行通信控制器内部自动产生,除了加上校验位以外,通信控制器还自动加上停止位,用来指明欲传送字符的结束。停止位通常取1、1.5或2个位。对接收器而言,若未能检测到停止位则意味着传送过程发生了错误。

在异步通信方式中,在发送的数据中含有起始位和停止位这两个与实际需要传送的数据毫无相关的位。如果在传送1个8位的字符时,其校验位、起始位和停止位都为1个位,则相当于要传送11个位信号,传送效率只有约80%。

(2)同步通信方式

为了提高通信效率可以采用同步通信方式。同步传输采用字符块的方式,减少每一个字符的控制和错误检测数据位,因而可以具有较高的传输速率。

与异步方式不同的是,同步通信方式不仅在字符的本身之间是同步的,而且在字符与字符之间的时序仍然是同步的,即同步方式是将许多的字符聚集成一字符块后,在每块信息(常常称之为信息帧)之前要加上1~2个同步字符,字符块之后再加入适当的错误检测数据才传送出去。在同步通信时必须连续传输,不允许有间隙,在传输线上没有字符传输时,要发送专用的”空闲”字符或同步字符。

在同步方式中产生一种所谓“冗余”字符,防止错误传送。假设欲传送的数据位当作一被除数,而发送器本身产生一固定的除数,将前者除以后者所得的余数即为该“冗余”字符。当数据位和“冗余”字符位一起被传送到接收器时,接收器产生和发送器相同的除数,如此即可检查出数据在传送过程中是否发生了错误。统计数据表明采用”冗余”字符方法错误防止率可达99%以上。

二:NAND FLASH与NOR FLASH异同.答:不同:

1)NOR Flash把整个存储区分成若干个扇区(Sector),而NAND Flash把整个存储区 分成若干个块(Block),可以对以块或扇区为单位的内存单元进行擦写和再编程。

2)NAND Flash执行擦除操作是十分简单的,而NOR型内存则要求在进行擦除前先 要将目标块内所有的位都写为0。由于擦除NOR Flash时是以64~128KB为单位的块进行的,执行一个写入/擦除操作的时间为5s,与此相反,擦除NAND Flash是以8~32KB的块进行的,执行相同的操作最多只需要4ms。

3)NOR Flash的读速度比NAND Flash稍快一些,NAND Flash的写入速度比NOR Flash 快很多。NAND Flash的随机读取能力差,适合大量数据的连续读取。

4)NOR Flash容量通常在1 MB~8MB之间。而NAND Flash用在8MB以上的产品当 中。NOR Flash主要应用在代码存储介质中,NAND Flash适用于资料存储。

5)在NOR Flash上运行代码不需要任何的软件支持。在NAND Flash上进行同样操作 时,通常需要驱动程序,也就是内存技术驱动程序(MTD)。NAND Flash和NOR Flash在进行写入和擦除操作时都需要MTD。

6)在NAND Flash中每个块的最大擦写次数是一百万次,而NOR Flash的擦写次数是 十万次。

区别:两者工艺不一样,NOR读取速度快,成本高,容量不易做大,NAND读取慢,成本低,容量很容易作大。

相同点:都是采用FLASH技术生产

功能:NOR适合作为芯片程序存储的ROM使用,NAND适合作为非易失性数据存储器 第八章

一:Linux的最常用的命令

答:1)adduser 示例:创建pdr帐户 adduser pdr 2)cat 示例:

cat text 在屏幕上显示文件text的内容;

cat-n textfile1 > textfile2 把 textfile1 的文件内容加上行号后输入 textfile2 这个文件里; 3)cd 示例:假设用户当前目录是 /home/xu 现需要更换到/home/xu/pro 目录中 $ cd pro 4)cp 示例:

$ cp-r /usr/xu/ /usr/liu/ 表示将/usr/xu 目录中的所有文件及其子目录拷贝到目录 /usr/liu中。

5)export 示例:显示当前所有环境变量的设置情况 #export 6)Fdisk 示例:查看当前系统中磁盘的分区状况,包括硬盘、U盘等fdisk-l 7)Ln: 类似windows下的快捷方式

示例:要为当前目录下的file文件建立一个硬链接,名为/home/lbt/doc/file/, 可用如下命令: ln file /home/lbt/doc/file 8)locate 示例:locate filename: 寻找系统中所有叫filename的文件

9)Ls 示例:将 /bin 目录以下所有目录及文件详细资料列出 : ls-lR /bin 10)minicom 示例:开启minicom的配置界面 minicom –s 11)Mkdir 示例:在当前目录中创建嵌套的目录层次inin 和inin下的mail目录权限设置为只有文件拥有者有读、写和执行权限。mkdir-p-m 700./inin/mail/ 12)Mount 示例:挂载ntfs格式的hda7分区到/mnt/cdrom文件夹mount-o iocharset=cp936 /dev/hda7 /mnt/cdrom 13)mv 示例:$ mv /usr/xu/ *.表示将/usr/xu 中的所有文件移到当前目录 用.表示

14)Passwd:passwd 作为普通用户和超级权限用户都可以运行,但作为普通用户只能 更改自己的用户密码,但前提是没有被root用户锁定;如果root用户运 行passwd,可以设置或修改任何用户的密码;passwd 命令后面不接任何参数或用户名,则表示修改当前用户的密码

示例:passwd pengdr 15)ping 示例:ping 16)pwd:查看”当前工作目录“的完整路径 示例:

[root@localhost ~]# pwd /root 17)reboot:执行reboot指令可让系统停止运作,并重新开机。示例:做个重开机的模拟(只有纪录并不会真的重开机)。reboot –w 18)rmdir 示例:在工作目录下的 BBB 目录中,删除名为 Test 的子目录。若 Test 删 除后,BBB 目录成为空目录,则 BBB 亦予删除。

rmdir-p BBB/Tes [root@localhost ~]# 19)setup 功能说明:设置程序,类似windows控制面板 语法:setup 20)su功能说明:变更用户身份。示例:变更账号为超级用户,并在执行df命令后 还原使用者。su-c df root 21)tar 功能说明:备份或解压文件。示例:压缩目录/etc为tar.gz后缀。# tar cvf backup.tar /etc 解压#tar –zxvf file.tar.gz #tar –jxvf file.tar.bz2 22)umount 功能:卸除文件系统。示例:卸载 /mnt区: umount /mnt/cdrom 23)whereis 功能:查询某个二进制命令文件、帮助文件等所在目录.比如:查找“ls” 这个二进制命令文件所在的目录 whereis ls

第九章

一:ADS编译环境的设置

二:系统启动代码bootloader概念

在嵌入式系统中,通常没有像BIOS那样的固件程序,因此整个系统的加载启动任务就完全由BootLoader来完成。比如在一个基于 ARM7TDMI core的嵌入式系统中,系统在上电或复位时都从地址 0x00000000开始执行。而在这个地址处安排的通常就是系统的BootLoader程序。

BootLoader就是在操作系统运行之前运行的一段小程序。通过它可以初始化硬件设备,从而将系统的软硬件环境设置到一个合适的状态,以便为最终调用操作系统做好准备。Bootloader是在嵌入式系统内核运行之前运行的一段引导加载程序。

作用:将内核映像从硬盘上读到RAM中,然后跳转到内核的入口点去运行,即开始启动操作系统。

嵌入式系统常见的Bootloader有vivi和U-Boot,RedBoot

题目一:简述Bootloader启动过程。

1、第一阶段

(1)、基本的硬件设备初始化(2)、为阶段2代码准备RAM空间(3)、拷贝阶段2代码到RAM空间(4)、设置好堆栈

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

2、第二阶段

(1)、初始化本阶段要使用到的硬件(2)、检测系统内存映射(memory map)(3)、将kernel和根文件系统映像从flash读到RAM空间(4)、为kernel设置启动参数(5)、调用内核

题目二:请简述嵌入式软件Bootloader的两种工作模式。

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

下载模式:在这种模式下,目标机上的Bootloader将通过串口连接或网络连接等通信手段从主机下载文件。下载内容及存储:主要是下载内核映像和根文件系统映像等。从主机下载的文件通常首先被Bootloader保存到目标机的RAM中,然后再被 Bootloader写到目标机上的FLASH 类固态存储设备中

三:Makefile文件的用途与写法

1.用途:makefile关系到了整个工程的编译规则。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。2.写法: 1)需要由make工具创建的目标体(target),通常是目标文件右可执行文件;2)要创建的目标体所依赖的文件(dependency_file);3)创建每个目标体进需要运行的命令(command)格式:target:dependency_files command 例如,有两个文件分别为hello.c和hello.h,创建的目标体为hello.o,执行的命令为gcc编译指令:gcc –c hello.c,那么,对应的Makefile就可以写为:

#The simplest example hello.o:hello.c hello.h gcc –c hello.c –o hello.o 接着就可以make了。使用make的格式为:#make target,这样make就会自动读入Makefile(也可以是首写字母小写makefile)并执行对应target的commank语句,并会找到相应的依赖文件。如下所示:

[root @localhost makefile] # make hello.o Gcc –c hello.c –o hello.o [root @localhost makefile] # ls Hello,c hello.h hello.o Makefile 可以看到,Makefile执行了”hello.o”对应的命令语句,并生成了”hello.o”的目标体.附:makefile的自动变量:

$* 不包括扩展名的目标文件名称

$+ 所以的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件 $< 第一个依赖文件

$? 所以时间戳比目标文件晚的依赖文件,并以空格分开 $@ 目标文件的完整名称

$^ 所有不重复的依赖文件,以空格分开

$% 如果目标是归档成员,则该变量表示目标的归档成员名称

题目一:Makefile和Make各实现什么功能?

Makefile文件内容 按照规则,对系统中本目录下的文件(.c、.s、.o、.h、.lib等)根据相互关系和要求进行组织,设定各自的编译方法,指定所生成的目标。Makefile是一种文本格式文件。

Make是Makefile文件的解释器

Make对Makefile文件解释后,生成Linux的shell命令和gcc编译命令,接着对命令执行,最终生成目标文件。

Makefile是工程系统编译批处理文件。

第十章

一:嵌入式编译环境的概念、建立方法以及步骤

第十一章

一:Linux驱动设备的分类与常用的数据结构

1.Linux系统设备分为三类:字符设备、块设备和网络设备 2.数据结构: 用户应用程序调用设备的功能都是在设备驱动程序中定义的,也就是设备驱动程序中所定义的功能入口点函数(或称为功能接口函数)。这些设备的功能接口函数都被定义在 中的数据结构体里面。

struct file_operations{ };

struct inode{ };

嵌入式ARM 篇3

关键词:ARM;嵌入式;系统;硬件设计

随着互联网技术的迅猛发展,对各个产业都产生了深远的影响。尤其是对现代化通讯技术的影响更是深远。嵌入式系统在信息技术处理得到了很好的应用,并在通信技术上取得了长足发展,嵌入式系统越来越引起业内的关注,使专家学者对其进行深入的研究,它的重要性慢慢的让更多的人所认识,并逐渐引起关注。在今后一段时间内,其功能会越来越丰富,实用性也会越来越强,最终发展成为以数字为导向的技术,数据处理、数据管理、数据等系统。嵌入式系统随着计算机技术的发展而演变出来的,它的核心是围绕计算机技术基础展开的,应用才是最核心的内容,系统的硬件有可裁剪性,系统的软件也有其可裁剪性,可以满足专用计算机系统的要求,进而其功能、成本、功能以及体积等方面的要求也就自然而然的得到了满足。嵌入式系统最突出的优势是什么呢?这也是很多研究者深入挖掘的一个问题,它的人性化设计使其最大的特点,一切都是从用户的现实需求出发,裁剪对系统的硬件及软件发挥着重要的作用,在满足条件的基础上,有效的提升集成度,对今后发展系统的智能化、网络化有着很大的意义。

一、嵌入式系统原理综述

基于ARM视域下的嵌入式系统有其自身的独特性,它以计算机系统为依托,开发相应的特色的功能,满足市场的需要,嵌入式系统的构成是有很多的因素构成的,它基本上包含软硬件两个部分,硬件包括硬件系统设备平台,软件包括ARM操作系统以及嵌入式的应用软件。嵌入式的系统不是一个孤立硬件或软件的系统,它能够集硬件与软件为一体,并且在双方互不干扰的情况下独立完成工作的效果,与其他系统的相关的硬件系统尤其相似性,如硬件系统中有的设备平台,这与一般的计算机处理器有着同样的功效,储存器和处理器这两种输入和输出的设备在ARM系统与一般的计算机系统都是有的,这些共同构成了嵌入式系统的基本硬件。

基于ARM的嵌入式系统在实际应用中与一般的计算机系统也有其不同之处,它的容量和信息储存处理非常的简单,摒弃了之前繁杂的计算,最后也不能有效的进行输出。嵌入式的操作系统是先进的系统,在系统信息处理中占据主体地位,嵌入式系统的信息处理的主要方向是什么,功能调整控制的主要方向是什么,嵌入式系统操纵进入了人们的眼帘,并能展示出来其有效性。嵌入式的操作系统是以嵌入式的系统软件为核心,并进行相应的处理,最终实现嵌入式系统应用,在一定程度上完善嵌入式系统的开发。

它有着以下两个主要特点。(1)系统精简。嵌入式的系统融合了先进的计算机技术,并吸取了电子行业的经验,并将其现成的技术贯穿到了该系统里面,实现了扬长避短的效果,进而实现了前所未有的高效高能的集成系统,这种系统在现有的市场中也形成了一个良性的发展模式,并采取兼收并包的措施,积极的建立起在相应的行业中,不断吸收先进的经验来完善自身。(2)针对性强。定向设计是最近这几年流行的词汇,这个词在该领域也是有其深远的意义。嵌入式系统其实就是定向设计,在使用上更具有针对性,也突出了其专业性。嵌入式系统以客户的需求进行相应的定向设计与开发,当客户的需求满足的时候,必然会提升自身的性能,它在体量上就与以往的系统发生了很大的变化,它的集成能力就是非常大的,有利于集成系统的丰富和发展。

二、基于ARM的嵌入式系统硬件的整体设计与细节内容研究

对于数控系统的整体方案设计过程来说,该项设计内容不是孤立存在的,而是要从整体的数控系统出发,能够符合整体数控操作系统的要求,把这个方案设计的更加完美,才能称之为完善的设计方案。数控装置实质我们要剖析清楚,把计算机技术的支撑做牢,搭建操作控制硬件平台。在对传统的数控系统构造更新改造的基础上,基于ARM的嵌入式数控系统硬件平台就发生了很大的变化,其功能有了较大的改善,为实际生产工作带来了诸多便利。

现阶段,我国专家学者对于数控系统内容的探究一直在继续,因其对社会生产实践具有极大的研究价值。随着电子计算机技术的应用,网络信息技术的迅猛发展,嵌入式数控系统的硬件设计内容也在逐年更新换代,并进行了多次的改革,使得升级后的硬件系统发生了质的飞跃,更能够符合现代工农业生产对技术领域的要求。

(一)处理器设置。基于ARM视域下的嵌入式系统硬件有其独特性,尤其是在处理器上更是有着非同的反响,其自身特有的优势是很多处理器无法抗衡的,它的处理器有很多的优点,不仅在体积上有其灵活性,在资源的消耗上也有它的独特性,属于低耗能的能源,同时还有较好的性能,保护系统也是独一无二的。所以ARM的嵌入式处理器的优势是显而易见的,它的应用性在网络产品中运用得十分广泛。处理器是硬件系统的大门,是非常重要的一个环节,它是系统运行的核心,针对处理器的设计要注重性能、质量以及保护,要摒弃繁杂的成分,不断提升处理器的运用效率,从而实现整个系统的高效使用。

(二)外围接口设置。嵌入式的硬件系统需要选择合理的配件,各个硬件之间的连接和组合都要做到优化,从而让个配件之间的配合取得良好的效,能够有效地提升运作质量和效率。外围接口的设计要注重巧妙和灵活,尽量小化,要符合嵌入式的特点。通过设计较为精简的外围接口,可以有效地保证硬件系统运行的稳定性和持续性。针对嵌入式系统最好的外围接口设计要能够完美地将处理器和接口连接在一起,达到无缝的效果。外围的电路要尽量精简,不仅能够有效地节省成本,还能够适当地压缩硬件系统的体积。

(三)针对性设计。基于ARM的嵌入式硬件系统特点,要根据实际需求来进行设计,不同的用户有着不同的需求,不同 的项目需要不同的设计需求。嵌入式系统设计为最关键,其他的各项设计都是起辅助作用,围绕这个最关键的嵌入式系统展开并继续的。因为嵌入式硬件系统有着自身的特点,它的使用周期长,所以要考虑系统软件的设计,对硬件的升级也要有所考虑,从而实现整体系统的正常运营,并且合理的迎合实际需要。在正式的系统设计投入运用前,我们也要考虑相关的因素,需要调试现行试验程序的配置,在有限的时间内进行必要的模拟运行,通过不断的调试来不断系统,进而满足用户和项目的实际需求,使其更好地为系统运行提供服务。

(四)软硬件协作处理设计。嵌入式的硬件系统运行要有软硬件的相互协作才能实现其最大的价值。该系统需要有对应的软件来配套,硬件也不能马虎,对硬件要进行周密的设计,在设计的基础上进行详细的分析。嵌入式在设计过程中需要软件硬件的通力协作,刚开始的设计就要考虑到软硬件的在某种程度上的划分,根据某种程度上的划分,对软件硬件的功能用固定区域来进行限制,使部分的功能发挥最大的作用,进而实现整体效果的优化,让整体的功能和效益得到最大价值的发挥。

结束语:通过对数控系统的运作机理进行研究,并结合国内外在实践过程中常用的数控系统硬件结构的设计内容,提出了基于ARM的嵌入式数据控制系统硬件平台的设计方案。该设计能够将ARM、FPGA低功率的特征发挥出来,采用低功率的设备及器件组合,构建了低功耗的硬件系统电路。总之,该系统设计的内容符合当前工业生产所需达到的标准,具备一定的实践价值。

参考文献:

[1] 蔡建平. 关于嵌入式应用开发技术[J]. 单片机与嵌入式系统应用. 2001(03)

基于嵌入式ARM系统的应用分析 篇4

一、ARM嵌入式开发工具

ARM应用软件的开发工具根据功能的不同, 分别有编译软件、汇编软件、链接软件、调试软件、嵌入式实时操作系统、函数库、评估板、JTAG仿真器、在线仿真器等, 目前世界上约有四十多家公司提供以上不同类别的产品。

ARM SDT可在Windows95、98、NT以及Solaris 2.5/2.6、HP-UX 10上运行, 支持最高到ARM9 (含ARM9) 的所有ARM处理器芯片的开发, 包括Strong ARM。ADS对汇编、C/C++、java支持的均很好, 是目前最成熟的ARM开发工具。很多ARM开发软件 (例如Keil) 也是借用的ADS的编译器。ADS在2006年版本已经发布到2.2。但国内大部分开发者使用的均是1.2版本。Real View MDK开发工具源自德国Keil公司, 被全球超过10万的嵌入式开发工程师验证和使用, 是ARM公司目前最新推出的针对各种嵌入式处理器的软件开发工具。Real View MDK集成了业内最领先的技术, 包括µVision3集成开发环境与Real View编译器。支持ARM7、ARM9和最新的Cortex-M3核处理器, 自动配置启动代码, 集成Flash烧写模块, 强大的Simulation设备模拟, 性能分析等功能, 与ARM之前的工具包ADS等相比, Real View编译器的最新版本可将性能改善超过20%。

JEENI仿真器支持ARM/THUMB指令, 支持汇编/高级语言调试。用户应用程序通过JEENI仿真器下载到目标RAM中。通过JEENI仿真器, 用户可以观察/修改ARM7的寄存器和存储器的内容, 用户可以在所下载的程序上设置断点, 用户可以以汇编/高级语言单步执行程序, 也可以全速运行程序, 用户可以观察高级语言变量的数据结构及内容并对变量的内容在线修改。

JEENI内部使用了一片带有高速缓存的ARM处理器, 支持对调试操作的快速响应, 比如:单步、读写存储器、读写寄存器和下载应用程序到目标板。JEENI的这种结构, 允许以太网接口在处理器执行JTAG指令的同时访问存储器。这种设计极大的提高了下载速度。JEENI仿真器能够很好地与SDT2.5工具连接, 用户可使用SDT的编译器和调试界面。JEENI对那些正在使用ARM Black ICE Embedded ICE JTAG接口的用户来说是即插即用的替代品。JEEN可用于ARM SDT 2.11a或SDT 2.5, 另外大多数第三方的调试器也都支持JEENI。

二、Real View MDK优点

启动代码和系统硬件结合紧密, 必须用汇编语言编写, 因而成为许多工程师难以跨越多门槛。Real View MDK的µVision3工具可以帮您自动生成完善的启动代码, 并提供图形化的窗口, 随您轻松修改。无论对于初学者还是有经验的开发工程师, 都能大大节省时间, 提高开发效率。Real View MDK的设备模拟器可以仿真整个目标硬件, 包括快速指令集仿真、外部信号和I/O仿真、中断过程仿真、片内所有外围设备仿真等。开发工程师在无硬件的情况下即可开始软件开发和调试, 使软硬件开发同步进行, 大大缩短开发周期。而一般的ARM开发工具仅提供指令集模拟器, 只能支持ARM内核模拟调试。

Real View MDK的Real View编译器与ADS 1.2比较:

代码密度:比ADS 1.2编译的代码尺寸小10%;代码性能:比ADS1.2编译的代码性能高20%。Real View MDK无需寻求第三方编程软件与硬件支持, 通过配套的ULINK2仿真器与Flash编程工具, 轻松实现CPU片内FLASH、外扩FLASH烧写, 并支持用户自行添加FLASH编程算法;而且能支持FLASH整片删除、扇区删除、编程前自动删除以及编程后自动校验等功能, 轻松方便。

三、ARM嵌入式造作系统

操作系统是一管理电脑硬件与软件资源的程序, 同时也是计算机系统的内核与基石。操作系统是一个庞大的管理控制程序, 大致包括5个方面的管理功能:进程与处理机管理、作业管理、存储管理、设备管理、文件管理。目前微机上常见的操作系统有DOS、OS/2、UNIX、XENIX、LINUX、Windows、Netware等。

μC/OS-II是一种基于优先级的抢占式多任务实时操作系统, 包含了实时内核、任务管理、时间管理、任务间通信同步和内存管理等功能。它可以使各个任务独立工作, 互不干涉, 很容易实现准时而且无误执行, 使实时应用程序的设计和扩展变得容易, 使应用程序的设计过程大为减化。Vx Works提供了一个快速灵活的与ANSI C兼容的I/O系统, 包括UNIX标准的Basic I/O (creat () , remove () , open () , close () , read () , write () , and ioctl () .) , Buffer I/O (fopen () , fclose () , fread () , fwrite () , getc () , putc () ) 以及POSIX标准的异步I/O。Vx Works包括以下驱动程序:网络驱动、管道驱动、RAM盘驱动、SCSI驱动、键盘驱动、显示驱动、磁盘驱动、并口驱动等。

摘要:ARM是微处理器行业的一家知名企业, 设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件。文章总结了各种具有性能高、成本低和能耗省的技术, 列举了适用领域, 比如嵌入控制、消费/教育类多媒体、DSP和移动式应用等。

关键词:嵌入式系统,ARM软件开发

参考文献

[1]王学龙:嵌入式ARM系统设计与应用[M].北京:清华大学出版社, 2007

嵌入式ARM 篇5

ARM嵌入式linux复习心得总结1:

一、Linux定制安装:

从新安装配置了一遍Linux,我使用的是Vmware7.0安装RHEL5.5,对于Linux的安装主要是要选择定制安装也就是Vmware7.0(下面简称Vm)中新建虚拟机开始部分选择”Custom(advanced)”,因为这里我所使用的FTP、sumba等服务器是需要定制加上的一开始没有注意结果悲剧了…(以后一定要仔细的选择!),在next后面应该选择最后一个选项这样自定义的选项会更加多,同样可以选择定制安装的一些选项,在这里同样有个地方要注意:

1、最好使用默认的内存分配方式

2、*(重要)选择bridged networking 的网络连接方式(这里要注意,第一次安装的时候没有注意使用的是默认值也就是NET模式,最后在设置NFS和sumba服务器的时候(也可能是其他的操作错误)无法与PC机ping通讯这里花费了大量的时间研究!后面就是Linux系统的安装了,这里我使用的是图形化界面的安装(以前大一的时候用命令行安过一次自己英语太垃圾了,安了整整一上午…)

3、在最后配置的时候防火墙要禁用,因为这里防火墙会阻止一切自发的与本机联网的事件,在后面使用NFS以及sumba服务器的时候是不能打开的,第一次安装的时候吃过这方面的亏以后要注意!

4、禁用SELinux,这个也是与安全有关的,现在暂时禁用就可以了。

二、再次回顾了一下Linux的命令,这里比较熟悉,跟走路一样这里必须专业起来!总的来说有一下几个命令必须灵活运用:

1、useradd(添加用户名,后面使用sumba服务器的时候需要用到,使用率较低)

2、passwd(添加用户密码,一般配合useradd使用,使用率较低)

3、su(切换用户,经常用)

4、shutdown(关机命令,用法有多种,我一般不用,虚拟机直接断电就行了)

5、cp(拷贝,不解释)

6、mv(移动或更名,不解释)

7、rm(删除,不解释)

8、mkdir(创建目录)

9、cd(改变工作目录,经常用)

10、pwd(显示当前目录)

11、ls(查看目录)

12、tar(针对tar.gz打包和解压,这里主要记住 tar cvzf * 和tar xvzf * 一个是压缩,一个是解压)

13、tar(针对tar打包和解压,这里主要记住 tar cvf * 和tar xvf * 一个是压缩,一个是解压)

14、unzip(解压zip文件)

15、chmod(更改权限)

16、df(查看磁盘使用情况)

17、ifconfig(查看网络配置、查看ip等)

18、netstat(查看网络状态)

19、grep(查找字符串,这个其实很重要,但自己总是忘记可能是一般不用的原因)20、rpm(用于软件安装)

21、mount(挂载,很重要用语挂载CDROM、硬盘以及共享文件等)

22、find(找到*文件存在路径)

三、vi编辑器的使用,使用比较熟练好像加“!”的都是强制执行的。

四、安装tftp服务器:

常用命令:*netstat –a | grep tftp 这里检测当前tftp的情况,在资料上是说检测安装情况,我觉得不是应该是检测启动情况,当然这个也是包括安装与否的,这里要注意!有的时候他是安装上的但是没有打开,查看配置文件是就会发现disable 默认是 = yes 意思是默认是关闭的我们有几种方法将他打开:

1、使用setup命令启动tftp

2、配置 #vi /etc/xinetd.d/tftp 中把disable中的yes改为no

3、使用命令启动 #/etc/init.d/xinetd start

五、安装NFS服务器: 这个功能是共享Linux与Linux之间文件的,后面开发ARM的时候联通内核与文件系统使用

六、安装samba服务器

首先是要配置samba服务器的配置文件位置在:#vi /etc/samba/smb.conf 在Share Definitions中添加 【root】

Comment

= Root Ditectories

Browseable

= yes

Writable

= yes

Path

= /

valid users

=

smb

valid users

=

MYDOMAIN%s 其中可以在【home】前在命令模式下输入“6yy”(复制这六行!)然后再输入“p”(粘贴)然后再修改,这样修改起来比较方便,也是绝大多数教程都使用的方法,其中要注意几点:

1、要是使用复制方法然后修改的话要注意看清楚Comment这行后面Root Ditectories 这行的Root是不要忘了修改【homes】中式Home而【root】中是Root切记!(这里自己在前一次安装的时候没有留意导致后面Samba 服务器不能使用!!)

2、smb 这是用户名这里引用一下教材的语言:添加用户,注意添加用户的用户与修改配置文件部分valid users = smb相同,如果smb用户存在则不需要添加!

配置完毕要重新启动samba服务器 #/etc/init.d/smb restart

最后在windows中运行即可。

七、Samba、NFS等PC与虚拟机的网络配置(重点)这里着重总结一下这次网络的配置,虚拟机的网络配置非常重要,即使Linux不需要上网可是他们之间的数据传送也是十分必要的,例如Vmtools这个工具,smb、NFS、tftp等,我在这里的网络配置花费了大量的时间研究,主要是samba服务器总不能配置成功,网上也有许多的方法不过讲的都很细许多功能的实现都比较抽象,我之所以总是没有成功在上面的几个方面上已经详细的解释了,这里不再次做总结,其中有几点与老师或查资料得到的几点信息在这里要总结一下:

1、在所有的服务器等联网活动之前一定要把网络通信配置好!在PC中首先要ipconfig一下查询一下PC机网络配置情况(ip、网关等)然后再在虚拟机中使用命令setup打开网络配置去掉自动分配IP选用静态ip然后将ip等项目输入进去,这里要输入的一共三项,后两项是相同的只有ip是需要改变的,切记要分配在同一个网段!这样才能实现局域网功能

2、我问了问教授Linux的一位老师他曾经因为更改了本地连接的IP导致虚拟机上的网络服务器不能用了,当更改回原来的ip才能使用,这里我并没有出现这种情况因为我在设置ip的时候使用的是动态分配地址的ip路由器,在设置完成后并没有出现服务器失效的情况所以我认为这里老师可能使用了某个ip绑定了吧。

八、Vmtools的安装使用

这个工具很好用在XP中安装比较方便,但在Linux中有点儿复杂,当然只是有点儿而已,使用Vmware自动下载就可以完成后Linux自动加载了一个cdrom里面就有一个vmtools的tar 解压包(有时需要自己加载)他在文件中找到安装文件安装即可。这里引用一下网络同仁的资源我觉得他写的吧、简单明了(http://tl.h> void create_file(char *filename){ If(create(filename,0666)<0)

//创建文件函数判断创建是否成功 后面的是文件的权限:可读可写不可执行!

{ printf(“create file %s failure!n”,filename);

exit(EXIT_FAILURE);} Else { Printf(“create file %s success!”,filename);} }

Int main(int argc,char *argv[])// 这里的argc是程序参数个数(如ls –a 这就是两个参数,也就是说是两个字符串,而argv【】表示的是参数名字 argv【0】=ls argv【1】=-a 后面应该还有一个参数char *env 代表的是环境变量的字符串(各种路径)){

If(argc<2)

//判断文件是否符合要求,这个一般小于0就行 { Perror(“you haven’t input the filename,please try again!n”);

Exit(EXIT_FAILURE);//这个最后等于1 其实就是个return 1; } Create_file(argv[1]);Exit(EXIT_SUCCESS);

//这个最后等于0 其实就是个return 0;

}

嵌入式ARM 篇6

关键词:ARM;嵌入式系统;软硬件设计

中图分类号:TP302.7 文献标识码:A 文章编号:1674-7712 (2014) 16-0000-01

计算机技术的创新与发展、微处理器工艺的改进以及社会信息化程度的加深,嵌入式系统已经被广泛的应用于我国当代社会当中。近年来,我国工业规模不断壮大,先进的工业设备被运用到当代工业的生产经营活动中,将嵌入式系统应用到工业的生产经营的设备当中,有效的提高了工业的生产效率。在我国传统的嵌入式系统中,大多都是单个程序实现整个控制逻辑,这种嵌入式系统已经不能满足我国当代社会发展的需要了,为此对嵌入式系统进行优化设计有着重大意义。

一、ARM的概述

ARM(Advanced RISC Machines),是一種微处理器,是一个32位精简指令集(RISC)处理器架构,其广泛地使用在许多嵌入式系统设计。由于节能的特点,ARM处理器非常适用于移动通信领域,符合其主要设计目标为低成本、高性能、低耗电的特性。ARM处理器有着体积小、低功耗、低成本、高性能等优势,在嵌入式系统中支持Thumb(16位)/ARM(32位)双指令集,同时能很好的兼容8位/16位器件,其指令执行速度快,大多数数据操作都可以在寄存器中完成。

二、嵌入式系统的概述

嵌入式系统是用来控制或者监视机器、装置、工厂等大规模设备的系统。嵌入式系统以应用为中心、以计算机技术为基础、软硬件可裁剪、功能、可靠性、成本、体积、功耗严格要求的专用计算机系统[1]。嵌入式系统的核心是由一个或几个预先编程好以用来执行少数几项任务的微处理器或者单片机组成。嵌入式系统的系统内核小,系统精简。在嵌入式系统中的软件系统和硬件系统的结合是非常紧密的。一个嵌入式系统装置一般都由嵌入式计算机系统和执行装置组成,嵌入式计算机系统是整个嵌入式系统的核心,由硬件层、中间层、系统软件层和应用软件层组成。执行装置也称为被控对象,它可以接受嵌入式计算机系统发出的控制命令,执行所规定的操作或任务。

三、ARM下的嵌入式软硬件系统的设计分析

(一)硬件方案的设计

嵌入式硬件系统中主要包括嵌入式微处理器、存储器、通用设备接口和I/O接。在一片嵌入式处理器基础上添加电源电路、时钟电路和存储器电路,就构成了一个嵌入式核心控制模块。其中操作系统和应用程序都可以固化在存储器中。

1.嵌入式微处理器的设计

嵌入式微处理器是嵌入式系统硬件层的核心,嵌入式微处理器与通用CPU最大的不同在于嵌入式微处理器大多工作在为特定用户群所专用设计的系统中,它将通用CPU许多由板卡完成的任务集成在ARM芯片内部,从而有利于嵌入式系统在设计时趋于小型化,同时还具有很高的效率和可靠性。在进行微处理器选择的时候,首先要确定ARM是否自带MMU(memory management unit)功能,因为有些嵌入式系统需要自带MMU功能的ARM芯片。其次要控制好ARM芯片的成本以及芯片的处理速度。芯片的处理速度可以根据ARM芯片系统中的始终频率来进行控制。ARM芯片的成本是影响嵌入式平台运作成功与否的一个重要因素,

2.存储器的设计

嵌入式系统的正常运行需要依靠存储器来提供保障,在嵌入式系统中利用存储器可以存放和执行代码。存储器主要包含cache、主存和辅助存储器。针对主存,首先要考虑的是其处理速度问题,为了保障嵌入式系统的运作效率,一般选用处理速度比较快的主存,例如SDRAM,其次就是要考虑价格问题,只有价格低,性能好的主存才能保障系统运行的效率。辅助存储器是用来存放大数据的程序代码以及信息,例如MMC,这种辅助存储器的价格低廉,储存空间大,在嵌入式系统中,可以有效的满足系统的要求。

3.通用设备接口

嵌入式系统在与外界交互的过程中需要一定形式的通用设备接口来完成,例如I/O,外设通过ARM芯片外其他设备的连接来实现微处理器的输入以及输出功能。通用设备接口要根据具体的嵌入式系统来进行选择。

(二)软件方案的设计

1.系统软件层的设计

在嵌入式软件系统中主要由文件系统和操作系统两个部分。嵌入式操作系统(Embedded Operation System,EOS)是一种用途广泛的系统软件,嵌入式操作系统负责嵌入系统的全部软、硬件资源的分配、任务调制、控制、协调并发活动,它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能[2]。文件系统主要是负责文件的存储、检索等功能。通过以口令的形式设置好文件名、文件存储目录,同时还要设置好文件的修改、重命名的方法和路径。

2.应用软件的设计

应用软件层是在嵌入式操作系统的基础上,调用操作系统为上层提供的接口进行软件开发,以便满足系统运作的需求。应用软件层除了要满足现代嵌入式系统在准确性、安全性以及稳定性方面的需求,同时还要尽可能的减少资源的消耗,优化资源配置,降低软件开发的成本。

3.图形用户接口

当用户在使用嵌入式系统进行操作的时候,为了方便用户的需求,在图形用户接口中要统一接口,提供各种设备驱动接口。同时,嵌入式用户接口还要满足系统可靠性、可移植性、可配置的需求。

四、结束语

随着信息化、智能化、网络化的发展,嵌入式系统技术也获得了较大的发展空间。嵌入式系统作为一种先进技术的产物,代表着先进生产力发展的需求,其在我国社会发展过程中有着不可替代的作用。针对我国当前ARM下的嵌入式系统,主要是针对软硬件系统的设计来保障系统的正常运行,对嵌入式系统进行开发和探讨有着十分重要的意义。

参考文献:

[1]陆鑫.可编程软硬件系统的综合设计[D].上海交通大学,2008(06).

[2]胡振国.基于ARM的嵌入式软硬件系统设计与实现[D].电子科技大学,2010(04).

基于ARM的可信嵌入式系统设计 篇7

可信计算是近年来信息安全领域中的被广泛关注的一个概念,现在人们提出的可信计算一般的基本思路是:首先,在计算机系统中建立唯一的物理安全信任根部件,之后可以根据该信任根建立一条认证和信任链,进行逐级认证,逐级信任,从而可以把信任关系推广到整个计算机系统[1]。TCG(Trusted Computing Group)是制定可信计算平台标准的工业组织,其前身是1999年由Compaq、HP、IBM、Intel和Microsoft牵头组织的TCPA(Trusted Computing Platform Alliance),组织的目标是推动在计算和通信系统中使用基于硬件安全模块支持下的可信计算平台,以提高整体的安全性;目前拥有成员190家,大部分是全球各大洲的计算机主力厂商。TCG制定了TPM(Trusted Platform Moude)的标准,现在的大多数安全芯片都是基于此规范制造的,而且因为其硬件安全防护的优越性,正逐渐成为计算机系统的标准配置。

1 可信计算原理

可信计算平台是在计算系统中实现可信计算的核心部分,对整个系统的安全可信提供支撑服务。可信计算密码支撑平台是可信计算平台的重要组成部分,提供数字签名、消息加密、身份认证、内部资源的授权访问、直接匿名访问机制、信任链的建立和完整性测量、证书和密钥管理等服务,为平台的身份可信性、完整性和数据保密性提供密码支持[2]。可信计算平台的主要部分可以分为两个部分——可信计算模块TCM和可信软件栈(Trusted Software Stack,TSS),其功能架构如图1所示。

其中,TCM的通常实现为可信计算平台中的硬件部分,为可信计算平台提供密码运算功能,一般拥有受硬件保护的存储空间,TCM一般位于计算机系统的最底层,在加电的时候与整个计算机系统一起启动。TSS是可信计算平台内部的安全服务组件,为整个可信计算平台外部提供访问TPM的API软件接口。

2 系统设计

当前嵌入式系统上可信计算的相关研究成果主要有以下这些:

(1)ARM公司的Trust Zone技术:属于系统范围的安全方法,针对高性能计算平台上的大量应用,包括安全支付、数字版权管理(DRM)和基于Web的服务。Trust Zone技术与CortexTM-A处理器紧密集成,并通过AMBAR AXITM总线和特定Trust Zone系统IP块在系统中进行扩展。

(2)TMP(trusted mobile platform):可信计算组织TCG于2007年6月正式确定了可信移动平台TMP(trusted mobile platform)的规范,主要目的是为适应移动设备特点,在移动平台(手机、PDA等设备)上构建可信计算架构,为高端的移动设备提供安全保证[3]。

2.1 ARM Trust Zone技术

Trust Zone技术的主要目标是支持用户构建可编程环境,以保护信息的机密性和完整性遭受到特定攻击。如图2所示,ARM采用了以下方式确保系统安全:使用硬件的方法隔离So C硬件和软件资源,使它们分别独立位于两个不同的区域(用于安全子系统的安全区域以及用于存储其他所有内容的普通区域)中。在支持Trust Zone的AMBA3 AXITM总线中,处理器的硬件逻辑可使普通区域的资源无法访问任何位于安全区域资源,借此在这两个区域之间建立一个强大的安全边界。将敏感资源放入安全区域以及在安全处理器内核中运行核心软件,可大大减少整个系统中潜在的攻击,甚至包括那些难以察觉和防护的攻击(例如通过在硬件中隔离安全敏感的外设———手机键盘或触摸屏,避免输入的密码泄露)。

另外,在一些ARM处理器内核中Trust Zone硬件架构已实现了额外的扩展,单个物理处理器内核能够以时间片的方式安全有效地同时从普通区域和安全区域执行代码。这样,便无需使用专用安全处理器内核,从而节省了芯片面积和功耗,并且允许高性能安全软件与普通区域操作环境一起运行。

使用此安全架构,在普通区域和安全区域进行切换时,ARM使用了监视模式的方法。物理处理器中任何从普通区域进入监视模式的机制都会被控制,并且这些机制始终被视为监视模式软件的中断或异常。对要监视的内容可由安全监视调用SMC指令进行触发,或由硬件异常机制直接触发。也可对IRQ、FIQ、外部数据中断和外部预取中止异常进行配置,以便当特定条件满足时,处理器自动切换到监视模式。

2.2 TPM可信平台模块

可信平台中有一个用于密码运算的可信平台模块TPM(trusted platformmodule),它是整个系统的可信根,是信任链的源头,也是整个可信机制的核心。TPM实际上是一个含有密码运算部件和存储部件的小型片上系统,具备专用的运算处理器、随机数产生器、独立的内存空间、永久性存储空间和独立的总线输入输出系统[4]。使用符合标准规定的密码算法,对外提供非对称密钥生成运算、非对称算法加解密运算、杂凑函数运算、数字签名运算和随机数产生运算[5]。TCG规范中定义的TPM组成结构如图3所示。可信嵌入式系统引入了TPM,由TPM芯片控制完成嵌入式可信计算的核心算法,再由安全软件调用TPM计算出的结果来判断相应的系统可信度,控制嵌入式系统从一开始的上电启动到运行的全过程。

2.3 基于Trust Zone及TPM的可信嵌入式系统设计

Trust Zone技术集成于ARM芯片内,具成低、面积小、可编程等优点,但由于其普通区域和安全区域是否可以安全切换取决于其上运行的操作系统安全性,所以无法满足高强可信环境;而基于TPM构建的可信计算机系统,从一开机上电就可以对所有的资源进行信任检测,从而保证了整个系统的安全,但其安全可信的程度很大程度上决定于TPM芯片的强壮度和可靠性。两种技术的特点可以在构建可信系统时同时采用,使用时可以相互补益,从而建立一个强大的安全可信计算机系统。设计的可信嵌入式系统结构如图4所示。

如图4所示,设计的可信嵌入式系统采用了支持Trust Zone技术的ARM芯片作为CPU,并挂接了FPGA,作为控制除RAM和显示设备外其他外围设备的控制器。这样做的优点是:(1)系统可以根据具体的需求,进行灵活的功能扩展,对未来系统的改动带来便利。(2)可以在FPGA构建处理模块,针对复杂的运算设计固定的电路,加速数据的处理,同时可以减轻CPU的处理压力,提升系统性能。(3)针对外设对CPU提供统一的设备接口,屏蔽各种外设的物理差异,更方便地进行编程。(4)增大处理带宽,FPGA可以缓存各个设备的数据,为CPU计算处理提供物理支持并可以动态调节。

TPM模块与Boot ROM连接至FPGA,当系统加电时随Bott ROM同时开始工作,并对启动的第一段程序进行哈希校验,对比TPM的哈希值与得到的值,如果一致则信任;否则引起异常。接着,会验证第二阶段的引导程序,直至到操作系统安全启动。当操作系统启动后,运行的应用程序的安全由Trust Zone和TPM共同确保;当应用程序刚刚从存储中取出时,TPM即要对其进行信任校验,通过则交由Trust Zone进行处理,进入普通区域运行,如果需要切换到安全区域则需要进行安全检查通过后才能顺利运行。

3 结语

随着云计算、物联网等信息技术的兴起,嵌入式系统必将更加广泛地应用于消费电子、网络通信、政府办公、工业控制、军队国防等领域。针对信息敏感的应用,设计可以安全可信运行的嵌入式系统已经是当前嵌入式系统发展迫切需求解决的问题。就当前的嵌入式系统结构,设计了一种高可信、可扩展、应用灵活的可信嵌入式系统,为可信嵌入式系统的构建提供一种思路。

参考文献

[1]Joe Grand.Practical Secure Hardware Design for Embedded Sy-stems[C]Proceedings of Embedded System Conference.2004:124-126.

[2]沈昌祥,张焕国,冯登国,等.信息安全综述[J].中国科学E辑:信息科学,2007,37(2):129-150.

[3]林小茶,李光.基于嵌入式技术的信任根研究[J].计算机工程与应用,2007,43(16):165-168.

[4]TPM_Main_part1_Design_Principles_Specification_Version_1.2[EB/OL].https://www.trustedcomputinggroup.org/Specs/TPM/,2008.

嵌入式ARM 篇8

多媒体数字信息发布系统(国外称Digital Signage,数字标牌系统)经过多年的推广与发展,已经被广大用户所接受。它不仅能够提供及时、全面、优质、高效的信息服务,还能营造多彩的文化氛围,提升企业形象,它已经成为建筑智能化建设的标准配置之一。

目前数字信息发布系统产品非常多,从播放器的技术路线分类看,主要两种:一种是基于X86架构,另一种是基于ARM架构。X86架构的播放器实质上是一台小型化的PC机,其优点是性能高、平台成熟、开发简易,能够实现炫丽的展示特效和丰富的管理功能,但也存在不少缺点:功耗大,不利节能环保;发热量大,散热问题、噪音问题不好解决;板卡尺寸大,会导致一些设备安装的难题。X86架构产品目前主要用于政府企事业单位办公楼和公共场所的信息发布。ARM架构的播放器是采用ARM处理器的系统,主要的优点有:低功耗;SOC (System on a Chip)架构,板卡尺寸小;原生的工控设计,稳定性高。而主要的缺点是:性能不高,不足以支撑炫丽的展示效果;平台不够成熟,应用开发有门槛,复杂的管理功能实现不易,目前大部分该类产品依然是单机离线模式,依靠人工向SD存储卡拷贝数据实现信息发布。ARM架构产品目前主要用于商业楼宇和住宅的广告信息发布。

近两年低功耗计算技术发展迅猛,ARM处理器在性能上有了质的飞跃,有追赶X86处理器的势头。在这个技术背景下,我们融合两种架构产品的优点,把基于X86架构信息发布系统优秀的展示和管理功能移植到ARM的平台系统下,推出了ARM架构嵌入式信息发布系统。下面就对这个产品的架构、实现原理和特点做简单介绍。

2 产品简介

2.1 系统架构

本系统是基于网络传输的信息发布系统,它由服务器、传输网络、播放器、显示屏组成。

服务器负责数据存储和系统管理。传输网络可以支持有线网络、无线网络和移动网络。播放器是低功耗的ARM架构嵌入式计算系统,播放器负责节目内容播放,把画面输出至显示屏。播放器与显示屏连接支持VGA、DVI、HDMI、SDI等多种方式,如果距离过长,可以使用信号延长器通过双绞线或光纤传输视频信号。由于播放器板卡很小,播放器和显示屏也可以做到一起,做成一体机。

系统的拓扑结构图如图1所示。

2.2 软件原理

系统包含两部分软件:服务器软件和播放器软件。服务器软件在服务器上运行,由交互服务程序、中心调度程序、监控程序以及数据库构成。播放器软件是Android操作系统APP应用,运行在播放器上,由传输程序、监控程序和播放程序构成。

发布者通过客户端软件或Web浏览器进行信息发布,发布的数据内容全部上传到服务器中暂存起来。数据内容经审核后,中心调度程序才会把它分发到各个播放器。播放器收到数据要对数据内容进行数据签名认证,确认数据合法后,播放程序再依据播放列表和版面设置的编排绘制出画面输出到显示屏幕。

系统管理员可通过服务器将各种控制命令(如开关机、重启、音量调节等)传递给播放器,播放器接收命令后由监控程序分析并执行这些由服务器传递过来的命令,实现远程控制各播放器的效果。此外,播放器监控程序还会不断发信号给服务器的监控程序,告知播放器的运行状况,这样管理员就能随时监控系统的运行状况。

图2是软件的实现原理图。

2.3 功能简介

ARM架构嵌入式信息发布系统的主要功能有:

(1)多媒体资源库管理。系统接受多媒体文件上传,并对这些文件进行分类管理。用户可复用这些多媒体文件,提高信息发布效率。

(2)版面设计工具。该工具支持多种媒体格式内容的混合编排播放。可支持多个分屏区域,可以对各类信息实现分屏管理,各区域播放内容独立,并且可以根据客户需要对分屏方式任意组合,分屏区域可实现透明堆叠。

(3)节目编排工具。用户通过该工具进行编目编排,形成播放列表。该工具可针对每个分屏区域编排节目资源,节目编排以天为单位,可预先定义一年以上的节目排期,编排的时间精度可以到秒。该工具为图形界面,支持全程鼠标操作,操作简单快捷。

(4)发布管理模块。用户通过此模块指定每台播放器的播放任务列表。该模块支持组策略管理,可一次向多台播放器发布多天的节目内容。内容发布支持多级审批,未经审批的内容不会播出。

(5)传输管理模块。系统内置高效的数据传输机制,支持断点续传、P2P、多级分发、数据校验等技术,可保证数据快速安全地分发到播放器。还支持优先级控制机制,让紧急信息以最快速度传递。

(6)实时动态数据发布。系统支持如直播视频、股市、汇率、交通、天气、排队叫号等实时信息的发布。

(7)远程管理模块。系统支持远程调整屏幕分辨率、调整音量、校准时间、唤醒、关闭、重启播放器,支持远程设置定时开关机、远程配置变更、软件自动升级,支持远程获取播放器的日志文件等。

(8)播放器支持多种特效,如基础的走马灯、百叶窗、淡入淡出、三维旋转等特效,还有高端的多屏拼接、不规则拼接、多屏联动等特效。

2.4 产品特点

(1)低功耗系统。播放器采用ARM架构,整体功耗不超过10W,可采用无风扇散热设计做到运行无噪音。

(2)纤巧化设计。播放器是SOC设计,CPU、内存、存储、控制器都在一块电路板上,电路板尺寸很小很薄,可以和屏幕做成一体。

(3)工业级可靠性设计。播放器采用了看门狗、网络唤醒、定时器电源开关等工业级的可靠性设计,可实现系统的无人值守自动化运行。

(4)混网支持。系统同时支持有线网(Ethernet)、无线网(Wi-Fi)、移动网(3G、4G)多种网络。

(5)强大管理功能。系统支持资源管理、版面管理、节目管理、任务管理、多级审核、远程管理等高级管理功能。

3 结束语

嵌入式ARM 篇9

1 实时时钟原理

Embest S3CEV40开发系统是英蓓特公司推出的一款全功能ARM开发板, 其核心芯片是三星公司ARM7系列中的S3C44B0X。它是三星公司专门为手持设备和一般应用提供的高性价比和高性能的微处理器解决方案, 使用了ARM7TDMI内核, 工作频率为66MHz。Embest S3CEV40开发板硬件系统包括存储器、I/O、数码管、液晶显示屏、触摸屏、键盘、音频输出。通讯接口包含串口、以太网接口、USB接口、I2C接口、CF卡、和Flash电子硬盘, 是一款应用和接口非常全面的开发板[2,3]。

S3C44B0X芯片提供了十分便利的时钟功能, 其功能框图如图1-1所示[4]。XTAL与EXTAL是连接外部晶振的两个引脚, 它们连接32.768k Hz的晶振, 为RTC内部提供频率输入。时钟滴答发生器可以产生时钟滴答, 可以引起中断, 它由一个叫做TICKINT的寄存器进行设置, 主要用于确定是否允许时间滴答中断和时间中断的计数值。TICKINT可以为手机系统提供时钟。

RTC时钟单元能像钟表和日历一样保存并自动计算时间, 还具有定时报警和产生节拍的功能。S3C44B0X实时时钟由开发板上的后备电池供电, 可以在系统电源关闭的情况下运行。用该芯片开发设计的时钟作为手机时钟, 可以避免手机换电池的时候要重设时间日期。RTC产生节拍功能可以设计成秒表, 定时报警可以作为手机的闹钟使用。RTC发送8位BCD码数据到CPU, 传送的数据包括秒、分、小时、星期、日期、月份和年份。

2 手机实时时钟设计与实现

手机实时时钟的设计和实现包括硬件设计和软件设计两大部分, 下面将分别介绍其设计和实现原理。

2.1 硬件设计与实现

2.1.1 晶振电路

RTC单元仅需要通过外接一个32.768KHz的晶振来提供时钟源[5]。其外围电路如图2所示。

2.1.2 RTC特殊功能寄存器具体设置

CPU通过读取RTC模块中寄存器的值, 得到当前的相应时间。但是由于多个寄存器依次读出, 所以有可能产生错误。例如:用户依次读取年 (1989) 、月 (12) 、日 (31) 、分 (59) 、秒 (59) , 当秒数为1到59时, 无任何问题, 但是当秒数为0时, 当前时间就变成了1990年1月1日0时0分。在这种情况下, 用户应该重新读取年份到分钟的值。RTC控制寄存器如下表1所示, 它有4位, RTCEN用于控制寄存器的读写。

2.2 软件设计与实现

本文设计的时钟主要有三个方面的功能, 具体见图3所示。为了完成以上功能, 需要对一些硬件进行初始化。RTC是S3C44BOX的一个内部模块, 要对其编程, 必须完成对基于S3C44BOX的嵌入式系统的初始化。S3C44B0X的初始化工作包括程序入口点定义、中断矢量的确定、堆栈的初始化、电源管理 (包括掉电与重启处理) 、S3C44B0X各模块的寄存器地址定义及其初始化。

要使时钟作为手机系统时钟, 就要更新S3C44B0X的RTC的日期、时间, 在设置时间、日期前要对RTC进行检测, 查询RTC是否正常工作。时间日期设定正确后, RTC就像钟表一样自动运行, 就可以作为手机系统时钟。

在掉电模式或正常模式下, RTC能够在指定的时间产生一个报警信号。在正常工作模式下, 报警中断被激活。在掉电模式下, 电源管理苏醒信号也与报警中断一样处于激活状态。RTC的报警寄存器可以设置报警使能或禁止报警时间。

在秒表模块中, 初始化RTC的时间为00:00:00, 使用节拍中断, 每1秒中断一次, 中断后显示出当前的时间。

在超级终端中显示时钟界面如下图4所示:

3 结论

本文介绍了S3C44B0X芯片设计实时时钟的过程。给出了时钟设计原理, 时钟电路图和软件设计方法, 设计出的实时时钟计时准确, 功能完善。该多功能时钟还可以用于其他领域, 如PDA, 电饭锅, 微波炉, 空调器等需要时钟的电子产品中。

参考文献

[1]杨晨阳, 王舒憬, 王刚.基于ARM的直流电机控制系统设计[J].自动化与仪器仪表, 2013 (1) :57-59.

[2]深圳英蓓特信息技术有限公司.Embest S3CEV40评估板手册.

[3]胥静.嵌入式系统设计与开发实例详解--基于ARM的应用[M].北京:航空航天大学出版社, 2005:109-103.

[4]田泽.ARM9嵌入式开发实验与实践[M].北京:航空航天大学出版社, 2005:100-169.

[5]SAMSUNG9公司.S3C44B0X_datasheet.pdf.

[6]S3C44B0X中文数据手册第十四章[EB/OL].RTC.http://www.laogu.com/ds_1794.htm.

嵌入式ARM 篇10

物联网是一种新兴科技革命的产物, 它是物物相连的互联网 (1) , 其核心与及基础是互联网, 并在互联网基础上不断的延伸拓展, 运用智能仪器与网络连接, 实现了任何物品与物品之间的信息数据的通信与交换。本文服务器的设计是基于ARMDE嵌入式Linux下的串口服务器而进行的, 能有效完成数据转换与传输, 功耗小, 效率高。

串口服务器软硬件结构体系

1串口服务器硬件结构体系

本文基于ARM平台的进行嵌入式串口服务器相关设计。其核心为32位的RISC处理结构, 存储模块、网络模块、USB模块、电源等属于外围部分 (如图1) 。本系统中所有的信息被存储在SD卡, 或交给处理模块进行数据处理, 将数据信息发送到以太网。核心处理模块在网口模块与串口信息的相互推送中起着连接作用, 推送中可依据各种数据流程进行传送, 并具有纠错排错的作用。

2串口服务器软件结构体系

Linux是一种开源性操作系统, 为了使ARM处理器有序运转需要对Linux系统加以移植、裁剪, 相关数据将存储于U盘、SD卡上, 通常选择与本次实验相关的模块进行裁剪。Boot Loader主要负责嵌入式系统中的加载启动功能, 可将内存空间映射图、初始化硬件设备达到合理的配置 (2) , 以实现操作系统内核所处环境的准确性。Linux能将多个体系结构的属性划分为多分子系统, 在完成各部门的基本服务。USB驱动与网卡驱动是本文主要驱动, 用户状态各软件运行遵循多线程串口处理程序。

串口服务器程序运转设计流程

1串口服务器运转流程

Linux是整个系统的数据处理中心, 若是轮询状态持续运行, 会造成资源极大消耗, 因而select机制对消息处理线程的检测必不可少, 超时方式的设置能降低硬件的负荷, 同时对多个文件描述符的状态变化时时的监控, timeout是select的参数, 用于阻塞时间, 等待文件描述符在规定时间内的变化, 超时会执行不同的语句。fd-zero会将待检测的文件描述集合清零, 检测后以fd-set的描述符加入集合里, 最终实现select对检测描述符集合的监控 (3) 。

2串口服务器串口数据处理流程

通常Linux系统启动后, 相关的设备驱动、驱动程序会在/dev目录下进行创建各自的文件, 并进行相应程序的访问, 命令、函数的操作能保障数据的有序运行。串口操作流程如图4。open-serial执行可读写为方式的打开串口的操作;set-speed执行串口的输出速度的设置即波特率;set-parity对停止位、数据位、校验位加以设置。本文试验中串口传输中数据位8, 波特率设置为116000, 无流控。如图2

3串口服务器网络数据处理流程

通常以太网传输层的不同传输协议 (TCP、UDP) 中数据转换的顺利传送, 使得串口数据转换为以太网数据。TCP多应用于可靠性要求高的用户, 为IP提供可靠的数据传输, 服务内容多样:全双工操作、数据流传送、多路复用等, 使用端到端、面向连接、数据包的可靠发送等途径进行数据传输;UDP多应用于传输经济、可靠性要求低的用户, 没有接入机制, 可以使物理传输设备告诉发送, 因而数据的重复、丢失、连接失败现象不可避免。两种传输协议的格式各有差别, 相应的检测与转化输是需要进行不同格式的转化与检测是重要的组成部分。

网口与多线程串口的高效传输在数据处理中, 需要Linux下使用Socket套接字口。Socket是一种文件描述符, 也是一种进程之间通信机制, 系统接通电源后, 嵌入式服务器进入Linux系统运行串口服务器程序, 程序运行时时的每一个串口建立相应的独立线程, 收的到连接请求、监测命令会立刻启动相应程序进行数据处理如图3。

实验结果

本文基于ARM平台运用Linux开源操作系统的, 串口转换以太网服务器系统, 硬件平台使用S3C2416微处理器, 网卡模块、多串口外接模块, 运用多线程网络套接子编写串口服务程序, 串口服务器能既能实现不同传输协议的以太网数据转换, 也能精确分析数据, 减少硬件的修改, 显著提高利用率, 同时此串口服务器操作简单, 高效的进行远程传输与监控, 更新换代快, 能满足多种领域的不同需求。

注释

11 王海勇.基于ARM9的嵌入式多串口服务器设计[J].化工自动化及仪表, 2013, 40 (3) :372-376.

22 吴杰, 杨卫民.基于ARM的嵌入式串口服务器设计与实现[J].计算机与现代化, 2014, (6) :40-43, 48.

嵌入式ARM 篇11

关键词:Flash存储器;μC/OS-II;嵌入式文件系统

中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)16-31081-03

The Design of aFacility Embedded File System Based on ARM7TDMI

ZHANG Yan-wei,WEI Yin-ku

(Air Defense Command College of the PLA,Zhengzhou 450052,China)

Abstract:According to the features of flash memory,a embedded file system is presented,which fits for a lot of open source real—time operation system.At first we introduce the naturalization,which based on lot of open source real—time operation system μC/OS-II .and then ,we introduce an facility file system.the last we educe the conclusion from testing:The instrument indicate that the embedded file system is simple,highly dependable and efficient

Key words:Flash memory;μC/OS-II;embedded system

随着电子技术的不断发展,嵌入式计算机系统凭借其特有的功能和资源占用量少的特点,在各个领域得到了越来越多的应用。在越来越多的场合中要求存储器的容量不断的扩大,然而在这种情况下若没有文件系统支持,数据的存储就难以管理,故使用文件系统是嵌入式技术发展的必然趋势。

1 嵌入式操作系统选择

目前流行的嵌入式操作系统可以分为两类:一类是从运行在个人电脑上的操作系统向下移植到嵌入式系统中,形成的嵌入式操作系统,如微软公司的Windows CE及其新版本,SUN 公司的Java操作系统,朗讯科技公司的Inferno,嵌入式Linux等。这类系统经过个人电脑或高性能计算机等产品的长期运行考验,技术日趋成熟,其相关的标准和软件开发方式已被用户普遍接受,同时积累了丰富的开发工具和应用软件资源。另一类是实时操作系统,如WindRiver 公司的VxWorks,ISI的pSOS,QNX系统软件公司的QNX,ATI的Nucleus,μC/OS-II,中国科学院凯思集团的Hopen 嵌入式操作系统等,这类产品在操作系统的结构和实现上都针对所面向的应用领域,对实时性高可靠性等进行了精巧的设计,而且提供了独立而完备的系统开发和测试工具,较多地应用在军用产品和工业控制等领域中。这些种类繁多的操作系统中,μC/OS-II和μcLinux为公开源代码操作系统,目前得到了较多的认可,但相对于μcLinux系统,μC/OS-II具有体积小、高实时性的特点,因此设计使用时选择了嵌入实时操作系统μC/OS-II。

2 μC/OS-II的移植

2.1移植μC/OS-II的综合考虑

μC/OS-II是一个通用的嵌入式实时操作系统,具有很好的可移植性。大部分μC/OS-II的代码是用C语言编写的,但是仍有一部分代码是与处理器相关的。系统移植需要考虑CPU细节以及所用编译环境,虽然有各种成功移植的范例,但在LPC2210处理器上移植的范例并不多见。本人在借鉴他人移植代码基础上,实现了μC/OS-II在本次应用硬件系统上的移植。本节介绍使用ADS1.2编译器,把μC/OS-II 2.52移植到LPC2210处理器为CPU的具体实现。

然而任何操作系统的移植都有相当一部分工作是和所用处理器的体系结构密切相关的,因此在做具体的移植工作之前,需要先了解该处理器的体系结构在移植过程中要注意的特性。

(1)处理器模式:LPC2210是一款ARM7TDMI核的微处理器,同所有ARM7TDMI核芯片一样,该处理器工作在7种模式下,其中管理、终止、未定义、中断和快速中断模式都和相应的异常对应,能作为任务使用的模式只有系统态和用户态,比较这两种模式,区别在于系统态可使用特权指,但ARM7TDMI处理器没有存储管理器件MMU,所有代码运行在同一存储空间,各任务堆栈之间并没有保护隔离机制,这样并不能给多任务带来保护,同时系统模式可直接操作程序状态寄存器,这能给开关中断带来方便,权衡利弊,系统任务工作模式选择系统态。

(2)程序状态寄存器:程序状态寄存器CPSR(Current Program Status Register),它的[0--4]位用来表示CPU Mode,每一种处理器异常模式,都有一个对应的SPSR(Saved Program Status Register)寄存器,用来保存进入异常模式前的CPSR。SPSR的作用就是当CPU从异常模式退出时,通过一条简单的汇编指令就能够恢复进入异常模式前的CPSR,该值保存在当前异常模式的SPSR中。非异常模式的 usr和sys模式下没有 SPSR,只有 CPSR。不能显式地指定把 CPSR 保存到某个异常模式下的 SPSR,而必须是变更到该异常模式后由CPU自动完成,不能硬性赋值,因为该模式下SPSR在其他模式下不可见。需要注意的是程序状态寄存器只能在特权模式下修改,通常调用SWI软件中断指令,切换到管理模式后进行修改。

(3)软件中断:软件中断由执行SWI指令产生。在其他模式中调用SWI指令,可使CPU工作模式切换到管理模式,可用于用户模式下的程序调用特权操作指令,可使用该机制实现开关中断等系统功能调用。

(4)上下文切换:ARM处理器执行的CPU上下文,涉及共37个寄存器,其中31个是通用寄存器,包括一个程序计数器PC,另外6个分别是CPSR和五种异常模式程序状态保存寄存器。

(5)堆栈生长方向:μC/OS-II使用结构常量OS_STK_GROWTH

定义堆栈增长方向,这一常量允许两种方向,分别是向上和向下增长,虽然ARM支持了两种方式,但ADS1.2编译器只支持满递减的堆栈方式。

2.2 μC/OS-II系统文件结构

在移植过程中把整个系统代码分为三大部分(共15个文件):一是μC/OS-II核心代码部分,包括10个C程序文件和1个头文件,主要实现了系统调用、任务管理、内存管理、任务间通信等系统功能,这部分代码与处理器无关,在移植过程中无须处理;二是应用程序配置相关部分,包括系统配置相关的两个头文件,对其中相关C语言定义开关的使能或禁能可实现系统的剪裁;三是处理器相关代码部分,包括三个文件,系统移植代码集中在这里。μC/OS-II系统文件结构如图1。

图1 μC/OS-II系统文件结构

2.3移植μC/OS-II

2.3.1 OS_CPU.H的移植

该文件涉及处理器和编译器相关的数据类型定义以及处理器相关的宏定义。根据ADS1.2编译器特性,可以定义数据类型BOOLEAN、INT8U、INT8S等,定义代码见程序清单略。

与处理器相关的宏主要是进入临界区的OS_ENTER_CRITICAL和退出临界区的OS_EXIT_CRITICAL,这里开关中断方式采用方式2,两个开关宏定义为直接操作CPSR寄存器。另外定义OS_TASK_SW()和_OSStartHighRdy()为软件中断函数来为系统提供底层驱动。用软中断作为操作系统的底层接口就需要在C语言中使用SWI指令。在ADS中,有一个关键字__swi,用它声明一个不存在的函数,则调用这个函数救灾调用这个函数的地方插入一条SWI指令,并且可以指定功能号,同时,这个函数也可以由参数和返回值,其传递规则与一般函数一样。相关宏定义见程序清单略。

2.3.2 OS_CPU_C.C的移植

按μC/OS-II要求在OS_CPU_C.C中,需要编写10个C函数,其中9个为钩子函数,在移植过程中简单地把这几个函数处理为空函数了,主要的移植工作在OSTaskStkInit()函数上。分析该函数功能为初始化任务的栈结构,并使所有的寄存器都保存在堆栈中。实现过程中,注意SPSR初始为系统模式并使能中断,具体实现见代码清单略

2.3.3OS_CPU_A.S的移植

在OS_CPU_A.S中,编写3个汇编语言函数,OS_TASK_SW(),__OSStartHighRdy()和OSTICKISR(),并编写了软件中断服务程序。在调用软中断之后,处理器切换到ARM指令和管理模式下工作。在执行软件中断服务函数之前,要提取中断号,这些通过软件中断服务程序完成,具体实现见代码清单略。

任务切换发生在当前任务调用OS_TASK_SW函数主动交出CPU控制权和发生中断时调用OSIntCtxSw函数时,虽然这两个函数执行的条件不同,但是它们的功能相同,实现中让这两个函数公用了一个任务切换代码,其中OS_TASK_SW是通过软件中断0完成的,具体实现见代码清单略。

系统多任务环境由函数OSStart()启动,用户在调用该函数之前,必须已经建立了一个或更多任务。OSStart()最终调用函数OSStartHighRdy()运行多任务启动前优先级最高的任务,而它最终是调用__OSStartHighRdy实现的,其代码见程序清单略。

函数OSTickISR为系统时钟节拍中断函数,这需要使用处理器的定时器和定时中断,为达到集中地初始化硬件的目的,此函数放在了启动代码文件中,实现见程序清单略。

3 简易文件系统设计

3.1文件系统设计方案

用以存储文件数据的设备就是文件系统设备,文件系统设备向文件系统提供数据的物理存储服务。文件系统通过设备驱动程序对文件系统设备进行操作。本设计选择NandFlash存储器作为存储文件数据的设备,U盘就是USB接口大容量FLASH存储盘,它是一种新型移动存储设备,以体积小、速度高、抗震动、通用性强的特点倍受青睐。

通过设计U盘读写协议栈,微处理器已经能够对U盘的某一特定扇区读写。为了让系统写入U盘的数据直接被Windows系统所识别,还需要设计一个符合FAT格式的文件系统。为此我们再来分析需求:一是符合FAT文件系统格式;二是实现数据输入,数据结构不大于80字节;三是能对需要存储数据进行保存。根据对实际需求的分析,基于面向应用,满足应用要求的思路,最后确定文件系统方案为:在Windows NT系统环境下格式化U盘,同时建立一个名为“Hanglu.dat”的文件,通过该文件在嵌入式系统与PC机的Window系统交互,该文件格式固定为数据结构数组文件。根据以上方案,实际研究过程中我设计了一个较为简易的文件系统,该文件系统格式与FAT兼容,实现了嵌入式终端写入的文件能够被Windows系统直接作为文件读写,同时Windows系统上对文件写入的数据也能被嵌入式终端识别。之所以说是一个简易的文件系统,是因为该系统是高度面向本次应用的,而没有提供通用接口,它只默认对一个固定文件名为“Hanglu.dat”的文件进行读写操作,没有实现文件创建及删除功能,不能对文件名进行修改,也不能对通用文件进行操作。

3.2文件系统初始化

文件系统初始化是该系统的核心所在,文件操作的准备工作都在该过程中完成。系统初始化首先获取U盘信息,然后通过比对查询的方法在FDT目录表中查找“Hanglu.txt”目录项,根据目录项中“首簇”值再到FAT区追踪簇链到最后一个,然后根据该值在这一簇中查找EOF所在扇区,并把该扇区数据读到系统RAM中以备读写文件的需要。该过程中比较有特色的是,构建了一个扇区指针数据结构,该数据结构的三个指针成员分别指向“Hanglu.txt”文件末簇指针在文件分配表中、目录项在目录分配表以及EOF的扇区号,这就为后面的文件操作提供了极大的方便。图2为文件系统初始化流程图。

图2 文件系统初始化流程图

获取U盘信息主要包括U盘每扇区字节数、每簇扇区数、FAT开始扇区号、FAT表个数、根目录占扇区数、逻辑盘(卷)总共扇区数、FAT表占用扇区数、根目录开始扇区号以及数据区开始扇区号等数据。U盘在格式化后,把这些信息保存在U盘引导区中,读取U盘引导区可获得以上所列的大部分数据,还有些数据通过计算就可获得。获取U盘信息程序见清单略。

3.3文件读写

系统经初始化后,数据文件的最后一部分数据以读到了系统RAM中,读输入的数据只需要分析出该数据即可。在此不再过多描述。

追加方式写“Hanglu.dat”文件首先判断数据是否小于初始化获取的EOF指针所指簇空间,因为FAT文件系统规定文件存储的最小单位为簇,所以在当前簇空间不足时,需要先遍历文件分配区分配一个空闲的簇空间,并把剩余的数据写入其中。

4 结论

本设计是根据具体需求和项目指标对源代码开放的实时嵌入式操作系统 μC/OS-II进行了有针对性的移植,并在上基础上提出了适合本设计要求的镜文件系统。经实验测试该文件系统运行良好,性能稳定,可靠性强。下一步的工作扩充设备驱动程序库,使之支持更多各式各样的外部设备。

参考文献:

[1]ARM 公司.ARM7TDMI-S Reference Book[M].

[2]Philip公司.UM_LPC2114_2124_2212_2214_2 Datasheet[M].

[3]Andrew N Sloss.ARM嵌入式系统开发—软件设计与优化[M].北京:航空航天大学出版社,2005.

[4]Wayne Wolf.嵌入式计算系统设计原理[M].北京:机械工业出版社,2002.

[5]张宁.等.基于MSP430和CF卡的FAT16文件系统设计[J].长春理工大学学报,第29卷第1期.

[6]刘忆辉.MM36SB020中一个类FAT16文件系统实现[J].2005年全国单片机与嵌入式系统学术交流会论文集.

[7]Jean JLabrosse.著.邵贝贝.等译.嵌入式实时操作系统uC/OS-II(第2版)[M].北京航空航天大学出版社,2005.

嵌入式ARM 篇12

随着计算机技术和微电子技术的发展, 嵌入式系统已经应用于人们日常生活的各个领域。常见的嵌入式系统有Vx Works、Windows CE、μ C/OS-II以及嵌入式Linux, 在众多嵌入式系统里嵌入式Linux由于其源代码开放和遵循GPL (General Public License) 协议, 使得开发人员能够根据自己的需求对其进行相应的裁剪而不需缴纳任何费用, 再者由于嵌入式Linux稳定性高、内核精悍、运行占用资源少, 所以非常适合嵌入式领域的开发和应用。本文重点阐述如何将嵌入式Linux移植到目标平台上。

2 目标平台简介

本文采用的实验平台是由广州天嵌科技生产的TQ2440 开发板。它属于ARM9 架构所采用的嵌入式微处理器是由三星公司生产的ARM9 系列芯片S3C2440, 其主频为533MHz, 具有MMU (内存管理单元) , 16KB的指令Cache和16KB数据Cache, 256M NAND Flash、126M SDRAM 、4 个LED以及A R M J T A G接口等。

一个完整的嵌入式系统跟普通的台式机一样, 它的系统组成也分为硬件部分和软件部分, 硬件部分主要包括C P U以及其他外围接口, 软件部分主要包括嵌入式操作系统以及其他的嵌入式应用软件[1], 而嵌入式操作系统则是所有嵌入式应用软件的运行基础。

3 移植过程分析

嵌入式Linux系统的开发必须按照一定的步骤进行, 在硬件平台搭建好以后, 主要进行以下的几步操作[2,3]:

(1) Bootloader程序的编写与移植;

(2) 嵌入式Linux内核的裁剪与移植;

(3) 进程的初始化。此外, 如果要构造完整的操作系统还必须添加所需的硬件驱动程序、硬件接口程序以及制作文件系统等。

可见, 嵌入式Linux操作系统开发是有层次结构的, 在制作过程中应按其先后顺序自下而上逐层进行。

Boot Loader (引导装载器) 移植是嵌入式系统移植的第一步[4]。Bootloader是操作系统内核启动前运行的一段小程序, 其主要作用是对开发板硬件进行初始化, 给嵌入式系统提供板级的硬件资源信息, 并进一步装载、引导嵌入式操作系统内核, 其作用相当于PC机的BIOS[5]。因此, 嵌入式系统移植的第一步就是要移植一个适合硬件系统的Bootloader。

在移植Linux内核前, 需要先了解一下Linux的启动过程, 通常Linux的启动过程为:一个不隶属于任何操作系统的加载程序将Linux部分内核调入内存, 并将控制权交给内存中Linux内核的第一行代码, 至此程序的加载就完成了。随后Linux将自己的剩余代码加载到内存, 并初始化所有设备, 在内存中完成所需数据结构的建立。

一切准备工作做好以后, 内核开始加载设备并启动init进程, init进程根据配置文件加载文件系统, 配置相关服务, 之后系统就能正常启动了。可见, Linux移植过程中最主要的部分是其内核的移植, 内核移植出现问题的话, 后续的工作将无法进行。

由以上分析可知, Linux的内核是嵌入式Linux系统的心脏, 是操作系统的内部核心程序, 因此, 移植过程中最主要步骤就是对Linux内核的修改和编译。

4 移植过程实现

4.1 Bootloader的移植

在本实验中采用的Bootloader为U-boot1.1.6, Uboot全称为Universal Boot loader, 即通用Bootloader, 它是遵循GPL的开源项目, 很多U-boot的源码就是相应L i n u x内核源程序的简化, 尤其是一些设备驱动程序。U-boot可以引导多种操作系统, 如Wx Works、Net BSD等, 支持多种架构的CPU, 如ARM、MIPS、Power PC, 并且支持几百种目标板[6]。本实验所使用的U-boot文件是由开发板配套光盘提供的, 无需修改即可使用。

U - b o o t的烧写使用H - J T A G软件, 在W i n d o w s XP下进行。烧写之前需要在PC机的BIOS中将并口模式设置为“EPP”或“SPP”, 并口基地址设置为“378”, 否则H - J T A G有可能探测不到A R M芯片; 确保系统中已经安装了GIVEIO并口驱动。此时将PC机的并口通过J T A G板与A R M开发板的J T A G口相连, 安装H -J T A G软件并进行相关设置后根据提示即可开始烧写过程。图1 为启动H - J T A G后探测到的C P U信息, 图2 为U-boot烧写成功以后的提示信息, 点击“Close”烧写完成。

U-boot烧写成功后, 就可以进行嵌入式Linux内核的移植了。

4.2 交叉开发环境的建立

移植前应当确保在宿主机上已经正确安装了Linux操作系统和GCC交叉工具编译链, 本实验中宿主机上安装Cent OS版本的Linux操作系统, 交叉编译工具采用arm-linux-gcc_4.3.3.tar.bz2。

将交叉编译工具包复制到系统“/opt/test”目录下, 然后在PC的Linux终端输入命令“#tar xvfj armlinux-gcc_4.3.3.tar.bz2 C ”, 之后会在/opt/test目录下生成名为4.3.3 的目录, 这就是在后续的Linux内核移植过程中要用到的交叉开发环境, 之后对交叉编译器进行相关配置, 使其生效。

在终端输入如下命令“#vi /etc/profile”, 打开profile文件, 大概在文件的27 行添加环境变量“pathmunge/opt/test/4.3.3/bin”。修改完毕后退出vi编辑器, 在终端输入“#source /etc/profile”使交叉编译器生效, 可以使用命令“#arm-linux-gcc-v”来验证交叉编译器是否生效, 如果安装不成功, 则会提示没有找到该命令。

4.3 Linux内核的移植

从网络上获取嵌入式Linux系统的源码, 本实验中采用的Linux版本为linux-2.6.30.tar.bz2, 在PC终端使用命令“#tar xvfj linux-2.6.30.tar.bz2 C/opt/test”将其解压到/opt/test目录下。

进到内核源码目录, 修改Makefile文件, 在文件的第1 9 3 , 1 9 4 行找到" A R C H ? = ( S U B A R C H ) " 、" C R O S S _ C O M P L I E ? = " , 将这两行分别修改为"ARCH=arm" 和"CORSS_COMPLIE=arm-linux-", 然后保存。

修改内核时钟频率, 用vi编辑器进到内核源码文件“arch/arm/mach-s3c2440/mach-smdk2440.c”在代码163 行将“s3c24xx_init_clocks (16934400) ”修改为“s3c24xx_init_clocks (12000000) ”保存, 由于开发板使用的外部时钟源输入频率为12MHz, , 所以必须对内核时钟频率进行修改以满足开发板的工作频率。

下面编译镜像到开发板中。打开终端进到内核目录, 输入“make menuconfig”进入配置菜单进行相关设置, 如图3 所示。一定要在内核目录下输入, 否则无法打开配置菜单。配置过程中, 选择Linux选项时应当保证其与S3C2440 开发板的配置一样才行。

配置完成以后需要修改内核机器码[7], 由于开发板的U-boot中设定了机器码为168, 所以Linux内核也需要将机器码修改为1 6 8 , 否则会出现开发板不能启动。机器码保存在内核源码的“arch/arm/tools/machtypes”文件中第379 行, 把原来的263 改为168 保存即可, 如图4 所示。

待以上步骤完成以后, 就可以编译内核镜像了, 打开终端进入到内核目录, 即“/opt/test/linux-2.6.30.4”, 然后输入#make z Image, 就可以进行编译了, 编译完毕后, 会在内核源码的“arch/arm/boot/”目录下生成名为“z Image”的镜像, 然后将其烧写到开发板中, 开发板启动情况如图5 所示。

5 结束语

嵌入式Linux的移植是实现嵌入式应用的基础, 随着嵌入式系统的广泛应用, 嵌入式Linux的移植成为一项基础性工作, 本文针对嵌入式Linux的移植, 详细论述了其移植方法和步骤, 并在此基础上成功地将嵌入式Linux2.6 移植到由广州天嵌科技生产的基于S3C2440微处理器的A R M 9 开发板上。

摘要:介绍了基于ARM9微处理器 (S3C2440) 的Linux内核移植过程及方法, 通过具体实验完成了交叉开发环境的建立、Bootloader以及嵌入式Linux2.6.30.4内核的移植。对于不同的硬件平台来说都有其积极的参考价值。

关键词:ARM9微处理器,嵌入式Linux,交叉编译,内核,移植

参考文献

[1]王晓宁, 王振臣, 张少兵.Linux操作系统在ARM9处理器上的移植[J].化工自动化及仪表, 2010, 37 (2) :67-69.

[2]李绍勋, 陈朔鹰, 罗国良.Linux2.6内核测试及其到ARM嵌入式平台的移植[J].电子质量, 2005, (5) :5-7.

[3]陈铁军, 仇洪冰.基于S3C2410的嵌入式Linux的移植方法[J].桂林电子工业学院学报, 2006, 26 (4) :261-262.

[4]潘伟森, 邓胡滨.嵌入式Linux在S3C2410上的移植分析[J].仪器仪表用户, 2008, 15 (2) :121-122.

[5]李亚峰.ARM嵌入式Linux设备驱动实例开发[M].北京:中国电力出版社, 2008:150-171.

[6]胡英多.基于S3C2440的嵌入式Linux的应用[D].成都:电子科技大学, 2006.

上一篇:结构位移比下一篇:急救流程