在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

編譯可在QSPI Flash上運(yùn)行的程序

靈動MM32MCU ? 來源:靈動MM32MCU ? 作者:靈動MM32MCU ? 2023-03-31 09:50 ? 次閱讀

引言

在前文中已經(jīng)實(shí)現(xiàn)了一個能夠在 MDK 平臺進(jìn)行下載代碼到 QSPI Flash 中的下載算法,以及一個能跳轉(zhuǎn)執(zhí)行應(yīng)用程序的 2nd Bootloader,但若想將代碼下載到 QSPI Flash上并運(yùn)行,仍需對所需執(zhí)行的代碼文件進(jìn)行少量的修改,使其能夠在 QSPI Flash 上運(yùn)行。

修改Linker文件

本文將 MindSDK 的 PLUS-F5270 hello_world 樣例工程作為所需執(zhí)行的文件,可通過 MindSDK 官網(wǎng) 獲取該樣例,如圖 1 所示。

909b8c36-cee4-11ed-bfe3-dac502259ad0.png

圖1 通過官網(wǎng)獲取 MindSDK PLUS-F5270 hello_world樣例工程

打開 hello_world 樣例工程,在Options for Target選項(xiàng)的Linker頁面下,找到 Scatter File 選項(xiàng),該選項(xiàng)中內(nèi)容為 Linker 所使用的 Scatter File 文件路徑,點(diǎn)擊該選項(xiàng)右側(cè)的 Edit ,此時樣例工程中會彈出對應(yīng)的 Scatter File 文件界面,如圖 2 所示。

90bd849e-cee4-11ed-bfe3-dac502259ad0.png

圖2 打開scatter file文件界面

在彈出的 mm32f5277e_flash.scf 文件中,需要根據(jù) QSPI 的存儲器映像配置 __ROM_BASE 的數(shù)值,QSPI 外設(shè)的基礎(chǔ)地址為 0x90000000,這個地址值來自于微控制器的用戶手冊的 “地址映射” 章節(jié),如圖 3 所示。因此,__ROM_BASE的數(shù)值應(yīng)該為 0x90000000。

90deff2a-cee4-11ed-bfe3-dac502259ad0.png

圖3 QSPI 外設(shè)的存儲器映像編址范圍

QSPI Flash 的大小為8MB,其中 8MB = 8 * 1024 *1024 = 8388608,換算為 16 進(jìn)制是 0x00800000,因此,__ROM_SIZE 的數(shù)值應(yīng)該為 0x00800000。

Scatter File文件的內(nèi)容修改如下:

...
/*---------------------FlashConfiguration----------------------------------
;FlashConfiguration
;FlashBaseAddress<0x0-0xFFFFFFFF:8>
;FlashSize(inBytes)<0x0-0xFFFFFFFF:8>
;
*----------------------------------------------------------------------------*/
#define__ROM_BASE0x90000000
#define__ROM_SIZE0x00800000
...

修改源代碼

在配置好 Linker 所需的 Scatter File 文件后,需要對將要執(zhí)行的文件進(jìn)行檢查,去除可能會影響到 QSPI Flash 運(yùn)行的代碼,需要檢查的點(diǎn)如下:

檢查時鐘初始化部分:

是否存在復(fù)位 QSPI 模塊的時鐘或復(fù)位 QSPI 所使用的 GPIO 引腳時鐘的情況

若存在復(fù)位 QSPI 模塊,則處理器將無法從 QSPI Flash 中讀取下一個要執(zhí)行的指令。

若存在復(fù)位 QSPI 使用引腳的時鐘,則運(yùn)行到引腳時鐘復(fù)位后,GPIO 復(fù)位,引腳不再作為 QSPI 的接口,因此將會影響到 QSPI 與 QSPI Flash 之間的通信。

在 “hello_world” 工程中,以上代碼可能會出現(xiàn)在 board 目錄下的 “clock_init.c” 中。

檢查引腳初始化部分:

是否占用 QSPI 所使用的引腳

若引腳初始化時,占用 QSPI 所需引腳,將會影響與 QSPI Flash 的通信

在 “hello_world” 工程中,以上代碼可能會出現(xiàn)在 board 目錄下的 “pin_init.c” 中。

不能出現(xiàn)以間接模式操作 QSPI Flash 的代碼

若執(zhí)行間接模式操作 QSPI Flash 的代碼,會中斷直接讀模式,而直接讀模式是執(zhí)行存儲在 QSPI Flash 的應(yīng)用程序的基礎(chǔ),因此,執(zhí)行間接模式操作 QSPI Flash 的代碼會使應(yīng)用程序跑飛。

在 “hello_world” 工程中,沒有執(zhí)行間接模式操作 QSPI Flash 的代碼。

添加下載算法到可執(zhí)行文件

該可執(zhí)行樣例最終將在 QSPI Flash 中存儲并運(yùn)行,因此,需要添加根據(jù)實(shí)際所使用的 QSPI Flash芯片而配置的下載算法到樣例工程中,以幫助調(diào)試器將指定位置的數(shù)據(jù)寫入 Flash。

以配置完成的 PLUS-F5270 hello_world 樣例工程為例,打開 Options for Target 的 Debug 頁面,選擇 Settings 選項(xiàng)進(jìn)入 Cortex Jlink/JTrace Target Driver Setup 頁面的 Flash Download ,選擇 Add 選項(xiàng),進(jìn)入下載算法選擇列表,選擇前文中設(shè)置好的 MM32F5270 QSPI FlashLoader 下載算法,點(diǎn)擊 Add 進(jìn)行添加,如圖 4 所示。

90fc8e78-cee4-11ed-bfe3-dac502259ad0.png

圖4 添加下載算法到可執(zhí)行文件中

此處需注意,若下載算法的大小大于Flash Download中RAM for Algorithm的Size選項(xiàng)中的大小,會導(dǎo)致在下載時出現(xiàn) "Cannot Load Flash Programming Algorithm" 的問題,此時需適當(dāng)將Size的大小調(diào)大一些,本文中設(shè)置Size為 0x2000。

驗(yàn)證

配置完成在 QSPI Flash 上運(yùn)行的可執(zhí)行文件后,可嘗試使用下載算法將整個工程下載到 QSPI Flash 中并使用 2nd Bootloader 執(zhí)行這個工程。

先將前文中實(shí)現(xiàn)運(yùn)行在片內(nèi) Flash 的 2nd Bootloader 下載到 PLUS-F5270 開發(fā)板中,再將已經(jīng)配置好的添加了下載算法的 hello_world 樣例工程下載到開發(fā)板中的 QSPI Flash 中。下載成功后復(fù)位微控制器,通過串口調(diào)試器可看到輸出字符 "hello_world"。

9133ef8a-cee4-11ed-bfe3-dac502259ad0.png

圖5 使用QSPI Flash的hello_world樣例工程運(yùn)行結(jié)果

在調(diào)試模式下,可以從 Disassemby 窗口觀察到進(jìn)入main函數(shù)后地址處于 0x90000950,屬于 QSPI Flash 的范圍內(nèi),由此可見,整個 hello_world 下載到 QSPI Flash中并且正確運(yùn)行。

9150df50-cee4-11ed-bfe3-dac502259ad0.png

圖6 通過調(diào)試查看樣例起始地址

至此,已經(jīng)驗(yàn)證了下載算法可用, 2nd Bootloader 可用,修改后的樣例工程也可用。

但仍需驗(yàn)證下中斷是否可用,本文修改 hello_world 工程,驗(yàn)證 SysTick_Handler() 能否正確執(zhí)行。

volatileuint32_tsystime=0u;

intmain(void)
{
uint8_tch;

BOARD_Init();

printf("hello,world
");

SysTick_Config(CLOCK_SYSTICK_FREQ/1000u);

while(1)
{
if(systime>1000)
{
systime=0;
putchar('*');
}
}
}

voidSysTick_Handler()
{
systime++;
}

將修改后的樣例工程下載并運(yùn)行在 QSPI Flash 上,其結(jié)果如圖 7 所示。

9187f594-cee4-11ed-bfe3-dac502259ad0.png

圖7 驗(yàn)證SysTick中斷可用的樣例結(jié)果

至此,也驗(yàn)證了中斷也可正確執(zhí)行。

總結(jié)

為了編譯可在QSPI Flash上運(yùn)行的可執(zhí)行文件,需要作出以下兩件事:

修改 Linker 文件,將 ROM 的位置和大小修改為 QSPI Flash 的映射地址和大小

修改源代碼中所有可能會影響訪問QSPI Flash的代碼,例如 GPIO 的配置,時鐘的配置等

可以發(fā)現(xiàn)編譯可在 QSPI Flash上運(yùn)行的可執(zhí)行文件并不難,因此可以輕松將應(yīng)用程序遷移到 QSPI Flash 里。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FlaSh
    +關(guān)注

    關(guān)注

    10

    文章

    1669

    瀏覽量

    151149
  • 程序
    +關(guān)注

    關(guān)注

    117

    文章

    3825

    瀏覽量

    82531
  • MDK
    MDK
    +關(guān)注

    關(guān)注

    4

    文章

    211

    瀏覽量

    32546
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    676

    瀏覽量

    33812
  • QSPI
    +關(guān)注

    關(guān)注

    0

    文章

    45

    瀏覽量

    12617

原文標(biāo)題:靈動微課堂 (第249講)|mm32-2nd-bootloader技術(shù)白皮書(5)——編譯可在QSPI Flash上運(yùn)行的程序

文章出處:【微信號:MindMotion-MMCU,微信公眾號:靈動MM32MCU】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    自帶的QSPI flash如何下載

    有個一直很頭疼的問題就是自帶的QSPI flash如何下載的問題,我們以 STM32F7Discovery官方資料-1\STM32Cube_FW_F7_V1.1.0\Projects
    發(fā)表于 08-04 06:16

    使用QSPI FLASH來存放程序代碼

    使用QSPI FLASH來存放程序代碼,可以把程序的部分或者整個程序都存放在QSPI
    發(fā)表于 08-12 07:19

    STM32H7的內(nèi)部FlashQSPI Flash混合執(zhí)行程序的優(yōu)勢

    第83章 STM32H7的內(nèi)部FlashQSPI Flash運(yùn)行程序的混合方式(強(qiáng)烈推薦)本章節(jié)為大家講解內(nèi)部Flash和外部
    發(fā)表于 08-18 06:57

    內(nèi)部FlashQSPI Flash混合執(zhí)行程序的優(yōu)勢是什么?

    內(nèi)部FlashQSPI Flash混合執(zhí)行程序的優(yōu)勢是什么?
    發(fā)表于 11-23 06:12

    QSPI flash運(yùn)行毫米波芯片的測試代碼分享

    。本文就是基于這個問題,嘗試把MSS的測試代碼直接燒寫到QSPI flash運(yùn)行,并且通過GPIO點(diǎn)燈的狀態(tài)來反映測試情況,來解決沒有JTAG/仿真器情況下的測試問題。
    發(fā)表于 11-07 07:52

    什么是QSPI?如何使用QSPIQSPI Flash進(jìn)行通信呢?

    QSPI Flash 中的程序(XIP)。  因此,可以將 QSPI Flash 映射到一段指定的內(nèi)存地址空間內(nèi),例如,指定到 0x900
    發(fā)表于 03-17 15:17

    LS1046AQSPI Flash不可擦除怎么處理?

    在我定制的LS1046A板,我們只使用了一個QSPI Flash S25FS512SDSMFI011,通過QSPI_A_CS0/QSPI_
    發(fā)表于 05-18 07:56

    如何從ram運(yùn)行QSPI演示以測試自定義板QSPI Ram?

    大家好 是否有程序或教程告訴我如何使其中一個演示應(yīng)用程序從板載 RAM 運(yùn)行。 我有一個 MIMXRT1060-EVKB 開發(fā)套件以及一個裝有 MIMXRT1062 的定制板。 在自定義板
    發(fā)表于 05-31 10:35

    使用 PCIE 更新 AMD ZYNQ? 的 QSPI Flash 參考設(shè)計

    QSPI 控制器,用來更新 Flash 的啟動分區(qū)。 軟件方面,移植了 Embedded SW 的相關(guān)驅(qū)動代碼至 xdma 平臺,并提供了一個簡單的上位機(jī)測試程序,用來燒寫啟動鏡像至 Fl
    發(fā)表于 11-30 18:49

    如何使用QSPI Flash控制器開發(fā)板QSPI Flash進(jìn)行寫讀操作

    學(xué)習(xí)內(nèi)容 本文首先介紹FlashQSPI Flash控制器的相關(guān)內(nèi)容,然后使用 QSPI Flash 控制器,開發(fā)板
    的頭像 發(fā)表于 06-10 17:08 ?1.5w次閱讀
    如何使用<b class='flag-5'>QSPI</b> <b class='flag-5'>Flash</b>控制器開發(fā)板<b class='flag-5'>上</b>的 <b class='flag-5'>QSPI</b> <b class='flag-5'>Flash</b>進(jìn)行寫讀操作

    從TMS320F281xDSP片FLASH運(yùn)行應(yīng)用程序_從FLASH轉(zhuǎn)移到RAM運(yùn)行_BIOS

    從TMS320F281xDSP片FLASH運(yùn)行應(yīng)用程序_從FLASH轉(zhuǎn)移到RAM運(yùn)行_BIO
    發(fā)表于 07-30 11:54 ?3次下載
    從TMS320F281xDSP片<b class='flag-5'>上</b><b class='flag-5'>FLASH</b>中<b class='flag-5'>運(yùn)行</b>應(yīng)用<b class='flag-5'>程序</b>_從<b class='flag-5'>FLASH</b>轉(zhuǎn)移到RAM<b class='flag-5'>運(yùn)行</b>_BIOS

    QSPI flash 運(yùn)行毫米波芯片的測試代碼

    的測試代碼直接燒寫到QSPI flash運(yùn)行,并且通過GPIO點(diǎn)燈的狀態(tài)來反映測試情況,來解決沒有JTAG/仿真器情況下的測試問題。 ?????? 本文
    的頭像 發(fā)表于 11-10 09:36 ?1564次閱讀
    在 <b class='flag-5'>QSPI</b> <b class='flag-5'>flash</b> <b class='flag-5'>上</b><b class='flag-5'>運(yùn)行</b>毫米波芯片的測試代碼

    QSPI flash運(yùn)行毫米波芯片的測試代碼

    QSPI flash運(yùn)行毫米波芯片的測試代碼
    發(fā)表于 10-28 12:00 ?0次下載
    在<b class='flag-5'>QSPI</b> <b class='flag-5'>flash</b><b class='flag-5'>上</b><b class='flag-5'>運(yùn)行</b>毫米波芯片的測試代碼

    微控制器外置QSPI Flash選型的注意事項(xiàng)

    為了擴(kuò)展微控制器可用的 Flash 空間,用戶可以使用 QSPI 接口連接 QSPI Flash;為了讓用戶能盡量像使用片內(nèi) Flash
    的頭像 發(fā)表于 04-07 09:23 ?2638次閱讀

    mm32-2nd-bootloader技術(shù)白皮書(5)——編譯可在QSPI Flash運(yùn)行程序

    mm32-2nd-bootloader技術(shù)白皮書(5)——編譯可在QSPI Flash運(yùn)行
    的頭像 發(fā)表于 10-24 16:14 ?650次閱讀
    mm32-2nd-bootloader技術(shù)白皮書(5)——<b class='flag-5'>編譯</b><b class='flag-5'>可在</b><b class='flag-5'>QSPI</b> <b class='flag-5'>Flash</b><b class='flag-5'>上</b><b class='flag-5'>運(yùn)行</b>的<b class='flag-5'>程序</b>
    主站蜘蛛池模板: 风流护士| 成年网站在线在免费播放 | 亚洲成人午夜影院 | 四虎永久在线日韩精品观看 | 好黄好猛好爽好痛的视频 | 国产精品五月天 | 国产精品免费拍拍拍 | 又黑又长黑人欧美三级 | 欧美色图综合网 | 性欧洲女人18 | 日日干干| 中文字幕第一页在线 | 天天舔天天摸 | 亚洲欧洲精品成人久久曰影片 | 亚洲欧美一区二区三区麻豆 | 色婷婷综合缴情综六月 | 在线播放视频网站 | se97se成人亚洲网站 | 成 年 人 视频在线播放 | 高h细节肉爽文男男 | 国产成人精品高清在线 | 四虎永久在线观看免费网站网址 | 亚洲国产精品va在线观看麻豆 | 天堂网在线www最新版在线 | bt磁力在线搜索 | 国产一级毛片外aaaa | 亚洲成a人片毛片在线 | 手机看片1024国产基地 | 欧美+日本+国产+在线观看 | 免费抓胸吻胸激烈视频网站 | 最新欧美精品一区二区三区 | 国色天香网在线 | 国产黄色a三级三级三级 | 精品午夜久久福利大片免费 | 一级特黄色片 | 波多野结衣在线免费视频 | 久草男人天堂 | 日本xxxx色视频在线观看免 | 在线观看h视频 | 一区二区三区高清在线观看 | 噜噜噜噜私人影院 |