当前位置: 首页 > news >正文

荔枝派Lichee Nano全志F1C100s烧录避坑指南:从sunxi-tools安装到Nor Flash分区实战

荔枝派Lichee Nano全志F1C100s SPI Flash烧录全流程实战指南

1. 开发板基础认知与环境准备

荔枝派Lichee Nano是一款基于全志F1C100s处理器的超小型开发板,尺寸仅2.54cm×3.3cm,却集成了丰富的外设接口。这款开发板特别适合嵌入式Linux学习和轻量级应用开发,其核心特点包括:

  • 处理器架构:ARM9核心,主频高达900MHz
  • 内存配置:内置32MB DDR1内存
  • 存储支持:支持SPI Nor Flash启动和TF卡启动
  • 显示接口:原生支持RGB LCD,最高分辨率1024×600
  • 外设资源:3×UART、2×SPI、3×TWI、USB OTG等

开发环境搭建步骤

  1. 操作系统选择

    • 推荐使用Ubuntu 18.04/20.04 LTS版本
    • Windows用户可考虑WSL2或虚拟机方案
  2. 基础工具链安装

    sudo apt update sudo apt install -y git make gcc g++ libncurses5-dev libncursesw5-dev \ libusb-1.0-0-dev zlib1g-dev libssl-dev swig python-dev python3-dev
  3. 交叉编译工具配置

    wget https://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/arm-linux-gnueabi/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabi.tar.xz tar -xvf gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabi.tar.xz export PATH=$PATH:$(pwd)/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabi/bin

提示:建议将交叉编译工具路径添加到~/.bashrc中永久生效

2. 烧录工具链深度解析

2.1 sunxi-tools定制化编译

全志官方提供的sunxi-tools是烧录过程的核心工具,但需要针对F1C100s进行特殊配置:

git clone -b f1c100s-spiflash https://github.com/Icenowy/sunxi-tools.git cd sunxi-tools make && sudo make install

常见编译问题解决方案

错误提示解决方法相关命令
libusb.h not found安装libusb开发库sudo apt install libusb-1.0-0-dev
zlib.h not found安装zlib开发库sudo apt install zlib1g-dev
openssl/bio.h缺失安装openssl开发包sudo apt install libssl-dev

2.2 FEL模式操作原理

F1C100s的FEL模式是芯片内置的USB下载模式,其工作机制如下:

  1. 进入条件

    • 全新板子首次上电自动进入
    • 已烧录系统的板子需短接SPI Flash的CS引脚到地后上电
  2. 模式验证

    sudo sunxi-fel ver

    正常输出应包含芯片型号(F1C100s)和版本信息

  3. 两种烧录方式对比

烧录类型命令格式特点适用场景
临时运行sunxi-fel uboot <file>不写入Flash,断电消失开发调试阶段
永久烧录sunxi-fel -p spiflash-write 0 <file>写入SPI Flash产品发布

3. SPI Flash分区策略精讲

3.1 典型分区方案设计

针对16MB SPI Flash的推荐分区方案:

# 分区表示例 (MBR格式) 分区序号 分区大小 分区作用 地址空间及分区名 mtd0 1MB spl+uboot 0x0000000-0x0100000 : "uboot" mtd1 64KB dtb文件 0x0100000-0x0110000: "dtb" mtd2 4MB linux内核 0x0110000-0x0510000 : "kernel" mtd3 剩余空间 根文件系统 0x0510000-0x0c00000 : "rootfs" mtd4 自定义 用户区 0x0c00000-0x1000000 : "user"

分区设计考量因素

  1. uboot分区:必须包含SPL(Secondary Program Loader),通常占用1MB
  2. dtb分区:设备树二进制文件,64KB足够
  3. kernel分区:根据内核压缩方式预留空间(zImage通常3-4MB)
  4. rootfs分区:JFFS2格式需考虑擦除块大小对齐

3.2 设备树分区配置实例

在Linux内核设备树中需同步配置SPI Flash分区信息:

&spi0 { flash: xt25f128b@0 { 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>; }; }; }; };

4. 多镜像烧录实战流程

4.1 U-Boot烧录关键步骤

  1. 编译配置

    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- licheepi_nano_spiflash_defconfig make ARCH=arm menuconfig
  2. 关键配置项

    • 启用SPI Flash支持
    • 设置正确的LCD参数(如有屏幕)
    • 配置bootcmd和bootargs
  3. 编译与烧录

    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j$(nproc) sudo sunxi-fel -p spiflash-write 0 u-boot-sunxi-with-spl.bin

4.2 内核与根文件系统烧录

内核烧录命令

sudo sunxi-fel -p spiflash-write 0x0110000 arch/arm/boot/zImage

设备树烧录

sudo sunxi-fel -p spiflash-write 0x0100000 arch/arm/boot/dts/suniv-f1c100s-licheepi-nano.dtb

根文件系统制作

mkfs.jffs2 -s 0x100 -e 0x10000 --pad=0xAF0000 -d rootfs/ -o jffs2.img

烧录rootfs

sudo sunxi-fel -p spiflash-write 0x0510000 jffs2.img

5. 高频问题排查手册

5.1 FEL模式识别失败

现象:执行sunxi-fel ver无输出

解决方案

  1. 确认USB数据线连接正常
  2. 检查是否短接SPI Flash的CS引脚
  3. 尝试更换USB端口或主机
  4. 检查udev规则是否配置正确

5.2 内核启动卡住

常见错误日志及解决方法

[ 1.476051] VFS: Cannot open root device "mtdblock3" or unknown-block(31,3)
  • 原因:内核未配置MTD块设备支持
  • 解决:启用CONFIG_MTD_BLOCKCONFIG_JFFS2_FS
No SPI flash selected. Please run `sf probe'
  • 原因:uboot SPI驱动未正确初始化
  • 解决:检查设备树SPI配置和uboot环境变量

5.3 显示异常处理

对于LCD屏幕显示问题,需要检查:

  1. 设备树参数

    • 分辨率、时序参数
    • 像素格式(bpp)设置
    • PWM背光控制引脚
  2. 内核配置

    Device Drivers -> Graphics support -> Frame buffer Devices -> Enable FB Device -> Sunxi Display Engine

6. 进阶技巧与性能优化

6.1 烧录速度提升

通过调整SPI时钟频率提高烧录速度:

sudo sunxi-fel -p spiflash-write 0 u-boot.bin spi-max-frequency=50000000

6.2 系统启动加速

  1. uboot优化

    • 禁用不必要的命令
    • 预置环境变量
    • 启用CONFIG_SKIP_LOWLEVEL_INIT
  2. 内核裁剪

    make ARCH=arm menuconfig
    • 移除不需要的驱动和模块
    • 启用CONFIG_EMBEDDED

6.3 双存储方案设计

SPI Flash+TF卡混合启动方案

  • uboot和内核存放在SPI Flash
  • 根文件系统放在TF卡
  • 优点:兼顾启动速度和存储容量

实现方法: 修改uboot的bootcmd:

setenv bootargs 'console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait rw' saveenv

在实际项目中,根据NAND Flash的型号可能需要调整SPI控制器参数。例如对于Winbond W25Q128FV系列Flash,需要在驱动中添加设备ID:

{ "w25q128fv", INFO(0xef4018, 0, 64 * 1024, 256, 0) },
http://www.jsqmd.com/news/527426/

相关文章:

  • Qwen3-1.7B快速入门:用LangChain三行代码调用,开启你的第一个AI对话
  • OpenWrt固件深度解析:从入门到精通的全方位指南
  • 【Go开发环境搭建实战】从零到一:VSCode与Go的完美融合指南
  • Pi0 VLA模型效果展示:俯视/侧视/主视三图协同提升抓取成功率对比
  • translategemma-4b-it算力利用率:多并发请求下GPU 92%持续利用率调优教程
  • MusePublic开发者实测:Windows平台CUDA 12.1兼容性完整报告
  • 京东 E 卡回收避坑指南:教你安全合规变现不踩坑 - 团团收购物卡回收
  • 南京杰达家居中央空调清洗维保:清凉不折腾,省电更安心 - 博客万
  • 苏州小区门禁系统哪家好?2025智慧社区门禁系统选型参考 - 品牌观察员小捷
  • 别再让用户手动输密码了!用微信小程序扫码连WiFi完整实现方案(附iOS/Android兼容性处理代码)
  • 从无人机TIF到Cesium三维地球:一套完整的影像切片与发布工作流实战
  • Ostrakon-VL-8B详细步骤:从零配置到门店环境分析全流程解析
  • 【深度解析】开豆制品加工厂需要的成套设备:核心组成、工作原理与实践路径 - 速递信息
  • 2026年除氟剂供货商推荐:高效/液体/深度除氟剂厂家精选 - 品牌推荐官
  • 基于Git-RSCLIP的跨语言图文检索系统设计与实现
  • NineData与Bytebase:面向分析查询的敏感数据脱敏治理怎么选?
  • 闲置京东 E 卡别浪费!这样处理省心又划算 - 团团收购物卡回收
  • 灵感画廊实战落地:自媒体创作者日均50+高质量配图生产流程
  • Phi-3-Mini-128K GPU算力优化教程:bfloat16+device_map双策略显存降低42%
  • WordPress Bricks Builder主题RCE漏洞复现指南(CVE-2024-25600)含Python和Nuclei POC
  • 使用 Qt C++与 Tesseract 搭建 OCR 识别项目
  • 2026年冷库货架厂家推荐:钢制冷库货架/冷链货架/巧固货架专业供应商精选 - 品牌推荐官
  • 天猫购物卡急速回收,一分钟搞定! - 团团收购物卡回收
  • 2026年青岛电缆厂家哪家好?华宇牌华强电缆用国标品质领跑行业 - 速递信息
  • 浦语灵笔2.5-7B精彩案例:教育场景下初中数学题截图的分步解题描述
  • 校园网频繁断网?用BAT脚本自动重连的保姆级教程(附Chrome自动登录配置)
  • 2026任丘无机布防火卷帘品牌深度评测报告 - 资讯焦点
  • 单一事实来源在数据架构中的实践
  • 分析2026年江苏好用的菱形网厂家,正规品牌推荐 - 工业推荐榜
  • 动力电池出海:如何把海量AI质检图像从存储负担变为数据资产? - 杉岩数据