4、Lctech Pi(F1C200S)linux5.7.1移植在RAM运行修改默认调试串口为uart1(CherryPi,Mangopi,F1C100S)

本次主要参考:
http://nano.lichee.pro/build_sys/bootargs.html
https://wiki.sipeed.com/soft/Lichee/zh/Nano-Doc-Backup/index.html
https://www.cnblogs.com/twzy/p/15355842.html
https://blog.csdn.net/p1279030826/article/details/113368485
(如果方便请给这几位大佬一个关注)

接下来将会在F1C200S的RAM中运行linux

以下在云服务器的终端上操作

1、获取源码,以下命令:

wget https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.7.1.tar.gz

下载完之后解压,然后进入文件目录。

2、修改源码
2.1、打开顶层Makefile文件,在第362行插入,以下代码。

ARCH = arm
CROSS_COMPILE = arm-linux-gnueabi-

完成之后,保存退出。

2.2、加入配置文件。
2.2.1、下载配置文件执行以下命令:

wget https://files.cnblogs.com/files/twzy/linux-licheepi_nano_defconfig.zip

下载完成之后,解压出linux-licheepi_nano_defconfig文件,然后将其放到arch/arm/configs/目录下
2.2.2、使配置文件生效。执行以下命令:

扫描二维码关注公众号,回复: 15245020 查看本文章

make linux-licheepi_nano_defconfig
make menuconfig

无需操作,直接通过Tab键选择保存和退出即可。

3、因为文件系统会放到SD卡上,修改SD卡设备树信息。
3.1、修改suniv-f1c100s.dtsi文件
打开linux-5.7.1/arch/arm/boot/dts/suniv-f1c100s.dtsi文件。
在墨云大佬的文档中,有以下一段话。我的代码里面有,需要自己注意一下。
首先添加头文件(如果有则忽略)
#include <dt-bindings/clock/suniv-ccu-f1c100s.h>
#include <dt-bindings/reset/suniv-ccu-f1c100s.h>

在soc->pio 下(第100行)添加如下代码:

mmc0_pins: mmc0-pins {
    pins = “PF0”, “PF1”, “PF2”, “PF3”, “PF4”, “PF5”;
    function = “mmc0”;
};

在soc下(第113行)添加如下代码:

mmc0: mmc@1c0f000 {
    compatible = “allwinner,suniv-f1c100s-mmc”,
                            “allwinner,sun7i-a20-mmc”;
    reg = <0x01c0f000 0x1000>;
    clocks = <&ccu CLK_BUS_MMC0>,
                    <&ccu CLK_MMC0>,
                    <&ccu CLK_MMC0_OUTPUT>,
                    <&ccu CLK_MMC0_SAMPLE>;
    clock-names = “ahb”,
                            “mmc”,
                            “output”,
                            “sample”;
    resets = <&ccu RST_BUS_MMC0>;
    reset-names = “ahb”;
    interrupts = <23>;
    pinctrl-names = “default”;
    pinctrl-0 = <&mmc0_pins>;
    status = “disabled”;
    #address-cells = <1>;
    #size-cells = <0>;
};

完成之后,保存退出。

3.2、修改suniv-f1c100s-licheepi-nano.dts文件
打开linux-5.7.1/arch/arm/boot/dts/suniv-f1c100s-licheepi-nano.dts文件。
在第21行添加以下代码:

reg_vcc3v3: vcc3v3 {
    compatible = “regulator-fixed”;
    regulator-name = “vcc3v3”;
    regulator-min-microvolt = <3300000>;
    regulator-max-microvolt = <3300000>;
};

在文档的最后也就是第35行添加以下代码:

&mmc0 {
    vmmc-supply = <&reg_vcc3v3>;
    bus-width = <4>;
    broken-cd;
    status = “okay”;
};

完成之后,保存退出。

4、将Debug串口由uart0改为uart1
4.1、修改suniv-f1c100s.dtsi文件
打开linux-5.7.1/arch/arm/boot/dts/suniv-f1c100s.dtsi文件。
将第95行改为如下:

uart1_pins_a: uart1-pins-pa {
    pins = “PA2”, “PA3”;
    function = “uart1”;
};

完成之后,保存退出。

4.2、修改suniv-f1c100s-licheepi-nano.dts文件
打开linux-5.7.1/arch/arm/boot/dts/suniv-f1c100s-licheepi-nano.dts文件。
将第14行改为如下:

serial1 = &uart1;

将第18行改为如下:

stdout-path = “serial1:115200n8”;

将第29~33行改为如下:

&uart1 {
    pinctrl-names = “default”;
    pinctrl-0 = <&uart1_pins_a>;
    status = “okay”;
};

完成之后,保存退出。

5、开始进行编译。
执行以下命令(根据编译环境实际条件修改):

make -j4

6、编译完成,就会在在linux-5.7.1/arch/arm/boot目录下生成内核文件:zImage,在linux-5.7.1/arch/arm/boot/dts目录下设备树文件:suniv-f1c100s-licheepi-nano.dtb 。
以下操作必须保证板载flash为空没有烧录u-boot;如果插入了SD卡,则SD中不能烧录u-boot。
将u-boot-sunxi-with-spl.bin,zImage,suniv-f1c100s-licheepi-nano.dtb下载到sunxi-fel.exe同级目录下。
用两根type-c线将电脑与CherryPi-F1C200S连接起来,在串口终端以115200 8n1配置打开串口。
按一下板载RST键后,在windows命令终端进入到sunxi-fel.exe同级目录下,执行以下命令可以看到串口终端有log打印(因为没有文件系统,最终会卡住停止打印log):

sunxi-fel -p uboot u-boot-sunxi-with-spl.bin write 0x80008000 zImage write 0x80c08000 suniv-f1c100s-licheepi-nano.dtb

QQ:763314235,会在第一时间处理。

猜你喜欢

转载自blog.csdn.net/GJF712/article/details/125213150
今日推荐