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

准备工作

  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文件权限如何查看文件夹权限设置

    Linux中,使用ls -l命令可查看文件和文件夹的权限设置。

    2025年8月15日
    1400
  • Linux操作系统如何连接无线网络?

    Linux操作系统连接无线网络的方式主要有图形界面和命令行两种,具体操作取决于用户使用的桌面环境和个人习惯,无论是新手还是进阶用户,掌握这两种方法都能在不同场景下高效完成网络连接,以下将从准备工作、具体操作步骤、常见问题解决等方面进行详细说明,连接前的准备工作在尝试连接无线网络前,需确保系统满足基本条件,避免因……

    2025年8月22日
    1300
  • linux如何停止后台脚本

    Linux 中,可以使用 kill 命令停止后台脚本,例如先

    2025年8月13日
    1800
  • Linux操作系统中如何查看当前的主机名hostname?

    在Linux系统中,hostname(主机名)是标识网络中一台计算机的名称,它用于网络通信、服务认证、日志记录等多种场景,准确查看当前系统的hostname是系统管理和网络配置的基础操作,本文将详细介绍Linux系统中查看hostname的多种方法,包括命令行工具、配置文件读取及系统信息查询等,并对比不同方法的……

    2025年8月28日
    1200
  • Linux下用浏览器还是命令行访问网页?

    图形化浏览器(推荐普通用户使用)安装浏览器Firefox(多数Linux发行版预装):sudo apt install firefox # Debian/Ubuntusudo dnf install firefox # Fedora/CentOSChrome/Chromium:# Chromium(开源版)su……

    2025年6月30日
    3600

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信