搜档网
当前位置:搜档网 › ARM嵌入式系统与应用实验报告

ARM嵌入式系统与应用实验报告

信息科学与技术系

ARM嵌入式系统与应用

实验报告

专业班级 ____电信0803班__________

学号 ____________

姓名 ___ ___________

实验老师 ___ __________

总成绩 _________________________

2011—2012学年(1)

实验一通用 IO 口试验

一、实验目的

熟悉ARM 芯片I/O口编程配置方法;

掌握ARM芯片I/O口控制LED显示的方法。

二、实验设备

硬件:嵌入式实验平台一套、仿真器一个、PC 机一台。

软件:Windows 98/2000/NT/XP 操作系统、仿真器驱动程序、ADS 开发软件一套。

三、实验内容

控制嵌入式实验箱上的LED轮流点亮。

四、实验原理

S3CRRB0X 芯片上共有71 个多功能I/O 引脚,他们分别为7 组I/O 端口:2 个9 位I/O 端口(端口E 和F)

2 个8 位I/O 端口(端口D 和G)

1 个16 位I/O 端口(端口C)

1 个10 位I/O 端口(端口A )

1 个11 位I/O 端口(端口B )

每组端口都可以通过软件配置寄存器来满足不同系统合设计的需要。在运行主程序之前,必须先对每一个用到的引脚的功能进行设置。如果某些引脚的附庸功能没有使用,那么可以先将该引脚设置为I/O口。

S3C44B0X芯片与端口相关的寄存器

(1)端口控制寄存器(PCONA~G):在S3C44B0X 芯片中,大部分引脚是使用多路复用的,所以要确定每个引脚的功能。PCONn(端口控制寄存器)能够定义引脚功能。如果 PG0~PG7作为掉电模式下的唤醒信号,那么这些端口必须配置成中断模式。

(2)端口数据寄存器(PDATA~G):如果端口定义为输出口,那么输出数据可以写入 PDATn中相应的位;如果端口定义为输入口,那么输入数据可以从PDATn 相应的位中读入。

(3)端口上拉寄存器(PUPC~G):通过配置端口上拉寄存器,可以使该组端口

与上拉电阻连接或断开。当寄存器中相应位配置为0 时,该引脚接上拉寄存器;当寄存器中相应位配置为1 时,该引脚不接上拉电阻。

(4)外部中断寄存器(EXTINT ):通过不同的信号方式可以使8 个外部中断被请求。 EXTINT 寄存器可以根据外部中断的需求,将中断触发信号配置为低电平触发,高电平触发,下降沿触发,上升沿触发和边沿触发几种方式。五、实验操作步骤

1.启动,使用ARM Execuatable Image 工程模板新建一个工程;

2.添加两个组INC 和SRC;

3.将INC 文件夹下所有文件添加到组INC 中;

4.将SRC 文件夹下所有文件添加到组SRC 中;

5.建立源文件,编写实验程序,添加到工程中;

6.编译链接选项的设置同前面实验;

7.编译链接工程,点击Debug 按钮,启动AXD进行调试;

8.连续点击step in按钮,单步运行程序,主板上的三个LED灯循环点亮。 9.理解并掌握本实验原理及程序,完成练习题

六、实验参考程序

#include ""

#include ""

#include ""

#include ""

void Isr_Init(void);

void HaltUndef(void);

void HaltSwi(void);

void HaltPabort(void);

void HaltDabort(void);

void Main(void)

{ rSYSCFG=SYSCFG_8KB;

#if (PLLON 1)

ChangePllValue(PLL_M,PLL_P,PLL_S);

#endif

Isr_Init(); 中断初始化

Port_Init(); 端口初始化

Uart_Init(0,115200); 波特率为115200

Uart_Select(0); 选择串口0

Delay(0);

}

void HaltUndef(void)

{

Uart_Printf("Undefined instruction exception!!!\n");

while(1);

}

void HaltSwi(void)

{

Uart_Printf("SWI exception!!!\n");

while(1);

}

void HaltPabort(void)

{

Uart_Printf("Pabort exception!!!\n");

while(1);

}

void HaltDabort(void)

{

Uart_Printf("Dabort exception!!!\n");

while(1);

}

七、思考题

1、在原程序的基础上改变led灯的闪烁方式。

将其中部分程序改为以下程序,使其变为每次两个灯一起亮

Uart_Printf("\n start \n");

while(1)

{ Delay(5000); 掌握ARM的串行口工作原理

2. 学习编程实现ARM的UART 通讯

3. 掌握CPU利用串口通讯的方法

二、实验设备

硬件:ARM嵌入式开发板、用于ARM7TDMI的JTAG仿真器、PC、串口线。

软件:PC机操作系统win98、Win2000或WinXP、ARM SDT 或

集成开发环境、仿真器驱动程序、超级终端通讯程序。

三、预备知识

1. 用ARM 集成开发环境,编写和调试程序的基本过程

2. ARM应用程序的框架结构

3. 了解串行总线

四、实验内容

学习串行通讯原理,了解串行通讯控制器,阅读ARM芯片文档,掌握ARM

的UART相关寄存器的功能,熟悉ARM系统硬件的UART相关接口。编程实现ARM

和计算机实现串行通讯。

ARM监视串行口,将接收到的字符再发送给串口(计算机与开发板是通过超

级终端通讯的),即按PC键盘通过超级终端发送数据,开发板将接收到的数据再

返送给PC,在超级终端上显示。

五、实验原理

串行通讯是微计算机之间种常见的近距离通讯手段,因使用方便、编程简

单而广泛使用,几乎所有的微控制器、PC都提供串行通讯接口。

1. 异步串行I/0

异步串行方式是将传输数据的每个字符位接位(例如先低位、后高位)地传

送。数据的各不同位可以分时使用同传输通道,因此串行I/0 可以减少信号连线,最少用对线即可进行。接收方对于同根线上连串的数字信

号,首先要分割成位,再按位组成字符。为了恢复发送的信息,双方必须协调工

作。在微型计算机中大量使用异步串行I/0方式,双方使用各自的时钟信号,而

且允许时钟频率有定误差,因此实现较容易。但是由于每个字符都要独立确定起

始和结束(即每个字符都要重新同步),字符和字符间还可能有长度不定的空闲

时间,因此效率较低。

图串行通信字符格式

图给出异步串行通信中个字符的传送格式。开始前,线路处于空闲状态,

送出连续1”。传送开始时首先发个0”作为起始位,然后出现在通信线上的

是字符的二进制编码数据。每个字符的数据位长可以约定为 5 位、6 位、7

位或8位,一般采用ASCII编码。

后面是奇偶校验位,根据约定,用奇偶校验位将所传字符中为1”的位数凑

成奇数个或偶数个。也可以约定不要奇偶校验,这样就取消奇偶校验位。最后是

表示停止位的1”信号,这个停止位可以约定持续 1 位、位或 2 位的时间宽度。至此个字符传送完毕,线路又进入空闲,持续为1”。经过段

随机的时间后,下个字符开始传送才又发出起始位每个数据位的宽度等于传送

波特率的倒数。微机异步串行通信中,常用的波特率为2400,4800,9600,

19200bps 等。

接收方按约定的格式接收数据,并进行检查,可以查出以下三种错误:

1)奇偶错:在约定奇偶检查的情况下,接收到的字符奇偶状态和约定不符。

2)帧格式错:个字符从起始位到停止位的总位数不对。

3)溢出错:若先接收的字符尚未被微机读取,后面的字符又传送过来,则产生

溢出错。每种错误都会给出相应的出错信息,提示用户处理。

2. ARM自带的串行口寄存器

S3C4510B的UART单元提供两个独立的异步串行I/O口(Asynchronous

Serial I/O,SIO),每个通讯口均可工作在中断模式或DMA模式,也即UART能

产生内部中断请求或DMA请求在CPU和串行I/O口之间传送数据。

S3C4510B的UART单元特性包括:

1)波特率可编程

2)支持红外发送与接收

3) 1~2个停止位

4) 5、6、7或8个数据位

5)奇偶校验

每一个异步串行通讯口都具有独立的波特率发生器、发送器、接收器和控制单元波特率发生器可由片内系统时钟MCLK驱动,或由外部时钟UCLK(Pin64)驱动;发送器和接收器都有独立的数据缓冲寄存器和数据移位器。

待发送的数据首先传送到发送缓冲寄存器,然后拷贝到发送移位器并通过发送数数据引脚 UATXDn发送出去。接收数据首先从接收数据引脚UARXDn移入移位器,当接收到一个字节时就拷贝到接收缓冲寄存器。

SIO的控制单元通过软件控制工作模式的选择、状态和中断产生。

当使用UART的发送中断功能时,应在初始化UART之前先写一个字节数据到UART的发送缓冲寄存器,这样,当发送缓冲寄存器空时就可以产生UART的发送中断。

图串行口功能模块

表为UART特殊功能寄存器描述

UART行控制寄存器(UART Line Control Registers,ULCON0、ULCON1):下面简要介绍UART操作。关于数据发送、数据接收、中断产生、波特率产生、回环模式和自动流控制的详细介绍,请参考数据手册及其他相关资料。

发送数据帧是可编程的。1个数据帧包含1个起始位、5-8个数据位、1个可选的奇偶校验位和1~2个停止位。停止位通过行控制寄存器ULCONn配置。

与发送帧类似,接收帧也是可编程的。接收帧由1个起始位、5-8个数据位、1个可选的奇偶校验位和1~2个行控制寄存器ULCONn中的停止位组成。接收器还可以检测过速错误、奇偶校验错误、帧错误和传输中断。每一个错误均可以设置一个错误标志。

à过速错误指已接收到的数据在读取之前被新接收的数据覆盖。

à奇偶校验错误指接收器检测到的校验和与设置的不相符。

à帧错误指没有接收到有效的停止位。

à传输中断指接收数据RxDn保持逻辑0超过1帧的传输时间。

在FIFO模式下,如果RxFIFO非空,而在3个字的传输内没有接收到数据,那么产生超时。

与UART有关的寄存器主要有以下几个:

(1)UART行控制寄存器ULCONn。该寄存器的位6决定是否使用红外模式,位

5~位3决定校验方式,位2决定停止位长度,位1和位0决定每帧的数据位数。(2)UART控制寄存器UCONn。该寄存器决定UART的各种模式。UART FIFO

控制寄存器UFCONn和UART MODEM控制寄存器,分别用来决定UART FIFO和

MODEM的模式。其中UFCONn的第0位决定是否启用FIFO,UMCONn的第0位是请

求发送位。另外,读/写状态寄存器UTRSTAT以及错误状态寄存器UERSTAT,可

以反映芯片目前的读/写状态以及错误类型。FIFO状态寄存器UFSTAT和MODEM

状态寄存器UMCONn,通过前者可以读出目前FIFO是否已满足其中的字节数;通

过后者可以读出目前MODEM的CTS状态。

(3)发送寄存器UnRegisteredUTXH和接收寄存器URXH。这2个寄存器存放发

送和接收的数据,当然只有1个字节8位数据。需要注意的是,在发生溢出错误

时,接收的数据必须被读出来;否则会引发下次溢出错误。

(4)波特率分频寄存器UBRDIV

UART的波特率发生器的输入时钟可以为系统时钟,也可以从外部引入时钟

信号。若选用系统时钟为波特率发生器的输入时钟,当系统时钟为50MHz时,

则最大的波特率时钟输出为MCLK2/16(= ),其中MCLK2为系统时钟MCLK除以

2。

UCLK引脚为UART0、UART1的外部时钟输入引脚。UART波特率发生器的输入

时钟MCLK2或UCLK,由寄存器UCCON[6]选择。图、图为UART波特率发生器的

结构图和典型的波特率。

六.实验步骤

1.新建工程文件。

2.定义与UART有关的各个寄存器地址和些特殊的位命令。

3.编写串口驱动函数:

4.在主函数中实现将从串口0 接收到的数据发送到串口0 实验参考程序:

():

#include ""

#include ""

#include ""

#include ""

void Isr_Init(void);

void HaltUndef(void);

void HaltSwi(void);

void HaltPabort(void);

void HaltDabort(void);

void Main(void)

{ U8 aa; 定义一个变量

rSYSCFG=SYSCFG_8KB;

#if (PLLON==1)

ChangePllValue(PLL_M,PLL_P,PLL_S);

#endif

Isr_Init(); 中断初始化

Port_Init(); 端口初始化

Uart_Init(0,115200); 设置串口波特率115200 Uart_Select(0); 选择串口0

Delay(0); IRQ enable,FIQ disable

rINTCON=0x5;

}

void HaltUndef(void)

{ Uart_Printf("Undefined instruction exception!!!\n");

while(1);

}

void HaltSwi(void)

{ Uart_Printf("SWI exception!!!\n");

while(1);

}

void HaltPabort(void)

{ Uart_Printf("Pabort exception!!!\n");

while(1);

}

void HaltDabort(void)

{ Uart_Printf("Dabort exception!!!\n");

while(1);

}

七、思考题

1、串行通讯最少需要几根线,分别如何连接?

答:最少2根线,一个接收一个发送,电脑端9针接口,2接收(RXD),3发送端(TXD),最好再加一个5接地端(GND)

2、 ARM 的串行口有几个,相应的寄存器是什么?

答:3个;线性控制寄存器 ULCONn,控制寄存器 UCONn,FIFO 控制寄存器UFCONn,控制寄存器UMCONn,状态寄存器UTRSTAT,错误状态寄存器UERSTAT, FIFO状态寄存器UFSTAT,发送寄存器UTXH和接收寄存器URXH,波特率因子寄存器UBRDIV。

实验三查询和中断方式键盘试验

一、实验目的

通过实验了解ARM的查询和中断的方式及原理。

通过实验掌握ARM的编程方法。

二、实验设备

硬件:嵌入式实验平台套、仿真器个、PC 机台。

软件:Windows 98/2000/NT/XP 操作系统、仿真器驱动程序、ADS 开发

软件一套。

三、实验内容

掌握ARM中断工作原理,了解S3C44B0X的中断寄存器,掌握常用的中断的编程方法。

编写中断处理程序实现:

1.使用按钮K2触发EINT5,LED2亮

2.使用按钮K3触发EINT6,LED3 亮

3.使用按钮K4触发EINT7,LED4 亮

四、实验原理

S3C44B0X 的中断控制器可以接受来自30 个中断源的中断请求。这些中断源来自DMA,UART,SIO 等芯片内部外围或外部引脚。在这些中断源中,有4 个外部中断(EINT4/5/6/7)是逻辑“或“的关系。

中断控制器的任务是在片内外围和外部中断源组成的多重中断发生时,选

择其中一个中断,通过FIQ 或IRQ 向ARM7TMDI 内核发出中断请求。实际最初的ARM7TMDI 内核只有FIQ(快速中断请求)和IRQ(通用中断请求)2 种中断,其他中断都是各个芯片厂家在设计芯片的时候定义的。对这些中断根据其优先级高低来进行处理。例如,如果定义所有的中断为IRQ 中断(通过中断模式设置),并且同时有10个中断发出请求,那么可以通过读中断优先级寄存器来确定哪一个中断将被优先执行。

一般的中断模式在进入所需的服务程序之前,需要很长的中断反应时间。为了解决这个问题,S3C440X 提供了一种新的中断模式。叫做中断向量模式。它具有CISC 结构为控制器的特征,能够降低中断反应时间。也就是说,S3C44B0X 的中断控制器硬件本身直接提供了对向量中断服务的支持。

当众多中断源请求中断时,硬件优先级逻辑会判断哪一个中断将被执行;同时,硬件逻辑自动执行0x18(或0x1c)地址到各个中断源向量地址的跳转指令;然后再由中断源向量进入相应的中断处理程序。与原来软件实现的方法相比,这种方法可以显著的减少中断反应时间。

1.中断控制器的操作

1) 程序状态寄存器的F 位到1 位

如果CPSR程序状态寄存器的F位被置位1,那么CPU将不接受来自中断控制器的FIQ;

如果CPSR程序状态控制器的I位被置为1,那么CPUJ将不接受来自中断控制器的IRQ。

因此,为了使能FIQ和IRQ,必须先将CPSR程序状态寄存器的F位和I位清0,并且中断屏蔽寄存器的INTMSK 中相应的位也要清0。

2)中断模式(INTMOD)

ARM7TMDI提供了2 种中断模式,FIQ和IRQ模式。所有中断源在中断请求时都要确定使用了哪一种中断模式。

3)中断挂起寄存器(INTPND)

用于指示对应的中断是否被激活。如果挂起位被置位1,那么无论标志I 和标志F 是否被清0,都会执行相应的中断服务程序。中断挂起寄存器为只读寄存器,所以在中断服务程序中必须加入I_ISPC 和F_ISPC 写1 的操作来清除挂起

条件。

4)中断屏蔽寄存器(INTMSK)

当INTMSK寄存器的屏蔽位为1时,对应的中断被禁止;当INTMSK寄存器的屏蔽位为0时,对应的中断正常执。如果一个中断的屏蔽位为1,那么在该中断发出请求的时候挂起位还是会被置位1。如果中断屏蔽寄存器的GLOBAL位被设置为1,那么中断挂起位在中断请求时还会被设置,但所有的中断请求都不会被受理

2.中断源

在30 个中断源中,有26 个中断源单独提供中断控制器,4 个外部中断(ENT4/5/6/7)是逻辑“或“的关系,他们共享同一个中断控制器。另外 2 个UART 错误中断(UERROR0/1)也是共同一个中断控制器

4 .中断控制专用寄存器

1)中断控制寄存器(见表5-1 和5-2)

表5-1 中断控制寄存器

2)中断挂起寄存器

中断挂起寄存器INTPND共有26 位,每位对应个中断源,当中断请求产生时,相应的位被置为1。该寄存器为只读寄存器,所以在中断服务程序中必须加入I-ISPC和F-ISPC写1 的操作来清除挂起条件。

如果有几个中断源同时发出中断请求,那么不管他们否被屏蔽,他们相应的挂起位都会被置1。只优先级寄存器会根据其优先级的设置来响应当前优先级最高的中断。

3)中断模式寄存器

中断模式寄存器INTMOD 共有26 位,每位对应一个中断源。当中断源的模式位设置为1,对应的中断会由ARM7TDMI的内核以FIQ 模式处理。相反地,当模式位设置为0时,中断会以IRQ 模式处理。

4) 中断屏蔽寄存器

在中断屏蔽寄存器INTMSK中,除了全屏蔽位global mask外,其余的26 位都分别对应一个中断源。当屏蔽位为1 时,对应的中断源被屏蔽;当屏蔽位为0时,该中断可以正常使用。如果全屏蔽位global mask被设置为1,则所有的中断都不执行。

5)RQ向量模式相关寄存器

S3C44B0X中的优先级产生模块包含5个单元,1个主单元和4个从单元。每优先级产生单元管理6个中断源。主优先级产生单元管理4个从单元和2个中断源。每个从单元有优先级中断源(sGn)和2个固定优先级中断源(kn ).这4个中断源的优先级由I_PSLV 寄存器决定的。另外2个固定优先级中断源在6个中断源的优先级最低。

6)IRQ/FIQ中断源挂起清0寄存器

通过对IRQ/FIQ中断挂起清0寄存器I_ISPC/F_ISPC相应的位写1 来清除中断挂起INTPND。

五、实验参考程序

#include ""

#include ""

#include ""

#include ""

void Isr_Init(void);

void HaltUndef(void);

void HaltSwi(void);

void HaltPabort(void);

void HaltDabort(void);

void Main(void)

{

U8 which_key; 定义变量

rSYSCFG=SYSCFG_8KB;

#if (PLLON==1)

ChangePllValue(PLL_M,PLL_P,PLL_S);

#endif

Isr_Init(); 中断初始化

Port_Init(); 端口初始化

Uart_Init(0,115200); 设置波特率为115200

Uart_Select(0); 选择串口0

rPCONG=0x00ff;

}

void HaltUndef(void)

{

Uart_Printf("Undefined instruction exception!!!\n");

while(1);

}

void HaltSwi(void)

{

Uart_Printf("SWI exception!!!\n");

while(1);

}

void HaltPabort(void)

{

Uart_Printf("Pabort exception!!!\n");

while(1);

}

void HaltDabort(void)

{

Uart_Printf("Dabort exception!!!\n");

while(1);

}

实验四看门狗

一、实验目的

通过实验熟悉S3C44B0X系列ARM7控制器的看门狗的基本工作原理及应用二、实验设备

硬件:嵌入式实验平台一套、仿真器一个、PC机一台

软件:WINDOWS2000/XP操作系统、仿真器驱动程序、ADS开发软件一套三、实验内容

使用看门狗实现定时功能和系统重启功能。

四、实验原理

1.看门狗及工作原理

当嵌入式系统运行时受到外部干扰或者系统错误,程序有时会出现“跑飞”,导致整个系统瘫痪。在对系统稳定性要求较高的场合,为了防止这一现象的发生,需要一种叫“看门狗”(WATCHDOG)的电路。

看门狗的作用就是当系统“跑飞”而进入死循环时,恢复系统的运行。看门狗是一种电路,具有监视并恢复程序正常运行的功能,是一个定时器电路。

基本原理:

设一系统程序完整运行一周期的时间是Tp,看门狗的定时周期为Ti,要求Ti>Tp。在程序运行一周期后,修改定时器的计数值,只要程序正常运行,定时器就不会溢出。

若由于干扰等原因使系统不能在Tp时刻修改定时器的计数值,定时器将在

Ti时刻溢出,引发系统复位,使系统得以重新运行,从而起到监控作用。

的看门狗

1) S3C44B0X看门狗的功能

S3C44B0X的看门狗定时器有两个功能:

(1)定时器功能:可以作为常规定时器使用,它是一个十六位的定时器,并且可以产生中断,中断名为INT_WDT。

(2)复位功能:作为看门狗定时器使用,当时钟计数减为0(超时)时,它将产生一个128个时钟周期的复位信号。

2) S3C44B0X看门狗结构与工作原理

S3C44B0X ARM7的看门狗主要由五部分构成:时钟、看门狗计时器、看门狗数据寄存器、复位信号发生器、控制逻辑等。

图6-1 看门狗定时器的功能框图

S3C44B0X看门狗定时利用MCLK作为时钟源,经过8位的预分频和4选1的2位分割之后得到所需频率。预分频值和频率分割值在看门狗定时器控制WTC中配置。

3) S3C44B0X看门狗定时时间

◆预分频器为8位,其值为:0---255

◆再分频器可选择值为:16、32、64、128

◆输入到计数器的时钟周期为:

T_wtd=1/[PCLK/(Prescaler+1)/Division_factor]

◆看门狗的定时周期为:

T=WTDAT×T_wtd

注意:

一旦看门狗的定时器启动工作,其数据寄存器(WTDAT)中的值将不会自动

读到时间寄存器中间去(WTCNT)。

由于这个原因,程序员必须在看门狗计时器启动之前,应该将一个初始值写入到看门狗的时间计数器(WTCNT)中间去。即先对时间计数器系初值,再启动看门狗工作。

3. 看门狗专用寄存器

共3个,其基地址为0x1D30000。

1)看门狗控制寄存器(WTCON)

2)看门狗数据寄存器(WTDAT)

Register Off Add R/W Description Reset Value

WTDAT 4 R/W 看门狗数据寄存器0x8000

说明:

(1)该数据寄存器为对看门狗计数器重装计数值。初始值为0x8000。

(2)在初始化看门狗操作中,WTDATA 的值不会自动加载到定时计数器中。

(3)在计数溢出后,WTDAT的值将被装载到WTCNT 寄存器中。

3)看门狗计数寄存器(WTCNT)

Register Off Add R/W Description Reset Value

WTCNT 8 R/W 看门狗计数寄存器0x8000

字段名位意义初值Count Value 15:0 看门狗的当前计数值0x8000 说明:在计数中只能读,不能写(写不起作用)。

五、实验操作步骤

1、新建工程文件

2、定义相关各寄存器地址和一些特殊的位地址,编写实验程序,然后添加到工程中去。

3、选择project->Debug,启动AXD进行JTAG仿真调试。

4、理解并掌握本实验原理及程序,完成思考题。

#include ""

#include ""

#include ""

#include ""

void Isr_Init(void);

void HaltUndef(void);

void HaltSwi(void);

void HaltPabort(void);

void HaltDabort(void);

void __irq Wdt_Int(void);

volatile int isWdtInt;

void Main(void)

{

unsigned char *src, *dst;

int i;

unsigned int memSum;

rSYSCFG=SYSCFG_8KB;

#if (PLLON==1)

ChangePllValue(PLL_M,PLL_P,PLL_S);

#endif

Isr_Init(); 中断初始化

Port_Init(); 端口初始化

Uart_Init(0,115200); 设置波特率为115200 Uart_Select(0); 选择串口0

Delay(0); }

void HaltUndef(void)

{

Uart_Printf("Undefined instruction exception!!!\n"); while(1);

}

void HaltSwi(void)

{

Uart_Printf("SWI exception!!!\n");

while(1);

}

void HaltPabort(void)

{

Uart_Printf("Pabort exception!!!\n");

while(1);

}

void HaltDabort(void)

{

Uart_Printf("Dabort exception!!!\n");

while(1);

}

嵌入式系统实验报告-μCOS-Ⅱ在ARM上的移植和编译-答案

《嵌入式系统实验报告》 μC/OS-Ⅱ在ARM上的移植和编译 南昌航空大学自动化学院050822XX 张某某 一、实验目的: 1、掌握将μC/OS-II操作系统移植到ARM9处理器的方法。 2、了解μC/OS-II操作系统的基本原理和移植条件 二、实验设备 硬件:PC机1台;MagicARM2410教学实验开发平台1台; 软件:Windows 98/2000/XP操作系统;ADS 1.2集成开发环境 三、实验内容: 学习移植μC/OS-II操作系统到ARM9处理器,然后编写一个简单的多任务应用程序,实现LED流水灯控制。 四、实验步骤: (1)为ADS1.2增加DeviceARM2410专用工程模板(若已增加过,此步省略)。 (2)连接EasyJTAG-H仿真器和MagicARM2410实验箱,然后安装EasyJTAG-H仿真器(若已经安装过,此步省略),短接蜂鸣器跳线JP9。 (3)启动ADS 1.2,使用ARM Executable Image for DeviceARM2410(uCOSII)工程模板建立一个工程Demo_uCOSII。(本范例在ADS文件夹中操作) (4)在ADS文件夹中新建arm、Arm_Pc、SOURCE文件夹。将μC/OS 2.52源代码添加到SOURCE文件夹,将移植代码添加到arm文件夹,将移植的PC服务代码添加到Arm_Pc 文件夹。(移植代码可以在DeviceARM2410光盘上获得,μC/OS 2.52源代码需要从参考文献[5]的光盘上获得) (5)在src组中的main.c中编写主程序代码。 (6)根据程序设计来更改Os_cfg.h文件,配置μC/OS-II操作系统。(对于本实验,μC/OS-II的配置使用模板默认设置即可) (7)选用DebugRel生成目标,如图3.3所示,然后编译链接工程。 (8)将MagicARM2410实验箱上的蜂鸣器跳线JP9短接,将启动方式选择跳线JP8短接,然后按RST键复位系统。 (9)选择【Project】->【Debug】,启动AXD进行JTAG仿真调试。 (10)全速运行程序,程序将会在main.c的主函数中停止(因为main函数起始处默认设置有断点)。 (11)单击Context Variable图标按钮(或者选择【Processor Views】->【Variables】)打开变量观察窗口,通过此窗口可以观察局部变量和全局变量。 (12)可以单步运行程序,可以设置/取消断点,或者全速运行程序,停止程序运行,观察变量的值,判断蜂鸣器及LED1~LED4的控制是否正确。 五、实验结论与思考题(手写,打印无效) 1、请简单描述μC/OS-II应用程序的基本结构。 答:应用uC/OS-II,自然要为它开发应用程序,下面论述基于uC/OS-II的应用程序的基本结构以及注意事项。 每一个uC/OS-II应用至少要有一个任务。而每一个任务必须被写成无限循环的形式。以下是推荐的结构: void task ( void* pdata ) {

嵌入式系统实验报告书

嵌入式系统实验报告书 20 13– 20 14第1学期 院系:电子通信工程系 姓名:蒋瑾 专业:通信工程 学号:101307313 指导老师:赵成

实验一 认识嵌入式开发平台 一、实验目的 认识UP-NETARM2410-S 嵌入式开发平台,了解使用的ARM9 S3C2410嵌入式微处理器芯片,了解相应外围电路及接口的硬件电路设计,从而了解嵌入式系统的作用及其实现的功能。 二、实验内容 观察嵌入式开发平台,认识板载的核心微处理器、存储芯片、电源电路部分、显示屏、键盘、网络接口、RS232接口、RS485接口、ADC 部分、DAC 部分、IrDA 部分、SD 卡接口、PCMCIA 卡接口、笔记本电脑硬盘接口部分、CF 卡接口、IC 卡接口、PS/2键盘鼠标接口、音频接口、USB 接口以及JTAG 调试接口等内容,了解相应电路及接口的电路原理。 三、预备知识 了解常用的接口芯片及计算机外围设备;熟悉模拟及数字电路设计。 四、实验设备 1. 硬件环境配置 计算机:Intel(R) Pentium(R) 及以上 内存:1GB 及以上 实验设备:UP-NETARM2410-S 嵌入式开发平台 2. 软件环境配置 操作系统:Microsoft Windows XP Professional Service Pack 2 虚拟机:VMware WorkStation 7 Linux 系统:Red Hat Enterprise Linux AS 4 (2.6.9-5.EL) 五、实验步骤 六、遇到的问题及解决方法 S3C2410核心资 源 LCD 驱动 音频电路 PS/2鼠标键盘接口 小键盘 IC 卡插口 CF 卡插口 IDE 硬盘接口 PCMCIA 、SD 卡插口 168Pin 扩展槽 电源部分 RS232/485接口 USB JTAG 网络接口 ADC/DAC IrDA 红外

嵌入式系统实验报告

嵌入式系统设计实验报告 班级: 20110612 学号: 2011061208 姓名:李晓虹 成绩: 指导教师:武俊鹏、刘书勇

1. 实验一 1.1 实验名称 博创UP-3000实验台基本结构使用方法 1.2 实验目的 1.熟悉嵌入式系统开发式流程概述。 2.熟悉UP-net3000实验平台的核心硬件电路和外设。 3.熟悉ARM JTAG的安装与使用。 1.3 实验环境 硬件:ARM 嵌入式开发平台、用于ARM7TDMI的JTAG仿真器、PC 机Pentium100以上、串口线。 软件:PC机操作系统win98、Win2000或WinXP、ARM SDT 2.51或ADS1.2集成开发 环境、仿真器驱动程序、超级终端通讯程序。 1.4 实验内容及要求 1.熟悉嵌入式系统开发式流程概述。 2.熟悉UP-net3000实验平台的核心硬件电路和外设。 3.熟悉ARM JTAG的安装与使用。 1.5 实验设计与实验步骤 1.新建超级终端 2.选择ARM 开发实验台串口。 完成新建超级终端的设置以后,可以选择超级终端文件菜单中的保存,将当前设置 3.保存为一个特定超级终端到桌面上,以备后用。用串口线将PC机串口和平台 UART0 正确连接后,就可以在超级终端上看到程序输出的信息了。 4.启动开发板,按住任意键,使开发板进入BIOS设置状态。 5.在超级终端的界面上,显示BIOS版本信息,以及相应的测试指令。操作时,要在 PC机上输入小写的字母快捷键,进入到相应的功能中去。 6.按照超级终端上的提示信息,进行功能的测试。 1.6 实验过程与分析 本次实验操作起来并不困难,因为此次实验属于验证型实验,按照实验资料所给的提示信息,以上面的步骤,即可得到实验的结果。进入到BIOS界面后,按照超级终端上的提示信息来进行功能 1.7 实验结果总结 在实验过程中,我们进行的很顺利,没有遇到什么问题,在超级终端界面,按提示的快

ARM嵌入式系统实验教程课程设计

ARM嵌入式系统实验教程课程设计 1. 简介 随着科技的不断发展,嵌入式系统越来越广泛地应用于各个领域,如消费电子、医疗、交通、军事等。嵌入式系统的性能越来越好,体积越来越小,成本也越来越低廉。而ARM嵌入式系统,因其拥有高性能、低功耗、高集成度、灵活性等优势,已经成为嵌入式系统的主流。 本文旨在为学习ARM嵌入式系统的同学提供一份实验教程课程设计,通过实践 操作,使学生了解ARM嵌入式系统的相关知识和应用。 2. 实验内容 2.1 环境搭建 学习ARM嵌入式系统必须先了解其开发环境,在本实验中,我们将使用Keil MDK作为开发工具,学生需要掌握Keil MDK的安装和配置。 2.2 编写第一个程序 通过编写一个简单的程序,学生可以了解ARM汇编语言的基础知识,以及如何 在Keil MDK中创建、编译和调试程序。 2.3 GPIO控制 学生将会学习如何在ARM嵌入式系统上控制GPIO,包括输入输出、上拉下拉电阻等。 2.4 UART通信 UART通信是嵌入式系统中常用的一种通信方式,学生将会学习如何使用ARM嵌入式系统的UART模块进行数据传输。

2.5 中断处理 中断是嵌入式系统中的一种重要机制,学生将会了解中断的原理和使用中断的方法,包括IRQ和FIQ两种中断。 2.6 定时器和计数器 学生将会了解ARM嵌入式系统中的定时器和计数器的原理和应用,包括通用定时器、看门狗定时器等。 3. 实验要求 3.1 硬件要求 学生需要准备ARM Cortex-M3开发板、USB转TTL模块、串口线、LED等实验工具。 3.2 软件要求 学生需要安装Keil MDK、JLink驱动程序等软件。 3.3 实验要求 学生需要按照实验指导书中给出的步骤完成实验,并编写实验报告,报告中需要包括实验的目的、原理、步骤、结果和分析。 4. 实验效果 经过本实验的学习,学生将能够掌握ARM嵌入式系统的基础知识和应用,包括Keil MDK的安装和配置、ARM汇编语言的基础知识、GPIO控制、UART通信、中断处理、定时器和计数器应用等方面。

ARM嵌入式系统实验报告1

郑州航空工业管理学院嵌入式系统实验报告 20 13 – 20 14 第2 学期 赵成,张克新 院系:电子通信工程系 姓名:周振宇 专业:物联网工程 学号:121309140 电子通信工程系 2014年3月制

实验一ARM体系结构与编程方法 一、实验目的 了解ARM9 S3C2410A嵌入式微处理器芯片的体系结构,熟悉ARM微处理器的工作模式、指令状态、寄存器组及异常中断的概念,掌握ARM指令系统,能在ADS1.2 IDE中进行ARM汇编语言程序设计。 二、实验内容 1.ADS1.2 IDE的安装、环境配置及工程项目的建立; 2.ARM汇编语言程序设计(参考附录A): (1)两个寄存器值相加; (2)LDR、STR指令操作; (3)使用多寄存器传送指令进行数据复制; (4)使用查表法实现程序跳转; (5)使用BX指令切换处理器状态; (6)微处理器工作模式切换; 三、预备知识 了解ARM嵌入式微处理器芯片的体系结构及指令体系;熟悉汇编语言及可编程微处理器的程序设计方法。 四、实验设备 1. 硬件环境配置 计算机:Intel(R) Pentium(R) 及以上; 内存:1GB及以上; 实验设备:UP-NETARM2410-S嵌入式开发平台,J-Link V8仿真器; 2. 软件环境配置 操作系统:Microsoft Windows XP Professional Service Pack 2; 集成开发环境:ARM Developer Suite (ADS) 1.2。 五、实验分析 1.安装的ADS1.2 IDE中包括CodeWarrior 和AXD Dubugger 两个软件组件。在ADS1.2中建立ARM Executable Image(ARM可执行映像)类型的工程,工程目标配置为Debug ;接着,还需要对工程进行目标设置、语言设置及链接器设置;最后,配置仿真环境为ARMUL 仿真方式。 2.写出ARM汇编语言的最简程序结构,然后在代码段中实现两个寄存器值的加法运算,给出运算部分相应指令的注释。 ;文件名:111307326.s AREA XTF,CODE,READONL Y ENTRY CODE32 SART MOV R1,#1 MOV R2,#2 ADD R0,R1,R2 HALT B HALT END 声明代码段XTF 标识程序入口 声明32位ARM指令设置参数 R0<---R1+R2 死循环 结束程序段

嵌入式系统实验2 ARM微处理器工作模式实验

实验2 ARM 微处理器工作模式实验 一、实验目的 (1)掌握学会使用MSR/MRS 指令实现ARM 处理器工作模式的切换 (2)观察不同模式下的寄存器,加深对CPU 结构的理解。 二、实验设备 (1)硬件:嵌入式实验平台一套、仿真器一个、PC 机一台。 (2)软件:μVision IDE for ARM集成开发环境,Windows 98/2000/NT/XP。 三、实验内容 (1)通过ARM 汇编指令,在各种处理器模式下切换并观察各种模式下寄存器的区别;(2)掌握ARM 不同模式的进入与退出。 四、实验原理 1.ARM 处理器模式 ARM 体系结构支持7种处理器模式: (1) 用户模式USR:正常程序执行模式; (2) 快速中断模式FIQ:支持快速数据传送或通道处理; (3) 外部中断模式IRQ:用于通用中断处理; (4) 管理模式SVC:操作系统保护模式; (5) 中止模式ABT:实现虚拟存储器和/或存储器保护 (6)未定义模式UND:支持硬件协处理器的软件仿真 (7)系统模式SYS: 运行特权操作系统任务 在软件控制下可以改变模式,外部中断或异常处理也可以引起模式发生改变。大多数应用程序在用户模式下执行。当处理器工作在用户模式时,正在执行的程序不能访问某些被保护的系统资源,也不能改变模式,除非异常发生。这允许适当编写操作系统来控制系统资源的使用。除用户模式外的其他模式成为特权模式。它们可以自由地访问系统资源和改变模式。其中5 种称为异常模式,即:FIQ (Fast Interrupt Request)、IRQ (Interrupt Request)、管理(Supervisor)、中止(Abort)、未定义(Undefined)。 当特定的异常出现时,进入相应的模式。每种模式都有某些附加的寄存器,以避免异常出现时用户模式的状态不可靠。其余模式是系统模式。仅ARM 体系结构V4 以及以上的版本有该模式。不能由于任何异常而进入该模式。它与用户模式有相同的寄存器,但它是特权模式,不受用户模式的限制。它供需要访问系统资源的操作系统任务使用,但希望避免使用与异常模式有关的附加寄存器。避免使用附加寄存器保证了当任何异常出现时,都不会使任务的状态不可靠。 2.程序状态寄存器 在所有处理模式下,都可以访问当前程序状态寄存器CPSR。CPSR包含条件码标志、中断禁止位、当前处理器模式以及其他状态和控制信息。每种异常模式都有一个程序状态保存寄存器SPSR。当异常出现时,SPSR用于保存CPSR的状态。 CPSR 和SPSR 的格式如下: (1)条件码标志

arm程序设计实验报告

arm程序设计实验报告 ARM程序设计实验报告 一、引言 ARM(Advanced RISC Machine)是一种精简指令集计算机(RISC)架构。在本次实验中,我们将学习和实践ARM程序设计的基本知识和技巧。本报告将介绍实验的目标、步骤和结果,并对所学内容进行总结和思考。 二、实验目标 本次实验的主要目标是通过编写ARM汇编程序,实现简单的功能。具体来说,我们将学习如何使用ARM汇编语言编写程序,了解寄存器、指令和内存的基本概念,以及如何进行程序的调试和优化。 三、实验步骤 1. 环境准备:安装ARM开发工具链,并配置开发环境。 2. 编写程序:根据实验要求,编写ARM汇编程序,实现指定的功能。 3. 调试与测试:使用模拟器或硬件平台,调试和测试编写的程序,确保程序的 正确性和稳定性。 4. 优化改进:根据实验结果和性能要求,对程序进行优化改进,提高程序的效 率和可靠性。 四、实验结果 在本次实验中,我们成功完成了以下任务: 1. 实现了一个简单的计算器程序,可以进行加减乘除运算,并输出结果。 2. 编写了一个字符串反转程序,可以将输入的字符串逆序输出。 3. 设计了一个简单的游戏程序,用户需要通过按键控制角色移动,避开障碍物。

通过以上实验,我们掌握了ARM汇编语言的基本语法和指令,了解了寄存器和内存的使用方法,以及如何进行程序的调试和优化。同时,我们还学习了如何 与外部设备进行交互,实现更复杂的功能。 五、实验总结 通过本次实验,我们深入了解了ARM程序设计的基本原理和技巧。ARM架构 的精简指令集使得程序设计更加高效和灵活,适用于各种嵌入式系统和移动设备。同时,ARM处理器的低功耗特性也使得其在无线通信、物联网等领域有着 广泛的应用前景。 然而,ARM程序设计也存在一些挑战和难点。首先,由于ARM汇编语言与高 级语言相比,语法更为底层和复杂,需要更加深入地理解计算机硬件结构。其次,ARM处理器的架构和指令集不同于传统的x86架构,需要重新学习和适应。在今后的学习和实践中,我们应该继续深入研究ARM程序设计的相关知识,不断提升自己的技术水平。同时,我们还应该关注ARM生态系统的发展和创新,探索更多应用领域和解决方案。 六、结语 通过本次实验,我们对ARM程序设计有了更深入的了解,并成功实践了相关知识和技巧。ARM架构的广泛应用和不断创新的发展,为我们提供了更多机会和 挑战。我们相信,在不久的将来,ARM技术将在各个领域发挥更大的作用,为 人们带来更多便利和创新。

ARM实验报告综合实验

ARM实验报告综合实验 摘要: ARM微处理器已经在各种电子产品中得到广泛应用。本实验旨在通过 对ARM实验板的详细学习,深入理解和掌握ARM微处理器的工作原理及应用。通过搭建实验平台,完成基本的指令执行、数据传输和I/O操作等功能。通过实验,掌握ARM汇编语言的基本语法和实现方法,同时提升对嵌 入式系统的理解和应用能力。 关键词:ARM微处理器、实验平台、指令执行、数据传输、I/O操作、汇编语言 1.引言 ARM(Advanced RISC Machines)微处理器是一种精简指令集(RISC)的微处理器架构,以其高性能、低功耗和广泛应用等特点受到了广泛的关 注和应用。本实验旨在通过对ARM实验板的学习和研究,深入理解ARM微 处理器的工作原理和应用。 2.实验目的 2.1理解ARM微处理器的工作原理; 2.2掌握ARM汇编语言的基本语法和实现方法; 2.3学习搭建实验平台,完成指令执行、数据传输和I/O操作等功能; 2.4提升对嵌入式系统的理解和应用能力。 3.实验内容 3.1搭建实验平台

3.2学习ARM汇编语言 通过阅读相关资料,了解ARM汇编语言的基本语法和寄存器等特点,了解ARM微处理器的指令集和指令执行方式。 3.3编写实验程序 根据实验指导书中的要求,编写实验程序,包括基本的指令执行、数据传输和I/O操作等功能实现。 3.4调试和测试 经过编写程序后,需要进行调试和测试,确保程序能够正确执行,并达到预期的功能。 4.实验结果 通过实验,成功搭建了ARM实验平台,并且实现了基本的指令执行、数据传输和I/O操作等功能。通过对ARM汇编语言的学习和实践,掌握了其基本语法和实现方法。 5.结论 本实验通过对ARM实验板的学习和研究,深入理解了ARM微处理器的工作原理和应用。通过搭建实验平台和编写实验程序,进一步掌握了ARM 汇编语言的基本语法和实现方法。通过调试和测试,验证了程序的正确性和功能实现。通过本实验,提升了对嵌入式系统的理解和应用能力。

嵌入式系统ARM实验报告

南京邮电大学通信与信息工程学院 实验报告 实验名称:实验一基于ADS开发环境的设计 实验二嵌入式Linux交叉开发环境的建立 实验三嵌入式Linux环境下的程序设计 课程名称嵌入式系统B 班级学号B******** 姓名马俊民 开课时间2015/2016学年第1学期

实验一基于ADS开发环境的程序设计 一、实验目的 1、学习ADS开发环境的使用; 2、学习和掌握ADS环境下的汇编语言及C语言程序设计; 3、学习和掌握汇编语言及C语言的混合编程方法。 二、实验内容 1、编写和调试汇编语言程序; 2、编写和调试C语言程序; 3、编写和调试汇编语言及C语言的混合程序; 4、编写程序测试多寄存器传送指令的用法。 三、实验原理 ADS全称为ARM Developer Suite,是ARM公司推出的新一代ARM集成开发工具。现在常用的ADS版本是ADS1.2,它取代了早期的ADS1.1和ADS1.0。 ADS用于无操作系统的ARM系统开发,是对裸机(可理解成一个高级单片机)的开发。ADS具有极佳的测试环境和良好的侦错功能,它可使硬件开发工作者更深入地从底层去理解ARM处理器的工作原理和操作方法,为日后自行设计打基础,为BootLoader的编写和调试打基础。 1.ADS软件的组成 ADS由命令行开发工具、ARM运行时库、GUI开发环境(CodeWarrior和AXD)、实用程序、支持软件等组成。 2.GUI开发环境 ADS GUI开发环境包含CodeWarrior和AXD两种,其中Code Warrior是集成开发工具,而AXD是调试工具。 使用汇编语言进行编程简单、方便,适用于初始化硬件代码、启动代码等。 汇编语言具有一些相同的基本特征: 1.一条指令一行。 2.使用标号(label)给内存单元提供名称,从第一列开始书写。 3.指令必须从第二列或能区分标号的地方开始书写。 4.注释必须跟在指定的注释字符后面,一直书写到行尾。 在ARM汇编程序中,每个段必须以AREA作为段的开始,以碰到下一个AREA 作为该段的结束,段名必须唯一。程序的开始和结束需以ENTRY和END来标识。

华清远见嵌入式实训报告

华清远见嵌入式实训报告 《华清远见嵌入式实训报告》作为一篇专业的报告,主要记录了研究生在参加华清远见的嵌入式实训过程中,掌握的嵌入式技术、实施的嵌入式项目、取得的效果以及获得的收获。本报告以基于ARM架构的嵌入式操作系统(FreeRTOS)为例,介绍了实训过程中所学习的科目内容,包括嵌入式原理、操作系统、中断/多任务/驱动程序等。在实训完成的现场项目中,使用嵌入式技术让机器人能够实现实时控制、自主规划和自我定位,解决了实际问题。本实训的实施,为研究生获得了丰富的技术知识和实践经验,为后续研究和职业申请做好了准备。 1.言 1.1景 当前,嵌入式技术在软件、电子、机械和机电一体化等领域广泛应用,是当今技术发展的重要组成部分。嵌入式系统一般指嵌入到其它系统中、独立运行的微型控制系统,它主要功能是控制其系统外设,它是为了满足特定应用需求而特殊设计的,软硬件特点决定了它拥有更小、更低功耗、更低成本的优势。因此,在软件开发和电子设计领域,嵌入式技术得到了越来越广泛的应用。 1.2究目的 本报告主要是对参加华清远见的嵌入式实训的研究生的总结,记录他们在实训过程中所学到的知识、实施的项目和取得的成果。通过这篇报告,研究生们可以深入了解嵌入式实训过程中所掌握的知识、

实施的项目和获得的收获,从而更好地提升他们的技术水平和职业竞争力。 2.训内容 本次实训的主要目的是培养研究生的嵌入式技术,学习实践ARM 架构的FreeRTOS操作系统,以及实现实时控制、自主规划和自我定位等嵌入式技术中的细项。在实训过程中,研究生们学习了以下内容:(1)嵌入式原理:研究生们学习了嵌入式系统的基本概念,包括嵌入式系统的分类方法、构成与功能、应用领域等; (2)操作系统:研究生们学习了FreeRTOS操作系统的基本知识和特性; (3)中断/多任务/驱动程序:研究生们学习了中断、多任务和驱动程序的基本原理,并能够利用C/C++进行编程实现。 3.训项目 3.1训项目背景 在实训过程中,研究生们完成了一个基于ARM的嵌入式实时控制项目,该项目主要使用FreeRTOS操作系统,实现机器人的实时控制、自主规划和自我定位功能。 3.2训项目实施 (1)硬件设计:采用ARM架构,根据需求,设计了自动组装机械手,它包括了机械臂、抓取器、雷达距离传感器等; (2)软件设计:基于FreeRTOS操作系统,使用C/C++编程完成了实时控制、自主规划和自我定位等功能;

嵌入式系统实训报告

第一天 一、实训任务: 1.熟悉虚拟机的环境,了解了虚拟机的基础知识 2.安装与配置 VMware Workstation虚拟机 3.进而熟悉交叉编译环境,完成交叉编译环境的安装和配置 4.测试端口的连通性 二、原理 交叉编译,就是在一个平台上生成另一个平台上的可执行代码。这里需要注意的是所谓平台,实际上包含两个概念:体系结构(Architecture)、操作系统(Operating System)。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。一般情况下,主机和目标机是同一类型的计算机,这就是正常的编译。所谓交叉编译就是在主机上为目标机编译,比如在 PC 上编译,然后在手机上运行,这种编译就叫交叉编译。 交叉编译需要交叉编译器,不同的目标机(主要是看芯片类型)需要不同的交叉编译器。我们所用的交叉编译器就是 arm-linux-gcc 系列。构建一个交叉编译器(toolchain),说简单也简单,说复杂也复杂。原理上很简单,实际情况常常比较复杂,原因是编译器一直处于开发状态,你要了解某个版本的稳定性,要去找patch。网上已经有不少已经构建好了的交叉编译器(toolchain),除非你想了解如何构建交叉编译器,否则直接下载一个来用是比较明智的做法。 三、截图及说明 1、测试连通性:COM3 显示了相关信息,表示虚拟机和开发机连通了 2、可执行以下命令,安装交叉编译环境: #mkdir -p /A8RP/tools /A8RP/toolchain

#cd /media/cdrom/linux/toolchain #cp –arf arm-2007q3-51-arm-none-linux-gnueabi-i686.tar.bz2 arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 /A8RP/tools #cd /A8RP/toolchain #tar -jxvf arm-2007q3-51-arm-none-linux-gnueabi-i686.tar.bz2 #tar –jxvf arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 # cp media/cdrom/linux/tools/mkimage /A8RP/tools # cp /media/cdrom/linux/tools/signGP /A8RP/tools #cp /media/cdrom/linux/tools/mkfs.ubifs /A8RP/tools #cp /media/cdrom/linux/tools/ubinize /A8RP/tools #cp /media/cdrom/linux/tools/ubinize.cfg /A8RP/tools 添加环境变量 #export PATH=/A8RP/toolchain/arm-2007q3/bin:/A8RP/toolchain/arm-2009q1/bin:/A8RP/tools:$PATH 这样我们就完成了交叉编译环境及编译工具的安装 第二天 一、实训任务: 1.交叉编译生成用于SD 卡启动的x-loader 映像文件MLO 2.U-Boot的编译 3.kernel的编译 4.格式化SD 卡,并设置活动分区,将编译好的系统镜像以及文件系统拷贝至SD卡 二、原理 OURS-A8RP 支持MMC/SD 启动或NAND 启动,不同的启动方式烧写的x-loader 的映像文件是不一样的,对应的映射生成方法也不同。 x-loader是一级引导程序,主要完成加载uboot之前的板载初始化, fat文件驱动,以便于从sd卡fat32分区读取uboot等文件,系统上电后由CPU内部ROM自动拷贝到内部RAM并执行。主要作用为初始化CPU,拷贝u-boot到内存中,然后把控制权交给u-boot。 u-boot是二级引导程序,主要用于和用户进行交互,提供映像更新、引导内核等功能。kernel是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。

arm实验报告最终版

ARM与嵌入式技术 实验报告 专业班级:10通信工程1班 姓名:万洁 学号:100103011125 实验日期:2013年5月28日 指导老师:郑汉麟

1、 通过实验掌握ARM 指令的特点和寻址方式; 2、 掌握简单的ARM 汇编语言的程序设计; 3、 了解集成开发环境 Embest IDE 及其开发软件的应用; 、实验环境 Embest IDE 应用于嵌入式软件开发的新一代图形化的集成开发环境,它包括一套完备 的面向嵌入 式系统的开发和调试工具。其开发软件 Embest IDE for ARM 是集编辑器、编译 器、调试器、工程管理器( projectma nager )于一体的高度集成的窗口环境,用户可以在 Embest IDE 集成开发环境中创建工程、编辑文件、编译、链接、运行,以及调试嵌入式应 用程序。 三、实验步骤 1)新建工程: 运行Embest IDE 集成开发环境,选择菜单项 File 宀New Workspace ,如图一,系统弹 出一个对话框,键入文件名“ wj ”,如图二,点击 0K 按钮。将创建一个新工程,并同时创 建一个与工程名相同的工作区。此时在工作区窗口将打开该工作区和工程 .。 (老师提醒:不要放入Bin 文件夹中) ■ Emb«t QE Pre 亠 Educat 「販]£dii_Vww Buid frtbug D if** Qri+W 诊 Open-" Qrl*O 2)建立源文件: 点击菜单项 File T New ,如图三,系统弹出一个新的文本编辑窗,输入源文件代码。 编辑完后,保存文件“ wj.s ”后缀,如图三,四。 Hr* Open Workspace.・ 图一 ■■ rflJO IUU rl jil rd f rfl,rl Clop : h Ho. .end 图 tut vUrl:

ARM嵌入式系统设计与应用技术研究

ARM嵌入式系统设计与应用技术研究 嵌入式系统是指在特定应用领域中,为了满足特定需求而设计的计算机系统,通常由 硬件和软件两部分组成。其中,嵌入式硬件系统通常采用微处理器或微控制器作为核心处 理器,而嵌入式软件系统通常采用实时操作系统(RTOS)来管理和控制系统资源。 ARM架构是当前嵌入式系统设计和开发领域中最流行的架构之一,广泛应用于移动设备、智能家电、汽车电子、工业控制等领域。ARM架构具有成本低、功耗低、性能高、可 靠性强等优点,因此备受嵌入式系统设计者的青睐。 本文将详细介绍ARM嵌入式系统设计与应用技术,在硬件和软件两个方面进行探讨。 具体内容如下: 一、ARM硬件系统设计 1. ARM处理器架构 ARM处理器架构采用精简指令集架构(RISC),即指令集精简、执行速度快、功耗低。ARM处理器的指令集被分为三个不同的版本:Thumb指令集、Thumb-2指令集和ARM指令集。其中,Thumb指令集和Thumb-2指令集用于处理器的低功耗模式下,而ARM指令集用于处理器的高性能模式下。 2. ARM微控制器 ARM微控制器是指集成了ARM处理器内核的微控制器芯片,通常包括CPU、存储器、器件控制器、通信接口等功能模块。ARM微控制器通常采用32位架构,具有高速执行、低功耗、低噪声等特点,因此广泛应用于工业控制、移动设备、电子仪器等领域。 ARM系统板是指由ARM微控制器、存储器、各种输入输出接口等组成的硬件系统,用 于实现特定应用领域的功能。设计ARM系统板需要考虑到硬件和软件两个方面:硬件方面 需要满足性能、成本、可靠性等要求;而软件方面需要考虑系统稳定性、实时性、资源管 理等问题。 1. 实时操作系统 实时操作系统(RTOS)是一种专门用于嵌入式系统的操作系统,能够对实时性要求比 较高的任务进行优化和调度。常见的RTOS有uC/OS、FreeRTOS、RT-Thread等。RTOS的特点是轻量级、可裁剪、可扩展、可定制,能够适应不同的嵌入式系统需求。 2. 设备驱动程序

嵌入式实验报告总结

嵌入式实验报告总结 嵌入式实验报告总结 近年来,嵌入式系统在各个领域中得到了广泛的应用。嵌入式系统是指将计算机系统嵌入到其他设备或系统中,以实现特定功能的一种计算机系统。在本次嵌入式实验中,我深入学习了嵌入式系统的原理和应用,并通过实际操作,加深了对嵌入式系统的理解。 实验一:嵌入式系统的基本概念和发展历程 在本实验中,我们首先了解了嵌入式系统的基本概念和发展历程。嵌入式系统的特点是紧凑、高效、实时性强,并且适用于各种各样的应用场景。通过学习嵌入式系统的发展历程,我们了解到嵌入式系统在不同领域的应用,如智能家居、医疗设备、汽车电子等。这些应用领域的嵌入式系统都有着各自的特点和需求,因此在设计嵌入式系统时需要根据具体应用场景进行优化。 实验二:嵌入式系统的硬件平台与软件开发环境 在本实验中,我们学习了嵌入式系统的硬件平台和软件开发环境。硬件平台是嵌入式系统的基础,包括处理器、内存、外设等。而软件开发环境则提供了开发嵌入式系统所需的工具和库函数。我们通过实际操作,搭建了嵌入式系统的硬件平台,并使用软件开发环境进行程序的编写和调试。通过这个实验,我深刻理解了硬件平台和软件开发环境对嵌入式系统的影响,以及它们之间的协同工作。 实验三:嵌入式系统的实时操作系统 在本实验中,我们学习了嵌入式系统的实时操作系统。实时操作系统是嵌入式系统中非常重要的一部分,它能够保证系统对外界事件的响应速度和可靠性。

我们通过实际操作,学习了实时任务的创建和调度,以及实时操作系统的中断 处理机制。实时操作系统的学习让我更加深入地了解了嵌入式系统的实时性要 求和相关的调度算法。 实验四:嵌入式系统的通信与网络 在本实验中,我们学习了嵌入式系统的通信与网络。嵌入式系统通常需要与其 他设备或系统进行通信,以实现数据的传输和共享。我们学习了嵌入式系统的 通信协议和网络协议,如UART、SPI、I2C、TCP/IP等。通过实际操作,我掌握了这些通信和网络协议的使用方法,以及在嵌入式系统中如何进行数据的传输 和处理。 实验五:嵌入式系统的应用开发 在本实验中,我们通过实际项目的开发,将前面学到的知识应用到实际中。我 们选择了一个智能家居系统作为实际项目,通过嵌入式系统实现了对家居设备 的远程控制和监控。在项目开发过程中,我们遇到了各种问题和挑战,如硬件 兼容性、软件稳定性等。通过解决这些问题,我们不仅加深了对嵌入式系统的 理解,还提高了解决问题的能力。 通过本次嵌入式实验,我对嵌入式系统有了更深入的了解。我学习了嵌入式系 统的基本概念和发展历程,掌握了嵌入式系统的硬件平台和软件开发环境,了 解了嵌入式系统的实时操作系统和通信与网络,还通过实际项目的开发,将所 学知识应用到实际中。这次实验不仅让我掌握了嵌入式系统的基本原理和应用 技术,还培养了我解决问题和团队合作的能力。我相信在今后的学习和工作中,这些知识和经验都会对我有很大的帮助。

嵌入式系统实习报告4篇

嵌入式系统实习报告4篇 嵌入式系统实习报告4篇 嵌入式系统实习报告篇1 此次设计我们采用以0为微控制器,并通过硬件和软件两方面设计,结合6位LED数码管,放大整形电路,来实现频率计在嵌入式系统中的开发与应用。 本次课程设计其主要目的是通过这学期所学的ARM知识,来实现频率计的功能,本次设计我们利用了定时计数器的功能,对输入的信号进行实时的、高精度的频率测量,并通过6位LED数码显示管显示测量结果。论文中阐述了相关的硬件原理与应用方案,并在此基础上叙述了软件设计最终结合硬件和软件完成了本次设计。 关键词:0、频率计、LED数码显示管 1绪论 频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。它是一种用十进制数字显示被测信号频率的数字测量仪器。它的基本功能是测量正弦信号,方波信号及其他各种单位时间内变化的物理量。在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精确度高,显示直观,经常要用到频率计。 本频率计将采用定时、计数的方法测量频率。测量范围在9kHz以下的方波,时基宽度为1us,10us,100us,1ms。用ARM芯片实现自动测量功能。 基本设计原理是直接用十进制数字显示被测信号频率的一种测量装置。它以测量周期的方法对方波的频率进行自动的测量。 1.1本次设计任务 一.设计题目:ARM为内核的频率计 二.主要功能:用ARM的定时器/计数器的定时和计数功能,外部扩展6位数码管,要 求累计每秒进入ARM的外部脉冲个数,用LED数码管显示出来,或是 用上位机显示。

三.设计要求:用protel画出最小系统和外围扩展电路。显示部分可用LED数码管或是 上位机显示。要求小组成员分工明确。 1.2设计基本原理 所谓频率,就是周期性信号在单位时间(1s)内变化的次数,若在一定时间间隔T内测得这个周期性信号的重复变化次数为N,则其频率可表示为被测信号经放大整形电路变成计数器所要求的脉冲信号,其频率与被测信号的频率相同。当1s信号来到时,被测脉冲信号进入芯片相关的,计数器开始计数,直到1s信号结束时,停止计数。若在1s时间内计数器计得的脉冲数为N,则被测信号频率f某?Nhz。 2设计理念及设备 2.1设计理念 说到用单片机设计[2]的频率计,这里说一下单片频率计D。单片频率计D 是美国Intersil公司首先研制的专用测频大规模集成芯片。它是标准的28引脚的双列直插式集成电路,采用单一的+5V稳压电源工作。它内含高频振荡器、10进制计数器、7段译码器、位多路复用器、能够直接驱动LED显示器的8段段码驱动器、8位位码驱动器。其基本的测频范围为DC至10MHz,若加预置的分频电路,则上限频率可达40MHz或100MHz,单片频率计D只要加上晶振、量程选择、LED显示器等少数器件即可构成一个DC至40MHz的微型频率计,可用于频率测量、机械转速测量等方面的应用。还有,是英国研制的一款微波频率计,该频率计可以测量频率高达26GHz的信号,而价格才只有几万元,可谓是物美价廉。虽然是一个低价格的微波频率计,但它能在四个波段有很好的灵敏度测量40Hz到20GHz的频率。也可以用它来测量高达26GHz的频率,只是灵敏度稍稍低了一些。日常工作中,用它来测量 VF/VHF/UHF频段的频率,也十分方便和准确。使用一个12位数字的LCD 液晶显示屏来显示所测得的频率、闸口时间(分辨率相关)、菜单功能以及频率表的测量结果。所有这些数值都是同时显示在一个屏幕上的。的机箱采用高标准的铝质材料制成,各模块安装在下方有钢板支承的母板上。模块相对独立,

ARM实验报告

南京邮电大学通达学院 嵌入式系统B 实验报告 班级 100023 专业通信工程(嵌入式系统开发) 学号 10002304 姓名陆海霞 实验项目: 1、ADS下简单ARM汇编程序 2、熟悉LINUX开发环境 3、多线程应用程序设计

指导教师范山岗 实验一 ADS下简单ARM汇编程序 实验目的: 1、熟悉ADS1.2下进行汇编语言程序设计的基本流程; 2、熟悉在ADS中创建工程及编写、编译和运行汇编语言程序的方法; 3、熟悉AXD中各种调试功能。 实验环境: 1、硬件:PC机。 2、软件ADS1.2。 实验内容: 1、在ADS中新建工程,并设置开发环境。 2、在Code Warrior 环境中编辑、编译和链接汇编语言程序,并生成可执行文件。 3、在AXD中调试汇编程序; 4、使用命令行界面编辑、编译和链接汇编程序。 实验步骤: 本实验要求在ADS环境下,编写一个汇编程序,计算S=1+2+3……+n的累加值。 把累加结果S存入到存储器的指定位置;在AXD中调试该程序,使用ARMulator模拟目标机。 1、新建工程。 打开Code Warrior,选择File->New(project)选项,使用ARM Executable Image模版新建一个工程。 2、设置编译和链接选项。 由于我们使用的是模拟机,设置汇编语言编译器的模拟处理器架构为Xscale;在ARM Linker中,选择output选项卡并选择Linktype为Simple类型,确认RO Base为0x8000,修改RW Base为0x9000, 3、为当前工程添加源程序文件。 ARM汇编程序源文件后缀名为S大小写均可。 确保添加入当前工程复选框选上。 4、编辑源程序代码。 参考程序add.s : ;armadd源程序 N EQU 7 ;累加次数 ;定义名为Adding的代码段 AREA Adding,CODE,READONLY ENTRY MOV R0,#0

《ARM嵌入式系统—基于ADS1.2及Proteus仿真》 ADS AXD实验

课时授课计划

学习如何使用ADS 中的CodeWarrior ——项目管理器来管理源代码。一个嵌入式系统项目通常是由多个文件构成的,这其中包括用不同的语言(如汇编或C)、不同的类型(源文件,或库文件)的文件。CodeWarrior 通过“工程(Project)”来管理一个项目相关的所有文件。因此,在我们正确编译这个项目代码以前,首先要建立“工程”,并加入必要的源文件、库文件等。 2.1建立项目按照以下步骤来新建一个工程:(1)选择File 菜单下的new 选项,或直接单击,出现以下对话框: (2)选中“ARM Executable Image”选项,在右边的编辑框中输入工程名(例如2410test),在下面的Location 栏中,点击“Set…”,选择放置工程的路径。ADS1.20不支持中文的目录名字,所以新建工程的文件夹向上一直到根目录的所有文件夹的名字都是英文的。 (3)点击[确定]后工程被建立。

但这样的工程还并不能正确地被编译,还需要对工程的编译选项进行适当配置。为了设置方便,先点选Targets 页面,选中DebugRel 和Relese 变量,按下Del 键将它们删除,仅留下供调试使用的Debug 变量。点击菜单[Edit | Debug Setting⋯],弹出配置对话框:

首先选中Target Setting ,将其中的Post-linker 设置为ARM fromELF ,使得工程在链接后再通过fromELF 产生二进制代码。 然后选中ARM Linker,对链接器进行设置: 选取Layout 页面进行设置:

将2410init.o 放在映象文件的最前面,它的区域名是Init。 最后,如果你希望编译的最后生成二进制文件,就要设置ARM fromELF: 在Output format 栏中选择Plain binary ,在Output file name 栏中,点击“Choose…”选择你要输出的二进制文件的文件名和路径。 这样,对于Debug 变量的基本设置都完成了。点击“OK”键退出。 2.2 在工程中添加源文件 在图4-2 的对话框中,点选File 页面,选中Text File,并设置好文件名和路径,点击确定,CodeWarrior 就会为你新建一个源文件,并可以开始编辑该空文件。CodeWarrior 与SDT 中的APM 不同,它具有一个很

嵌入式实验报告

实验一 ARM汇编语言程序设计 一、实验目的 1.了解IAR Embedded Workbench 集成开发环境 2.掌握ARM汇编指令程序的设计及调试 二、实验设备 1.PC操作系统WIN98或WIN2000或WINXP,ADSI.2集成开发环境,仿 真驱动程序 三、实验内容 1.熟悉IAR Embedded Workbench 集成开发环境 2.理解下列程序,新建工程,加入下面的程序,并观察实验结果,解释 程序实现的功能 分析:该程序实现的功能是程序功能:Y = A*B+C*D+E*F 程序代码: AREA Examl, CODE,READONLY ;定义一个代码段 ENTRY ;程序入口 MOV R0,#0;设置R0寄存器的值为0 MOV R8,#0;设置R8寄存器的值为0 ADR R2,N;将R2寄存器的值设为数据域N的地址 LDR R1,[R2];将以R2的值为地址的数据读入R1 MOV R2,#0;设置R2的值为0 ADR R3,C; 将R3寄存器的值设为数据域C的地址 ADR R5,X; 将R5寄存器的值设为数据域X的地址 LOOP LDR R4,[R3,R8];将R3+R8的数据读入R4 LDR R6,[R5,R8];将R5+R8的数据读入R6 MUL R9,R4,R6;R9 = R4*R6 ADD R2,R2,R9;R2 = R2+R9 ADD R8,R8,#4;R8 = R8+4 ADD R0,R0,#1;R0 = R0+1 CMP R0,R1;比较R0和R1的值 BLT LOOP;R0

相关主题