原创 ARM交叉编译下,应用程序实践

2009-4-21 15:18 5295 7 7 分类: MCU/ 嵌入式

一。首先准备一个小程序


hello.c


代码如下:


#include <stdio.h>


int main(void) {
 printf("hello,world\n");              //向终端打印字符输出
}


二。然后编写makefile如下:


CROSS=opt/host/armvl/bin/arm-linux-                #这个是定义的宏,指向具体得


                                                                           #交叉编译工具路径


all: hello


hello:
 $(CROSS)gcc -o hello hello.c                           #编译ELF可执行文件


clean:
 @rm -vf hello *.o *~                                        #输入make clearn时删除编译文件

#尤其注意这里得交叉编译工具一定要与烧写内核得交叉编译工具一致


#否则产生得文件armlinux内核不能执行


三。在终端输入 : make 生成可执行文件hello


四。将hello,down到目标板得文件系统中


这里有三种方法:


1.解压缩ramdisk.image.gz,把自己写得hello文件复制进去,重新打包,并烧录到目标板上,方法见我的另一篇博文。这个方法优点是彻底的烧录上去,掉电不会丢掉自己的程序,而其他方法都是将应用程序放在ram中,重启就没有了。缺点很明显,太复杂费时,而且不利于延长flash的寿命,只需要再彻底写好应用程序后使用,调试不推荐。


2.使用USB。


首先在PC端输入:


#mount -t vfat /dev/sdb1  /mnt/            挂载U盘到mnt文件夹,sdb1根据实际情况修改


#cp -av /hello      /mnt/                        把自己写的hello文件夹复制到u盘


#cp /                                                  这步确保路径不在u盘,卸载时不会busy


#umount /mnt                                     卸载u盘


超级终端上:


#mount -t vfat /dev/sda1  /mnt/          同样挂u盘


#cp -av   /mnt/hello    /                     把U盘中自己写的文件复制到根目录


cd  /mnt/hello


./hello                                                 执行自己的文件


#umount /mnt                                    


用U盘调试前提时目标板上的linux支持USBhost,过程简单但是比较麻烦。


2.使用NFS


首先配置NFS服务,见另一篇博文,关键一定要关掉防火墙,在/etc/exports文件中加入允许访问的路径。


(1)关闭防火墙:


#setup                  //进入系统服务,取消iptables和ipchains,选上nfs


#/etc/rc.d/init.d/iptables stop


#vim   /etc/exports


在vim中添加 /nfs 192.168.2.120(rw,insecure,no_root_squash,no_all_squash),含义是允许下位机读写PC的/nfs文件夹


(2)连好网线,PC端,将hello复制到共享文件夹nfs:


(3)超级终端输入:


#mount -t vfat -o onlock 192.168.2.126:/nfs /mnt       挂载PC的nfs文件夹到目标板mnt中


#cd /mnt/hello                    远程浏览自己的程序


#./hello                               远程执行


这个方法前提是下位机已经打通了网口,并且支持nfs服务,推荐用这种方法调试

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
7
关闭 站长推荐上一条 /3 下一条