ARM之嵌入式Linux基本应用程序编写实验

ARM之嵌入式Linux基本应用程序编写实验

实验目的:

1. 熟悉JXARM9-2440教学系统中的Linux开发环境;

2. 掌握简单的Linux应用程序helloworld的编译;

3. 掌握JXARM9-2440教学系统中Linux应用程序的调试。

实验内容 

1. 编写helloworld应用程序;

2. 编写Makefile文件;

3. 编译helloworld应用程序;

4. 下载并运行helloworld应用程序。

实验要求

1 Makefile文件内容、并简要说明的作用;

2.给出关键的实验步骤, 简述JXARM9-2440中怎样将编写的应用程序下载到Linux中,怎样在Linux中运行该程序?

 

实验步骤:

1. Linux移植:将zImage文件重命名为zImage-30,将ramdisk.gz文件重命名为ramdisk-qt.gz,然后将Linux移植到目标机。

2. 烧录:通过超级终端先后运行run burnlinuxzImage命令以及run burnlinuxramdisk命令将Linux烧录到目标机。

 

 

 

 

3. 进入工作目录:(注:”$”符号表示在主机的Linux控制台输入的命令行,”#”符号表示在目标机的Linux控制台上输入的命令行)

$cd /home/cvtech/jx2440/examples/helloworld

4. 编辑程序源代码helloworld.c:

#include <stdio.h>

int main(){

printf(“Hello World!\n”);

}

5. 在主机端编译运行helloworld程序:

$gcc -o helloworld helloworld.c

$./helloworld

6. 编译在目标机运行的helloworld程序:

$arm-linux-gcc -o helloworld helloworld.c

如果在x86平台运行helloworld,出现错误

$./helloworld

Bash: ./helloworld: cannot execute binary file

7. 下载helloworld程序到目标机并运行:

helloworld程序拷贝到主机的tftpboot目录下

$cp helloworld /tftpboot/

在超级终端输入如下命令将主机端/tftpboot/目录挂载到/mnt/nfs/目录下

#mount 192.168.1.180:/tftpboot/ /mnt/nfs -o nolock

运行

#cd /mnt/nfs/

#./helloworld

8. helloworld目录下编写Makefile文件:

# $@ 扩展成当前规则的目的文件名

# $< 扩展成依靠列表中的第一个依靠文件

# $^ 扩展成整个依靠的列表

CC = arm-linux-gcc#编译器

LD = arm-linux-ld#链接器

EXEC = helloworld

OBJS = helloworld.o

 

CFLAGS +=#编译参数

LDFLAGS +=#链接参数

 

$(EXEC): $(OBJS)

$(CC) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS$(LDLIBS_$@))

cp $(EXEC) /tftpboot/

%.o:%.c

$(CC) -c -o $@ $<

clean:

-rm -f $(EXEC) *.elf *.gdb *.o

 

使用make进行编译

Arm平台

$make clean

$make

arm-linux-gcc -c -o helloworld.o helloworld.c

arm-linux-gcc -o helloworld helloworld.o

X86平台

$make clean

$make

gcc -c -o helloworld.o helloworld.c

gcc -o helloworld helloworld.o

9. 通过Makefile文件编译helloworld程序,并在目标机运行:

$cd /home/cvtech/jx2440/examples/helloworld

$make

重复步骤7

实验结果:

在超级终端上看到hello world!字符串被打印出来

 

实验总结:

wq:本次实验为:嵌入式linux基本应用程序的编写。1.0版本:自己写了一个普通的C程序,编译后再将其在目标机上运行。然后升级到2.0:用makefile文件,通过make命令实现目标程序自动编译链接生成可执行文件再运行在目标机上。而且这一次我们组还实现了linux的烧录,用到了burn命令,使其永久存储到了目标机。以前都是移植到内存中运行的。

 

zhy:这次实验我们比其他组多做了一个烧录过程,将Linux烧录到目标机,它的命令的来源是一个回忆史,尝试几次后,成功烧录,可在目标机开机后,按“7”即可运行Linux。这次实验的主要目的是应用程序在交叉编译的环境中运行。有两种方法,①直接用命令编译链接然后再在目标机中运行;②通过Makefile文件进行编译链接和执行。

 

cxy:以前使用过Makefile在Linux上编译运行过c程序。但是没有使用过Makefile进行交叉编译,在主机上编译c程序,再复制到目标机上运行。我们不仅把编译好的程序复制到目标机上的内存上运行。还使用了烧录的办法,使编译好的程序可以永久保存在目标机上。

 

lg:这次不但用命令方式和makefile方式编译执行基础应用程序,而且补充了烧录实验。之前书本中总是强调在软件开发中文档的重要性,原开发者若离去却没留下相关重要文档,后来的维护将会相当困难。而这次实验是确确实实感受到,百度搜索arm烧录命令,然而却搜不出想要的结果,后来是窦老师在武汉创维特遗留的文档中找到了烧录相关的描述,推导出来烧录命令。不然这遗留下来的烂摊子真的难收拾

 

yy:在这次实验过程中,我们先是完成了上一次实验未完成的步骤,即将linux烧录到目标机,然后分别尝试了在x86平台的Linux系统编译运行C程序,和在arm平台的目标机的linux系统运行C程序,体验了交叉编译,并且使用了Makefile文件来帮助编译执行C程序。

 

 

猜你喜欢

转载自blog.csdn.net/cinderella___/article/details/80463865