系统移植的三大步骤如下:
- =系统uboot移植====
- =系统linux移植====
- =系统rootfs制作====
一言难尽,踩了不少坑,当时只是想学习驱动开发,发现必须要将第三篇系统移植弄好才可以学习后面驱动,现将移植好的文件分享出来:
仓库:https://gitee.com/wangyoujie11/imx6u-ll-uboot-kernel-rootfs.git
使用如下
如果直接使用我移植好的四大组件,只需要完成以下配置
- 将usb线连接开发板的OTG串口,另一端连接电脑;然后另一根连接USB_TTL串口,另一端连接电脑;
- 检测自己的sd卡是否取下(sd卡槽不能插卡)
- 红色拨码开关打到USB启动
- 给板子上电,双击打开mfgtool2-alientek-alpha-emmc.vbs文件,提示“符合标准就可以点击start,等待烧入,可以打开串口助手查看下载信息。提示信息如下所示,说明以及将系统烧写到板子上的emmc了。
从emmc启动将红色拨码开关打到emmc启动,然后复位板子就可以正常进入了boot命令,先输入ls mmc 1:1查看是否是图中的信息,没问题就输入环境变量:
=>setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw
=>setenv bootcmd 'mmc dev 1;fatload mmc 1:1 80800000 zImage;fatload mmc 1:1 83000000 imx6ull-alientek-emmc.dtb;bootz 80800000-83000000;'
boot
从SD启动将红色拨码开关打到SD启动。首先准备工作alientek-linux和alientek-uboot和alientek-rootfs下载到本地ubuntu下解压如下:
链接:https://pan.baidu.com/s/18e-UhGz_HCEF9-Z2ADEjlg
提取码:wjwj
- 进入alientek-uboot文件下,打开终端使用./imxdownload u-boot.bin /dev/sdb(自己的sd)中
- 然后将SD卡插入到板子卡槽内,使用SD卡启动模式
- 在tftp文件下面添加如下内容(可以在alientek-linux文件中找到)
- 将rootfs文件解压到nfs文件夹下面
- 使用chmod 777 -R nfs 和chmod 777 -R tftpboot。给这俩个文件夹权限
- 开发板直连电脑搭建NFS&TFTP环境配置:https://blog.csdn.net/zzssdd2/article/details/110455413。注意:路径一定要改为自己的路径。
- 板子从SD卡启动,然后就可以使用驱动例程来做了,在编译驱动例程的时候,需要替换官方的路径
- 确定板子的信息是
# 设置启动参数bootargs
# nfsroot后的参数为Ubuntu的nfs文件夹路径;格式为:nfsroot=NFS服务器IP:文件系统的绝对路径.
# ip后的参数为开发板网络信息:ip=开发板IP:服务器IP:网关,子网掩码::eth0:off.
setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs rw nfsroot=192.168.104.88:/home/wj/linux/nfs/rootfs ip=192.168.104.90:192.168.104.88:192.168.104.1:255.255.255.0::eth0:off’
# 保存
=> saveenv
Saving Environment to MMC... Writing to MMC(0)... OK
# 复位重启
=> reset
重启板子之后就会出现:
然后在自己的ubuntu下找到一个编译好的驱动例程,使用如下命令就可以将程序拷贝到开发板的/lib/modules/4.1.15/路径下
sudo cp chrdevbase.ko chrdevbaseApp /home/wj/linux/nfs/rootfs/lib/modules/4.1.15/ -f
至此,所有的移植就完成了,可以愉快的驱动开发了
使用02_led驱动例程测试:
挂载之后就行点灯操作: