沈颂林ARM实验报告打印版3 联系客服

发布时间 : 星期日 文章沈颂林ARM实验报告打印版3更新完毕开始阅读1722e8e4524de518964b7dfa

中南大学 ARM嵌入式系统实验 实验报告

2410_FTFLCD.axf。

6. 执行映象文件,在 TFTLCD 上观察实验结果。 注:若没有Multi-ICE 调试,可以采用下面方法测试程序:

1. 重起 2410,开发板会执行flash 中的BIOS 程序,打开dnw.exe 超级终端。 2. 在 dnw 中,输入“0”,选择“USB download file”,在PC 上安装USB 驱动。 3. 点 击“ USB Port ” “ Transmit ” 选择2410_FTFLCD 目录下的可执行映象文件 2410_FTFLCD.bin 将该文件下载到SDRAM。

4. 下载结束后,会提示是否要立即运行,这时输入“Y”,执行 2410_FTFLCD.bin。 5. 在 LCD 上观察实验结果。 8、实验结果

在LCD 上显示矩形框和图片。

12

中南大学 ARM嵌入式系统实验 实验报告

二.关键内容解释

在用户的应用程序之前,需要由专门的一段汇编语言代码来完成对系统的初始化,这类启动代码直接面对处理器内核和硬件控制器进行编程,内容包括: 中断向量表 初始化存储器系统 初始化堆栈

初始化有特殊要求的断口,设备 初始化用户程序执行环境 改变处理器模式 呼叫主应用程序

13

中南大学 ARM嵌入式系统实验 实验报告

//启动代码类似于电脑中的BIOS,它从系统上电开始接管CPU,依次需要负责初始化 CPU在各种模式下的堆栈空间、设定CPU的内存映射、对系统的各种控制寄存器做初始化、对CPU的外部存储器进行初始化、设定各外围设备的基地址、创建正确的中断向量表、为C代码执行创建ZI区,然后进入到C代码。

//在C代码中继续对时钟、串行通信接口进行初始化,然后打开系统中断允许位。最后进入到应用代码中执行,执行期间响应各种不同的中断信号并调用预先设置好的中断服务程序处理这些中断。

中断向量表

//ARM要求中断向量表必须放置在从0x0000000地址开始,连续32字节的空间内。 每当一个中断发生以后,ARM处理器便强制把PC指针置为向量表中对应中断类型的地址值。因为每个中断只占据向量表中1个字的存储空间,因此只能放置一条ARM指令,程序要跳转到存储器的其他地方,再执行中断处理。

初始化堆栈

//ARM有7种执行状态,每一种状态的堆栈指针寄存器(SP)都是独立的。因此,对程序中需要用到的每一种模式都要给SP定义一个堆栈地址。方法是改变状态寄存器内的状态位,使处理器切换到不同的状态,让后给SP赋值。注意:不要切换到User模式进行User模式的堆栈设置,因为进入User模式后就不能再操作CPSR回到别的模式了,可能会对接下去的程序执行造成影响。

初始化应用程序执行环境

14

中南大学 ARM嵌入式系统实验 实验报告

//一个ARM映像文件由RO,RW和ZI三个段组成,其中RO为代码段,RW是已初始化的全局变量,ZI是未初始化的全局变量。

//映像一开始总是存储在ROM/Flash里面的,其RO部分即可以在ROM/Flash里面执行,也可以转移到速度更快的RAM中执行;而RW和ZI这两部分是必须转移到可写的RAM里去。应用程序执行环境的初始化,就是完成必要的从ROM到RAM的数据传输和内容清零。 //实验中使用到的scatter文件:RuninRAM.sct LR1 0x30000000 { ; load region

ER1 0x30000000 0x0300000 { ; load address = execution address

S3C2410A.o (RESET, +First)

* (+RO)

}

RAM 0x30300000 0x3D00000 { ; RW data * (+RW +ZI) } }

调用主应用程序

//当所有的系统初始化工作完成之后,就需要把程序流程转入主应用程序。 ; Enter the C code

15