嵌入式实验提纲必做.docx
- 文档编号:27772998
- 上传时间:2023-07-04
- 格式:DOCX
- 页数:66
- 大小:1,012.63KB
嵌入式实验提纲必做.docx
《嵌入式实验提纲必做.docx》由会员分享,可在线阅读,更多相关《嵌入式实验提纲必做.docx(66页珍藏版)》请在冰豆网上搜索。
嵌入式实验提纲必做
实验目录
实验一ARM开发环境实验2
实验二BootLoader实验17
实验三linux内核实验30
实验四根文件系统制作36
实验五Linux基本应用程序和驱动程序编写实验40
实验一ARM开发环境实验
1.1实验目的
1.掌握ADSARM开发环境中基本的工程设置以及程序编译方法;
2.掌握ADSARM开发环境中基本的程序调试方法。
3.掌握嵌入式linux开发环境中基本的设置
1.2实验内容
1.建立一个基本的seg工程;
2.设置并编译并调试seg工程;
3.熟悉linux常用命令及vi的使用
4.熟悉tftp、samba、nfs服务器的配置和使用
1.3预备知识
1.C语言的基础知识;
2.程序调试的基础知识和方法。
1.4实验设备
1.硬件:
CVT-PXA270教学实验箱、PC机;
2.软件:
PC机操作系统Windows98(2000、XP)+ADS开发环境。
1.5基础知识
本章将以seg程序为例讲述在ADS集成开发环境下,怎样编写、编译和调试程序。
1.检查硬件连接
检查实验箱配件是否齐全,包括主板,核心板和LCD等;
2.连接调试器
1)当使用CVT-PXA270内置简易调试模块时,请将计算机并口与实验箱左上角的SIMPLEJTAG并口,通过并口延长线实现连接,红色拨码开关全部打到ON位置(向上)。
2)当使用ADS高级仿真器时,请将计算机并口与仿真器实现连接,然后通过20Pin的JTAG对连线与CVT-PXA270的JTAG口实现连接,红色拨码开关全部打到OFF位置(向下)。
3.编辑、编译、调试
1)建立工程:
打开ADS,点击“File->New菜单”,弹出New对话框,如下图所示,选择Project页,在Project页中选择调试设备,选择“ARMExecutableImage”,在“Projectname”和“Location”中输入工程名称和路径,请注意路径和工程名中不能包含空格。
图4-1新建工程
2)新建一个文件并保存为d:
\seg\seg.c,编辑该文件,添加如下代码:
unsignedcharseg7table[16]=
{
/*01234567*/
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
/*89ABCDEF*/
0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,
};
voiddelay(intcount)
{
while(count--);
}
intMain(intargc,char*argv[])
{
inti;
for(;;)
{
/*数码管从0到F依次将字符显示出来*/
for(i=0;i<0x10;i++)
{
/*查表并输出数据*/
*((unsignedchar*)0x04006000)=seg7table[i];
*((unsignedchar*)0x04007000)=seg7table[i];
delay(0xffffff);
}
/*数码管从F到0依次将字符显示出来*/
for(i=0xf;i>=0x0;i--)
{
/*查表并输出数据*/
*((unsignedchar*)0x04006000)=seg7table[i];
*((unsignedchar*)0x04007000)=seg7table[i];
delay(0xffffff);
}
}
return0;
}
3)将seg.c文件加入到工程seg中,如下图所示,点击右键空白区域:
图4-2加入文件到工程示意图
将弹出文件选择对话框,选择d:
\seg\seg.c文件,并点击“打开”按钮。
图4-3文件选择对话框
4)拷贝E:
\cvtech\pxa270光盘\examples\asm文件夹下的start.s和xlli_LowLev_Init.s到d:
\seg\目录下。
将start.s和xlli_LowLev_Init.s文件加入到工程seg中.
该文件为程序入口文件,该文件必须通过第5步设置“ARMLinker”选项卡“Layout”页面“Placeatbeginningofimage”才有效。
5)如下图所示,在工作区窗口中的工具栏中点击
控件。
弹出工程设置对话框,选择“TargetSettings”选项卡“Post-linker”页中选择“ARMfromELF”,表明产生一个可执行文件。
图4-4Target设置
在“LanguageSetting”中的五个子选项卡中选择arm芯片类型及配置。
该例中:
在“ARMAssembler”页中选择“Target”,在“ArchtectureorProcessor”选择ARM10TDMI,其余保持默认状态。
在“ARMCComplier”页中也做同样配置。
图4-5LanguageSettings设置
在“ARMLinker”选项卡“Output”页中,ROBase为用来指定代码在SDRAM的位置,试验箱SDRAM的起始地址为0xA0000000,本例中选择0xA0000000(保证在SDRAM的范围内)。
图4-6ROBase设置
图4-7Imageentrypoint设置
“Layout”选项卡的“Placeatbeginningofimage”设置程序的入口模块,指定在生成的代码中,程序从哪一段代码开始执行,本处设置为start.o开始执行。
其中,目标文件为start.o,其所在段为text段。
图4-8选择入口文件
点击OK,保存配置。
7)拷贝E:
\cvtech\pxa270光盘\examples\asm文件夹中所有*.inc文件以及*.mac文件到D:
\seg文件夹下。
在工作区窗口中的seg工程菜单上点击
工具编译工程。
编译成功后结果如下图所示。
图4-9编译结果示意图
6)连接仿真器到CVT-PXA270JTAG连接。
并将调试器和CVT-PXA270上电,然后点击
工具进行连接。
此时ADS自动切换为AXD,进入调试状态。
选择AXD菜单栏Options中的ConfigureTarget选项。
单击ADD,选择C:
\adtide\PlugIn下的adtrdi.dll文件,添加成功后,出现JATG选项。
选择JATG,然后在对话框中单击Configure,如图设置:
正常连接结果如下图所示。
图4-10连接结果示意图
8)点击File->LoadImage下载程序到SDRAM中
图4-11程序下载
下载成功后,将显示入口点的源代码,如下图所示:
图4-12下载成功后的调试窗口示意图
9)运行程序,点击两次Execute->Go菜单项,运行该程序,如果运行正常,CVT-PXA270上四个跑马灯依次点亮。
图4-13运行程序
10)点击Execute->Stop停止程序运行。
1.6实验步骤
1.认真阅读上节内容,并按照提示动手做一个seg工程;
2.linux常用命令
1)su命令,用于切换用户
$suroot
2)ls命令,用于查看目录
#ls
3)mkdir命令,用于创建目录
#mkdir/test
4)pwd命令,用于显示当前工作目录
#pwd
5)cd命令,用于改变当前工作目录
#cd/tmp
6)vi编辑器的使用
a)vitest
b)键入i,进行插入模式
c)按Esc退出到命令行模式
d)按shift+;进入底行模式。
键入wq,保存退出
7)cp命令,用于复制文件或文件夹
#cp/home/test/tmp
先用vi编辑器在home下创建test文件
8)chmod命令,改变文件或文件夹权限
#chmod777/home/test
9)rm命令,删除文件或文件夹
#rm-ftest
10)解压缩命令
#mkdirtest
#tarczftest.gztest
#tarcjftest.bz2test
#rm–rftest
#tarzxvftest.gz
#rm–rftest
#tarjxvftest.bz2
3.tftp服务器的配置和使用
1)查看tftp服务器是否启动
#netstat-a|greptftp
2)安装tftp服务器
#yuminstalltftp
3)创建tftpboot目录,并修改目录权限
#mkdirtftpboot
#chmod777tftpboot
4)vi/etc/xinetd.d/tftp,修改配置文件
servicetftp
{
disable=no
socket_type=dgram
protocol=udp
wait=yes
user=root
server=/usr/sbin/in.tftpd
server_args=-s/tftpboot
per_source=11
cps=1002
flags=IPv4
}
5)重启tftp服务器
#servicexinetdrestart
6)关闭防火墙,serviceiptablesstop
7)测试tftp服务器
新建文件test.txt,内容为“123test321”,放在tftpd32j文件夹内,打开tftpd32j文件夹内的tftpd32.exe
进入linux,打开终端,
#cd/tftpboot
#tftp192.168.0.109
tftp>get
(files)test.txt
tftp>q
#ls
192.168.0.109为主机ip。
3.samba服务器的配置和使用
1)修改samba服务器配置文件,vi/etc/samba/smb.conf
2)添加smb用户,重启smb服务器
3)测试samba服务器
4.nfs服务器的配置和使用
1)修改配置文件,vi/etc/exports
2)重启nfs服务器
3)测试nfs服务器,mount-tnfs192.168.0.116:
/home/mnt
5.交叉工具链的建立
1)通过tftp、nfs或samba服务器将cross3.4.5.tar.gz传到虚拟机linux系统下的tmp文件夹内
2)创建/crosstool目录
cd/opt
mkdircrosstool
3)解压工具包
cd/tmp
tarzxvfcross3.4.5.tar.gz–C/opt/crosstool/
4)修改/etc/profile,在文件最后一行添加:
PATH=/opt/crosstool/crosstools_3.4.5_softfloat/gcc-3.4.5-glibc-2.3.6/arm-linux/bin:
$PATH
5)使/etc/profile文件生效,执行命令:
source/etc/profile
6)检查交叉工具链的安装,执行命令:
arm-linux-gcc–v
1.7实验重点难点
1.ADS开发环境的配置与使用
2.仿真调试下,程序运行流程
1.8实验思考题
1.注释seg.c程序
2.修改seg.c程序,要求数码管一显示从0到F,同时数码管二显示从F到0
实验二BootLoader实验
2.1实验目的
1.了解BootLoader在嵌入式系统中的作用;
2.掌握u-boot的基本功能。
3.掌握u-boot的配置和编译方法;
4.掌握CVT-PXA270中u-boot升级方法。
2.2实验内容
1.学习u-boot的基础知识和常用命令,并按照实验步骤实际操作。
2.配置、编译u-boot;
3.升级u-boot。
2.3预备知识
1.掌握嵌入式系统软件开发基础知识。
2.了解u-boot的基本操作;
3.了解u-boot烧写flash基本方法。
2.4实验设备
1.硬件:
CVT-PXA270嵌入式实验箱、PC机Pentium500以上,硬盘10G以上;
2.软件:
PC机操作系统redhatlinux9.0+Linux开发环境。
2.5基础知识
1.BootLoader的概念
BootLoader是系统加电后运行的第一段软件代码。
回忆一下PC的体系结构我们可以知道,PC机中的引导加载程序由BIOS(其本质就是一段固件程序)和位于硬盘MBR中的引导程序一起组成。
BIOS在完成硬件检测和资源分配后,将硬盘MBR中的引导程序读到系统的RAM中,然后将控制权交给引导程序。
引导程序的主要运行任务就是将内核映象从硬盘上读到RAM中,然后跳转到内核的入口点去运行,也即开始启动操作系统。
而在嵌入式系统中,通常并没有像BIOS那样的固件程序,因此整个系统的加载启动任务就完全由BootLoader来完成。
在基于XScale核的嵌入式系统中,系统在上电或复位时将从地址0x00000000开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。
简单地说,BootLoader就是在操作系统内核或用户应用程序运行之前运行的一段小程序。
通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核或用户应用程序准备好正确的环境。
对于一个嵌入式系统来说,可能有的包括操作系统,有的小型系统也可以只包括应用程序,但是在这之前都需要BootLoader为它准备一个正确的环境。
通常,BootLoader是依赖于硬件而实现的,特别是在嵌入式领域,为嵌入式系统建立一个通用的BootLoader是很困难的。
1)BootLoader的移植和修改
每种不同的CPU体系结构都有不同的BootLoader。
除了依赖于CPU的体系结构外,BootLoader实际上也依赖于具体的嵌入式板级设备的配置,比如板卡的硬件地址分配,RAM芯片的类型,其他外设的类型等。
也就是说,对于两块不同的嵌入式板而言,即使它们是基于同一种CPU而构建的,如果他们的硬件资源和配置不一致的话,要想让运行在一块板子上的BootLoader程序也能运行在另一块板子上,也还是需要作一些必要的修改。
2)BootLoader的安装
系统加电或复位后,所有的CPU通常都从CPU制造商预先安排的地址上取指令。
PXA270在复位时都从地址0x00000000取它的第一条指令。
而嵌入式系统通常都有某种类型的固态存储设备(比如:
ROM、EEPROM或FLASH等)被安排这个起始地址上,并将Booloder程序存储到这段存储器上。
在系统加电后,CPU将首先执行保存在该地址的BootLoader程序。
3)用来控制BootLoader的设备或机制
串口通讯是最简单也是最廉价的一种双机通讯设备,所以往往在BootLoader中主机和目标机之间都通过串口建立连接,BootLoader程序在执行时通常会通过串口来进行I/O,比如:
输出打印信息到串口,从串口读取用户控制字符等。
当然如果认为串口通讯速度不够,也可以采用网络或者USB通讯,那么在BootLoader中就需要编写相应的驱动。
4)BootLoader的启动过程
多阶段的BootLoader能提供更为复杂的功能,以及更好的可移植性。
从固态存储设备上启动的BootLoader大多都是2阶段的启动过程,也即启动过程可以分为stage1和stage2两部分。
5)BootLoader的操作模式
大多数BootLoader都包含两种不同的操作模式:
“启动加载”模式和“下载”模式,这种区别仅对于开发人员才有意义。
但从最终用户的角度看,BootLoader的作用就是用来加载操作系统,而并不存在所谓的启动加载模式与下载工作模式的区别。
启动加载(Bootloading)模式:
这种模式也称为“自主”(Autonomous)模式。
也即BootLoader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程并没有用户的介入。
这种模式是BootLoader的正常工作模式,因此在嵌入式产品发布的时侯,BootLoader显然必须工作在这种模式下。
下载(Downloading)模式:
在这种模式下,目标机上的BootLoader将通过串口连接或网络连接等通信手段从主机下载文件,比如:
下载应用程序、数据文件、内核映像等。
从主机下载的文件通常首先被BootLoader保存到目标机的RAM中,然后再被BootLoader写到目标机上的固态存储设备中。
BootLoader的这种模式通常在系统更新时使用。
工作于这种模式下的BootLoader通常都会向它的终端用户提供一个简单的命令行接口。
6)BootLoader与主机之间进行文件传输所用的通信设备及协议
最常见的情况就是,目标机上的BootLoader通过串口与主机之间进行文件传输,传输可以简单的采用直接数据收发,当然在串口上也可以采用xmodem/ymodem/zmodem协议以及在以太网上采用TFTP协议。
此外,在论及这个话题时,主机方所用的软件也要考虑。
比如,在通过以太网连接和TFTP协议来下载文件时,主机方必须有一个软件用来提供TFTP服务。
7)通常一个嵌入式BootLoader提供以下特征:
▼初始化硬件,尤其是内存控制器;
▼提供Linux内核的启动参数;
▼启动Linux内核。
此外,大多数BootLoader也提供简化开发过程的特征:
▼读写存储器;
▼通过串口或者以太网口上载新的二进制映像文件到目标板的RAM;
▼从RAM中拷贝二进制映像文件到FLASH存储器中。
2.u-boot简介
u-boot是由德国DENX小组开发的交叉平台BootLoader,其全称为“universalBootLoader”。
u-boot的开发目标是支持尽可能多的嵌入式处理器和嵌入式操作系统。
它提供数百种嵌入式开发板和各种CPU,包括PowerPC、ARM、Xscale、MIPS、Coldfire、NIOS、Microblaze和x86等,同时它除了支持Linux系统的引导外,还支持NetBSD、VxWorks、QNX、RTEMS、ARTOS、LynxOS等多种嵌入式操作系统的引导。
u-boot最开始的名字为“8xxROM”,它是为PowerPC写的一个BootLoader,后来,当该工程在2000年被提交到Sourceforge()上时,由于Sourceforge不允许以数字开头,因此,改名为“PPCBoot”。
PPCBoot的开放性和强大的功能被越来越多的人接受并将其移植到不同的平台。
到2002年9月,PPCBoot支持四种不同的ARM处理器,并且在2002年11月正式更名为“u-boot”。
u-boot的用户接口类似于Linux的shell界面,通过串口连接以后,用户可以交互式的输入命令和看到结果。
u-boot的启动界面如下所示:
U-Boot2.1.6(Nov12006-05:
41:
09)
U-Bootcode:
A3080000->A30A9FACBSS:
->A30AF870
RAMConfiguration:
Bank#0:
a000000064MB
Flash:
32MB
CVT-PXA270#
启动时,首先检查系统配置,上述结果中可以知道,该系统的RAM配置为64Mbytes,flash配置为32Mbytes。
然后开始进入命令行界面(以提示符“CVT-PXA270#表示”),在该命令行界面中用户可以输入操作命令。
3.u-boot命令行接口
u-boot中所有操作都是通过其命令行通过输入命令完成。
本节叙述u-boot的命令行接口,请注意,由于u-boot的可配置性,因此,当前配置并不一定支持所有的命令。
用户可以使用help命令查看当前配置支持的所有命令。
u-boot中所有命令的数字都是以十六进制格式输入。
有些命令的处理结果依赖于u-boot的配置以及一些环境变量的设置。
在u-boot中输入命令并不一定需要输入全名,而是可以省略后面的一些字符,如“help”命令等同于“h”、“he”和“hel”。
下面介绍一些常用的u-boot命令:
1)信息查看命令
▼bdinfo:
打印目标板配置信息
CVT-PXA270#bdinfo
arch_number=0x00000196
env_t=0x00000000
boot_params=0xA0000100
DRAMbank=0x00000000
->start=0xA0000000
->size=0x04000000
ethaddr=01:
23:
45:
67:
89:
AB
ip_addr=192.168.1.45
baudrate=115200bps
CVT-PXA270#
▼flinfo:
获取可用的flash的信息
CVT-PXA270#flinfo
Bank#1:
CFIconformantFLASH(32x16)Size:
32MBin128Sectors
Erasetimeout4096ms,writetimeout0ms,bufferwritetimeout1024ms,buffersize32
SectorStartAddresses:
00000000(RO)00040000(RO)00080000000C000000100000
0014000000180000001C00000020000000240000
00280000002C0000003000000034000000380000
003C0000004000000044000000480000004C0000
005000000054000000580000005C000000600000
0064000000680000006C00000070000000740000
00780000007C0000008000000084000000880000
008C0000009000000094000000980000009C0000
00A0000000A4000000A8000000AC000000B00000
00B4000000B8000000BC000000C0000000C40000
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 实验 提纲