准备工作
-
硬件需求
- S3C2440开发板(如友善之臂Mini2440)
- 12V/1A直流电源
- J-Link或USB转串口调试器
- 网线(用于TFTP/NFS传输)
- SD卡或NOR Flash(可选备用启动方式)
-
软件环境
- 交叉编译工具链(推荐
arm-linux-gcc-4.4.3
) - 源码包:U-Boot(2020+版本)、Linux内核(4.19+)、Busybox(1.35+)
- 烧录工具:J-Flash(NOR启动)或
oflash
(NAND启动) - TFTP服务器(如
tftpd-hpa
)
- 交叉编译工具链(推荐
构建系统组件
步骤1:编译U-Boot
tar xvf u-boot-202x.xx.tar.gz cd u-boot make s3c2440_defconfig # 使用2440默认配置 make CROSS_COMPILE=arm-linux- # 生成u-boot.bin
关键配置:
CONFIG_S3C2440=y
(启用SoC支持)CONFIG_ENV_OFFSET=0x30000
(环境变量存储偏移)
步骤2:编译Linux内核
make mini2440_defconfig # 板级预设配置 make zImage CROSS_COMPILE=arm-linux- -j4
驱动必选项:
- NAND Flash驱动:
MTD_NAND_S3C2410
- 网卡驱动:
DM9000
(需确认板载芯片)
步骤3:制作根文件系统
cd busybox make menuconfig # 启用静态编译:Settings → Build static binary make installmkdir rootfs && cd rootfs cp -r busybox/_install/* . mkdir proc sys dev etc
推荐文件系统:
- YAFFS2(NAND专用):
mkyaffs2image rootfs rootfs.yaffs2
- UBIFS(更现代):
mkfs.ubifs -r rootfs -m 2048 -e 129024 -c 2000 -o rootfs.ubifs
烧录实战流程
方案A:NOR Flash启动(适用于首次烧写)
- 连接J-Link到板载JTAG口
- 使用J-Flash擦除NOR Flash(地址范围
0x00000000~0x00200000
) - 烧写
u-boot.bin
到0x0
- 重启开发板,串口输出按空格进入U-Boot命令行
方案B:U-Boot网络烧写(已存在U-Boot时)
- 配置TFTP服务器
将zImage
和rootfs.yaffs2
放入/tftpboot
- U-Boot传输文件
setenv ipaddr 192.168.1.123 # 开发板IP setenv serverip 192.168.1.100 # TFTP服务器IP tftp 0x31000000 zImage # 内核加载到内存 tftp 0x32000000 rootfs.yaffs2 # 文件系统加载
- 烧写NAND Flash
nand erase 0x100000 0x500000 # 擦除内核分区(示例地址) nand write 0x31000000 0x100000 0x500000 nand erase 0x600000 0xFA00000 # 擦除文件系统分区 nand write.yaffs 0x32000000 0x600000 $(filesize)
启动参数配置
在U-Boot中设置启动命令:
setenv bootcmd "nand read 0x31000000 0x100000 0x500000; bootm 0x31000000" setenv bootargs "root=/dev/mtdblock2 rootfstype=yaffs2 console=ttySAC0,115200" saveenv # 保存配置
故障排查
- 内核无法启动:检查
bootargs
中的MTD分区号是否与烧录位置匹配(通过cat /proc/mtd
验证) - 文件系统挂载失败:确认文件系统类型(
yaffs2
/ubifs
)与内核配置一致 - 网络不通:检查DM9000驱动配置及PHY地址(常见为
CONFIG_DM9000_BASE=0x20000000
)
安全提示
- 操作前备份:使用
nand dump
导出原始固件 - 避免电压不稳:烧录时断开非必要外设
- 优先使用NOR启动:变砖后可通过JTAG恢复
引用说明
- U-Boot官方文档:https://www.denx.de/wiki/U-Boot
- Linux内核S3C2440配置参考:arch/arm/configs/s3c2440_defconfig
- S3C2440芯片手册:Samsung “S3C2440A 32-Bit CMOS Microcontroller User’s Manual”
- 文件系统工具:mkyaffs2image (http://www.aleph1.co.uk/yaffs) / mkfs.ubifs (http://www.linux-mtd.infradead.org)
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/6125.html