tf卡烧录linux镜像-荔枝派nano-全志f1c100s

目录

0 前言

一 安装交叉编译器

二 u-boot

三 linux内核

四 根文件系统


2022/04月,搞了块荔枝nano板子

所需工具:

荔枝nano板*1、usb转ttl*1(板子上面没有转ttl芯片,故需要自己准备)、tf卡*1、Ubuntu虚拟机版本具体没啥要求*1

0 前言

首先,先说一下大概情况。

到手的nano板是不够的,自己准备tf卡、读卡器、转串口工具,还需要电烙铁,因为你得把排针焊上去。有的nano板子上自带flash,里面有代码,开盒通电就可以使用,里面还有demo,需要屏幕才能展示。屏幕涨价太快了,故本文没有涉及到屏幕的开发内容。

然后,说明一下大体的流程

以下各部分均可以分块完成,本流程中方法操作不对,也可以参考别人的流程

一 安装交叉编译器

在虚拟机中,首先为了编译器准备个文件夹,

# 创建文件夹
sudo mkdir /usr/local/arm 

#进入目录
cd /usr/local/arm 

然后得到软件包,

#从网上得到交叉编译器的压缩包(也可以在别的网址get)
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

完成后,会有一大串信息被打印出来,最后一行:

(下载+修改环境=ok)

二 u-boot

其实u-boot、linux内核、rootfs是三个一定程度上互相独立的,可以分别制作,组合起来,可以自己做一些,用别人的一些。三者都可以分别看作一个软件包,每一步的操作都需要在对应的软件包文件目录下进行。(这三者都是要先获得软件包,然后进行配置,之后进行编译)

安装

# 安装工具,接着走一遍,如果报错,就去百度,肯定是有包没安装,在继续apt-get
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


配置并编译

# 进入目录设置编译前的默认配置
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- -j8

由于该处的makefile文件默认的不是上边下载的编译器,故需要修改

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

大概在248行左右,添加进入。 

编译完成后会得到 u-boot-sunxi-with-spl.bin 文件,这个就是我们需要的,只要把它放在tf卡相应位置即可。

通过在终端里输入df命令可以查看sdb1和sdb2的信息(如果看不到,那就多插拔几次u盘,实在不行拔下来,静置5分钟才多插几次)

分区完之后

烧写操作:写进tf卡(dd复制操作),具体分区操作请见专栏里 tf分区操作。

# 找到内存卡,我的是/dev/sdb,
# 为啥不是sdb1和sdb2,而是sdb,我感觉其实sdb也占了sdb1的位置。
sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/sdb bs=1024 seek=8

 其实这里还有额外一步,因为u-boot需要引导进入内核,所以需要增加如下修改(如果不改就会卡在 进入内核 这一步骤)(借鉴自参考文献2)

/* 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卡(sdb的那一步)

三 linux内核

 获取

/* 获取Linux内核 */
git clone https://github.com/Lichee-Pi/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- -j8

在这一步会生成两个文件:设备树文件dtb镜像压缩文件zImage文件。

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

#在linux目录下执行该命令,注意改成自己的分区1

cp ​arch/arm/boot/zImage /media/ice/CDE5-CBCF -d

​cp ​arch/arm/boot/dts/suniv-f1c100s-licheepi-nano.dtb /media/ice/CDE5-CBCF -d

 完事之后sdb1分区:

四 根文件系统

该步骤也是下载文件包,配置,编译,因为编译时间实在是太长了,我直接用来官方提供的rootfs.tar镜像。这也就是我一开始说的可以随意组合。

将rootfs.tar镜像解压都放到sdb2分区:

到此为止就可以插卡启动了。

参考资料:

1.分区操作http:// https://whycan.cn/t_547.htmlicon-default.png?t=M3K6http:// https://whycan.cn/t_547.html

2. tf卡烧录https://blog.csdn.net/qq_40611389/article/details/104032286?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-3.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-3.pc_relevant_default&utm_relevant_index=5https://blog.csdn.net/qq_40611389/article/details/104032286?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~default-3.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~default-3.pc_relevant_default&utm_relevant_index=5

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

请叫我7plus

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值