国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于多核DSP的BootLoader程序的實現

電子工程師 ? 來源:電子技術應用 ? 作者:劉慧,林海虹,劉 ? 2021-06-03 17:48 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

DSP芯片的BootLoader程序用于實現用戶程序上電自舉,它有多種工作方式。上電自舉就是將用戶存放在片外的非易失性、慢速的存儲器中的程序裝載到片內易失的、高速的存儲空間中,以保證用戶程序在DSP核內的高速運行。

多核DSP是指由多個獨立的DSP子核集成的DSP芯片,且所有DSP子核共享一套片外總線。由于每個DSP子核內部都有其自身獨立的掩模BootLoader程序,當DSP芯片上電或復位時所有DSP子核都將自行啟動自身獨立的BootLoader程序,實現用戶程序的上電自舉。

所以,多核DSP的BootLoader程序的實現方法與單核DSP的BootLoader程序的實現方法有較大的差異。為此,本文立足于實踐,以雙核DSP- TMS320VC5421的16位并行EPROM的BootLoader程序的工作方式為例,詳細闡述了多核DSP的BootLoader程序的實現方法。

1 BootLoader程序簡介

1.1 BootLoader程序的四種工作方式

一般的DSP都采用常見的BootLoader程序工作方式來實現用戶程序的上電自舉:

處理器通信口(主端口)HPI方式--通過DSP芯片與PC機或DSP芯片與其它DSP芯片之間的主機通信端口實現上電自舉;

8位或16位并行EPROM方式--通過DSP內核的DMA通道實現上電自舉;

8位或16位并行I/O方式--通過DSP芯片的片外并行I/O接口實現上電自舉;

8位或16位串行口方式--通過DSP芯片的串行端口實現上電自舉。

在以上四種工作方式中,最常用的是16位并行EPROM方式。即在DSP芯片上電或復位時,通過DMA通道將存儲在核外EPROM中的程序以16位形式存儲到核內的程序空間中。

1.2 16位并行EPROM方式的Boot表

各種方式的BootLoader程序都有其固定格式的Boot表,用來實現用戶程序的上電自舉。16位并行EPROM方式的Boot表如表1所示。表中的第1表項存放BootLoader程序工作方式控制字,用于DSP芯片上電或復位時確認該Boot表是否為16位并行EPROM工作方式的Boot表。該表項內容為10AAH,表示DSP內核認為該Boot表是16位并行EPROM工作方式的BootLoader程序的Boot表;

否則DSP內核認為該Boot表不是16位并行EPROM的方式的Boot表;第2表項存放DSP特殊寄存器SWWSR在上電或復位時被賦予的初始化數值;第3表項存放DSP特殊寄存器BSCR在上電或復位時被賦予的初始化數值;第4表項存放用戶程序將要被存放在DSP核內程序空間的頁地址;第5表項存放用戶程序將要被存放到DSP核內程序空間的頁內偏移地址;

從第6表項開始依次存放用戶程序第m段代碼的長度N。用戶程序第m段代碼將要被存放到DSP核內程序空間的頁地址,用戶程序第m段代碼將要被存放到DSP核內程序空間的頁內偏移地址,用戶程序第m段代碼的第1個字,第2個字,……,第N個字;

Boot表的最后表項存放Boot表結束字0000H,表示Boot表到此結束。因此DSP內核要實現BootLoader程序,在上電復位后首先要申請到片外數據、地址總線的控制權,然后再根據Boot表完成用戶程序上電自舉過程。

1.3 16位并行EPROM工作方式Boot表的生成

所有BootLoader程序所需的Boot表的數據結構都是通過執行包含-v548參數的鏈接命令和Hex500轉換命令的程序形成的。在鏈接過程中確定用戶程序和數據的存放地址,在Hex500轉換過程中定義BootLoader程序的工作方式和用戶程序執行的入口地址等。

為了生成16位并行EPROM方式的Boot表首先,在鏈接程序時必須設置-v548選項;然后使用TI公司DSP開發工具自帶的HEX500.EXE文件,根據用戶的COFF格式的代碼生成Boot表中的相應內容。

HEX500.EXE可執行文件一般使用以下幾種參數

(1)*.out :用戶的COFF格式的程序;

(2)-e :確定用戶程序的入口點;

(3)-a :以ASCII形式,根據用戶的。out文件輸出對應的HEX文件;

(4) -Boot實現用戶程序的裝載;

(5) -bootorg :確定生成哪種形式的Boot表;

(6) -memwidth:確定引導方式的位數;

(7) -O *.hex:輸出的HEX文件的名稱。

例如:

hex500 ti.out /根據ti.out文件生成Boot表/

-e 0x4000 /用戶程序的入口點為0x4000/-a /以ASCII形式輸出HEX文件/-Boot / 裝載用戶的程序ti.out/

-Bootorg PARALLEL/生成并行EPROM方式的Boot表/-memwidth 16 /生成16位的Boot表/

-o ti.hex /生成的HEX文件名為ti.hex/

執行完該HEX500.EXE命令后,系統會創建一個文件名為ti.hex的ASCII文件,然后用戶根據ti.hex文件內容對EPROM進行編程就能產生上述的16位并行EPROM工作方式的Boot表。

2 多核DSP的BootLoader程序的實現

目前TI公司已經不再局限于生產單核DSP。為了提高用戶程序運行的效率,TI公司又推出了2核、4核等多核DSP。在實現多核DSP上電自舉時,每一個子核都需要申請片外總線的控制權。對于單核DSP而言,只有一個DSP內核,對應一個BootLoader程序,DSP核可以永遠擁有片外總線的控制權。

但對于多核DSP而言,由于只有一套片外總線,所以片外總線的控制權不允許也不可能永遠被其中的某一個DSP子核所擁有。因此,多核DSP需要片外總線仲裁機制,以避免片外總線沖突。

下面以雙核DSP-TMS320VC5421的16位并行EPROM方式的BootLoader程序實現過程為例,詳細闡述多核DSP的BootLoader程序的實現。

2.1 TMS320VC5421結構簡介

TMS320VC5421 16位定點雙核DSP,它集中了早期TMS320C54X系列DSP的優點,并提供了許多新的功能。其內部結構與TMS320C54X系列的其它款式DSP有很大的不同,其簡單結構框圖如圖1所示。

由于每個DSP子核的工作頻率是100MHz,所以它的工作速率可達到200MIPS,且它的每一個DSP子核都具備單核DSP(如TMS320VC5402)的所有特性。2.2 TMS320VC5421的16位并行EPROM工作方式的BootLoader程序的選擇

TMS320VC5421的兩個DSP子核在DSP芯片上電或復位時,能否啟動各自的BootLoader程序以完成上電自舉功能,是由每個子核自身的XIO和GPIO0/ROMEN兩個管腳決定的。在DSP芯片上電或復位時,每個DSP子核自動檢測自身的XIO和GPIO0/ROMEN兩個管腳,如果對應的XIO和GPIO0/ROMEN兩個管腳都為高電平則啟動自身的BootLoader程序完成用戶程序的上電自舉。

每個DSP子核啟動BootLoader程序后,采用哪一種BootLoader程序的工作方式是由各自的GPIO1管腳的狀態和各自以DMA方式從核外數據空間0000H地址單元讀入的數據決定的:檢測GPIO1管腳,如果GPIO1管腳為高電平,則采用串行口EEPROM的BootLoader工作方式,否則采用并行EPROM的BootLoader工作方式。

若DSP子核的DMA通道讀入核外數據空間0000H單元中的數據為10AAH,則采用16位并行EPROM的BootLoader工作方式;若讀入的數據為xx08H或xxAAH則采用8位并行EPROM的BootLoader工作方式。否則將重新判斷GPIO1管腳的電平,進入死循環。2.3 TMS320VC5421的BootLoader程序片外總線沖突的解決

DSP核的BootLoader程序總是在DSP核上電或復位時啟動,且一啟動BootLoader程序,對應的DSP核就要申請核外的總線控制權。因此為了避免多核DSP的各個DSP子核啟動BootLoader程序時引起的片外總線沖突,可通過控制每個DSP子核的復位過程,使每個DSP子核在不同的時間內啟動自身的BootLoader程序來解決片外總線沖突的問題。

為了實現兩個DSP子核復位過程的分離,應采用如圖2所示的DSP子核復位過程控制方法。

由于TMS320VC5421中A核擁有倍頻的鎖相環電路,所以首先復位A核,啟動A核的BootLoader程序,實現A核的用戶程序上電自舉。然后再由A核的用戶程序控制B核的復位過程,啟動B核的BootLoader程序,實現B核的用戶程序上電自舉。

在A核的BootLoader程序執行完后,A核就會執行自身的用戶程序代碼。A核的用戶程序代碼釋放片外總線的控制權,并且控制B核的復位管腳,促使B核啟動自身的BootLoader程序。如果此時A核中的用戶代碼又申請片外總線控制權或正在使用片外總線,就會造成片外總線沖突。解決此沖突的辦法有如下兩個:

粗略估計B核的BootLoader程序執行時間,在A核的有效程序代碼前加一個延遲程序。

在A核的有效程序代碼前加入一個死循環程序,當B核BootLoader程序執行完后,B核通知A核,A核就跳出這個死循環程序,開始執行自己的有效代碼。

2.4 TMS320VC5421的16位并行EPROM工作方式的BootLoader程序的編程實現

首先設計一個簡單的電路圖,在DSP的A_XF和B_XF兩個管腳分別連接一個發光二極管,A核以2Hz的頻率點亮發光二極管,B核以10Hz的頻率點亮發光二極管。將128K的FLASH?SST39VF400A?分成兩頁,每頁為64K。FLASH的頁的選擇由TMS320VC5421的A_BDXO管腳控制。當A_BDX0為低電平,即FLASH的A16地址線為低電平時,選中FLASH的第一頁,由FLASH的A0~A15地址線選擇頁內地址,用于存放A核的16位并行EPROM工作方式的Boot表。當A_BDX0為高電平,即FLASH的A16地址線為高電平時,選中FLASH的第二頁,由FLASH的A0~A15地址線選擇頁內地址,用于存放B核的16位并行EPROM工作方式的Boot表。

1片外總線沖突的解決

估算B核執行BootLoader程序所需的時間后,在A核的用戶有效程序之前,加一段延遲程序。

延遲的時間計算如下:

TMS320VC5421DSP的DMA通道從片外數據空間讀取一個字到片內數據空間,需要7個指令周期時間。

統計用戶程序大小?將對應Boot表中的所有段的大小相加?N1+N2+...=N。

延遲的時間為N×7=7N個指令周期。

由上面所述的方法可知,只需在開始執行A核的有效程序之前加一段延遲7N個指令周期的代碼即可。

(2)生成Boot表

CPU_A來說,以A核程序流程圖建立一個項目Ati.msk。產生Ati.out文件后,進入該目錄的DOS環境,鍵入:

hex500 Ati.out-a-e 0x4000h-Boot-Bootorg PARALLEL-memwidth 16-romwidth 16-o Ati.hex

生成A核的16位并行EPROM工作方式的Boot表。

對CPU_B來說,同樣以B核程序流程圖建立一個項目Bti.msk。產生Bti.out文件后,進入該目錄的DOS環境,鍵入:

hex500 Bti.out-a -e0x4000h-Boot-Bootorg PARALLEL-memwidth 16-romwidth 16-o Bti.hex

生成B核的16位并行EPROM工作方式的Boot表。

在實現雙核DSP的上電自舉后,A核和B核的用戶程序將會被存放在核內程序空間的不同頁面上。如從DMA的角度觀看:A核的用戶程序將被存放在A核的程序空間的第0頁上;B核的用戶程序將被存放在B核的程序空間的第2頁上。因此A核的Boot表不需要修改,而B核的Boot表中的所有存放頁地址的表項中的內容要更改為2。

(3)FLASH編程實現

根據FLASH芯片的控制時序,編寫一個簡單的DSP程序,用于將A核的Boot表寫入FLASH的低64K,將B核的Boot表寫入FLASH的高64K。

3上電試驗結果

將電路上電后,A核控制的發光二極管開始閃爍,B核控制的發光二極管也開始閃爍,且A核發光二極管閃爍頻率要低于B核發光二極管閃爍頻率。由此現象可得出?A核與B核的BootLoader實現成功,未產生片外總線沖突;A核以2Hz的頻率點亮發光二極管,B核以10Hz的頻率點亮發光二極管。

編輯:jq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • dsp
    dsp
    +關注

    關注

    561

    文章

    8244

    瀏覽量

    366665
  • 芯片
    +關注

    關注

    463

    文章

    54010

    瀏覽量

    466144
  • 存儲器
    +關注

    關注

    39

    文章

    7739

    瀏覽量

    171679
  • Boot
    +關注

    關注

    0

    文章

    154

    瀏覽量

    37746
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    USBISP/USBasp編程器給Atmega32U4下載Arduino bootloader引導程序

    對于新出廠的ATmega32U4芯片內部是沒有arduino引導程序的,需要用戶預先下載bootloader后才能用串口下載自己的應用程序.在某些罕見情況下舊的bootloader會導
    的頭像 發表于 01-31 14:38 ?679次閱讀
    USBISP/USBasp編程器給Atmega32U4下載Arduino <b class='flag-5'>bootloader</b>引導<b class='flag-5'>程序</b>

    深入解析rk平臺Android Bootloader核心代碼:從啟動流程到AVB驗證

    U-Boot中Android Bootloader的核心實現,核心作用是 銜接硬件初始化與內核啟動 ,主要負責: ?讀寫Bootloader控制塊(BCB),判斷設備啟動
    的頭像 發表于 01-22 07:06 ?275次閱讀
    深入解析rk平臺Android <b class='flag-5'>Bootloader</b>核心代碼:從啟動流程到AVB驗證

    LAT1171+STM32F745 USART1 Bootloader 失敗原因分析與解決

    使用 STM32F745 進行產品開發的時候,出現了使用 STM32CubeProgramer 無法通過 USART1 Bootloader 進行程序升級的問題。為了解決客戶的問題,我在 NUCLEO-F746ZG 開發板上,復現了同樣的現象,本文針對這個現象,分析了該問
    發表于 01-11 17:33 ?0次下載

    深入解析RK平臺Android/Linux Bootloader核心文件:android_bootloader.c

    Bootloader是Android設備啟動的第一道“關卡”,負責初始化硬件、加載系統鏡像并完成內核啟動的前置準備。在基于U-Boot的Android設備中,android_bootloader
    的頭像 發表于 01-09 10:58 ?1203次閱讀
    深入解析RK平臺Android/Linux <b class='flag-5'>Bootloader</b>核心文件:android_<b class='flag-5'>bootloader</b>.c

    Bootloader固件升級的步驟

    文件則下載到 ROM 或 Flash 中BootLoader 后面的地址中。也就是說,存在 ROM/Flash 中的內容是分為兩部分的。 4、要實現在同一個 ROM/Flash 中保存兩段程序
    發表于 11-19 07:41

    MPLAB X IDE V6.25版本怎么對bootloader和應用程序進行燒錄

    請問MPLAB X IDE 中怎么設置bootloader和應用程序的起始地址和大小,不然默認從0開始燒錄
    發表于 10-24 16:42

    BootLoader app程序反復重啟,IAP升級失敗怎么處理?

    keil開發的BootLoader程序,用RT-Thread Studio開發的app程序,板子每次上電后,從BootLoader程序跳轉到
    發表于 09-10 07:36

    【老法師】多核異構處理器中M核程序的啟動、編寫和仿真

    有很多研究單片機的小伙伴在面對多核異構處理器時,可能會對多核的啟動流程感到困惑——因為不熟悉GCC編程和GDB調試,所以也無法確定多核異構處理器的程序是否能像單片機那樣方便地編寫和仿真
    的頭像 發表于 08-13 09:05 ?3992次閱讀
    【老法師】<b class='flag-5'>多核</b>異構處理器中M核<b class='flag-5'>程序</b>的啟動、編寫和仿真

    是否可以僅使用 Bootloader Host 來實現可引導加載項目的相同編程結果?

    你好 我想使用 Bootloader Host 在我的 CY8CKIT-059 上對 CY8C5888LTI-LP097 芯片進行編程,并將項目類型設置為可引導加載。我的目標是實現與通過使用 SWD
    發表于 07-18 07:39

    請問在RTD3.0.0中修改bootloader的鏈接器的正確程序是什么?

    我正在嘗試更新鏈接器,以便我的應用程序可以與 uds bootloader 2.0.0 一起使用。但是,每當我在鏈接器中進行更改時,應用程序啟動都會失敗。我在這里的問題是修改 bootload
    發表于 04-14 13:29

    DSP在智能家電領域的應用,涵蓋音效處理、語音識別、智能化控制

    電子發燒友網報道(文?/?李彎彎)DSP(Digital?Signal?Processing)即數字信號處理技術,而?DSP?芯片則是能夠實現數字信號處理技術的芯片。其內部采用程序和數
    的頭像 發表于 04-14 00:42 ?2772次閱讀

    求助,關于在S32G399ARDB3板上的Multicore Bootloader中啟用HSE功能的問題求解

    它是一個多核 bootloader,但我們觀察到控件不會從 bootloader 過渡到 U-Boot,但并行 m core autosar 應用程序正在運行。為了調試問題,我禁用了
    發表于 04-07 09:16

    為什么無法加載統一bootloader demo V2.1?

    我使用的是 S32K116 32 引腳封裝 uC。我目前正在嘗試找到 bootloader demohere工作。 S32DS 平臺是我通常使用的 IDE,但由于
    發表于 04-02 08:28

    U-Boot 和 Bootloader,99% 的工程師都分不清?

    嵌入式軟件工程師聽說過 u-boot 和 bootloader,但很多工程師依然不知道他們到底是啥。 ? 今天就來簡單講講?u-boot 和 bootloader?的內容以及區別
    的頭像 發表于 03-25 20:47 ?1798次閱讀

    自定義RISC V的bootloader-v3

    在生成SoC時,會生成一個預定義bootloader .bin文件,用于指定soc的工程運行的地址,這包括在flash的存儲地址 ,加載到外存中的運行地址及在外存中分配的存儲空間的大小 。下面我們
    的頭像 發表于 03-10 09:05 ?1720次閱讀
    自定義RISC V的<b class='flag-5'>bootloader</b>-v3