Chinaunix首页 | 论坛 | 博客
  • 博客访问: 34935
  • 博文数量: 13
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 140
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-30 15:10
文章分类

全部博文(13)

文章存档

2009年(13)

我的朋友

分类: 嵌入式

2009-08-25 11:35:30

1.Reset 入口点:0x0

    传递控制权到ROM的入口处:reset_vector

2.调用宏PLATFORM_SETUP1

PLATFORM_SETUP1宏定义在:

arm\mx25\3stack\current\include\hal_platform_setup.h

完成下面的工作:

  • 关中断

  • 禁能以及清除caches

  • 初始化内存控制器(可能包括检查内存位置)

  • 设置时钟频率

  • 初始化MMU table

    • 设置TTBRDACR为默认值

    • 映射MMU table到内存

      • DRAM at 0x00000000 cacheable/buffered

      • Device registers elsewhere uncacheable/unbuffered usually 1-1

      • DRAM at 0xF0000000 uncacheable/unbuffered (1-1 in aaed2000)

      • remap ROM at 0 elsewhere

  • 使能MMU

  • 为启动ROMRAM重定位镜像到RAM

  • CPU时设置其他CPU

3.跳转到HAL启动

  • 设置中断向量表在 0+ 位置
  • 拷贝数据段(.data section)RAM

  • 初始化CPSRSPSR
  • 设置SP 
  • 清除 .bss

    调用 hal_hardware_init() (在文件中位值:ecos\packages\hal\arm\mx25\var\current\src\soc_misc.c)
  • 如果包括GDB stubs的话则调用initialize_stub()

  • 调用hal_ctrlc_isr_init()                  //rom版本的Redboot不支持ctrl-c

  • 调用cyg_hal_invoke_constructors()

  • 调用cyg_start()

阅读(862) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~