1. 全志V3s启动配置的核心概念
当你拿到一块全志V3s开发板准备开发时,最先要搞明白的就是系统启动流程中的两个关键文件:boot.scr和script.bin。这两个文件就像是你给开发板写的"使用说明书",告诉它该怎么启动、用什么参数工作。
boot.scr主要负责向U-Boot传递启动参数,比如内核加载地址、设备树位置、控制台设置等。它实际上是由一个文本格式的boot.cmd文件通过mkimage工具生成的。我刚开始接触时经常搞混这两个文件的关系,后来发现可以这样理解:boot.cmd是"源代码",boot.scr是"编译后的可执行文件"。
script.bin则包含了SoC硬件的工作参数配置,比如GPIO状态、DRAM时序、显示输出设置等。它是由sys_config.fex文本配置文件通过fex2bin工具转换而来的二进制文件。在实际项目中,我遇到过因为DRAM参数配置不当导致系统不稳定的情况,这时候就需要仔细调整sys_config.fex中的相关参数。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 创建和配置boot.cmd文件
2.1 boot.cmd基础结构
boot.cmd本质上是一个U-Boot命令脚本,它的核心作用是设置启动环境变量并执行内核加载。下面是一个典型的boot.cmd示例:
bash复制setenv bootargs console=ttyS0,115200 panic=5 rootwait root=/dev/mmcblk0p2 earlyprintk rw
setenv bootm_boot_mode sec
setenv machid 1029
load mmc 0:1 0x41000000 uImage
load mmc 0:1 0x41d00000 script.bin
bootm 0x41000000
这段脚本做了以下几件事:
- 设置bootargs参数,指定控制台为串口0,波特率115200
- 定义根文件系统在TF卡的第二分区(/dev/mmcblk0p2)
- 设置启动失败后5秒重启(panic=5)
- 从TF卡第一分区加载内核镜像(uImage)到内存地址0x41000000
- 加载script.bin到0x41d00000
- 最后从内核地址启动系统
