arm嵌入式期末复习

2024-05-11

arm嵌入式期末复习(精选6篇)

篇1:arm嵌入式期末复习

ARM9嵌入式复习

第一章

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{ };

struct file{ }; 二:内核驱动代码的书写规则

篇2:arm嵌入式期末复习

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

一、文件编程综合实验—文件拷贝

这里的文件拷贝实验是在昨天创建文件的基础之上的综合练习,由于是Linux应用编程的基础所以要求要非常的熟练,而文件拷贝更是重点中的综合应用,因此详细分析一下如何使用库函数,实现文件copy的功能。同样使用Vmware虚拟机Linux环境使用vi编辑器创建file_cp.c文件输入代码:

#include

#include

#include

#include

#define BUFFER_SIZE 1024//定义buffer的空间长度

Int main(int argc,char *argv[])

{

FILE *from_file;//定义一个FILE类型的变量方便以后对文件的操作

FILE *to_file;

long file_len = 0;//记录文件大小作为数据传送的指标char buffer[BUFFER_SIZE]//定义一个字符数据存储空间大小为BUFFER_SIZE

char *ptr;

if(argc!= 3)//argc表示字符串数量,这里一共应该有3个字符串(命令字符)故首先判断用户使用的命令是否正确(这个if语句常在Linux编程中出现,而且位置都差不多,因此最好将他记住便于后期编程使用)

{

Printf(“Usage:%s fromfile tofilen”,argv*0+);

Exit(1);//切记‘1’是出错返回

}

If((from_file = fopen(argv*1+,”rb”))==NULL)//打开from_file文件,并将地址赋给from_file判断是否打开成功

{

Printf(“open %s error”,argv*2+);

Exit(1);

}

If((to_file=(argv*2+,”wd”))== NULL)//同上 {Printf(“open %s error”,argv*2+);Exit(1);

}

/*测的文件大小*/

Fseek(from_file,0L,SEEK_END);

File_len = ftell(from_file);

Fseek(from_file,0L,SEEK_SET);

Printf(“from file size is %dn”,file_len);

/*文件拷贝!*/

While(!feof(from_file)){Fread(buffer,BUFFER_SIZE,1,from_file);If(BUFFER_SIZE>=file_len){Fwirte(buffer,file_len,1,to_file);

}

Else

{

Fwrite(buffer,BUFFER_SIZE,1,to_file);

File_len = file_len – BUFFER_SIZE;

}

Bzero(buffer,BUFFER_SIZE);//置字节字符串buffer的前

BUFFER_SIZE个字节为零且包括‘’。

}

Fclose(from_file);//关闭文件

Fclose(to_file);

Exit(0);

}

注: Bzero 用法(摘自百度百科 这个解释比较清楚明了)

原型:extern void bzero(void *s, int n);

用法:#include

功能:置字节字符串s的前n个字节为零且包括‘’。

说明:bzero无返回值。

举例:

// bzero.c

/* bzero函数TC和VC中都没有,gcc中提供了 */

#include #include int main(void){struct{int a;

char s[5];

float f;} tt;char s[20];bzero(&tt, sizeof(tt));bzero(s, 20);printf(“Initial success.”);getchar();return 0;

}

总结:文件的编程作为Linux系统编程的基础,一定要熟练的运用,在此推荐着重熟练编程file_copy综合性较强

二、时间编程

获取本地时间是Linux系统编程非常重要的一部分,为什么说他重要,我个人认为他编程的时候会经常用到,不管是应用程序还是系统模块,因此这里要着重学习一下Linux时间编程,建立time.c

#include

#include

Int main(void)

{

Printf(“%s”,ctime(&it));//使用ctime获取时间并打印 Return 0;Ptr = localtime(&it);//转化为本地时间 Printf(“%sn”,asctime(ptr));//使用asctime获取时间并打印 Struct tm *ptr;Time_t it;It = time(NULL);//获取日历时间

三、总结:把握好Linux编程的基础行学习!今天总的来说复习了好多,但着重的还是这几个编程例子,有些悲剧的是samba服务又不好用了所以又忙活了一阵,这个功能虽说很好用但自从安了Vmtools后就不怎么依赖了,现在主要是注重宿主机的联通性,以为自己现在做的一个实验就是使用NFS联通arm开发

篇3:基于ARM的嵌入式系统教学

1 ARM教学方法的问题研究

嵌入式系统所包含的教学内容主要有ARM体系结构、汇编语言程序设计、中断系统、异常处理、I/O设置、UART设置、时钟、触摸屏、I2C、I2S及ARM芯片接口的设置,该课程融合了多方面的软硬件及综合知识。

大部分的高等院校均是购买某一公司的开发板或者实验箱,按照实验指导书指导做实验。该实验对于学生的能力培养效果较差,对ARM体系中的流水线结构、地址映射、异常等概念的理解也无法深入,较难综合应用驱动程序、中间接口层、操作系统等系统级软件,这样便导致软件和硬件脱节。对设计出复杂的综合性实验造成困难。实验过程中缺少考虑培养学生的创新能力、新技术的实践能力、团队协作能力和语言表达能力等,因而不符合当今对嵌入式人才的要求。

2 教学改革思路

2.1 教学方法的改革

为使学生更好的掌握基于ARM的嵌入式系统,充分调动学生学习积极性,即采用倒推法授课[2],第一次上课就让学生了解一个实际的嵌入式产品。以2010年全国职业院校技能大赛中的自主探月车为实例,将产品分解,倒推出这一产品的开发过程。从产品到部件的倒推归属到课程不同章节的内容中,放到相关的教学单元进行讲解[3]。在每一教学单元中,以产品的部件为核心,设计出实际开发中需解决的问题。每一章节完成一个任务,这一任务也是其嵌入式产品的一部分,课程学习结束时所有的任务叠加后,就是一个实际的嵌入式产品。

2.2 根据需要调整教材

正确处理现有的教学资源,在了解现有教材的同时要不断融入更符合教学规律的教学内容[4]。教学内容力争接近工程实践,又带有一定的趣味性和启发性,让学生知道如何将学到的知识点应用于工程实践中。因此要对教材内容作适当编排和修正,使教学计划更符合学生的学习规律。

调整之前从第一到第八章的内容都是理论部分,主要讲述ARM的体系结构、ARM的异常模式、ARM存储器映射、ARM中断模式及中断系统[2],这部分内容理论性较强、且比较抽象和枯燥,学生学完后无法真正了解ARM,无法用汇编语言实现相关功能,极大地影响了学生的自信心。

在修正后的内容安排中,教师将一些容易掌握并能够吸引学生注意力、容易看到实验现象的章节安排在前面,以激起学生的学习积极性。

(1)把S3C2440的I/O操作安排在前面,先用一个流水灯实验告诉学生,ARM虽然结构较为复杂,但也可像单片机那样,通过简单的设置,实现流水灯实验,以提高学生的学习兴趣。

(2)根据学生C语言的基础,讲解基于ARM的C程序设计,并实现一个串口驱动程序,加强学生对ARM体系的理解和C语言的编程能力。

(3)介绍ARM指令系统[3],并根据指令介绍ARM的体系结构,讲解ARM中断和异常的处理过程,并用汇编程序模拟相应的处理过程,且在内容的讲解上要与月球车的启动代码结合,强化学生对概念的理解。

(4)将ARM的LCD显示功能和触摸屏的A/D转换放在一起讲解,定时器和计数器在实时时钟、看门狗系统中都会用到,所以这两章要统一讲较为合适。

(5)讲解两种常见的总线,I2C总线和I2S总线,并结合实验让学生掌握两种总线的工作原理。

(6)最后讲解在ARM体系结构中,ARM处理器与存储器之间的内存映射,这是课程的一个难点,并需要前面的一些基础,因此放到课程的后面学习比较合适。

(7)理论课程学习结束后,设计一个一周时间的综合实训,将理论课和实验课上的知识点链接起来,形成一个知识体系,用真实的案例提高学生分析问题和解决问题的能力。

该章节的调整以一种先易后难的方式编排教学内容,取得了较好的教学效果,但并不影响教学大纲所规定的学习内容。

2.3 实践教学

在实践教学中,教师并不是将实验代码事先写好,然后给学生分析代码,而是提出问题,比如如何在月球探测车上显示图片,还可将其改为更有趣的例子,比如如何把本人的照片显示在屏幕中,以提高学生的兴趣。之后引导学生分析问题,制定设计方案,带领学生从第一行代码开始编写,逐步实现相对应的功能。当然在实现的过程中,会出现大量的问题,比如寄存器设置错误、指针读取数据错误、内存溢出等。这就需要教师对整个项目十分清晰,能在短时间内解决学生所提出的问题并能处理一些突发性错误,随后带着学生去分析引起这些问题的原因,告诫学生如何避免这些问题,并解决问题,大大提高了学生的动手能力。

2.4 用嵌入式大赛作为实训项目

为培养学生对嵌入式开发的兴趣,在课程学习后期,将学生分成5人小组,以前一年的嵌入式大赛题目为实战项目,让学生用一周时间去实现一个嵌入式产品,完成一个正推过程,从一个产品的设计思想到各个部件的实现,最终完成这个产品,之后编写论文并参与答辩。待国家嵌入式竞赛题目公布之后,从中选择几名表现优秀的学生,提供实验场所和实验器材,由专门教师指导参加全国嵌入式大赛[5]。

3 结束语

文中改革措施已在教学实践中发挥了积极作用,在日后的教学中,将根据实际情况及时对该课程体系和培养模式进行调整,努力构建一个科学规范的人才培养方案,为企业培养出具有动手能力及创新能力的研发人才。

参考文献

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

[2]周立功.ARM微控制器基础与实战[M].北京:北京航空航天大学出版社,2003.

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

[4]邓春健,李文生.“ARM嵌入式系统”课程教学方法研究[J].计算机教育,2010(3):94-96.

篇4:ARM嵌入式系统分析

关键词:ARM嵌入式系统;体系结构,RISC;运行模式

中图分类号:TP368.1文献标识码:A文章编号:1007-9599 (2011) 16-0000-01

ARM Embedded Systems Analysis

Jiang Rongping

(Henan Zhoukou Normal University,Zhoukou466000,China)

Abstract:The embedded system is the core of embedded processors,ARM processors is widely recognized as the industry's leading 32-bit embedded RISC microprocessor.ARM core-based chips with low power consumption,high performance,widely used in embedded products.Starting from the ARM architecture,this paper,by contrast detailed structural features of the system of the RISC and ARM processor operation mode,thereby ARM embedded system into an in-depth analysis.

Keywords:ARM embedded system;Architecture;RISC;Operation mode

一、嵌入式系统定义

嵌入式系统是相对于通用计算机系统而言的,它简称为嵌入式计算机系统。目前在国内学术界,专家普遍接受的定义是:“嵌入式系统是以应用为中心、以计算机技术为基础、软硬件可裁减,满足应用系统对功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统。”它属于计算机系统的一个重要分支,它是将先进的计算机技术、半导体技术和电子技术与各行业的具体应用相结合的产物。它可以实现对其他设备的控制,监视或者管理等功能。

二、ARM体系结构

ARM(Advanced RISC Machines)体系结构目前被公认为是业界领先的32位嵌入式RISC微处理器结构。作为典型的32位RISC架构处理器,ARM微处理器被广泛用于工控设备、智能仪表、网络设备、信息家电、通信设备以及均是电子等领域。

嵌入式系统中CPU往往都是RISC(reduced instruction set computer)结构的。所谓RISC是指“精简指令集计算机”,也称“简约指令集”,与之相对应的CPU系统结构就是CISC,即传统的“复杂指令集”相对应的概念与系统结构。

在CISC计算机中,各种指令的使用率相当悬殊:总指令的20%的简单指令却在程序调用中指令数占到了80%,而占总指令数80%的复杂的指令却只有20%的机会被使用到。而复杂的指令系统必然带来结构的复杂性,这不但增加了设计的时间成本还容易造成设计失误。尽管VLSI技术现在已经到达很高的水平,但是也很难把CISC的全部硬件做在一个芯片上,这增加了微处理器集成电路的成本。此外,为了提高运行的速度,在微处理器中采用了“预取指令”等“流水线操作”技术。但是为了照顾这些不是很经常要使用的复杂指令只好降低了简单指令的运行速度。因而针对这些缺点,精简指令集计算机,即RISC的概念与技术便应运而生。

RISC体系结构的基本思路是抓住了CISC指令系统指令繁多,指令格式不规范、寻址方式复杂的缺点,通过了减少指令种类,规范指令格式和简化寻址方式,以方便处理内部的并行处理,提高VLSI器件的使用效率,从而大幅度的提高处理器的性能。RISC设计的基本目的在于使计算机结构更加简单、更加合理、更加有效。正是因为如此,RISC的提出引起了计算机体系架构的一次影響深远的革命。

三、RISC系统结构特点

(一)RISC系统结构中的指令系统都比较小、即不同指令的数量比较小,并且只提供简单的指令。这些指令的执行都能在四、五个时钟周期中完成。所谓“简约指令集”,一方面指的是指令集比较小,另一方面是说每条指令复杂程度,两个条件缺一不可。

(二)当指令要访问主存储器的信息的时候,机器的执行速度将会降低。RISC的Load/Store指令只有在访问内存的时候才使用,所有的其他的指令都是在寄存器内对数据进行运算。

(三)不光指令的执行长度和寻址方式整齐划一,连指令的格式也很整齐划一,一般在32位的RSIC系统中,每条指令的长度都是32位。这有力于简化指令系统,简化了寻址方式,缩短了译码时间,确保了单周期执行指令,也有利于流水线操作的执行。

(四)RISC微处理器由于指令的操作数都必须事先存在寄存器中,计算的中间过程不需要访问内存,而是存在寄存器中。所以RISC系统结构一般都拥有比较多的寄存器,通常是32个寄存器。

四、ARM处理器简述

ARM处理器核当前主要产品系列:ARM7、ARM9、ARM9E、ARM10E、SecurCore以及ARMll系列,另外还有公司的XScale微体系结构和StrongARM产品。其中ARM7是低功耗的32位核,最适合应用于对价位和功耗敏感的产品,它又分为应用于实时环境的ARM7TDMI、ARM7TDMI-S,以及适用于开发平台的ARM72OT和适用于DSP运算及支持Java的ARM7EJ等。

ARM微处理器的运行模式可以通过软件改变,也可以通过外部中断或异常处理改变。大多数的应用程序运行在用户模式下,当处理器运行在用户模式下时,某些被保护的系统资源是不能被访问的。除用户模式以外,其余的模式称之为非用户模式,或特权模式(Privi1eged Modes);其中除去用户模式和系统模式以外的5种又称为异常模式(Excption Modes),常用于处理中断或异常,以及需要访问受保护的系统资源等情况。

在系统异常时,通常进入数据访问中止模式或者未定义指令中止模式。系统异常通常是程序错误的访问了非法地址,这时系统就会进入数据访问中止模式。当系统因为某些异常原因跑飞,飞到了非代码区取指并执行,此时系统取到的并不是合法的ARM指令,ARM检查到该类错误后就会进入未定义指令中止模式。

参考文献:

[1]刘岚.嵌入式软件开发环境中远程调试技术的研究与应用.西北工业大学,2002:20-31

[2]张静.嵌入式软件任务级调试技术研究与工具实现.电子科技大学,2003:41-45

[3]张群忠.ARM嵌入式系统调试技术研究与实现.华东师范大学.2006:32-46

篇5:实习总结-嵌入式ARM

班级 卓越1301姓名***

通过这段时间的学习使我学到了很多知识,并且了解到ARM的应用以及对开发板的应用,为以后的学习奠定了一定的基础。

嵌入式系统一般定义为以应用为中心、以计算机技术为基础,软硬件可裁剪,应用系统对功能、可靠性、成本、体积、功耗和应用环境有特殊要求的专用计算机系统。是将应用程序、操作系统和计算机硬件集成在一起的系统这是从技术角度。从系统角度上是设计完成复杂功能的硬件和软件,并使其紧密耦合在一起的计算机系统。

广义上讲,凡是带有微处理器的专用软硬件系统都可称为嵌入式系统。如各类单片机和DSP系统。这些系统在完成较为单一的专业功能时具有简洁高效的特点。但由于他们没有操作系统,管理系统硬件核软件的能力有限,在实现复杂多任务功能时,往往困难重重,甚至无法实现。从狭义上讲,我们更加强调那些使用嵌入式微处理器构成独立系统,具有自己操作系统,具有特定功能,用于特定场合的嵌入式系统。

嵌入式的应用也比较广泛涉及军事国防、工业控制、消费电子和网络。在家用方面更是数字电视、信息家电、智能玩具、手持通讯、存储设备的核心。

在ARM指令集中了解到ARM的寻址方式以及它的的特性,具有高效、快速的特点,还有Thumb指令集具有灵活、小巧的特点。

在这次实训中做了两个项目,一个是LED灯,实现LED灯的点亮是比较简单的,通过查找手册可以很快的了解到要使用的寄存器和方法,另一个项目是DS18B20这个比较复杂,除了要掌握对寄存器的使用,还要对了解对串口的初始化,读写字节等等。

感谢这次实训,通过这次的实训项目,使我大体了解制作项目的步骤,了解了嵌入式技术的掌握是需要一个过程的。实事求是的说,嵌入式技术的全面掌握是有相当难度的,通过积累和动手总会有收获的,从实验中也明白了一个大的项目并不是一个人可以完成的,团队协作很重要。

姓名:***

年级:卓越1301

篇6:嵌入式arm_求职新版简历

个人信息

姓名: 出生日期: 工作年限: 手机: 关 键 词:

霍守斌 1990.5.25 应届毕业生 ***

性别: 户籍: 电子邮件: QQ:

哈尔滨工业大学

1966454

5ARM MCU CORTEX-M3 STM32 LM3S ARM9 嵌入式软件

自我评价

熟悉MCU软件开发,对MCU新器件自信能够快速熟悉应用。使用过多家半导体公司的MCU,一年半的STM32系列MCU应用经验,在校期间采用STM32系列MCU为控制核心完成了大量电子竞赛类项目。有较强自学、独立解决问题的能力,有较强的进取心和责任心。

求职意向 到岗时间: 工作性质: 希望行业: 目标地点: 期望薪水: 目标职能:

一个月内 全职

仪器仪表/工业自动化;电子技术/半导体/集成电路;其他行业 深圳;广州;长沙;杭州;上海;北京 5000—6000/月

MCU软件工程师;嵌入式软件工程师

教育经历 2010/09--至今

湖南理工学院

电子信息工程

本科

在校期间系统的学习了嵌入式系统软件开发的系列课程。包括:模电、数电、CC++程序设计、数据结构、单片机原理及接口技术、信号与系统、数字信号处理、嵌入式操作系统基础、基于ARM9的嵌入式linux开发技术。在校期间参加全国大学生电子设计竞赛,荣获本科组全国一等奖。

IT技能技能名称C/C++

51、AVR、C8051F、STM8软件设计LM3S、STM32(CORTEX-M3)软件设计

熟练程度 熟练 熟练 熟练

使用时间 35月 14月 18月

uCOSII嵌入式操作系统程序设计

基于ARM9嵌入式linux系统开发

熟悉

一般

6月

6月

Matlab程序设计

PCB电路板设计

一般

一般

3月

3月

所获奖项及证书

2012/09全国大学生电子设计竞赛 本科组全国一等奖

2011/12湖南理工学院 校电子技能竞赛 B组 一等奖

2012/10全国“电脑鼠走迷宫“竞赛 湖南省赛区三等奖(黑龙江省赛区一等奖)

2011/09大学英语四级证(482)

2012/06哈尔滨工业工学院 校程序设计竞赛 二等奖

2010/12哈尔滨工业院 “三辉”奖学金 三等奖

2010/12哈尔滨工业学院 校电子技能竞赛 B组 一等奖2010/10哈尔滨工业学院 校“迎新杯”篮球赛 第四名

项目经验

2011/8--2011/8 :无线调频对讲机

软件环境:RealView MDK硬件环境:STM32L151CB开发工具:JLINK

项目描述: 本项目实现了双机全双工跳频、移频、固定载波频率语音通信,具有保密功能的FM对讲机系统。发射端A/D采集语

音信号,以调频方式调制,通过AD9851发射,接收端采用MC13135实现FM解调,语音信号经低通滤波器直接通

过低频功率放大电路,驱动喇叭。

责任描述: 方案论证、全部软件设计

2011/8--2011/8 :简易无线竞赛系统

软件环境:RealView MDK硬件环境:STM32F103RC、STM32L151CB开发工具:JLINK

项目描述: 本项目分为竞赛控制器和手持器两部分。通过对CDCE937产生的频率控制实现ASK调制。然后信号通过LC谐振

回路经天线发射出去。其竞赛控制器部分的信号处理电路采用单片调频芯片MC13135作为核心,通过解调放大及整

形后实现ASK解调。然后信号由STM32进行解析实现数据通信。本系统能同时有255个手持器存在。另外,系统还

具有显示选手成绩,统计出选手每组题目的平均响应时间以及抢答等功能。

责任描述: 方案论证、全部软件设计

2011/7--2011/7 :无线通信信号分析与测量装置

软件环境:RealView MDK硬件环境:STM32F103RC开发工具:JLINK

项目描述:设计了一套无线通信信号分析与测量模拟装置,包括一个高频功率放大(发 根据信号调制和无线信号传输的基本原理,射)和一个信号分析及测量装置(接收),可以测量出载波频率以及解调出信号。发射部分的功率放大与发射由一级

运放和一级频率放大电路实现。接收系统采用MC13135芯片,实现ASK、AM、FSK、FM解调。解调出来的信号经

AD采样,做FFT分析,根据频谱特点区分ASK、AM、FSK、FM等调制信号。系统通过测量载波信号自动调整第一本振,从而实现了在一定范围内任意载波频率无线传输的功能。

责任描述: 方案论证、全部软件设计

2011/7--2011/7 :音频信号分析仪

软件环境:RealView MDK硬件环境:STM32F103RC开发工具:JLINK

项目描述: 系统通过12位A/D转换,对音频信号进行采样实现连续信号离散化,然后通过FFT变换运算处理,最后在高分辨率的TFT对信号频谱进行显示,制作完成本音频信号分析仪。系统的信号调理和12位A/D的配合,保证了信号测量精

度。经测试,该系统能准确测量音频信号频率范围为20Hz~10kHz,其幅度范围为6mV~6V,并能准确的测量功率

周期信号的频率。

责任描述: 方案论证、全部软件设计

2011/7--2011/9 :电脑鼠走迷宫

软件环境:IAR硬件环境:LM3S615开发工具:LMLINK

项目描述: 系统采用LM3S615为控制核心,结合传感器和机电运动部件构成的一种智能行走装置(微型机器人)。实现了电脑

鼠遍历迷宫,自动记忆和选择最优路径,并且能够快速到达所设定的目的地。

责任描述: 电机驱动算法和最优路径算法程序设计

2011/6--2011/6 :数字示波器

软件环境:RealView MDK、QuartusII硬件环境:STM32F103ZE、FPGA开发工具:JLINK

项目描述:实现了具有实时采样和等效采样方式的数字示波器。本项目采用STM32F103ZE为核心控制器,FPGA做为协处理器,系统由信号调理、触发电路、采集存储、数据处理及人机交互等模块组成。触发电路采用软件处理方式实现内部触发

和触发电平可调;数据采集模块由AD783采样保持器与AD823 ADC相配合,在FPGA严格控制下进行采样。STM32

作为总控制器,采用8080总线方式与FPGA内部的双口RAM通信,实现实时采样、等效采样、数据交换、数据存储、单次触发、方波校准以及波形显示等功能。

责任描述: 方案论证、数据处理以及控制部分的软件设计

2011/5--2011/5 :简易无线定位装置

软件环境:Keil uvision硬件环境:C8051F410开发工具:EC5

项目描述: 本项目设计了一套简易无线定位装置,其包括四个从机(发射部分)和一个主机(接收部分)。四个从机(发射机)

全部采用CDCE937产生四个不同的频率经过功率放大后经天线发射出去。主机(接收机)采用MC13135作为信号的接收,然后C8051F410用内部ADC采集该芯片的信号强弱指示端电压,进而分析出从机与主机之间的距离,得到主

机所在的坐标。

责任描述: 方案论证、全部软件设计

2011/4--2011/4 :数据采集系统

软件环境:RealView MDK硬件环境:STM32F103ZE开发工具:JLINK

项目描述: 本系统以STM32F103ZE为控制核心,结合采样率高达60M双路高速AD芯片ADS825,高速缓存FIFO芯片

SN74V245,数据存储芯片采用NAND FLASH S29GL128,实现了双路高速数据的采集、存储、读取。

责任描述: 方案论证、全部软件设计

2011/3--2011/3 :单工无线呼叫通信

软件环境:RealView MDK硬件环境:STM32F103ZE开发工具:JLINK

项目描述: 本系统以STM32F103ZE为控制核心,AD采集语音信号,以调频方式调制,通过AD9851发射;数字信号采用FSK

调制解调方式。自定义通信协议,实现了数据稳定的通信,具有语音呼叫、英文短信发送、单呼、群呼等功能。

责任描述: 方案论证、全部软件设计

2011/3--2011/3 :无线环境监测模拟装置

软件环境:RealView MDK硬件环境:STM32F103RC开发工具:JLINK

项目描述: 系统由探测节点和监测终端两大部分构成,采用STM32F103RC为控制核心。节点完成对环境温度、光照信息的采

集和处理,适时向终端和邻近节点发送信息。监测终端完成探测命令发布、探测信息处理和显示。自定义通信协议,采用“分时复用”信道方式,防止信息冲突,实现了对节点的信息轮询,接力转发功能。

责任描述: 方案论证、全部软件设计

2011/1--2011/2 :基于uCOSII操作系统多任务程序设计

软件环境:RealView MDK硬件环境:STM32F103ZE开发工具:JLINK

项目描述: 参考Micrium官方uCOSII的移植,将uCOSII V2.86版本操作系统成功移植到STM32芯片上,并在STM32+uCOSII

平台上编写了LED、按键、串口、AD、TFT等驱动程序,实现了多任务间的数据采集、传递、显示以及控制功能。

责任描述: 全部软件设计

2010/10--2010/11 :数字温度监控系统

软件环境:Keil uvision硬件环境:STC89C52

项目描述:辅以DS1302时钟芯片、本系统以89C52单片机为核心,DS18B20数字温度芯片、AT24C02外部存储芯片、LCD、LED、按键、喇叭等电路组成,该系统实现了实时两路温度监控、保存、查询,高低限温及时间设置等功能,具有可靠性好,精度高等优点,主机采用12864LCD显示,用户界面友好,该设计基本实现了数字温度表所要求的基本功能。

责任描述: 全部软硬件设计 专业实践经历

2011/04--2011/04STM8L单片机学习

自学STM8L单片机,硬件平台为STM8L152CB,软件开发环境为IAR。完成了基本外设的驱动程序设计,以及片内通信接口USART、I2C、SPI程序设计,片内外设AD/DA、比较器、定时器、外部中断程序设计。

2011/02--2011/04嵌入式linux驱动程序设计

自学嵌入式linux驱动程序设计,硬件平台ARM9,软件平台linux,软件开发环境为RealView MDK和交叉编译工具链。了解了嵌入式linux开发的基本流程以及开发工具的使用,能够在ARM9+linux平台下编写简单的字符驱动程序。完成了LED、按键、数码管、蜂鸣器等简单的字符驱动程序设计。

2010/11--2011/02嵌入式实时操作系统程序设计

自学嵌入式实时操作系统uCOSII,硬件平台STM32,软件平台uCOSII,软件开发环境为RealView MDK。掌握了嵌入式操作系统的基本理论和uCOSII实现的基本原理。能够在STM32+uCOSII平台下编写多任务应用程序以及针对特定的硬件编写BSP,能够熟练的运用信号量、消息邮箱、消息队列进行多任务的同步与通信。

2010/07--2010/10LM3S(CORTEX-M3)微控制器学习应用

由于参加全国电脑鼠走迷宫竞赛,自学LM3S微控制器,硬件平台为LM3S615,软件开发环境为IAR。熟悉了LM3S系列微控制器片内资源应用以及固件库的使用。采用LM3S615为主控制器,完成了电机驱动算法以及最优路径算法程序设计,电脑鼠能够遍历迷宫,选择最优路径。

2010/3--至今STM32(CORTEX-M3)微控制器学习应用

硬件平台为STM32F103ZE、自学STM32微控制器,STM32F103RC、STM32F107VC、STM32L151CB,软件开发环境为RealView

MDK、IAR。熟悉了STM32系列微控制器的片内资源应用以及STM32 V3.0以上版本固件库的使用,移植编写了TFT320*240、SD卡等驱动程序,了解了FatFS文件系统的使用,了解了STM32 USB固件库的使用,能够在STM32F107VC+LwIP平台下写简单的网络应用程序。用STM32为主控制器,完成了大量的电子设计竞赛类项目训练。

2009/11--2010/02C8051F,AVR单片机学习

自学C8051F、AVR单片机,硬件平台为C8051F020、C8051F410、ATMEGA128,软件开发环境为KEIL、ICCAVR。完成了基本的LED、按键、数码管、液晶等驱动程序设计,以及片内通信接口USART、I2C、SPI程序设计,片内外设AD/DA、比较器、定时器、外部中断程序设计。

2009/09--2009/10Altium Designer电路板制作学习

学习了使用Altium Designer软件设计电路板,完成了一些电源、放大电路的制作。

2009/06--2009/08STC89C52单片机学习

上一篇:举办评比方案的通知下一篇:小学四年级语文第一学期教学总结