新闻中心

EEPW首页 > 消费电子 > 设计应用 > 面向嵌入式视频处理平台的Linux移植

面向嵌入式视频处理平台的Linux移植

作者:时间:2010-01-07来源:网络收藏

  3BootLoader的设计

  BootLoader即引导加载程序,是在操作系统内核运行之前运行的一段程序。它建立起操作系统运行的环境,包括初始化硬件、建立存储空间映射和传递给操作系统一些基本的配置参数等。因此,Bootloader是非常重要的组成部分,它独立于操作系统,必须由用户自己设计,而且其实现高度依赖于硬件。在系统存储的空间分配结构中BootLoader、内核启动参数、内核映像和根文件系统映像的关系如图4所示。


  BootLoader的作用是正确地调用内核来执行。系统开机后,执行的第1条指令是从Flash的0x00地址开始的,BootLoader 程序就是放在此。由于它是直接操作硬件且依据硬件环境不同而代码不同,所以适合用汇编语言写,以达到短小精悍执行效率高的目的;内核从Flash复制到 SDRAM时,采用C语言实现,能实现较复杂的功能,因此BootLoader的设计分为两个阶段。用汇编语言实现的放在第1阶段,主要完成硬件初始化,设置SDRAM,然后把Boot-Loader从Flash复制到SDRAM的起始地址,即2M处,最后内存重映射,Flash地址从0x00- 0xlff映射成0x1000000-0x11fff,SDRAM地址0x200000-0xllfff映射成0x00-0xfff,至此控制权交给了用 C语言实现的loaderkernel()函数,就进入了第2阶段。第2阶段是用C语言实现的,它主要完成内核从Flash到SDRAM的复制,然后控制权交给Kernel,流程如图5所示。这样设计代码会具有很好的可读性和可性。


  本系统BootLoader的第1阶段设计包括:

  a)关闭看门狗程序,屏蔽所有中断;

  b)设置器时钟和工作频率,TMS320-DM*6中ARM9的工作频率为300 MHz;

  c)初始化外部寄存器;

  d)初始化堆栈指针;

  e)复制BootLoader的第2阶段到RAM空间中,使用一条跳转语句跳转到第2阶段的C程序如入口处。

  第2阶段用C语言编写,具体步骤如下:

  a)设置通用I/O口参数;

  b)初始化内存映射和内存管理单元;

  c)初始化mtd设备;

  d)复制Flash中的Kernel映像和根文件系统映像到RAM空间中;

  e)跳转到内核的第1条指令处,跳转时需要满足这些条件:R0=0,R1=机器类型ID,R2=启动参数,同时禁止中断(IRQ和FIQ),CPU设置为保护模式,关闭MMU和数据Cache。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)


评论


相关推荐

技术专区

关闭