f1c100s kernel调试记录

本文介绍如何通过SPI Flash启动Lichee Pi Nano开发板,包括修改设备树、配置内核及解决启动过程中遇到的问题。具体步骤涉及内核.config文件设置、设备树suniv-f1c100s-licheepi-nano.dts的修改、内核配置选项调整等。

内核地址https://github.com/Lichee-Pi/linux/tree/nano-4.14-exp
分支 nano-4.14-exp
在这里插入图片描述
内核的.config文件 根据官方提供的http://nano.lichee.pro/build_sys/kernel.html
在这里插入图片描述

spi flash启动

  1. 修改设备树
    arch/arm/boot/dts/suniv-f1c100s-licheepi-nano.dts
    将原来的&spi0{…}替换为:

    	&spi0 {
    	    pinctrl-names = "default";
    	    pinctrl-0 = <&spi0_pins_a>;
    	    status = "okay";
    	    spi-max-frequency = <50000000>;
    	    flash: w25q128@0 {
    	        #address-cells = <1>;
    	        #size-cells = <1>;
    	        compatible = "winbond,w25q128", "jedec,spi-nor";
    	        reg = <0>;   
    	        spi-max-frequency = <50000000>;
    	        partitions {
    	            compatible = "fixed-partitions";
    	            #address-cells = <1>;
    	            #size-cells = <1>;
    	
    	            partition@0 {
    	                label = "u-boot";
    	                reg = <0x000000 0x100000>;
    	                read-only;
    	            };
    	
    	            partition@100000 {
    	                label = "dtb";
    	                reg = <0x100000 0x10000>;
    	                read-only;
    	            };
    	
    	            partition@110000 {
    	                label = "kernel";
    	                reg = <0x110000 0x400000>;
    	                read-only;
    	            };
    	
    	            partition@510000 {
    	                label = "rootfs";
    	                reg = <0x510000 0xAF0000>;
    	            };
    	        };
    	    };
    	};   
    

    重新编译设备树

    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- dtbs -j4
    
  2. 配置内核
    (1) make ARCH=arm menuconfig
    (2) 勾选 File systems ‣ Miscellaneous filesystems ‣ Journalling Flash File System v2 (JFFS2) support
    (3) 修改源码下的 ./drivers/mtd/spi-nor.c
    vi ./drivers/mtd/spi-nor/spi-nor.c
    注释掉以下一行:
    //{ "w25q128", INFO(0xef4018, 0, 64 * 1024, 256, SECT_4K) },
    在这一行下面增加一项:

      { "w25q128", INFO(0xef4018, 0, 64 * 1024, 256, 0) },
    

    (4) 重新编译内核

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

问题

Waiting for root device /dev/mtdblock3…

在这里插入图片描述
解决:
内核配置中增加
在这里插入图片描述
caching block device access to MTD devices必须加 我就是卡在这
-CONFIG_MTD_BLKDEVS=y
-CONFIG_MTD_BLOCK=y

VFS: Cannot open root device “mtdblock3” or unknown-block(31,3): error -19

这个问题是文件系统格式导致的,在内核配置中增加 jffs2 的支持
在这里插入图片描述

这个是我最后一个坑 启动成功了。

设备树使能

dtb-$(CONFIG_MACH_SUNIV) += \
	suniv-f1c100s-licheepi-nano.dtb
### F1C100S 芯片 DBG调试方法 F1C100S 是一款基于 ARM Cortex-A7 的处理器,广泛应用于嵌入式设备开发中。对于该芯片的调试(DBG),通常涉及硬件接口配置、软件工具链设置以及具体的调试流程。 #### 硬件接口支持 F1C100S 支持多种调试接口,主要包括 JTAG 和 UART 接口。JTAG 是一种标准的硬件调试协议,适用于更深入的功能分析;而 UART 则常用于轻量级的日志输出和基本交互[^2]。 - **JTAG 配置**: 使用 JTAG 进行调试时,需确保目标板上的 JTAG 引脚已正确连接至调试器(如 OpenOCD 或 Segger J-Link)。具体引脚定义可参考官方数据手册中的 GPIO 功能分配表[^3]。 - **UART 设置**: 如果仅需简单的串口打印功能,则可通过配置 USART 模块实现。波特率一般设为 115200 bps,默认参数为 8N1 (8-bit data, no parity, 1 stop bit)[^4]。 #### 软件环境搭建 为了有效开展 F1C100S 的调试工作,建议构建如下软件环境: - **交叉编译工具链**: 安装适合 ARM 架构的 GCC 工具链版本,例如 Linaro 提供的最新稳定版[^5]。 - **OpenOCD**: 此开源项目能够配合 GDB 实现远程目标机控制。针对 F1C100S 平台,可能需要自定义 target.cfg 文件来适配特定寄存器布局[^6]。 ```bash openocd -f interface/ftdi/[your_jtag_adapter].cfg \ -f board/friendlyarm_f1c100s.cfg ``` 上述命令启动 OpenOCD 服务端程序,并加载指定的硬件适配器与电路板描述文件[^7]。 - **GDB Debugger**: 结合 GNU Project Debugger 可以完成断点管理、变量监视等功能。通过 TCP/IP 协议连接到运行中的 OpenOCD 实例上执行联合调试操作[^8]。 ```bash target remote localhost:3333 monitor reset halt load continue ``` 以上指令序列展示了如何建立会话并下载应用程序映像到内存地址空间内再继续执行[^9]。 #### 常见问题排查技巧 当遇到难以定位的问题时,可以尝试以下几种策略: - 检查电源供应是否正常; - 核实所有必要的初始化代码片段均已包含; - 查阅错误日志消息以便快速缩小范围; - 对比相似案例寻求解决方案提示[^10]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值