ARM-LINUX基础
+ -

ARM9的启动方式及Bootloader的下载

2025-07-22 14 0

下面详细说明 ARM9(以经典的 S3C2440 芯片为例)的两种主要启动方式、配置方法,以及在这些模式下下载 Bootloader 所使用的工具。

S3C2440 的启动方式由 OM0OM1 这两个引脚的电平状态决定。

工作模式 OM0 OM1 备注
NOR Flash 启动 0 0 JTAG开发
NAND Flash 启动 1 0 引导代码将NAND的前4K复制到RAM中,然后从RAM中启动
串口下载模式 1 1 使用串口工具下载BOOTLOADER,下载完成后从RAM地址0启动

常用串口下载工具:DNW(Windows)、Xmodem/Ymodem(配合SecureCRT、Tera Term等终端软件)


方式一:从 NOR Flash 启动

这是最直接、最简单的启动方式,常用于直接在 Flash 上运行代码(XIP)的场景,或者作为烧写 NAND Flash 的一个跳板。

1. 启动流程

  • 配置:设置 OM0=0, OM1=0。通常是通过开发板上的跳线帽或拨码开关来设置。
  • 上电/复位
    • CPU 的 0 地址(0x00000000)被物理映射到外部 NOR Flash 的起始地址。
    • CPU 从 0x00000000 处(也就是 NOR Flash 的第一条指令)开始执行。
    • Bootloader 必须预先被烧录在 NOR Flash 的起始位置。

2. Bootloader 下载工具与方法

由于 NOR Flash 支持随机读写且可以直接地址映射,下载 Bootloader 到 NOR Flash 通常使用 JTAG 仿真器

  • 硬件工具

    • J-Link(SEGGER 公司)
    • ULINK(ARM/Keil 公司)
    • ST-Link (ST 公司,主要用于 STM32,但也可配合 OpenOCD 用于其他 ARM)
  • 软件工具

    • J-Flash (J-Link 配套软件):
      • 连接 J-Link 到开发板的 JTAG 口。
      • 打开 J-Flash 软件,选择 S3C2440 芯片型号。
      • 加载你编译好的 u-boot.bin 或其他裸机程序的二进制文件。
      • 设置烧录的起始地址为 0x0
      • 点击“烧录”或“Program”按钮,软件会通过 JTAG 协议将 Bootloader 写入 NOR Flash。
    • OpenOCD (开源工具):
      • 功能强大,但需要编写配置文件来描述开发板和芯片信息。
      • 配合 GDB 可以进行在线调试。
    • H-JTAG (国内开发者开发):
      • 简单易用,支持多种并口/USB JTAG。

总结:NOR Flash 启动模式下,主要依赖 JTAG 工具链来完成 Bootloader 的首次烧写


方式二:从 NAND Flash 启动

这是嵌入式 Linux 系统最常用的启动方式,因为 NAND Flash 容量大、成本低。但由于其特性,启动流程稍微复杂。

1. 启动流程

  • 配置:设置 OM0=1, OM1=0
  • 上电/复位
    • S3C2440 芯片检测到这个配置后,会执行一段内部固化的引导代码(被称为 “Steppingstone”)。
    • 这段引导代码非常小(只有4KB),它的唯一任务是:将 NAND Flash 起始的 4KB 数据,自动复制到片内的 SRAM(称为“步进石”)中
    • 复制完成后,CPU 会自动跳转到 SRAM 的起始地址(0x40000000)开始执行。
    • 因此,Bootloader 的前 4KB 必须能独立完成对整个系统的初始化(特别是 SDRAM),然后将完整的 Bootloader 从 NAND Flash 的剩余部分复制到外部 SDRAM 中,最后再跳转到 SDRAM 中执行完整的 Bootloader。

2. Bootloader 下载工具与方法

在这种模式下,如果你想烧写 Bootloader 到一个空的 NAND Flash,流程如下:

  1. 临时切换到另一种下载模式:因为芯片无法直接从空的 NAND 启动。通常是临时切换到“串口下载模式”或使用 JTAG。
  2. 使用串口下载工具
    • 硬件工具:USB 转 TTL 串口线 (如 CH340, PL2303)。
    • 软件工具
      • DNW (三星官方或社区修改版,Windows平台):
        • 这是 S3C2440 最经典的下载工具。
        • 操作步骤
          1. 将开发板通过串口连接到 PC。
          2. 临时将 OM0 设置为0(或根据开发板手册进入下载模式),让芯片进入下载等待状态。
          3. 在 PC 上打开 DNW 软件,配置好串口号和波特率(通常是115200)。
          4. 通过 DNW 的 “USB Port -> Transmit” 功能,选择一个能在 RAM 中运行的 U-Boot 版本(通常文件名带有 ram 或有特别说明),并设置下载地址为 SDRAM 的地址(如 0x30000000)。
          5. 下载完成后,U-Boot 会在 SDRAM 中运行起来。
          6. 在串口终端(如 SecureCRT, PuTTY)中,使用 U-Boot 提供的 nand 命令(如 nand erase, nand write),将需要固化到 NAND Flash 的 U-Boot 版本 (u-boot-nand.bin) 烧写到 NAND 的 0 地址处。
      • SecureCRT / PuTTY / Tera Term (配合 U-Boot 的 kermit/ymodem 协议):
        • U-Boot 运行起来后,可以通过 loadb (二进制), loady (Y-Modem) 等命令,从 PC 接收文件到 RAM,然后再烧写到 NAND。

总结:NAND Flash 启动模式下,首次烧写 Bootloader 通常需要先借助一个临时RAM版本的Bootloader,这个临时版本可以通过 串口工具(如DNW)JTAG 下载到 RAM 中运行,然后再由它来完成对 NAND Flash 的最终烧写。


两种模式对比总结

特性 NOR Flash 启动 (OM0=0, OM1=0) NAND Flash 启动 (OM0=1, OM1=0)
0地址映射 外部 NOR Flash 片内 SRAM (Steppingstone),由内部ROM代码完成数据搬运
启动过程 CPU 直接从 NOR Flash 取指执行。 CPU 先执行内部代码,将NAND前4KB拷到SRAM,再从SRAM启动,最后完整Bootloader在SDRAM运行。
适用场景 裸机、XIP、系统引导修复。 嵌入式 Linux 系统的主流启动方式。
烧写工具 JTAG 仿真器 (如 J-Link) + J-Flash 软件。 串口下载工具 (如 DNW) + U-Boot 自身的 nand 命令

理解这两种模式的硬件配置和软件流程,是进行 ARM9 嵌入式系统开发的基础。

0 篇笔记 写笔记

ARM9的启动方式及Bootloader的下载
下面详细说明 ARM9(以经典的 S3C2440 芯片为例)的两种主要启动方式、配置方法,以及在这些模式下下载 Bootloader 所使用的工具。S3C2440 的启动方式由 OM0 和 OM1 这两个引脚的电平状态决定。工作模式OM0OM1备注NOR Flash 启动......
关注公众号
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!