SylixOS最小系统开发(一)

来源:互联网 发布:李娃传 知乎 编辑:程序博客网 时间:2024/06/06 07:25
  1. 开发环境

    • 操作系统:SylixOS

    • 编程环境:RealEvo-IDE3.1.5

    • 硬件平台:MPC8313E-RDB

  2. MPC8313E芯片介绍

    MPC8313E是飞思卡尔(Freescale)基于 PowerPC-e300c3内核的系列芯片,MPC8313E-RDB采用的是MPC8313E处理器。

    芯片具有 :

    • 16KB I-Cache,16KB D-Cache,8MB NOR Flash,128MB DDR2,32MB NAND Flash;
    • 两路三速(10/100/100 Mbps)的以太网控制器(eTSECs);
    • 一个 DDR1/DDR2 SDRAM内存控制器;
    • 一个增强的本地总线控制器(eLBC);
    • 一个32bit的PCI-2.3控制器;
    • 1路USB 2.0 HS Device & HOST 二合一接口;
    • 2路UART,2路I2C,1路SPI,一个4通道DMA;
    • 软件看门狗定时器,电源管理控制器PMC;
    • 最高可在333MHz的频率下运行。
  3. MPC8313E-RDB启动设置

    MPC8313E-RDB使用拨码开关与跳帽结合的方式引导启动,拨码和跳线的设置如图 1.1所示。拨码开关与跳线的位置如图 1.2所示

    1.1拨码开关与跳帽的设置

    1.2拨码与跳帽的位置

    正常情况下板卡应该设置为NOR Flash启动方式。

  4. 技术实现

  5. 修改ROM,RAM,OS基址配置文件

    设置ROM,RAM,OS的基址配置文件步骤如下:

    第一步:查看MPC8313-RDB的用户BSP指导手册,3.2章节为系统内存映射相关章节。Uboot初始化的内存映射关系如图 2.1所示。

     

    2.1内存映射关系

    从图 21可以看到,MPC8313E的DDR SDRAM基址就是0x00000000,NOR Flash的基址是0xfe000000.

    第二步:修改config.h为如图 2.2所示:

    2.2 config.h设置

    第三步:在PowerPC的config.h文件中,还需要设置 BSP_CFG_OS_BASE。BSP_CFG_OS_BASE的作用是指定BSP文件的启动基址,如图 2.3所示。

    2.3 BSP_CFG_OS_BASE的设置

    第四步:修改config.ld文件,设置内存布局定义。把BSP_CFG_RAM_BASE改为BSP_CFG_OS_BASE。如图 2.4所示。

    2.4 config.ld设置

  6. 修改startup.S 系统引导文件

  7. 看门狗设置

    看门狗定时器的设置可以在Uboot中获得,笔者使用的是经典的Uboot 1.1.6版本。在u-boot-1.1.6/include/ mpc83xx.h文件中可以获得看门狗的配置信息,如图 2.5所示。

    2.5 uboot看门狗配置信息

    u-boot-1.1.6/cpu/mpc83xx/start.S文件中可以获得配置看门狗的汇编语句,如图 2.6所示。

    2.6 uboot看门狗设置

  8. 异常向量表设置

    异常向量中断表的内容在创建工程时是自动生成的,一般不用修改,但是对于MPC8313E需要设置减流器异常(Decrementer)需要跳转到的函数,如图 2.7所示。

    2.7 Decrementer异常设置

    当Startup.S中的初始化流程结束后,会进入到初始化的C程序入口函数bspInit。

  9. 修改bspMap.h地址映射文件

    bspMap.h不需要修改。

  10. 编写系统公用头文件

  11. 编写公用寄存器地址头文件

    MPC8313E所有设备的寄存器都映射到一块大小为1Mbyte的内存中,此内存叫做内存映射寄存器IMMR(Internal Memory Map Registers),IMMR的基址寄存器叫做IMMRBAR。IMMRBAR在u-boot中设置为0xE0000000。如图 2.8所示。

    2.8 u-bootIMMR的设置

    在u-boot-1.1.6/cpu/mpc83xx/start.S中写入指定的寄存器,如图 2.9所示

    2.9 start.S设置IMMRBAR

    MPC8313E的芯片手册,2.3章节描述了IMMR Memory Map的相关信息。参照IMMR Memory Map笔者把所有设备的寄存器基址合并在immr.h头文件中,如图 2.10所示

    2.10 immr.h

  12. 参考资料