嵌入式系统实验讲义

上传人:xins****2008 文档编号:114859061 上传时间:2019-11-12 格式:DOC 页数:138 大小:9.02MB
返回 下载 相关 举报
嵌入式系统实验讲义_第1页
第1页 / 共138页
嵌入式系统实验讲义_第2页
第2页 / 共138页
嵌入式系统实验讲义_第3页
第3页 / 共138页
嵌入式系统实验讲义_第4页
第4页 / 共138页
嵌入式系统实验讲义_第5页
第5页 / 共138页
点击查看更多>>
资源描述

《嵌入式系统实验讲义》由会员分享,可在线阅读,更多相关《嵌入式系统实验讲义(138页珍藏版)》请在金锄头文库上搜索。

1、目录实验一 ADS环境及超级终端使用2实验二 ARM的串行口实验14实验三 键盘输入及数码管显示驱动23实验四 ARM的A/D接口实验30实验五 D/A接口实验35实验六 LCD的驱动控制实验39实验七 触摸屏驱动实验47实验八 BootLoader 实验54实验九 Linux开发环境的建立(ARM9)58实验十 Linux下串行端口程序设计66实验十一 Linux下LED设备实验76实验十二 Linux下多线程应用程序设计81实验十三 Linux下按键实验92实验十四 电机控制实验97实验十五 UDP通讯实验107实验十六 基于ARM的多通道仪表数据采集实验115实验十七 简单嵌入式WEB服

2、务器实验118实验十八 Bootloader下实现Flash的读写129实验十九 Uclinux系统IP地址的修改和保存130实验二十 BOOTLOADER、内核根文件系统实验131实验二十一图形界面应用程序设计132实验二十二基于Web的远程控制设计133附录:嵌入式系统设计性实验要求134实验一 ADS环境及超级终端使用一、实验目的熟悉ADS1.2 开发环境,学会ARM 仿真器的使用。使用ADS 编译、下载、调试并跟踪一段已有的程序,了解嵌入式开发的基本思想和过程。二、实验内容本次实验使用ADS 集成开发环境。新建一个简单的工程文件,并编译这个工程文件。学习ARM 仿真器的使用和开发环境的

3、设置。下载已经编译好的文件到嵌入式控制器中运行。学会在程序中设置断点,观察系统内存和变量,为调试应用程序打下基础。三、预备知识C 语言的基础知识、程序调试的基础知识和方法。四、实验设备及工具(包括软件调试工具)硬件:ARM 嵌入式开发板、ARM7TDMI 的JTAG 仿真器、PC 机Pentium100 以上。软件:ADS1.2 集成开发环境、仿真器驱动程序。五、实验步骤1)建立工程(1)运行ADS1.2 集成开发环境(CodeWarrior for ARM Developer Suite)。选择File New菜单,在对话框中选择Project,如图1B-1 所示,新建一个工程文件。图中示例

4、的工程名为Exp6.mcp 。点set按钮可为该工程选择路径如图1B-2 所示,选中CreatFolder 选项后将以图1B-1 中的ProjectName 或图1B-2 中的文件名为名创建目录,这样可以将所有与该工程相关的文件放到该工程目录下,便于管理工程。在图1B-1 中工程模板列表中的44B0 ARM Executable Image 是专为本嵌入式开发板设置的工程模板,后文有具体说明。在此也可选择ARM Executable Image 通用模板。图1B1 新建工程图 1B-2 保存工程(2)在新建的工程中,如图1B-3 所示,选择Debug 版本,使用Edit | Debug Set

5、tings 菜单对Debug 版本进行参数设置。(源码网整理:)图 1B-3 选择版本(3) 在Debug Settings 对话框中选择Target Settings 项,如图1B-4 所示。在Post-linker 一栏中选择ARM fromELF 。图1B-4 Target Settings (4)在Debug Settings 对话框中选择ARM Linker 项,如图1B-5。在Output 选项卡的Simple image 框中设置连接的Read-Only (只读)和Read-Write (读写)地址。地址0x0c080000 是开发板上SDRAM 的真实地址,是由系统的硬件决定的

6、;0x0c200000 指的是系统可读写的内存地址。也就是说, 在0x0c0800000xC1fffff 之间是只读区域,存放程序的代码段,在0xC200000 开始是程序的数据段。图1B-5 设置连接地址范围图1B-5 所示的设置只是一种简单设置,如果程序需要用到标准C 库函数的话需要按图1B-6 进行连接地址的设置。标准C 中如果使用malloc 及其相关的函数,需要使用系统的堆(Heap) 空间,可以通过scatter 文件来描述系统HEAP 段的位置。针对44B0 开发板,把程序的入口定位在0xc080000, 并定义scatter 文件为scat_ram.scf 。在图1B-6 中选

7、择LinkType 为Scattered, 输入scatter 文件名scat_ram.scf ;然后切换到Options 选项卡在Image Entry Point 框中输入0xc080000 。也可以在图1B-6 的Command Line 框中直接输入-entry 0xc080000 -scatter scat_ram.scf 进行上述设置。图1B-6 通过scatter 文件设置连接地址提示:1.程序移植到ADS 后,程序最开始首先执行用汇编写的初始化代码包括中断向量和内存空间的初始化。在该段代码中使用IMPORT _main ;注意main 前面是两个下划线B _main 进行系统内

8、部的标准C 函数初始化,然后调用用户在C 中定义的main()函数(注意:两个main 都是小写),并且在嵌入式应用中用户C 的main 函数中不能有参数(int main(void))。2. 不能有系统定义的软中断,在汇编中可以使用IMPORT _use_no_semihosting_swi来检测,在C 中使用#pragma import(_use_no_semihosting_swi) / ensure no functions that use semihosting 3. scatter 文件内容如下,创建了一个RAM_LOAD 的程序和数据的装载区域,起始地址0xc080000 。R

9、AM_LOAD 0xc080000 RAM_EXEC 0xc080000 44binit.o (init, +First) * (+RO) RAM 0x0c200000 * (+RW,+ZI) HEAP +0 UNINIT heap.o (+ZI) STACKS 0xc7ff000 UNINIT stack.o (+ZI) ISR_STARTADDRESS 0xc7fff00 ;SDRAM bottom isr_address.o (+ZI) 在图1B-7 中说明了这个装载区域的划分。图1B-7 程序和数据装载区域的划分4. 定义retarget.c 函数,重新定位标准C 库中stdio 的一

10、些相关函数。主要有:struct _FILE int handle; /* Add whatever you need here */; FILE _stdout; /文件的定义int fputc(int ch, FILE *f)/fputc 函数int ferror(FILE *f) /ferror 函数void _sys_exit(int return_code) /系统退出函数void _ttywrch(int ch) _value_in_regs struct _initial_stackheap _user_initial_stackheap(unsigned R0, unsigne

11、d SP, unsigned R2, unsigned SL)/ 用户的堆空间和栈空间函数具体定义,可以参考init/retarget.c (5)在第(4)步中如果不选择简单的连接地址设置,则需按图1B-8 所示设置C 编译器。在Debug Settings 对话框中选择ARM C Compiler 项,在ATPCS 选项卡中选择ARM/Thump interwork, 或者在命令行中添加-apcs /interwork 。图1B-8 设置ARM C Compiler (6)在Debug Settings 对话框中选择ARM Linker 项,如图1B-9。在Layout 选项卡的Place

12、at beginning of image 框中设置程序的入口模块。指定在生成的代码中,程序是从44binit.s 开始运行的。Object 设为44binit.o,section 设为init 。图 1B-9 设置入口模块(7) 在Debug Settings 对话框中选择ARM fromELF 项,如图1B-10 。在Output file name 框中设置输出文件名为system.bin, 这就是要下载到开发板的嵌入式应用程序文件。图1B-10 设置输出文件名(8) 回到如图1B-3 所示的工程窗口中,选择Release 版本,使用Edit | Release Settings 菜单对

13、Release 版本进行参数设置。(9)参照第(3)、(4)、(5)、(6)、(7)步在Release Settings 对话框中设置Release 版本的Post-linker、连接地址范围、入口模块和输出文件。(10)回到如图1B-3 所示的工程窗口中,选择Targets 选项卡, 如图1B-11 所示。选中DebugRel 版本,按Del 键将其删除。DebugRel 子树是一个折衷版本,通常用不到,所以在这里删除。图 1B-11 删除DebugRel 版本(11)设置完成后,可以将该新建的空工程文件作为模板保存以便以后使用。将工程文件名改为44B0 ARM Executable.mcp

14、 。然后在ADS1.2 软件安装目录下的Stationery 目录下新建名为44B0 ARM Executable Image 的模板目录,再将刚设置完的44B0 ARM Executable.mcp 工程模板文件存放到该目录下即可。这样以后新建工程的时候如图1B-1 所示就能看到以44B0 ARM Executable Image 为名字的模板了。提示:1.建议用户直接将光盘Stationery 目录中的44B0 ARM Executable Image 子目录和44B0 C lib ARM Executable Image 子目录直接拷贝到ADS1.2 安装目录下的Stationery 目

15、录中,这样也能在图1B-1 所示的新建工程对话框中看到这两个模板,其中具有已经设置好的针对本开发板的参数。注意前者的ARM Linker Linktype 设置为Simple, 而后者设置为Scattered, 推荐使用后者,请参阅第(4) 步内容。2.如果用户原来已经安装了ARM SDT 软件的话,再安装ADS1.2 后可能导致ARM SDT 不能正常使用,需要用户更改系统环境变量:ARMINC 设置为%ARMSDTPATH%INCLUDE,ARMLIB 设置为 %ARMSDTPATH%LIB ,其中%ARMSDTPATH% 指ARM SDT 的安装目录。(12)新建工程后,可以执行菜单Project | Add Files 把和工程相关的所有文件加入到工程中。ADS1.2 不能自动按文件类别对这些文件进行分类,需要的话用户可以执行菜单Project | Create Group 创建文件组,然后分别将不同类的文件加入到不同的组,以方便管理。如图1B-12 所示。更为简单的办法是,在新建工程时ADS 创建了和工

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号