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參數與默認配置不同;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM