ARM9实验报告.docx
- 文档编号:13902873
- 上传时间:2023-06-19
- 格式:DOCX
- 页数:13
- 大小:182.65KB
ARM9实验报告.docx
《ARM9实验报告.docx》由会员分享,可在线阅读,更多相关《ARM9实验报告.docx(13页珍藏版)》请在冰点文库上搜索。
ARM9实验报告
实时操作系统实验报告
专业:
电子信息工程
学号:
20110310215
姓名:
杨雪
指导老师:
申屠浩
实验一ARM9入门实验
1、实验目的:
1、熟悉软件的使用,工程的创建、编译、下载及调试程序的方法。
2、理解实验源代码每一句所代表的含义。
2、实验要求与思路:
该实验要求熟练地掌握ARM9软件的使用方法以及实验程序每一步所代表的含义,了解集成开发环境的主框架窗口由标题栏、菜单条、工具条、工程管理窗口、源文件窗口、输出窗口和状态条等组成。
标题栏显示当前打开的文件名。
工程管理窗口用于显示当前打开工程的有关信息,包括工程的文件组成等内容。
说明:
源文件窗口用于文本编辑器进行C、汇编等源文件的编辑以及调试时的源代码执行跟踪。
输出窗口输出编译信息、调试信息、命令行输入输出和输出一些查询结果信息等。
主框架窗口的最底端为状态栏,用于显示关于菜单条、工具条等的简单说明信息以及文本编辑器中当前光标所在的行列号等。
用户可以通过鼠标拖动,将菜单条、工具条、工程管理窗口、源文件窗口和输出窗口等随意更换顺序和位置,也可以隐藏其中的某些窗口。
在调试过程中,可以根据需要打开和关闭寄存器窗口、函数栈窗口、变量窗口、存储器窗口、数据观察窗口以及反汇编窗。
3、实验程序:
程序1源代码如下:
/*------------------------------------------------------------------------------------------*/
/*constantdefine*/
/*------------------------------------------------------------------------------------------*/
.equx,45/*x=45*/
.equy,64/*y=64*/
.equstack_top,0x1000/*definethetopaddressforstacks*/
.global_start
/*------------------------------------------------------------------------------------------*/
/*code*/
/*------------------------------------------------------------------------------------------*/
.text
_start:
/*codestart*/
movsp,#stack_top
movr0,#x/*putxvalueintoR0*/
strr0,[sp]/*savethevalueofR0intostacks*/
movr0,#y/*putyvalueintoR0*/
ldrr1,[sp]/*readthedatafromstack,andputitintoR1*/
ADDr0,r0,r1
STRr0,[sp]
stop:
bstop/*endthecode,cycling*/
.end
程序2源代码如下:
.equx,45/*x=45*/
.equy,64/*y=64*/
.equz,87/*z=87*/
.equstack_top,0x1000/*definethetopaddressforstacks*/
.global_start
/*------------------------------------------------------------------------------------------*/
/*code*/
/*------------------------------------------------------------------------------------------*/
.text
_start:
/*codestart*/
movr0,#x/*putxvalueintoR0*/
movr0,r0,lsl#8/*R0=R0<<8*/
movr1,#y/*putyvalueintoR1*/
addr2,r0,r1,lsr#1/*R2=(R1>>1)+R0*/
MOVsp,#0x1000
STRr2,[sp]
movr0,#z/*putzvalueintoR0*/
andr0,r0,#0xFF/*getlow8bitfromR0*/
movr1,#y/*putyvalueintoR1*/
addr2,r0,r1,lsr#1/*R2=(R1>>1)+R0*/
LDRr0,[sp]/*putyvalueintoR1*/
MOVr1,#0x01
ORRr0,r0,r1
movr1,R2/*putyvalueintoR1*/
addr2,r0,r1,lsr#1/*R2=(R1>>1)+R0*/
stop:
bstop/*endthecode,cycling*/
.end
4、实验分析
程序1部分代码解释如下:
movsp,#stack_top
movr0,#x/*把x的值移到r0*/
strr0,[sp]/*把r0的值放入堆栈*/
movr0,#y/*把y的值移到r0*/
ldrr1,[sp]/*从堆栈中读取数据并放入r1*/
ADDr0,r0,r1/*把r0和r1的值相加并赋值给r0*/
STRr0,[sp]
程序2部分代码解释如下:
.equx,45/*x=45*/
.equy,64/*y=64*/
.equz,87/*z=87*/
.equstack_top,0x1000/*给堆栈定义首地址*/
.global_start
/*------------------------------------------------------------------------------------------*/
/*code*/
/*------------------------------------------------------------------------------------------*/
.text
_start:
/*codestart*/
movr0,#x/*把x=2Dh赋给r0*/
movr0,r0,lsl#8/*r0左移八位为2d00h*/
movr1,#y/*把y=40h赋给r1*/
addr2,r0,r1,lsr#1/*r2=r1右移一位2dh+r0=2d20h*/
MOVsp,#0x1000/*sp的地址为08h*/
STRr2,[sp]/*读sp的内容赋给r2/
movr0,#z/*把z=57h赋给r0*/
andr0,r0,#0xFF/*把r0和FF相与得到r0的低八位*/
movr1,#y/*把y=40h赋给r1*/
addr2,r0,r1,lsr#1/*r2=r1右移一位20h+r0=77h*/
LDRr0,[sp]/*将sp地址处的数据读出,保存到r0中*/
MOVr1,#0x01/*把01h赋给r1*/
ORRr0,r0,r1/*r0与r1相或,得到2d21h存入r0*/
movr1,R2/*把r2=77h赋给r1*/
addr2,r0,r1,lsr#1/*R2=r1右移一位+R0=2d5ch*/
5、实验截图:
程序1截图
实验2截图
6、实验感想
通过该实验,我熟悉了软件的使用,熟练地掌握了工程的创建、编译、下载及调试程序的方法,理解了实验源代码每一句所代表的含义,对于ARM9有了更深的认识并对老师上课所讲的内容有了更深的理解。
实验二vivi、Linux内核、cramfs文件系统的编译
1、实验目的:
1、了解嵌入式Linux环境建立和必须的软件使用方法。
2、掌握viv、Linux内核和Cramfs文件系统的源代码安装方法和编译过程。
2、实验要求与思路:
熟悉vivi、Linux内核、cramfs文件系统的编译
说明:
Vivi总流程图:
vivi的制作流程图
3、实验程序:
进入cygwin,Vivi源代码的安装:
$>source/tmp/edukit-2410/set_env_linux.sh
说明:
Linux编译环境变量设置
$>cd$WORKDIR
$>tar-xvjf/tmp/edukit-2410/vivi-20030929.tar.bz2
$>ls
…vivi……为$WORKDIR目录下其他内容
正确解压后,可以看到相比之前多了一个vivi目录,即vivi源代码的安装目录,后面的vivi配置及编译都得进入vivi目录进行。
再为EduKit2410实验系统打入vivi源代码的补丁文件:
$>cdvivi
$>patch-p1 .bz2.edukit2410.patch patchingfileMakefile patchingfilearch/config.in ……为其他输出内容,无错误提示信息 Vivi源代码的编译 然后执行以下命令进行编译: $>cd$WORKDIR/vivi $>makeclean $>makemenuconfig 其中,运行makemenuconfig后,选择LoadanAlternateConfigurationfile,配置文件名称如下: smdk2410: 编译vivi在NandFlash(K9S5608)中运行; smdk2410-amd: 编译vivi在NorFlash(AM29LV160DB)中运行。 输入arch\def-configs\smdk2410 配置好后,输入 $>make 如果编过程中没有出现错误,则编译后的执行文件存放\usr\local\src\edukit-2410\vivi\目录,文件名为vivi linux源代码的安装 运行cygwin,执行以下命令完成cygwin环境下的Linux源代码的安装: $>cd$WORKDIR $>tar–xvjf/tmp/edukit-2410/linux-2.4.18-rmk7-pxa1-mz5. tar.bz2 $>ls …kernel……为$WORKDIR目录下其他内容 正确解压后,相比之前可以看到多了一个kernel目录,即kernel源代码的安装目录,后面的Linux配置及编译都得在kernel目录进行。 实验中提供的linux内核已经包含了Linux源代码的补丁文件、I2C和网络驱动模块。 $>patch–p1
rmk7-pxa1-mz5.tar.bz2.edukti2410.patch
linux源代码的编译
在Cygwin中依次执行以下命令完成Linux的编译过程:
$>cd$WORKDIR
$>cdkernel
$>makemrproper清除所有的旧的配置和旧的编译目标文件等
$>makemenuconfig在图形界面下对内核进行配置
选择LoadconfigurationfromFile项,配置文件edukit2410-nand需输入:
arch/arm/def-configs/edukit2410-nand根据提示加载配置文件后,选择“Exit”按钮,并选择Y保存配置文件,然后执行下列命令:
$>makedep搜索Linux编译输出与源代码之间的依赖关系并生成依赖文件。
$>makeclean清除构造内核时生成的目标文件、模块文件和临时文件。
$>makezImage生成压缩的内核映像文件
编译通过后,在./arch/arm/boot/目录下生成内核的压缩映像文件为“zImage”。
构建cramfs文件系统
执行以下命令解压安装:
$>cd$WORKDIR/
$>tar-xvjf/tmp/edukit-2410/root.cramfs.tar.bz2
$>ls
…root…root文件夹中就是我们想要的cramfs文件系统
编译一个应用测试程序
$>cd$SOURCEDIR/0201_cramfs-app/
$>arm-linux-gcc-ohellohello.c(也可以编写Makefile来编译)
拷贝测试程序到文件系统中,并编译生成文件系统映象
$>cp$SOURCEDIR/0201_cramfs-app/hello$WORKDIR/root/bin
执行以下命令生成新的文件系统映象:
$>cd$WORKDIR/
$>$SOURCEDIR/mkcramfsrootroot.cramfs.new
刚刚编译生成的文件系统映象root.cramfs.new中已经包含测试程序。
4、实验结果
#>cdbin
#>./hello
Hello!
ThisisasimpleapplicationrunningonLinux.
5、实验截图
6、实验感想
通过本实验,我了解了嵌入式Linux环境建立和必须的软件使用方法,掌握了viv、Linux内核和Cramfs文件系统的源代码安装方法和编译过程。
对于老师课堂上所讲的内容有了更深刻的认识。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARM9 实验 报告
![提示](https://static.bingdoc.com/images/bang_tan.gif)