内容提要
前言
最近作为一个菜鸟一直在学习 Linux 相关的内容,主要是关于嵌入式系统的裁剪、驱动开发等。于是拿起了吃灰许久的荔枝派,准备用它好好学习一下。在网上找了很多教程和资料,看得有些乱。在这里,我只想把我这个新手遇到的坑和大体的入门流程记录一下,方便大家,更主要的是方便自己下次避坑。
注意
在食用本文的内容前,如果你还从未了解过官方的文档(推荐官文:荔枝派 Nano 全流程指南 - 即食),还请移步至官方了解大概,遇到问题以后再回看本文。官方文档中有些地方有小bug,代码中也有。遇到问题思考思考再看答案总是会收益良多。
官方git及相关资源搬运
链接: https://pan.baidu.com/s/1ZRLYd0aHf_ZEK9-XxUXPEw
提取码: p6cd
(如果文中有错误还请大家帮忙指出,谢谢大家)
1. u-boot
u-boot 这部分主要还是参照官方文档(spi-flash 启动适配)进行的。分区的配置与官方一样,此处不再赘述。
版本
https://github.com/Lichee-Pi/u-boot/tree/nano-v2018.01
(git 慢的朋友可以下载搬运内容)
1.1 boot arguments
console=ttyS0,115200 panic=5 rootwait root=/dev/mtdblock3 rw rootfstype=jffs2
1.2 bootcmd
需要说明的是,官方文档中 bootcmd 的添加是在 suniv.h 中定义了一个宏定义,如上图。我使用的是另一个方法,直接在 u-boot 的 menuconfig 中配置,我更喜欢这一种方式修改 bootcmd。
bootcmd 参数设置的具体操作(menuconfig 配置):
此处参考 (荔枝派 nano 的 SPI-Flash 系统编译创建全过程)
(确保你已经看懂了官文即食篇,并已经加载了荔枝派 nano 的配置文件 licheepi_nano_spiflash_defconfig)
- make menuconfig
- 勾上
[*] Enable a default value for bootcmd
,然后在下面填上:
sf probe 0 50000000; sf read 0x80C00000 0x100000 0x4000; sf read 0x80008000 0x110000 0x400000; bootz 0x80008000 - 0x80C00000
在这里要注意,“sf probe 0 50000000” 这句 0 后面是空格,不应该用 : ,我测试中,使用冒号 u-boot 启动时是无法解析这句话的。
退出时保存配置
- make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j8
2. Linux
这部分主要参考(官方文档
主线 Linux 编译、spi-flash 启动适配)、(荔枝派 nano 的 SPI-Flash 系统编译创建全过程)
我使用的 Linux 源码是官方 git 上的 4.14 版本。
版本
https://github.com/Lichee-Pi/linux/tree/nano-4.14-exp
(git 慢的朋友可以下载搬运内容)
2.1 config
使用官文 主线 Linux 编译 中的 config 文件进行配置
需要说明的是,将 config 文件放在 linux 的主目录并更名为 .config 后会隐藏,命令行中使用 ls -a 可查看所有文件
2.2 先编译一下
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j8