嵌入式.docx
- 文档编号:12333085
- 上传时间:2023-04-18
- 格式:DOCX
- 页数:14
- 大小:1.25MB
嵌入式.docx
《嵌入式.docx》由会员分享,可在线阅读,更多相关《嵌入式.docx(14页珍藏版)》请在冰豆网上搜索。
嵌入式
实验一系统固件编译与烧写
一、实验目的
掌握编译OMAP4460系统x-loader、U-Boot、kernel的过程,掌握SD卡启动
系统过程。
二、实验内容
1、在宿主机Ubuntu操作系统下编译目标板的x-loader与U-Boot。
2、在宿主机Ubuntu操作系统下编译目标板的kernel固件。
3、拷贝系统固件至SD卡,通过SD卡启动目标板系统。
三、实验设备
1、BISTU-OMAP4460嵌入式实验箱1套。
2、宿主机电脑,安装Vmwareworkstation和Ubuntu并配置好OMAP446开
发环境。
四、实验步骤
4.1开机进入开发环境
打开电脑中VmwareWorkstation软件,启动Ubuntu操作系统,本实验中全部工作均在
该系统下操作。
进入开机界面,用户名bistu,密码123456。
4.2编译x-loader和u-boot
打开终端,输入以下指令:
①$cd~/WorkSpace/Software/Ubuntu1204_20130605/source/
②$sudotarxvzfu-boot-chipsee-panda-exp-20130609.tar.gz
③ls
④$
③ls
④$cdu-boot-chipsee-panda-exp-20130609/
⑤$source/etc/profile
⑥$exportCROSS_COMPILE=arm-none-linux-gnueabi-
⑦$exportARCH=arm
⑧$makedistclean
⑨$makeomap4_panda
编译完成之后,同时生成了MLO和u-boot.img两个我们需要的文件。
将生成的文件拷贝到自己的存储目录myProject。
#cpMLOu-boot.img~/myProject/
4.3编译内核
打开终端,输入以下指令:
#cdWorkSpace/Software/Ubuntu1204_20130605/source/
解压内核文件压缩包,并进入内核文件夹
#tarxvzfUbuntu-precise-kernel-chipsee-20130605.tar.gz
修改目录所有者权限:
#sudochown-Rbistu:
bistuubuntu-precise-kernel-chipsee-
20130605
进入内核目录:
#cdubuntu-precise-kernel-chipsee-20130605/
删除以前编译生成的余留文件,保证内核包的清洁:
#makeARCH=armCROSS_COMPILE=arm-none-linux-gnueabi
Distclean
配置内核(请自行阅读内核目录下的README文件):
#makeARCH=armCROSS_COMPILE=arm-none-linux-gnueabimenuconfig
使用的是makemenuconfig,使用空格键进行选取。
你会发现在每一个选项前都有个括号,但
有的是中括号有的是尖括号,还有一种圆括号。
用空格键选择时可以发现,中括号里要么
是空,要么是"*",而尖括号里可以是空,"*"和"M"这表示前者对应的项要么不要,要么编
译到内核里;后者则多一样选择,可以编译成模块。
而圆括号的内容是要你在所提供的几个
选项中选择一项。
选择相应的配置时,有三种选择,它们分别代表的含义如下:
[*]--将该功能编译进内核
[]--不将该功能编译进内核
[M]--将该功能编译成可以在需要时动态插入到内核中的模块
如果自己配置内核请参考前面内核配置选项说明,内核配置选项只是列出了通用的一些配置,
对于一些特殊的嵌入式应用的配置选项,可能没有介绍到。
进行编译:
#makeARCH=armCROSS_COMPILE=arm-none-linux-gnueabipanda_
exp_defconfig
编译内核命令:
#makeARCH=armCROSS_COMPILE=arm-none-linux-gnueabi-uImage
执行完以上操作后,arch/arm/boot目录下会生成我们需要的uImage文件。
(实验注意事项:
内核的配置选项很多,目标板提供的内核文件已经做好了相应
的配置,如果想深入了解内核,还需要很多相关的知识。
)
将生成的文件拷贝到自己的存储目录myProject。
#cparch/arm/boot/uImage~/myProject/
4.4烧写SD卡并启动系统
1、进入烧写SD卡目录
#cd~/mksd_ubuntu
2、boot目录下有已做好的启动固件,filesystem文件下是已经做好的根文件系统
rootfs.tar.gz
3、prebuilt文件下有一个脚本文件mksdcard.sh,通过读卡器插入SDcard后,运行
sudo./mksdcard.sh--device/dev/sdX
其中sdX是插入的SDcard在Ubuntu系统中的盘符代号,可以通过sudofdisk–l来查看
通过sudofdisk–l查得插入的SDcard盘符代号是/dev/sdb,所以就可以输入来烧写SD
卡。
#sudo./mksdcard.sh--device/dev/sdb
因Ubuntu文件系统2G多,此过程需要时间很长,耐心等待。
4、将编译U-Boot生成的MLO、u-boot.img文件,编译内核生成的uImage文件全部复制到
boot目录文件下。
#cd~/myProjcet
#cpMLOu-boot.imguImage/media/boot/
5、卸载SD卡,放到开发板上启动。
五、实验结果记录
六、实验感想
实验二应用程序开发
一、实验目的
掌握在Ubuntu环境下交叉编译应用程序的方法。
二、实验内容
1、使用Vi或者Gedit文本编译器编译C语言、汇编语言程序和Makefile文
件,计算公式3*x2+2*x3和求平均数。
2、MAKE编译得到ARM可执行程序formula和average,分别通过NFS和
TFTP传送程序到目标板上执行并测试。
三、实验设备
1、BISTU-OMAP4460嵌入式实验箱1套。
2、宿主机电脑,安装Vmwareworkstation和Ubuntu并配置好OMAP446开
发环境。
四、实验步骤
(1)计算公式3*x2+2*x3
1、在Linux主机上建立工作目录,执行如下命令。
#cd~
#mkdirexam1
#cdexam1
#geditformula.c
2、在formula.c程序里面输入以下内容:
#include
externintcompute(intdata);
intmain()
{
intx;
printf("Inputx=");
scanf("%d",&x);
printf("Theresultis%d\n",compute(x));
return0;
}
3、执行命令生成汇编文件
#geditcompute.S
包含计算3*x^2+2*x^3过程的汇编文件为compute.S内容如下:
.text
.align
.globalcompute
compute:
stmfdsp!
{r4-r11,r14}
mulr1,r0,r0
movr3,#2
mulr2,r1,r3
movr3,#3
mulr4,r1,r3
mlar0,r2,r0,r4
ldmfdsp!
{r4-r11,r15}
4、编写Makefile文件
由于编译程序的过程较为繁琐,因此编写了一个简单的Makefile来组织这些源程序,因
为程序是要在开发板上运行,因此指定了交叉编译工具。
#geditMakefile
Makefile文件内容如下:
CC=arm-none-linux-gnueabi-gcc
NAME=formula
formula:
formula.ccompute.S
$(CC)formula.ccompute.S-static-o$(NAME)
clean:
rm-f$(NAME)
注意:
其中首行空格用Tab键生成,否则有编译错误。
5、在exam1目录下执行make命令得到可执行文件formula
#make
6、应用strip工具精简可执行程序
#arm-none-linux-gnueabi-stripformula
7、file命令可以查看formula程序属性
#fileformula
8、拷贝文件到NFS共享目录
#sudocpformula/nfsshare
(2)计算4个数的平均值
1、在Linux主机上建立工作目录,执行如下命令。
#cd~
#mkdirexam2
#cdexam2
#geditavg.c
2、在avg.c程序里面输入以下内容:
#include
externintaverage(inti,intj,intk,intl);
intmain(void)
{
inta,b,c,d,avr;
printf("Input4number:
\n");
scanf("%d",&a);
scanf("%d",&b);
scanf("%d",&c);
scanf("%d",&d);
printf("a=%d,b=%d,c=%d,d=%d\n",a,b,c,d);
avr=average(a,b,c,d);
printf("(%d+,%d+,%d+,%d)/4=,%d\n",a,b,c,d,avr);
return0;
}
3、执行命令生成汇编文件
#geditaverage.S
包含计算平均值的汇编文件为average.S内容如下:
.globalaverage
.align
average:
addr0,r1,r0
adcr0,r2,r0
adcr0,r3,r0
movr0,r0,lsr#2
movpc,lr
.end
4、编写Makefile文件
由于编译程序的过程较为繁琐,因此编写了一个简单的Makefile来组织这些源程序,因
为程序是要在开发板上运行,因此指定了交叉编译工具。
#geditMakefile
Makefile文件内容如下:
CC=arm-none-linux-gnueabi-gcc
NAME=average
average:
avg.caverage.S
$(CC)avg.caverage.S-static-o$(NAME)
clean:
rm-f$(NAME)
注意:
其中首行空格用Tab键生成,否则有编译错误。
5、在exam1目录下执行make命令得到可执行文件average
#make
6、应用strip工具精简可执行程序
#arm-none-linux-gnueabi-stripaverage
7、file命令可以查看average程序属性
#fileaverage
8、拷贝文件到NFS共享目录
#sudocpaverage/nfsshare
(3)配置开发板网络和NFS服务
首先,电脑插入SD卡,输入命令:
bistu@bistu-virtual-machine:
~$cd/media/rootfs/etc/
network
bistu@bistu-virtual-machine:
~$sudogeditinterfaces
在文本编译器中最后行添加如下内容:
autoeth0
ifaceeth0inetstatic
address192.168.1.90
netmask255.255.255.0
gateway192.168.1.1
保存并退出。
拷贝NFS服务和TFTP服务所需Deb库到SD卡rootfs/home/chipsee目录。
bistu@bistu-virtual-machine:
~$cd/media/rootfs/home/
chipsee
bistu@bistu-virtual-machine:
~$cp-R~/deb.
安全删载SD卡退出。
使用USB转串口模块和串口线,连接电脑和开发板。
主机上新开一个终端,执行命令,访问ttyUSB0设备端口:
bistu@bistu-virtual-machine:
~$sudominicom
将SD卡插入开发板,插入5V电源启动开发板系统,在minicom终端中可以看到系统启
动信息,进入开发板登录界面,输入用户名chipsee,密码chipsee。
连接电脑网络线上端至开发板,这样电脑和开发板相当于网络直连,在minicom终端上
执行开发板命令,ping电脑IP地址。
chipsee@chipsee-desktop:
~$ping192.168.1.10
没问题的话可以ping通。
接着安装NFS服务所需支持库。
Chipsee@chipsee-desktop:
~$cd~/deb
Chipsee@chipsee-desktop:
~$sudodpkg-i
libgssglue1_0.3-4ubuntu0.1_armhf.deb
Chipsee@chipsee-desktop:
~$sudodpkg-i
libtirpc1_0.2.2-5_armhf.deb
Chipsee@chipsee-desktop:
~$sudodpkg-i
rpcbind_0.2.0-7ubuntu1.2_armhf.deb
Chipsee@chipsee-desktop:
~$sudodpkg-i
libnfsidmap2_0.25-1ubuntu2_armhf.deb
Chipsee@chipsee-desktop:
~$sudodpkg-i
nfs-common_1%3a1.2.5-3ubuntu3.1_armhf.deb
Chipsee@chipsee-desktop:
~$sudodpkg-i
tftp_0.17-18ubuntu2_armhf.deb
最后创建NFS挂载目录,挂载主机192.168.1.10的nfsshare目录到nfs目录下,这样可以访
问主机目录文件,执行并测试程序。
chipsee@chipsee-desktop:
~$cd/mnt
chipsee@chipsee-desktop:
~$sudomkdirnfs
chipsee@chipsee-desktop:
~$sudomount
192.168.1.10:
/nfssharenfs
chipsee@chipsee-desktop:
~$cdnfs
chipsee@chipsee-desktop:
~$./formula
输入x值并计算得到结果,用计算器计算结果并对比是否正确。
同样,运行求均数程序,对比运行结果
五、实验结果
六、实验感想
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式