boot学习笔记(2)

        这里说的BOOT其实是系统最开始的启动代码 XXinit.s文件。在ads的工程文件中需要把几个文件的先后顺序排好。因为从NAND FLASH启动时CPU将NAND FLASH的前4K拷贝到cpu自带的SRAM中,而一般编译出来的会大于4k。开发板上的程序上电时是从INIT.S文件开始的,然后调用nand.C的NAND FLASH 读取程序数据到SDRAM中,读取完毕再进行后面的程序,最后再跳到main.c中的main执行。

     BOOT的主要功能

      1.建立中断异常向量表。系统一旦发生中断,处理器还是会自动跳转到0X0地址开始的异常中断向量表。该表包含跳转指令,具体的中断处理有中断处理程序完成。

      2.初始化堆栈。arm9有7种模式。用户模式,系统模式,快速中断模式,普通中断模式,特权模式,中止模式,未定义模式。BOOT需要为每一种模式建立堆栈,这需要初始化其程序状态寄存器(SPSR)和堆栈指针。

     3.初始化硬件。对硬件的初始化通过配置特殊控制寄存器来完成包括:

   (1) 关看门狗  (WTCON)

  (2) 屏蔽所有中断cpsr

  (3) 初始化PLL和时钟频率(FCLK(FOR CPU) HCLK(FOR AHB) PCLK(FOR AHP),UCLK(FOR USB))

   (4)初始化内存控制。主要通过memory contro register 设定外部数据总线的宽度,访问周期(bankconN),定时控制信号等  (BWSCON),SDRAM的设置。

  (5)复制RW到SDRAM将ZI段清0.一个ARM数据结构有RO,RW,ZI三段组成。其中RO是代码段,只读的。RW是全局变量,ZI是未初始化的变量。

         image$$RO$$Base  RO起始地址

         image$$RO$$Limit   RW起始地址

         image$$RW$$Base

        image$$RW$$Limit

  (6)跳转到C语言程序,开始第2阶段初始化和系统引导。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值