S3C2410X NAND闪存启动与引导加载程序

需积分: 9 0 下载量 75 浏览量 更新于2024-08-11 收藏 43KB DOCX 举报
"S3C2410X处理器的NAND Flash启动机制及Bootloader设计" S3C2410X是一款由Samsung公司推出的基于ARM920T内核的微处理器,常用于嵌入式系统。在设计嵌入式系统时,选择合适的启动方式至关重要,S3C2410X提供了两种启动选项:NOR Flash启动和NAND Flash启动。每种启动方式都有其特定的优缺点和适用场景。 1. NOR Flash启动: NOR Flash以其快速的随机读取能力和可以直接执行代码的特性,常被用作存储和运行程序的介质。当系统上电复位时,NOR Flash会被映射到地址0x0,使得处理器可以直接从第一条指令开始执行。程序既可以留在NOR Flash中运行,也可以复制到SDRAM中运行。NOR Flash的这种灵活性和高效性使其成为对性能要求较高的应用的理想选择。 2. NAND Flash启动: 与NOR Flash相比,NAND Flash的优点在于更大的存储容量和更低的成本,这使得它在嵌入式系统中广泛应用。然而,NAND Flash的随机读取速度较慢,并且需要专用的I/O接口。S3C2410X集成的NAND Flash控制器简化了编程过程。在NAND Flash启动模式下,上电复位时,处理器会将NAND Flash前4KB的内容复制到内部SRAM(地址0x0),从而使得处理器可以从有效指令开始执行。由于NAND Flash不能直接运行程序,因此需要在SRAM中运行一段引导加载程序(Bootloader)来将NAND Flash中的程序代码复制到SDRAM中。 Bootloader的设计通常分为两个阶段: - 第一部分是引导代码,它包含了ARM架构要求的连续8个字的中断向量表。这部分代码负责从NAND Flash中读取并复制程序到SDRAM,其大小远小于4KB。引导代码的RO_Base(只读基地址)设置为0x0,烧写在NAND Flash的第0块。 - 第二部分是应用程序,其RO_Base设置为0x3000,0000,烧写在NAND Flash的第一块开始的地址空间。上电后,引导代码被自动复制到SRAM,中断向量表位于0x0地址,引导代码开始执行,进行必要的初始化和设置中断向量表。然后,它将NAND Flash中的程序代码移动到SDRAM的0x3000,0000地址,即应用程序的起始地址。完成复制后,引导代码退出,PC指针调整到0x3000,0000,使得应用程序开始执行。 S3C2410X通过NAND Flash启动提供了一种成本效益高的方法,而Bootloader的设计确保了系统的正常启动和程序的正确执行。这种启动方式在资源有限但需要大量存储的嵌入式系统中非常常见。