Cherrypi-F1C200S从零跑linux

一、前言

入手了一块全志F1C200S芯片的板子,花了两天时间对这块板子移植上了linux,记录一下过程。

二、编译环境搭建

1、下载交叉编译器

链接:https://pan.baidu.com/s/15UlP01DP1E99I-8EjnHDxA 提取码:kduv 2 、安装

创建安装目录

sudo mkdir /urs/local/arm

sudo chmod 777 /urs/local/arm

将编译器传到arm目录,并解压

sudo cp gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi.tar.xz /usr/local/arm/ -f

sudo tar -xvf gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi.tar.xz

修改环境变量

sudo vi /etc/profile

在最后一行输入

export PATH=$PATH:/usr/local/arm/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi/bin

保存退出,输入以下命令使环境变量生效

source /etc/profile

3、验证

输入gcc-linux-gnueabi-gcc -v,输出如下即为成功

三、u-boot

1、准备TF卡

由于我买的板子没有spi-flash,所以系统只能用TF卡启动。

在windows下格式化TF卡,然后挂载到ubuntu上。ubuntu上打开GParted软件,该软件可以在ubuntu自带的软件商店下载,用GParted给TF卡分两个区

选择TF卡。新建BOOT分区,主要用来烧录uboot和存放镜像设备锁,格式如下

再新建一个分区,用于存放rootfs

然后确定 ,TF卡准备完成

2、克隆uboot

新建个目录用于存放uboot、linux和rootfs

sudo mkdir cherrpi,cd进入该目录

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

3、配置编译uboot

cd uboot

vi Makefile

在Makefile中的248行和249行分辨添加ARCH=arm、CROSS_COMPILE=arm-linux-gnueabi-

make distclean #对uboot清理

make licheepi_nono_defconfig #对uboot进行配置

由于我用的这块板子串口用的是uart1,所以要修改uboot串口为uart1,主要参考

按照教程设置好串口,即可编译

make -j12

烧写

sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/sdb bs=1024 seek=8

四、linux

1、克隆linux

git clone https://github.com/Lichee-Pi/linux.git --depth=1 -b nano-4.14-exp

2、编译linux

cd linux-nano-4.14-exp

修改Makefile,sudo vi Makefile,添加下面两行代

获取官方配置文件放置arch/arm/configs/ 并修改名字mv linux-cheepi_nano_defconfig cheepi_nano_defconfig

wget http://nano.lichee.pro/_static/step_by_step/licheepi_nano_linux.config mv licheepi_nano_defconfig

配置make licheepi_nano_defconfig

3、修改linux串口为uart1

4、编译linux

make -j12

5、启动linux

将编译好的zImage和suniv-f1c100s-licheepi-nano.dtb文件放置到TF卡的BOOT分区

sudo cp arch/arm/boot/zImage /media/BOOT && cp arch/arm/boot/dts/suniv-f1c100s-licheepi-nano.dtb /media/BOOT

板子插入TF卡,上电进图u-boot终端

6、修改环境变量

setenv bootcmd fatload mmc 0:1 80C00000 suniv-f1c100s-licheepi-nano.dtb;fatload mmc 0:1 80008000 zImage;bootz 80008000 - 80C00000; #读取设备树和镜像文件

setenv bootargs console=tty0 console=ttyS1,115200 #修改串口输出

saveenv #保存环境变量

boot #重启板子

内核加载成功,由于没有加载根文件系统,所以卡住了

五、根文件系统

1、buildroot准备

wget https://buildroot.org/downloads/buildroot-2017.08.tar.gz

tar xvf buildroot-2017.08.tar.gz

cd buildroot-2017.08/

2、配置

make menuconfig

串口配置为uart1

芯片配置

其他保持不变,也可以根据需求进行配置

3、编译

make #buildroot没有多线程

漫长的等待。。。

cd output/image

sudo tar -xvf rootfs.tar -C /media/sunny/rootfs #解压根目录到TF卡的rootfs分区

4、测试

把TF卡插入板子,上电进去u-boot,修改bootargs环境变量加载根目录

setenv bootargs ‘console=tty0 console=ttyS1,115200 panic=5 rootwait root=/dev/mmcblk0p2 rw’

saveenv #保存环境变量

boot #板子复位

大功告成

经验分享 程序员 微信小程序 职场和发展