• DSP:TMS320C66x 系列SPI NOR自启动


    1 DEVSTAT寄存器

      1.1 DSP上电复位后,DEVSTAT寄存器自动锁存16个GPIO的值、PACLKSEL引脚值、PCIESSEN引脚值到寄存器内,直到下次上电复位前均保持不变;

        DEVSTAT寄存器由硬件设置,辅助Rom Bootloader初始化配置;

      1.2 DEVSTAT寄存器逻辑如下:

        

      1.3 spi nor的boot模式下,boot mode [ 12:0 ]引脚代表的的逻辑如下表:

        1.3.1 无自启动、SPI 启动或者 I2C 方式启动,主 PLL 会被配置为bypass旁路模式;

          其他方式启动时,RBL使用bootmode[12:10]去配置主 PLL,(详见数据手册2.5.4 PLL Boot Configuration Settings小节表格);

        1.3.2 rom bootloader根据以下参数配置2级bootloader;

          2级bootloader根据配置,将存储在flash中table格式的程序搬运进共享内存;

        

    2 boot sequence

      2.1 手册说boot sequence是内部存储加载后自动运行的过程;十有八九就是百度上许多论文里说的2级bootloader程序;

        boot sequence是RBL向SRAM搬运过程中,在SRAM中用到的一部分地址,用来存储配置以及配置过程中的参数;

        Boot magic address就在这里;

         

    3 Rom Bootloader 只读存储器引导加载程序

      3.1 Rom Bootloader简称RBL,是通过一系列表格来携带处理信息的程序,程序可以概括为三种表格类型;

        3.1.1 可以被RBL处理的三种表格:boot parameter table,  boot table,  boot configuration table;

           存储在外部需要自启动的程序,需要将程序.out文件通过一系列TI提供的转化工具,转化为能被RBL读取.dat或.bin文件;

           如何使用工具进行转化的文档:(文档网址,转换工具)

        3.1.2  RBL位于L3 ROM内0x20B00000到0x20B1FFFF的地址内,一共128k字节,

           DSP上电复位后,首先会进入到ROM中执行bootloader,

           然后RBL读取boot parameter table后搬运boot table格式的程序到SRAM中,然后跳转到SRAM中执行程序,

           在这个过程中会涉及到配置boot sequence地址中的寄存器; 

        3.1.3 只有核心0支持RBL的自启动;

          其他核心的代码由主内核复制给从内核,然后将从内核的入口地址存入boot_magic_address寄存器,然后向从内核发送一个IPC中断来唤醒从内核;

          3.1.3.1 boot loader作用

            固化在 ROM 上的代码段会让所有支持重启隔离功能的外设使能重启隔离功能。

            固化在 ROM 上的代码段会使能 boot 过程中所有可能需要用到的外设的时钟。

            固化在 ROM 上的代码段会利用从 DEVSTAT 寄存器三个 PLL 比特中读取的信息配置系统 PLL。

            由于多核 DSP 采用全局地址来区别不同核的 RAM 地址,因此每个核的 Boot Magic 地址是0x1x87fffc(x 为核号)

            RBL会在L2缓存中为每个核心预留出程序代码的存储空间,EMIF16模式则不会预留;

      3.2 boot parameter table

        3.2.1 作用:上电复位的时候初始化PLL配置或者选择bypass模式;配置RBL的不同模式下的工作参数;

            告诉RBL怎么搬运程序到内存中;搬运后的程序是boot table格式的,还要继续解析;

        3.2.2 对于spi nor的boot模式而言,剩下的参数是在转化.out文件的时候由romparse.exe的辅助文件nysh.spi.map补充的;

          

      3.3 boot table

        3.3.1 作用:将程序拆分成可以被RBL识别的程序段,

        3.3.2 格式:如下所示为boot table的格式

          第一个header里存储了程序搬运到SRAM共享内存后的入口地址;当RBL搬运到段的length为0字节的段时,完成搬运,跳转到入口地址_c_int00执行程序代码;

          

      3.4 boot configuration table

        3.4.1 作用:当需要外设的配置与复位状态不同时,可以通过boot configration table来配置;

              比如可以用boot configration table来初始化配置DDR,然后就可以将程序加载进DDR中了;

              (spi nor的程序是搬运到4M共享内存中的,不是DDR3中的,所以没有用到boot configuration table)

        3.4.2 格式:boot configuration table可以有许多项(entry),每个项有3个元素如下所示,当项的三个元素都为0的时候,表示结束;

         

      C6678十六进制转换工具Hex6x介绍 https://wenku.baidu.com/view/f06fb90e8762caaedc33d475.html?rec_flag=default

      C6678镜像工具链介绍 https://wenku.baidu.com/view/70cc5b87a6c30c2258019e5d.html

      DSP的GEL文件介绍 https://blog.csdn.net/wordwarwordwar/article/details/83653611

      具体生成的工具链使用创龙提供的批处理文件链接;创龙提供批处理的boot parameter table的SPI参数与默认配置不同;

  • 相关阅读:
    git 简单操作
    总结vue 需要掌握的知识点
    windows10为何鼠标右键失灵,桌面右键一直转圈的解决
    maven项目(引入依赖失败, pom.xml 报错\爆红)
    word 选中后背景是黑色的
    Excel数字转日期
    冯况 | 删除文件显示【需要来自system的权限】
    拖动东西时垫纸减少摩擦
    妙用瑜伽垫
    不用电磁炉了
  • 原文地址:https://www.cnblogs.com/caesura-k/p/12804842.html
Copyright © 2020-2023  润新知