全志V3s开发板避坑指南:手把手教你配置boot.scr和script.bin(附完整代码)

张开发
2026/6/20 14:42:52 15 分钟阅读
全志V3s开发板避坑指南:手把手教你配置boot.scr和script.bin(附完整代码)
全志V3s开发板实战配置手册从boot.scr到script.bin的深度解析第一次拿到全志V3s开发板时那种既兴奋又忐忑的心情至今记忆犹新。作为一款性价比极高的嵌入式处理器V3s在物联网和智能硬件领域有着广泛的应用。但当我真正开始配置启动参数时才发现从u-boot到内核启动的每一步都暗藏玄机。本文将分享我在LicheePi Zero等V3s开发板上积累的实战经验特别是boot.scr和script.bin这两个关键文件的配置技巧。1. 开发环境搭建与工具准备在开始配置之前确保你的开发环境已经准备就绪。不同于x86平台的开发嵌入式Linux开发需要一些特定的工具链和工具。首先需要安装交叉编译工具链。对于V3s这类ARM Cortex-A7架构的芯片推荐使用Linaro或官方提供的工具链sudo apt-get install gcc-arm-linux-gnueabihf接下来是几个关键工具的安装这些工具在后续配置中将起到至关重要的作用mkimage用于将boot.cmd转换为boot.scrfex2bin/bin2fex用于sys_config.fex和script.bin之间的转换获取这些工具的最简单方式是从全志官方资源或社区维护的仓库中获取git clone https://github.com/linux-sunxi/sunxi-tools cd sunxi-tools make sudo make install提示在编译sunxi-tools时可能会缺少一些依赖库可以通过sudo apt-get install libusb-1.0-0-dev等命令安装所需依赖。工具安装完成后建议创建一个专门的工作目录来管理V3s的相关文件~/v3s_workspace/ ├── boot/ # 存放boot相关文件 ├── fex/ # 存放sys_config.fex ├── kernel/ # 内核源码 └── uboot/ # u-boot源码2. boot.scr的深度解析与实战配置boot.scr是u-boot启动过程中读取的脚本文件它决定了内核如何被加载以及传递哪些参数。理解它的工作原理可以避免很多启动问题。2.1 boot.cmd文件结构剖析boot.scr是由boot.cmd通过mkimage工具生成的因此我们需要首先理解boot.cmd的编写规则。一个典型的boot.cmd包含以下几个关键部分# 设置内核启动参数 setenv bootargs consolettyS0,115200 root/dev/mmcblk0p2 rootwait panic10 earlyprintk rw # 加载内核映像 load mmc 0:1 0x41000000 zImage # 加载设备树文件 load mmc 0:1 0x41800000 sun8i-v3s-licheepi-zero.dtb # 启动内核 bootz 0x41000000 - 0x41800000每个部分的注意事项bootargs参数consolettyS0,115200指定调试串口V3s通常是ttyS0root/dev/mmcblk0p2根文件系统位置p2表示第二分区panic10内核崩溃后的重启延迟earlyprintk早期内核打印便于调试加载地址内核(zImage)通常加载到0x41000000设备树(dtb)加载到0x41800000这些地址不能与内存其他用途冲突2.2 常见问题与解决方案在实际配置中经常会遇到以下问题问题1内核加载后无法启动可能原因加载地址不正确设备树不匹配内存配置错误解决方案# 在u-boot命令行中测试内存访问 md 0x41000000 # 检查设备树是否正确加载 fdt addr 0x41800000 fdt print问题2LCD屏幕无法正常显示需要在bootargs中添加视频参数setenv video-mode sunxi:480x272-1860,monitorlcd setenv lcd-mode x:480,y:272,depth:18,pclk_khz:10000,le:42,ri:8,up:11,lo:4,hs:1,vs:1,sync:3,vmode:0 setenv stderr serial,lcd setenv stdout serial,lcd2.3 生成boot.scr的完整流程准备好boot.cmd后使用以下命令生成boot.scrmkimage -C none -A arm -T script -d boot.cmd boot.scr然后将boot.scr复制到TF卡的第一分区sudo cp boot.scr /media/user/boot/注意确保TF卡的第一分区是FAT格式因为u-boot只能读取FAT文件系统。3. script.bin的配置艺术script.bin是全志平台特有的配置文件由sys_config.fex转换而来包含了SoC的各种硬件配置信息。3.1 sys_config.fex关键配置解析sys_config.fex是一个文本文件包含了丰富的配置选项。以下是一些关键配置项LCD显示配置[lcd0_para] lcd_used 1 lcd_driver_name default_lcd lcd_x 480 # 水平分辨率 lcd_y 272 # 垂直分辨率 lcd_dclk_freq 1 # 像素时钟频率 lcd_hbp 46 # 水平后沿 lcd_ht 1055 # 水平总时间 lcd_vbp 23 # 垂直后沿 lcd_vt 525 # 垂直总时间触摸屏配置[ctp_para] ctp_used 1 ctp_name gt911_m785q6 ctp_twi_id 0 ctp_twi_addr 0x48 ctp_screen_max_x 480 ctp_screen_max_y 272 ctp_exchange_x_y_flag 1 # 交换X/Y坐标GPIO配置[gpio_para] gpio_used 1 gpio_num 2 gpio_pin_1 port:PG001defaultdefault1 gpio_pin_2 port:PG011defaultdefault03.2 配置技巧与常见陷阱内存配置 V3s的内存配置非常关键错误的配置会导致系统不稳定或无法启动。确保[dram_para]部分与你的硬件匹配[dram_para] dram_clk 360 dram_type 3 dram_zq 0x3b dram_odt_en 1时钟配置 时钟配置错误会导致外设工作异常。[clock_para]部分需要谨慎修改[clock_para] pll_video 0x81004107 pll_ve 0x81001003电源管理 不正确的电源配置可能导致系统不稳定[power_sply] dc1sw_vol 3000 aldo1_vol 3300 aldo2_vol 18003.3 生成script.bin的完整流程配置好sys_config.fex后使用以下命令生成script.binfex2bin sys_config.fex script.bin然后将script.bin复制到TF卡的第一分区sudo cp script.bin /media/user/boot/验证script.bin是否正确生成的小技巧bin2fex script.bin test.fex diff sys_config.fex test.fex4. 调试技巧与故障排除即使按照上述步骤配置仍然可能会遇到各种问题。这里分享一些实用的调试技巧。4.1 u-boot环境变量操作u-boot提供了丰富的命令来检查和修改环境变量# 打印所有环境变量 printenv # 设置新的环境变量 setenv my_var value # 保存环境变量 saveenv # 测试boot.scr source ${loadaddr}4.2 常见启动问题排查表现象可能原因解决方案卡在u-bootboot.scr错误检查boot.cmd语法重新生成boot.scr内核panic设备树不匹配确认dtb文件与硬件版本一致LCD无显示时钟或时序配置错误检查lcd0_para参数特别是时序值触摸屏不工作I2C地址错误使用i2cdetect检查设备地址4.3 内存与地址调试技巧当遇到内存相关问题时可以使用以下方法调试# 测试内存读写 mw 0x41000000 0x12345678 md 0x41000000 # 检查设备树加载 fdt addr 0x41800000 fdt print /memory4.4 使用网络启动进行快速调试为了加快调试速度可以配置网络启动setenv serverip 192.168.1.100 setenv ipaddr 192.168.1.200 tftp 0x41000000 zImage tftp 0x41800000 dtb bootz 0x41000000 - 0x418000005. 高级配置与性能优化当基本功能正常工作后可以考虑进行一些高级配置和性能优化。5.1 内核启动参数优化通过调整bootargs可以优化系统性能# 添加如下参数可以提升性能 setenv bootargs ${bootargs} initcall_debug ignore_loglevel5.2 文件系统选项根据使用的文件系统类型可以添加特定的挂载选项# 对于ext4文件系统 setenv bootargs ${bootargs} rootfstypeext4 datawriteback # 对于overlayfs setenv bootargs ${bootargs} rootfstypeoverlay5.3 电源管理配置优化电源管理可以显著降低功耗[power_sply] aldo1_vol 3300 aldo2_vol 1800 aldo3_vol 3300 dldo1_vol 3300 dldo2_vol 33005.4 内核模块预加载如果需要预加载某些内核模块可以在sys_config.fex中配置[module_para] module_num 2 module_path_1 /lib/modules/g_serial.ko module_path_2 /lib/modules/sunxi_emac.ko经过多次项目实践我发现V3s开发板最棘手的问题往往不是配置本身而是硬件差异带来的细微变化。建议在开始任何新项目前先花时间彻底了解自己的硬件规格记录下所有关键参数这将为后续开发节省大量时间。

更多文章