Linux系统有关交叉编译和移植到6410开发板上的简单过程


在进行移植之前,要检查一下目标机(这里指6410开发板)与宿主机之间的接线问题,即串口线、网线是否正确连接,目标机的电源是否插好!在接线问题解决后,才能保证交叉编译正常进行!

个人理解,移植的主要思想是在宿主机上新建一个网络文件系统,将该网络文件挂载到目标机上,通过建立共享网络文件系统来实现在目标机的终端控制运行在宿主机上交叉编译后的执行文件(如果涉及到库时,还需要交叉编译库,将交叉编译后生成的库通过共享网络文件系统,利用网络传输库文件到目标机中).

个人认为,在进行移植时,需要做两个部分的准备:宿主机准备、目标机准备!

一、宿主机准备

1.新建一个目录作为宿主机与目标机之间的共享网络文件系统

在PC机下再打开一个终端然后在/usr/(或其他)目录下“mkdir  tty”命令来建立新目录tty,将该目录tty作为下面挂载的文件系统对象,也就是将tty目录作为宿主机与目标机之间的共享网络文件系统。

2.检查并修改PC机的IP地址、子网掩码(最好要关闭防火墙)

将PC机的IP地址修改为和目标机的IP(192.168.1.199为固定IP)的前三位(192.168.1.*)保持一致,子网掩码也要修改为(255.255.255.0),可以选择使用这个命令"ifconfig  eth0 192.168.1.20 netmask 255.255.255.0"(eth0 为网卡设备)通过终端来快速修改!防火墙可以通过“setup”命令来查询是否关闭!使用ping命令来检查目标机与宿主机之间的网络是否正常接通!

3.修改端口配置文件

进入到/etc目录下对exports文件进行内容的修改,修改为下面内容:

/usr/tty    192.168.1.199(rw,sync)

4.启动nfs(网络文件系统)服务,并进行网络检查!

接着"service  nfs  start"启动nfs服务,开始进行端口配置检查(如果exports文件修改有问题,这时会出现错误提示),然后在PC机与开发板网络连通后,开始进行挂载。

二、目标机准备

挂载时,是在开发板内yaff目录下挂载的。

5.挂载共享网络文件系统

宿主机(这里指PC机)进入linux系统桌面后,打开终端。在终端输入"minicom"命令后,进入开发板内yaff目录下。执行“mountnfs  PC机IP:/usr/tty  /mnt/nfs”命令(这里是"mountnfs  192.168.1.20:/usr/tty    /mnt/nfs"),来实现挂载(有时候会遇到一些问题,下面有我总结的解决问题的方法)!

在挂载成功后在宿主机的终端下,只需要移动自己需要移植的交叉编译后的执行文件和一些与程序有关的其他文件(如交叉编译后的库、图片等)到自己挂载的那个目录下,在目标机的终端进入mnt/nfs/目录里进行查看共享的文件或目录!

下面简单说一下在挂载共享网络文件系统时,遇到问题后一些解决办法,希望能够帮你解除烦恼:

1)在挂载时,显示网络不可达时,要检查一下网线和IP地址,网线插上或IP改为静态IP后,再重新挂载即可。

2)在挂载时,显示端口不被允许时,重启一下开发板,再重新挂载即可。

3)在挂载时,显示挂载失败,此时要重启一下nfs服务器,一般会解决问题。

举例说明:

移植一个helloworld程序,在开发板上显示hello world!

m.c文件内容:

#include<stdio.h>

int  main( )

{

printf("hello ,word!");

return  0;

}

在PC机终端交叉编译:

arm-linux-gcc  m.c -o    e

在arm机上执行  ./e

本文没有做关于交叉编译方面的详细分析,在上面的宿主机准备中,有时候需要修改minicom配置文件,以后再详解!关于交叉编译问题,以后解析!谢谢支持!如果有错误,请明确地指出错误之处,在收到并确定后我会及时纠正错误。

推荐阅读:

S3C6410中断方式查询按键值驱动

基于Tiny6410的LED驱动程序

OK6410-A编译u-boot时遇到的问题及解决

相关内容