基于Nandflash的Bootloader开发简介

本文介绍了S3C2410处理器的Nand Bootloader开发,包括Nboot和Eboot两部分。Nboot主要负责硬件初始化,如中断屏蔽、CPU速度设置、RAM初始化,而Eboot则进行串口初始化、内存映射检测、内核镜像加载等操作。通过FMD_ReadSector函数从Nand Flash读取数据,并跳转到内核启动地址启动系统。
摘要由CSDN通过智能技术生成

S3C2410支持直接从Nand Flash启动,所以要用到Nand Bootloader。

大多数Nand Bootloader都分为Nboot和Eboot两部分。依赖于CPU体系结构的代码,放在Nboot中,通常用汇编语言+C语言实现;而Eboot通常用C语言实现,这样可以实现复杂的功能,而且代码会具有更好的可读性和可移植性。

Nboot:

  1. 硬件设备初始化:
    • 屏蔽所有中断。可以通过写CPU的中断屏蔽寄存器或状态寄存器(ARM中是CPSR寄存器)来完成。
    • 设置CPU的速度和时钟速率。
    • RAM初始化。包括正确地设置系统的内存控制器的功能寄存器以及各内存库控制寄存器等。
    • 初始化LED。典型地,通过GPIO来驱动LED,其目的是表明系统的状态是正确还是错误。也可以通过初始化UART向串口打印Nand Bootloader的logo字符信息来完成测试。
    • 关闭CPU内部指令/数据cache。
  2. 为加载Nand Bootloader的Eboot准备RAM空间;
    • 为了获得更好的执行速度,通常把Eboot加载到RAM空间来执行,因此必须准备好一段可用的RAM空间范围。
    • 空间大小最好是memory page(通常是4KB)大小的倍数。
    • 由于是C语言执行代码,因此在考虑空间大小时,除了stage2可执行映像的大小外,还必须把堆栈空间也考虑进来(一般情况下1MB就可以了)。
    • Eboot_end = Eboot_start + Eboot_size
    • 必须确保所安排的地址范围是可读写的RAM空间。因此需要对所安排的地址范围进行测试。测试方法:以为memory page为测试单位&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值