终于到了我们的系统移植的阶段,在此过程中,我们尽可能的不深入到细节中,完成快速移植。在移植之前我们必须要先搭建好我们的环境,这样在之后的移植及开发中会快很多。
我们在开发linux的时候肯定有很多好用的软件来辅助我们开发,这里推荐几个个人认为比较好用的软件。
linux庞大的体系,知识分支众多,在学习过程中很容易迷失,通过这个软件不断的总结知识,并且各个分支的重要程度及学习进度可以一目了然,对学习复杂的知识体系有很大的帮助。
在u-boot等移植的时候,可以进行版本对比,查看更改了哪些变动,对分析代码很有帮助。
查看数据手册,原理图,pdf阅读器肯定是少不了的。在众多的pdf阅读器中,我更喜欢这一款,尤其是低版本的,感觉功能更简洁。
大神们讲课都喜欢用这个软件,总结笔记,编辑图片相当好用。
对linux开发的,这款软件肯定不模式,用来编辑查看源码还是非常好用的。
韦老师推荐的开发工具,实际体验很好,推荐。(详细查看韦老师的博客)
https://blog.csdn.net/thisway_diy/article/details/78400433?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522159171094519195162550270%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=159171094519195162550270&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_v1~rank_blog_v1-1-78400433.pc_v1_rank_blog_v1&utm_term=Mobaxterm
系统安装好了,那么我们肯定要联网,主要就是NET方法和桥接的方法。
为了之后我们windows,linux,和开发板三方互通,我们推荐使用桥接模式。为了之后远程登陆方便,要固定一下IP详细的配置方法,可以查看韦老师的博客:
https://blog.csdn.net/thisway_diy/article/details/79207234
在linux开发中,我们经常要在windows下编辑文件,但是直接拖拽,风险较大,那么设置共享文件夹是一个非常好的方式。
操作过程:
搭建工程路径: ubuntu和windows之间的桥梁
3.1、利用sourceinsight创建linux-3.14的内核源码工程
注:在共享目录下的源码:只用于写驱动的时候追代码和写代码
3.2、在 E:\KernelSource\linux-3.14下创建自己编译驱动的目录 mydrivers,里面是你后期写的驱动
3.3、Ubuntu下添加一个新的共享文件夹路径 E:\KernelSource (目录下是sourceinsight创建的linux-3.14的工程)
Ubuntu-->右键设置--->选项--->共享文件夹--->选择你sourceinsight创建的linux-3.14的源码路径--->添加为共享文件夹
3.4、进入Ubuntu,创建软连接:
cd + 回车
ln -s /mnt/hgfs/linux-3.14/mydrivers mydrivers
3.5、查看路径:
cd + 回车
cd mydrivers
直接就可以进入到你windows下的自己写的驱动所对应的路径
3.6、测试:
在Windows下的E:\KernelSource\linux-3.14\mydrivers目录下写一个test.c,内容如下:
#include
int main(int argc, const char *argv[])
{
printf("helloworld .\n");
return 0;
}
然后在linux下,
cd mydrivers
进去这个目录就可以看到test.c 然后编译打印输出,查看测试结果:
gcc test.c
./a.out
想要编译出适合我们板卡的固件,arm gcc工具链是必须的,而且版本一定要对应好,不然会出很多的报错。
$ tar xvf gcc-4.6.4.tar.xz
$ sudo vim /etc/bash.bashrc 添加交叉编译工具链的路径到系统脚本
在末尾添加(这种是永久的方式)
export PATH=xxx/gcc-4.6.4/bin:$PATH (xxx是gcc-4.6.4解压后所在目录)
$ source /etc/bash.bashrc //使配置文件生效
$ arm-n 然后按Tab键补全 //如果能补全为arm-none-linux-gnueabi- 表示安装交叉编译工具成功了
ping来判断linux与板卡网络是否联通
telnet远程登陆
tftp加载内核,nfs 挂载根文件系统
5.1tftp服务安装
1.$sudo apt-get install tftpd-hpa //检查是否安装tftp server
2.$ sudo apt-get install tftpd-hpa tftp-hpa //如果未安装,安装 tftp-server
3.$ sudo vi /etc/default/tftpd-hpa //修改tftp服务器配置文件为
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="-l -c -s"
4.$ mkdir /tftpboot //创建tftpboot目录,
5.$ sudo chmod a+w /tftpboot
6.$ sudo service tftpd-hpa restart //启动 tftp-server
//-----验证虚拟机tftp服务是否OK
7.$ sudo cat /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="-l -c -s"
8.$ sudo service tftpd-hpa restart //如果有更改配置,需要重启一下 tftp-server
9.$ cd /tftpboot
10.$ touch test
11.$ cd /tmp
12.$ tftp 127.0.0.1
tftp>get test
tftp>q
13.$ ls //看到有test文件,表示该tftp服务是OK的
注:如果不行尝试关闭防火墙ufw disable,重启虚拟机
5.2 nfs服务安装
1.$ service nfs-kernel-server /*检查nfs服务是否安装
如果显示下面信息, 表示有安装
* Usage: nfs-kernel-server {start|stop|status|reload|force-reload|restart}
如果没有,需安装
#sudo apt-get install nfs-kernel-server
2.$ sudo vi /etc/exports /*修改配置文件,指定共享目录位置
在末尾追加(一定要在末尾)
/nfs/rootfs *(rw,sync,no_root_squash)
3. $ sudo mkdir /nfs
4.$ sudo chmod 777 /nfs
5.$ cd /nfs
6.$ 拷贝/rootfs.tar.xz已制作好的根文件系统到 /nfs 目录下
7. $ tar -xvf rootfs.tar.xz
8. $ sudo chmod 777 rootfs
9. $ sudo /etc/init.d/nfs-kernel-server restart //重启nfs服务(使得前面修改生效)
10. $ sudo mount -t nfs localhost:/nfs/rootfs/ /mnt/ //测试nfs服务是否安装成功。
11. $ ls /mnt/ /*如果其中的内容和/nfs/rootfs中一致。 表示有挂载成功
如显示下面内容,表示成功
bin dev etc lib linuxrc mnt proc root sbin sys tmp usr var
12. $ sudo umount /mnt