第一篇 新学习路线、视频介绍、资料下载、开发板基础操作
第三篇 环境搭建与开发板操作
2.6 下载 bsp 和配置交叉编译工具链
$ git clone https://e.coding.net/codebug8/repo.git # download reop
$ mkdir -p 100ask_imx6ull-sdk && cd 100ask_imx6ull-sdk
$ ../repo/repo init -u https://gitee.com/weidongshan /manifests.git -b linux-sdk -m imx6ull/100ask_imx6ull_linux4.9.88_release.xml --no-repo-verify
$ ../repo/repo sync -j4
在.bashrc 中添加
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
3.3 启动方式
- EMMC: 1.2.4 low, 3 high。
- SD/TF 卡:1.2.3 high, 4 low。
- USB: 3 low, 4 high。
3.4 串口连接
看图如何连接。
3.4.4 串口登录
输入 root 即可登录。
3.7 开发板挂载 Ubuntu 的 NFS 目录
Ubuntu:
防止开发板挂载出现 permission denied 情况, 需要修改/etc/exports
文件:
/srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
# 挂载share目录
/home/yucheng_xiang/share *(rw,sync,no_root_squash)
修改完文件后,执行 exportfs -rv
开发板:
[root@100ask:~]$ mount -t nfs -o nolock,vers=3 192.168.5.11:/home/book/nfs_rootfs /mnt
其中192.168.5.11
为 ubuntu 的桥接网卡 ip 地址。
3.8 FileZilla 在 Windows 和开发板之间传文件
3.9 使用 TFTP 传输文件
tftp 分为 server 和 client,server 开启 tftp 服务,client 可从 server 下载或者上传文件。
Ubuntu 安装 tftp 服务:
sudo apt-get install tftp-hpa tftpd-hpa
mkdir -p /home/book/tftpboot
sudo chmod 777 /home/book/tftpboot
sudo vim /etc/default/tftpd-hpa
在配置文件/etc/default/tftpd-hpa 中,添加以下字段设置 tftp 目录:
TFTP_DIRECTORY="/home/book/tftpboot"
TFTP_OPTIONS="-l -c -s"
sudo service tftpd-hpa restart # 启动tftp服务
ps -aux | grep "tftp" # 查看tftp服务是否已经启动
Windows 安装 tftp 服务:
下载 tftp64 工具。
允许应用通过 Windows 防火墙,把 tftp64 选上:
windows 做 server,停留在这个界面即可。
开发板通过 tftp 传输文件:
开发板做 client,从 ubuntu/windows server 获取和上传文件:
Busybox 中 tftp 的用法:
$ tftp [option] ... host [port]
# -g表示下载文件(get)
# -p表示上传文件(put)
# -l表示本地文件名(local file)
# -r表示远程主机的文件名(remote file)
[root@100ask:~]$ tftp -g -r zImage 192.168.5.11 # 192.168.5.11为ubuntu ip地址,从tftp设置目录下载zImage
[root@100ask:~]$ tftp -p -l zImage 192.168.5.11 # 192.168.5.11为ubuntu ip地址,上传zImage到tftp目录
开发板做 server,ubuntu/windows 做 client 主动获取和上传文件:
Uboot 中启动 tftp server:
tftpsrv
tftpsrv 0x80400000 # 将收到的文件保存到内存0x80400000
Windows: 利用 tftp64 的 client get/put 文件。
Ubuntu:
tftp 10.0.13.5 -m binary -c put u-boot.bin
Ubuntu 下 tftp 命令参考:
connect:连接到远程tftp服务器
mode:文件传输模式
put:上传文件
get:下载文件
quit:退出
verbose:显示详细的处理信息
tarce:显示包路径
status:显示当前状态信息
binary:二进制传输模式
ascii:ascii传送模式
rexmt:设置包传输的超时时间
timeout:设置重传的超时时间
help:帮助信息
?:帮助信息
5.2 编译内核
make zImage + make dtbs
$ export ARCH=arm
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
# 拷贝到nfs目录
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-1
4x14.dtb ~/nfs_rootfs
5.3 编译安装内核模块
make modules
book@100ask:~/100ask_imx6ull-sdk/Linux-4.9.88$ make modules
make INSTALL_MOD_PATH=/home/book/nfs_rootfs modules_install
5.4 安装内核和模块到开发板
cp /mnt/zImage /boot
cp /mnt/100ask_imx6ull-14x14.dtb /boot
cp /mnt/lib/modules /lib -rfd
sync
重启开发板后,就使用了新的 zImage, dtb, modules。
6.2 编译 bootloader
book@100ask: ~/100ask_imx6ull-sdk/Uboot-2017.03$ make distclean
book@100ask: ~/100ask_imx6ull-sdk/Uboot-2017.03$ make mx6ull_14x14_evk_defconfig
book@100ask: ~/100ask_imx6ull-sdk/Uboot-2017.03$ make
cp u-boot-dtb.imx ~/nfs_rootfs
将 bootloader 烧到 emmc 上:
[root@100ask:~] echo 0 > /sys/block/mmcblk1boot0/force_ro
[root@100ask:~] dd if=u-boot-dtb.imx of=/dev/mmcblk1boot0 bs=512 seek=2
[root@100ask:~] echo 1 > /sys/block/mmcblk1boot0/force_ro
6.5 Buildroot 构建 IMX6ULL Pro 版的根文件系统
有两个配置:
选择第一个 core,还需要把 libsync 选上。
book@100ask:~/100ask_imx6ull-sdk/Buildroot_2020.02.x$ make clean
book@100ask:~/100ask_imx6ull-sdk/Buildroot_2020.02.x$ make 100ask_imx6ull_pro_ddr512
m_systemV_qt5_defconfig
book@100ask:~/100ask_imx6ull-sdk/Buildroot_2020.02.x$ make all -j4
6.6 开发板使用 NFS 根文件系统
Buildroot 编译完成之后生成的 rootfs.tar.bz2, 可以解压之后放到 NFS 服务器上作为 NFS 文件系统供开发板使用。
将编译后得到的内核 zImage, 设备树文件 100ask_imx6ull-14x14.dtb, 放到 ubuntu 的 tftp 目录下。
将文件系统 rootfs.tar.bz2 解压到 Ubuntu 的/etc/exports 文件中指定的目录里,即
复制到/home/book/nfs_rootfs 目录下,并解压(注意:解压时要用 sudo)。sudo tar -jxvf rootfs.tar.bz2
开发板进入 uboot,执行:
=> setenv serverip 192.168.5.11 # 设置服务器的 IP 地址,这里指的是 Ubuntu 主机 IP
=> setenv ipaddr 192.168.5.9 # 设置开发板的 IP 地址。
=> setenv nfsroot /home/book/nfs_rootfs # 设置 nfs 文件系统所在目录。
=> run netboot # 设置完成后,运行网络启动系统命令
默认的 netargs 是 dhcp 获取 ip 地址,会进不去 kernel, 设置 netargs 为静态 ip:
netargs=setenv bootargs console=${console},${baudrate} root=/dev/nfs ip=192.168.5.9:192.168.5.11::255.255.255.0::eth0:off nfsroot=${serverip}:${nfsroot},v3,tcp
设置完成后,执行
run netboot
另外还需要在 nfs 文件系统中修改nfs_rootfs/etc/network/interfaces
文件,也修改为静态 ip:
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
Notes
7. 烧写系统
把要烧写的文件放进 \02_开发工具\100ask_imx6ull_pro开发板系统烧写工具\files\
目录下。