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

2019-07-12 14:09发布

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/helloworld4. 编辑程序源代码helloworld.c:#include int main(){printf(“Hello World! ”);}5. 在主机端编译运行helloworld程序:$gcc -o helloworld helloworld.c$./helloworld6. 编译在目标机运行的helloworld程序:$arm-linux-gcc -o helloworld helloworld.c如果在x86平台运行helloworld,出现错误$./helloworldBash: ./helloworld: cannot execute binary file7. 下载helloworld程序到目标机并运行:helloworld程序拷贝到主机的tftpboot目录下$cp helloworld /tftpboot/在超级终端输入如下命令将主机端/tftpboot/目录挂载到/mnt/nfs/目录下#mount 192.168.1.180:/tftpboot/ /mnt/nfs -o nolock运行#cd /mnt/nfs/#./helloworld8. helloworld目录下编写Makefile文件:# $@ 扩展成当前规则的目的文件名# $< 扩展成依靠列表中的第一个依靠文件# $^ 扩展成整个依靠的列表CC = arm-linux-gcc#编译器LD = arm-linux-ld#链接器EXEC = helloworldOBJS = 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$makearm-linux-gcc -c -o helloworld.o helloworld.carm-linux-gcc -o helloworld helloworld.oX86平台$make clean$makegcc -c -o helloworld.o helloworld.cgcc -o helloworld helloworld.o9. 通过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程序。