如何快速创建基础目录结构

准备工作

  1. 硬件需求

    • S3C2440开发板(如友善之臂Mini2440)
    • 12V/1A直流电源
    • J-Link或USB转串口调试器
    • 网线(用于TFTP/NFS传输)
    • SD卡或NOR Flash(可选备用启动方式)
  2. 软件环境

    • 交叉编译工具链(推荐 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启动(适用于首次烧写)

  1. 连接J-Link到板载JTAG口
  2. 使用J-Flash擦除NOR Flash(地址范围 0x00000000~0x00200000
  3. 烧写 u-boot.bin0x0
  4. 重启开发板,串口输出按空格进入U-Boot命令行

方案B:U-Boot网络烧写(已存在U-Boot时)

  1. 配置TFTP服务器
    zImagerootfs.yaffs2 放入 /tftpboot
  2. U-Boot传输文件
    setenv ipaddr 192.168.1.123    # 开发板IP
    setenv serverip 192.168.1.100  # TFTP服务器IP
    tftp 0x31000000 zImage         # 内核加载到内存
    tftp 0x32000000 rootfs.yaffs2  # 文件系统加载
  3. 烧写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

安全提示

  1. 操作前备份:使用 nand dump 导出原始固件
  2. 避免电压不稳:烧录时断开非必要外设
  3. 优先使用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

(0)
酷番叔酷番叔
上一篇 2025年7月2日 17:54
下一篇 2025年7月2日 18:17

相关推荐

  • Linux下载卡住?怎样秒停!

    停止命令行下载工具(如 wget/curl)直接中断当前下载在运行wget或curl的终端中,按 Ctrl + C 强制终止进程,示例:wget https://example.com/large-file.zip # 下载中…# 按 Ctrl + C 立即停止恢复未完成的下载(可选)wget支持断点续传……

    2025年8月4日
    3800
  • Linux中如何删除同一用户组的多个文件?

    在Linux系统中,文件和目录的访问权限管理是系统安全的核心之一,而用户组(Group)作为权限管理的基础单元,常用于批量管理具有相同访问需求的文件,当需要删除同一用户组的文件时,需结合文件属性查询、批量筛选及安全删除操作,确保操作精准且避免误删,本文将详细讲解Linux中删除同一group文件的完整流程、关键……

    2025年8月25日
    3400
  • Linux忘记root密码怎么办?重置方法有哪些?

    忘记Linux系统的root密码是管理员可能遇到的紧急情况,但通过正确的方法可以安全恢复,本文将分场景详细介绍解决步骤,涵盖本地系统、Live介质救援及云服务器场景,并提供注意事项和FAQs,本地系统可进入GRUB菜单(常见场景)当系统能正常启动到GRUB引导菜单时,可通过修改内核参数进入单用户模式或救援模式……

    2025年9月21日
    2000
  • linux 如何判断硬连接

    Linux 中,可通过 ls -l查看文件属性,若两个

    2025年8月9日
    3200
  • linux如何把一个文件挂载到内存

    使用mount –bind命令将文件挂载到内存中的tmpfs文件系统,

    2025年8月18日
    3400

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信