基于:韦东山IMX6ULL_PRO开发板
此篇记录一下自己配置开发环境的繁琐过程。

我使用的是ASIX AX88772C usb网卡。

接入电脑后进入网络适配器找到该网卡对其ipv4进行更改。即:

这就完成了对Windows的ip网络的设置了。ip地址为192.168.5.10
进入虚拟机页面后,编辑>虚拟网络编辑器>更改设置>还原默认设置>设置桥接模式(桥接至ASIX AX88772C)>应用>确定。即:

配置网络适配器为桥接模式后,需要进入 ubuntu 手动设置默认网卡的 IP 地址为静态 IP。打开 系统 Setting。找到Network>找到ens38的字样>点击设置按键进入页面>点击 Manual(设置ip)>设置成如下ip地址。即:

之后保存退出即可。
设置开发板ip地址我们一般使用永久生效的方式。即:
/****第一步*****/
指令:vi /etc/network/interfaces
/*****第二步****/ 复制指令
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.5.9
netmask 255.255.255.0
gateway 192.168.5.1
即:

这样就完成了开发板的ip设置。
ping时一般使用该指令ping ip地址,例 ping 192.168.5.10
挂载网络是很经常使用的。指令:
mount -t nfs -o nolock,vers=3 192.168.5.11:/home/book/nfs_rootfs /mnt
交叉编译工具链用来在Ubuntu主机上编译应用程序,而这些应用程序是在ARM等其他平台上运行。设置交叉编译工具主要是设置PATH, ARCH和CROSS_COMPILE三个环境变量。
即:
第一步指令vim ~/.bashrc
第二步在行尾添加或修改,加上下面几行(第3行第4行为一行命令):
export ARCH=arm
export CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
export PATH=$PATH:/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin
保存退出即可。
交叉编译 freetype主要是在图形化编程时常用的。这种方法在编译、安装一些小程序时很有用。
freetype 依赖于 libpng,libpng 又依赖于 zlib,所以我们应该:先编译安装 zlib,再编译安装 libpng,最后编译安装 freetype。但是,有些工具链里有 zlib, 那就不用编译安装 zlib。
我们所使用的工具链是arm-buildroot-linux-gnueabihf-,其里面包含了zlib因此不必在去安装zlib
执行指令:echo 'main(){}'| arm-buildroot-linux-gnueabihf-gcc -E -v -

这样就找到我们编译器的工具链所依赖的头文件和库文件
freetype 依赖于 libpng,所以需要先编译、安装 libpng。命令如下:
book@PC$ tar xJf libpng-1.6.37.tar.xz
book@PC$ cd libpng-1.6.37
book@PC$ ./configure --host=arm-buildroot-linux-gnueabihf --prefix=$PWD/tmp
book@PC$ make
book@PC$ make install
book@PC$ cd tmp
book@PC$ cp lib/* -rfd /home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/
book@PC$ cp include/* -rf /home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/arm-buildroot-linux-gnueabihf/sysroot/usr/include
book@PC$ tar xJf freetype-2.10.2.tar.xz
book@PC$ cd freetype-2.10.2
book@PC$ ./configure --host=arm-buildroot-linux-gnueabihf --prefix=$PWD/tmp
book@PC$ make
book@PC$ make install
book@PC$ cd tmp
book@PC$ cp lib/* -rfd /home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/
book@PC$ cp include/* -rf /home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/arm-buildroot-linux-gnueabihf/sysroot/usr/include
编译驱动时用的内核、开发板上运行到内核,要一致:开发板上运行到内核是出厂时烧录的,你编译驱动时用到内核是你自己编译的,这两个内核不一致时会导致一些问题。所以我们编译驱动程序前,要把自己编译出来到内核放到板子上去,替代原来的内核。
更换板子上的内核后,板子上的其他驱动也要更换:板子使用新编译出来的内核时,板子上原来的其他驱动也要更换为新编译出来的。所以在编译我们自己的第 1 个驱动程序之前,要先编译内核、模块,并且放到板子上去。
我们在下载好安装包后,执行:
book@100ask:~$ cd 100ask_imx6ull-sdk/Linux-4.9.88/
book@100ask:~/100ask_imx6ull-sdk/Linux-4.9.88$ make mrproper
book@100ask:~/100ask_imx6ull-sdk/Linux-4.9.88$ make 100ask_imx6ull_defconfig
book@100ask:~/100ask_imx6ull-sdk/Linux-4.9.88$ make zImage -j4
book@100ask:~/100ask_imx6ull-sdk/Linux-4.9.88$ make dtbs
book@100ask:~/100ask_imx6ull-sdk/Linux-4.9.88$ cp arch/arm/boot/zImage ~/nfs_rootfs
book@100ask:~/100ask_imx6ull-sdk/Linux-4.9.88$ cp arch/arm/boot/dts/100ask_imx6ull-14x14.dtb ~/nfs_rootfs
编译完成后,在arch/arm/boot目录下生成zImage内核文件, 在arch/arm/boot/dts目录下生成设备树的二进制文件100ask_imx6ull-14x14.dtb。把这2个文件复制到/home/book/nfs_rootfs目录下备用。
即:最后两条指令。
book@b ook-virtual-machine:~$ cd ~/100ask_imx6ull-sdk/Linux-4.9.88/
book@100ask:~/100ask_imx6ull-sdk/Linux-4.9.88$ make ARCH=arm CROSS_COMPILE=arm-buildroot-linux-gnueabihf- modules
如下图,内核模块编译完成后截图

可以先把内核模块安装到nfs根文件系统(/home/book/nfs_rootfs为安装目录)。
注意:下面会执行tree命令,如果提示没有该命令,需要执行“sudo apt install tree”命令安装tree工具(前提是Ubuntu能上网)。
book@book-virtual-machine:~$ cd ~/100ask_imx6ull-sdk/Linux-4.9.88/
book@100ask:~/100ask_imx6ull-sdk/Linux-4.9.88$ sudo make ARCH=arm INSTALL_MOD_PATH=/home/book/nfs_rootfs modules_install
安装后的的/home/book/nfs_rootfs/目录结构如下图所示:

在开发板上执行以下指令:
1、mount -t nfs -o nolock,vers=3 192.168.5.11:/home/book/nfs_rootfs /mnt
2、cp /mnt/zImage /boot
3、cp /mnt/*.dtb /boot
4、cp /mnt/lib/modules /lib -rfd
最后重启开发板(reboot),它就使用新的zImage、dtb、模块了。
tslib 是一个触摸屏的开源库,可以使用它来访问触摸屏设备,可以给输入设备添加各种“filter”(过滤器,就是各种处理),地址是:http://www.tslib.org/。
编译 tslib 后,可以得到 libts 库,还可以得到各种工具:较准工具、测试工具。
安装工具链:
book@PC$ tar xJf libpng-1.6.37.tar.xz
book@PC$ cd tslib-1.21
book@PC$ ./configure --host=arm-buildroot-linux-gnueabihf --prefix=/
book@PC$ make
book@PC$ make install DESTDIR=$PWD/tmp
book@PC$ cd tmp/
book@PC$ cp include/* /home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/arm-buildroot-linux-gnueabihf/sysroot/usr/include
book@PC$ cp -d lib/*so* /home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/