从零开始 荔枝派nano TF卡启动

驱动 专栏收录该内容
28 篇文章 0 订阅

1.开发环境

# 获取编译器
sudo mkdir /usr/local/arm
cd /usr/local/arm 
wget http://releases.linaro.org/components/toolchain/binaries/7.2-2017.11/arm-linux-gnueabi/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi.tar.xz
tar -vxJf gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi.tar.xz

# 修改环境变量
sudo nano /etc/profile

# 把它添加在最后保存退出
export PATH=$PATH:/usr/local/arm/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi/bin

# 安装相关库
sudo apt-get install lsb-core lib32stdc++6

# 重启,验证
arm-linux-gnueabi-gcc -v

结果如下
在这里插入图片描述

2.使用u-boot

编译

# 安装必要的工具(不一定足够全,编译过程出现问题进行百度再安装)
sudo apt install gcc python swig python-dev bc device-tree-compiler

# 获取u-boot
git clone https://github.com/Lichee-Pi/u-boot.git -b nano-v2018.01

# 由于太慢我已经克隆到gitee上了
git clone https://gitee.com/qiushanyue/u-boot.git -b nano-v2018.01

# 进入目录设置编译前的默认配置
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- licheepi_nano_defconfig

# 进行可视化配置
sudo apt-get install libncurses5-dev
make ARCH=arm menuconfig

# 开始编译 -j是cpu线程数
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j12

如果觉得输入ARCH、CROSS_COMPILE 不爽,可以把配置写在顶层Makefile

sudo nano Makefile
# 添加
ARCH ?= arm
CROSS_COMPILE ?= arm-linux-gnueabi-

如下
在这里插入图片描述
编译完成,得到 u-boot-sunxi-with-spl.bin ,将该文件烧入TF卡8K偏移处
首先格式化内存卡,使用专用的工具进行格式化
大佬的视频教程(linux下) https://whycan.cn/t_547.html,按照教程进行分区
第0分区时u-boot,第1分区FAT32,存放dtb和linux内核,第2分区为EXT4,存放根文件系统

# 查看sd卡
sudo fdisk -l

# 找到内存卡,我的是/dev/sdb,在下面改好
sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/sdb bs=1024 seek=8

插卡启动

3.修改u-boot(为启动linux做准备)

uboot倒计时结束,要启动Linux内核,所以需要修改配置文件使u-boot去执行

/* bootcmd 保存着 uboot 默认命令, uboot 倒计时结束以后就会执行 bootcmd 中的命令 */
/* bootargs 保存着 uboot 传递给 Linux 内核的参数*/
sudo nano /include/configs/suniv.h

/* 添加以下代码(mmc 0为TF卡,1是第一分区,文件系统为fat32,把zImage和dtb文件拷入DRAM)*/
#define CONFIG_BOOTCOMMAND	"fatload mmc 0:1 0x80800000 zImage; "  \
                            "fatload mmc 0:1 0x83000000 suniv-f1c100s-licheepi-nano.dtb; " \
                            "bootz 0x80800000 - 0x83000000;"

/* 继续添加(linux将使用uart0进行交互,死机5s重启,根文件系统在mmc0(tf卡)第二分区(EXT4),等待 mmc 设备初始化完成以后再挂载,开启读写权限) */
#define CONFIG_BOOTARGS   "console=ttyS0,115200 panic=5 root=/dev/mmcblk0p2 rootwait rw "


/* 回到u-boot目录进行编译 */
make ARCH=arm menuconfig
/* 取消勾选 [] Enable a default value for bootcmd */
/* 勾选 [v] Enable boot arguments;*/

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j12

将生成的u-boot-sunxi-with-spl.bin文件再烧录到TF卡

4.编译linux内核

/* 获取Linux内核 */
git clone https://github.com/Lichee-Pi/linux.git --depth=1 -b nano-4.14-exp
/* 克隆到gitee上的 */
git clone https://gitee.com/qiushanyue/linux.git --depth=1 -b nano-4.14-exp

/* 下载配置文件 */
wget http://nano.lichee.pro/_static/step_by_step/lichee_nano_linux.config

/* 修改下载的配置文件名为.config */ 
mv lichee_nano_linux.config .config

/* 可视化配置 */
make ARCH=arm menuconfig

/* 编译,出错的话应该是有插件未安装,百度然后apt install */
sudo apt-get install libssl-dev
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j12

生成的zImage在 ./arch/arm/boot/zImage,拷贝到TF卡第一分区
生成的dtb文件在 ./arch/arm/boot/dts/suniv-f1c100s-licheepi-nano.dtb,拷贝到TF卡第一分区

# 查看挂载的磁盘信息
df
# 结果如下
/dev/sdb2       15214512    43048  14378888   1% /media/qiushan/6e70566c-5537-4463-a35e-b7f7c729feb7
/dev/sdb1          32686     6742     25944  21% /media/qiushan/A26F-2337

# 执行命令 -d为强制复制
cp arch/arm/boot/zImage  /media/qiushan/A26F-2337 -d
cp arch/arm/boot/dts/suniv-f1c100s-licheepi-nano.dtb /media/qiushan/A26F-2337 -d

5.根文件系统

使用buildroot

# 安装依赖
apt-get install linux-headers-$(uname -r)

# 获取buildroot源码
wget https://buildroot.org/downloads/buildroot-2017.08.tar.gz
tar xvf buildroot-2017.08.tar.gz
cd buildroot-2017.08/

# 配置bulidroot
make menuconfig

# 下载依赖工具包,下载完之后,解压后复制到"buildroot-2017.08/dl/"下,没有dl文件夹可自行创建。
链接:https://pan.baidu.com/s/1_tBdX9K7fOkH9JdXZ_MdiQ

# 编译,不支持多线程(出现问题,继续百度安装插件apt install g++等)
make

根文件系统在 ./output/images/rootfs.tar,解压到第二分区

# 查看挂载的磁盘信息
df
# 结果如下
/dev/sdb2       15214512    43048  14378888   1% /media/qiushan/6e70566c-5537-4463-a35e-b7f7c729feb7
/dev/sdb1          32686     6742     25944  21% /media/qiushan/A26F-2337

# 执行命令
tar -xvf  output/images/rootfs.tar -C /media/qiushan/6e70566c-5537-4463-a35e-b7f7c729feb7
sync //同步一下

插卡启动!!!

  • 0
    点赞
  • 1
    评论
  • 2
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值