本次用纯Linux + 自制Filesystem,这种方式更利于学习底层驱动,在说clk子系统之前,我们先说一下如何做最基础的Linux系统,我们这里主要用的是Linux和busybox,其中busybox用来制作文件系统.这一节直接用之前的博客做的文件系统,详细制作步骤参考:
https://blog.csdn.net/qq_23922117/article/details/78312908
下面说一下自己制作Linux系统的详细步骤(参考这里):
①下载Linux内核(Linux-4.11): https://pan.baidu.com/s/1mrac77u5rjdqjgwdVua0CQ 提取码: yub5
②下载之后,先安装tools目录里的dtc工具.解包dtc-master.zip,执行”make && make install”即可;
③新版的uboot需要大于6.x版本以上的编译器才可以,所以配置gcc-linaro-7.2.1交叉编译器,配置步骤参考本文第一个链接;
④我用的板子是SD卡启动(Orange Pi One),我这里把SD卡分了3个区(不含Uboot用的分区):
分区1: 6GB; // 当正常存储设备使用, fat32格式
分区2: 256MB; // 存放kernel和dts, ext2格式
分区3: 剩下的容量 // 存放自己做的文件系统, ext2格式
⑤编译uboot:
解包u-boot源码后,进入源码目录:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- orangepi_one_defconfig //配置uboot
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- //编译
sudo dd if=./spl/sunxi-spl.bin of=/dev/sdb bs=1k seek=8 //烧写bl1到sd卡
sudo dd if=./u-boot.bin of=/dev/sdb bs=1k seek=40 //烧写uboot.bin到sd卡里
⑥编译内核:
解包Linux内核源码之后,进入内核源码目录下操作:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- sunxi_defconfig //配置内核
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage -j4 //编译出内核镜像
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- dtbs //编译出设备树文件
make ARCH