1. 设备树介绍
设备树由一系列被命名的node和property组成
可以描述如下信息:
- CPU的数量和类别
- 内存基地址和大小
- 总线和桥
- 外设连接
- 中断控制器和中断使用情况
- GPIO控制器和GPIO使用情况
- Clock 控制器和 Clock 使用情况
由dts文件以文本方式对系统设备树进行描述,经过dtc编译器将dts文件转化为二进制文件dtb。 dtb文件可以由Linux内核解析,有了设备树就可以在不改动Linux内核的情况下,对不同的平台实现无差别的支持;
硬件有变动时,不需要重新编译内核或驱动程序,只需要更换相应的dts文件即可。dtsi相当于C语言中include的h文件。
2. 移植源码
2.1 获取源码
git clone https://github.com/nxp-imx/linux-imx.git
2.2 添加配置文件
a. 配置要求存放在arch/arm/configs目录的对应文件下,可以通过make 配置文件名
生成配置文件,例:make imx_v7_defconfig
b. 因为需要用arch/arm/boot/dts/Makefile来生成设备树,因此在Makefile的如下位置添加需要生成的设备树二进制文件(此处为:imx6ull-elf1-emmc.dtb,通过cp arch/arm/boot/dts/imx6ull-14x14-evk.dts arch/arm/boot/dts/imx6ull-elf1-emmc.dts
生成)
vi arch/arm/boot/dts/Makefile
c. 编译
- make imx_v7_defconfig
- make -j2
报错:/bin/sh: 1: bison: not found
处理:sudo apt-get install bison
d. 将zImage和对应的.dtb文件拷贝进/run/media/mmcblk1p1/下
scp arch/arm/boot/zImage root@192.168.0.232:/run/media/mmcblk1p1/
scp arch/arm/boot/dts/imx6ull-elf1-emmc.dtb root@192.168.0.232:/run/media/mmcblk1p1/
e. 保存重启
sync
reboot
观察时间,可以看到内核成功刷入
f. 补救措施
如果拷贝进去,系统启动不了了
- 将开发板boot的1,2位调到ON
- 在windows下,解压缩并进入mfgtools
- usb-typec连接开发板的OTG
- 双击mx6ull-8gemmc-512mddr-qt5.6.vbs打开
- 当出现‘符合 HID 标准的供应商定义设备’ 点击start
- 当出现 ‘DONE’ 点击Stop,接着点击Exit 完成退出
- 将开发板boot的1,2调到OFF,3 调到ON