一、配置网络环境
使用桥接网卡时 Ubuntu 就是使用一个真实的网卡 :开发板的网线也连接到这个真实的网卡上,这样 Windows 、 Ubuntu 、开发板就都可以用过这个网卡互通了。
- NAT 网卡: Ubuntu 通过它上网,只要 Windows 能上网, Ubuntu 就能上网
- 桥接网卡: Ubuntu 通过它跟开发板联通
NAT网卡设置
桥接网卡设置
Ubuntu、电脑、开发板三者之间必须可以ping通
这里作者的开发板和电脑都是直接接在路由器上,三者可以ping通
二、下载BSP及配置工具链
要确保有以下两个东西
测试交叉编译工具链
//执行以下命令测试环境变量:
book@100ask:~$ echo $ARCH
arm
book@100ask:~$ echo $CROSS_COMPILE
arm-buildroot-linux-gnueabihf-
//确保输入的命令和下面的输出正确
/***********执行以下命令测试工具链***************/
book@100ask:~$ arm-buildroot-linux-gnueabihf-gcc -v
测试结果
三、配置Windows开发环境
3.1 将Linux源码传输到Windows上
(1)压缩Linux源码
/*压缩Linux源码*/
book@100ask:~/100ask_imx6ull_mini-sdk$ tar cjf Linux-4.9.88.tar.bz2 Linux-4.9.88/
(2)使用FileZilla将压缩包传输到Windows上
(ens33就是NAT网卡的ip;密码是123456)
(3)连接好之后进行移动
(4)Windows上进行解压
Linux上是区分文件名和大小写的,但是Windows是不区分的
Windows上并不执行Linux上的一些链接文件,可能会出现以下的信息
3.2 使用Source Insight去阅读源码
(1)为了方便阅读源码对Source Insight进行设置
(2)建立工程文件
同步文件这里就是同步函数、定义哪些,相当于建立了一个数据库,方便跳转
3.3 Source Insight使用技巧
- 按住ctrl可以跳转到定义,alt+逗号(,)可以返回
- Ctrl+/查找引用它的地方
四、开发板挂载 Ubuntu 的NFS目录
我们是通过NFS把Ubuntu下的NFS目录挂载到开发板的/mnt路径下
进行挂载的命令
//挂载的命令(这里的ip是桥接网卡的ip)
root@ATK-IMX6U:~# mount -t nfs -o nolock,vers=3 192.168.5.11:/home/book/nfs_rootfs /mnt
这里的NFS的意思就是说:我们的开发板下的/mnt目录下建立新文件,Ubuntu的NFS目录下也可以马上看到,同理Ubuntu下新建也是一样的
开发板(在开发板中创建一个1.txt)
root@ATK-IMX6U:~# ls /mnt
driver_projects
root@ATK-IMX6U:~# cd /mnt
root@ATK-IMX6U:/mnt# ls
driver_projects
root@ATK-IMX6U:/mnt# touch 1.txt
root@ATK-IMX6U:/mnt# ls
1.txt driver_projects
root@ATK-IMX6U:/mnt#
Ubuntu
五、开发板挂的第一个应用程序
在Ubuntu中创建一个.c文件并运行它
book@100ask:~/nfs_rootfs$ ls
driver_projects hello.c
book@100ask:~/nfs_rootfs$ cat hello.c
#include <stdio.h>
/* 执行命令 : ./hello weidongshan
* argc = 2
* argv[0] = ./hello
* argv[1] = weidongshan
*/
int main(int argc, char **argv)
{
if (argc >= 2)
printf("Hello, %s! n", argv[1]);
else
printf("Hello, world! n");
return 0;
}
book@100ask:~/nfs_rootfs$ gcc -o hello hello.c
book@100ask:~/nfs_rootfs$ ls
driver_projects hello hello.c
book@100ask:~/nfs_rootfs$ ./hello
Hello, world! n
因为我们已经挂载了NFS目录,我们的开发板下也有这个.c文件,但是直接运行报错;
因为我们在Ubuntu上面是通过gcc来编译的,这里应该去使用交叉编译链去编译,才能在开发板上执行
1.在Ubuntu上重新使用交叉编译链进行编译
arm-buildroot-linux-gnueabihf-gcc -o hello hello.c
2.在开发板上运行