嵌入式.docx

上传人:b****5 文档编号:12333085 上传时间:2023-04-18 格式:DOCX 页数:14 大小:1.25MB
下载 相关 举报
嵌入式.docx_第1页
第1页 / 共14页
嵌入式.docx_第2页
第2页 / 共14页
嵌入式.docx_第3页
第3页 / 共14页
嵌入式.docx_第4页
第4页 / 共14页
嵌入式.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

嵌入式.docx

《嵌入式.docx》由会员分享,可在线阅读,更多相关《嵌入式.docx(14页珍藏版)》请在冰豆网上搜索。

嵌入式.docx

嵌入式

实验一系统固件编译与烧写

一、实验目的

掌握编译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值并计算得到结果,用计算器计算结果并对比是否正确。

同样,运行求均数程序,对比运行结果

五、实验结果

六、实验感想

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1