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

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

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

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

mm32-2nd-bootloader技術(shù)進(jìn)階設(shè)計:實現(xiàn)Ymodem更新代碼

靈動MM32MCU ? 來源:靈動MM32MCU ? 2023-06-09 09:28 ? 次閱讀

需求

前文中實現(xiàn)了一款簡單的 2nd Bootloader,能夠跳轉(zhuǎn)執(zhí)行存儲在 QSPI Flash 中的應(yīng)用程序,但 2nd Bootloader 如果僅僅只是用于跳轉(zhuǎn)執(zhí)行程序的話,豈不是有些太簡單了?從本章開始,將會講解幾種 2nd Bootloader 進(jìn)階設(shè)計,實現(xiàn)類似 ISP 更新固件的功能,以及在 OTA 升級時避免變“磚”等設(shè)計,以及講解一些 2nd Bootloader 的程序設(shè)計思路。

本文將以 Ymodem 協(xié)議獲取應(yīng)用程序的二進(jìn)制文件為例,實現(xiàn)類似 ISP 更新固件的功能。

需要注意:

下文中提到的 ISP 僅指由 2nd Bootloader 實現(xiàn)的定制 ISP,而非微控制器本身的 ISP。

上位機(jī)發(fā)送的文件是二進(jìn)制(.bin)文件,而不是 Intel Hex 標(biāo)準(zhǔn)的 hex (.hex)文件。

目前僅考慮直接覆蓋的方式燒寫程序,即獲取到一段二進(jìn)制數(shù)據(jù)后,直接寫入到 QSPI Flash 的對應(yīng)位置。

Ymodem 介紹

Ymodem 協(xié)議是一個文件傳輸協(xié)議,通常用于在資源受限的設(shè)備中傳輸文件,它可以一次傳輸1024字節(jié)的信息塊,同時還支持傳輸多個文件。

Ymodem 協(xié)議有較多的變種,本文使用的是常用的 Ymodem-1K 協(xié)議。

通信時序

通訊時序如圖1:

dc51c724-05f0-11ee-962d-dac502259ad0.png

圖1 Ymodem 通信時序

幀格式

Ymodem 有兩種幀格式:

幀頭為 SOH 時,信息塊長度為128字節(jié),總長度133字節(jié)。

幀頭為 STX 時,信息塊長度為1024字節(jié),總長度1029字節(jié)。

兩種幀的幀格式如表1所示:

dc6bd330-05f0-11ee-962d-dac502259ad0.png

表1 SOH / STX 幀格式

包號從0x00起始,每成功傳輸一幀數(shù)據(jù)后包號加1,計數(shù)到0xFF后,下一次包號重新從0x00開始計數(shù)。

包號反碼是包號取反的數(shù)值,如0x00的包號,包號反碼為0xFF,0x01的包號,包號反碼為0xFE。

信息塊是要傳輸?shù)木唧w數(shù)據(jù)塊,起始幀包含了文件名和文件大小,數(shù)據(jù)幀包含了分段的數(shù)據(jù)內(nèi)容。

校驗采用 CRC 校驗,僅校驗信息塊的內(nèi)容。

除了兩種幀格式外,還有 ACK、NAK、CAN、EOT、字符 'C' 五種命令,長度僅有1字節(jié)。

起始幀、數(shù)據(jù)幀、結(jié)束幀

起始幀采用幀頭為 SOH 的幀格式傳輸,包號為 0x00,信息塊中包含文件名字符串和文件大小字符串 (十進(jìn)制表示),字符串以0x00結(jié)尾,信息塊剩余部分以0x00填充。

數(shù)據(jù)幀采用幀頭為 STX 的幀格式傳輸,包號從0x01開始計數(shù),信息塊中包含分段的文件內(nèi)容。

當(dāng)最后一段要發(fā)送的數(shù)據(jù)塊大小超過128字節(jié)但小于1024字節(jié)時,采用幀頭 STX 的幀格式傳輸,信息塊結(jié)尾用 0x1A 填充。小于128字節(jié),采用幀頭為 SOH 的幀格式傳輸,信息塊結(jié)尾依然用 0x1A 填充。

結(jié)束幀和起始幀一樣,唯一不同的是沒有文件名和文件大小,即信息塊的內(nèi)容全為 0x00。

通訊指令

通訊指令如表2所示。

dc874642-05f0-11ee-962d-dac502259ad0.png

表2 Ymodem通訊指令

協(xié)議實現(xiàn)

CRC 校驗:

Ymodem 協(xié)議中提供了 CRC 校驗的 C 代碼片段,但由于該協(xié)議發(fā)布時的 C 標(biāo)準(zhǔn)不同于現(xiàn)在,因此不能直接使用,此處提供一份 CRC 校驗的實現(xiàn)代碼,通過調(diào)用 crc_calc() 來實現(xiàn)對信息塊內(nèi)容的校驗:

staticuint16_tcrc_update(uint16_tcrc,uint8_tdata)
{
uint32_tcrc32=crc;
uint32_tdata32=data;

for(uint32_ti=0u;i

當(dāng)我們需要對一段數(shù)據(jù)進(jìn)行 CRC 計算時,調(diào)用 crc_calc() 函數(shù),傳入數(shù)據(jù)起始地址和數(shù)據(jù)長度即可計算出 CRC 校驗值。

STX 包處理:

通過對 Ymodem 協(xié)議的介紹可知,STX 包只在接收數(shù)據(jù)的過程中使用,因此收到 STX 包時,僅需要進(jìn)行如下處理:

CRC校驗信息塊。

計算信息塊的有效數(shù)據(jù)長度(需要注意最后一幀數(shù)據(jù)的有效長度不定)。

存儲數(shù)據(jù)。

發(fā)送 ACK 指令或 NAK 指令。

SOH 包處理:

SOH 包的處理要比 STX 包的處理復(fù)雜,因為包含了起始幀和結(jié)束幀的處理。

起始 / 結(jié)束幀和數(shù)據(jù)幀只能通過當(dāng)前狀態(tài)來判斷,其中,除信息塊長度不同外,數(shù)據(jù)幀的處理同 STX 包的處理一致。

由于 Ymodem 可以多文件傳輸?shù)奶匦裕幱谠撌盏浇Y(jié)束幀的狀態(tài)時也有可能收到起始幀,因此起始幀和結(jié)束幀需要進(jìn)行一個判斷:信息塊第一個字節(jié)是否為 0x00。如果不是 0x00 則為起始幀,否則為結(jié)束幀。

起始幀要攜帶文件名和文件大小,信息塊的第一個字節(jié)一定是一個可顯示的字符,當(dāng)收到起始幀時,需進(jìn)行如下處理:

讀取文件名和文件大小。

進(jìn)入讀數(shù)據(jù)塊的狀態(tài)。

發(fā)送 ACK。

發(fā)送 字符 'C'。

結(jié)束幀的信息塊全為0x00,收到結(jié)束幀時,需進(jìn)行如下處理:

發(fā)送 ACK。

結(jié)束 Ymodem 傳輸。

EOT 指令處理:

EOT 代表本次文件傳輸結(jié)束(但不代表所有文件都已發(fā)送完畢),因此,收到 EOT 指令時,需將當(dāng)前狀態(tài)調(diào)整為起始狀態(tài),準(zhǔn)備接收新的文件,具體處理如下:

進(jìn)入起始狀態(tài)。

發(fā)送 ACK。

發(fā)送字符 'C'。

CAN 指令處理:

CAN 是 cancel 的縮寫,當(dāng)收到 CAN 指令后,表示后續(xù)的 Ymodem 傳輸終止,該指令是雙向的,既可以由 Host 發(fā)送, 也可以是 Device 發(fā)送,收到 CAN 指令后,具體操作如下:

退出 Ymodem 傳輸。

接收超時處理:

Device 在接收數(shù)據(jù)前,會先向 Host 發(fā)送字符 'C',但如果此時 Host還沒有將文件準(zhǔn)備好,則會卡死在準(zhǔn)備接收狀態(tài)。

Device 在接收數(shù)據(jù)過程中,如果少接收到某個字節(jié)數(shù)據(jù),信息不完整,則會卡死在接收數(shù)據(jù)的過程中。

Device 發(fā)送某個指令后,Host 可能沒有收到指令,不會繼續(xù)下一幀數(shù)據(jù)的發(fā)送,Device 還是會卡死在接收的過程中。

因此,需要引入接收超時的操作。

當(dāng)接收超時后,判斷狀態(tài),如果是起始狀態(tài),且沒有收到任何字節(jié),則可能是 Host 還沒有準(zhǔn)備發(fā)送文件,重新發(fā)送字符 'C'。

如果數(shù)據(jù)沒有接收完整,則可能是少收到幾個字節(jié)的數(shù)據(jù),發(fā)送 NAK,讓 Host 重新發(fā)送數(shù)據(jù)。

如果沒有收到數(shù)據(jù),則 Host 可能沒有收到回復(fù)的指令,重新發(fā)送上次發(fā)送的指令。

軟件設(shè)計

就像是計算機(jī)進(jìn)入 BIOS 設(shè)置,需要用戶在開機(jī)的瞬間不停按下鍵盤上某個按鍵那樣,為了使 2nd Bootloader 知道自己是該跳轉(zhuǎn)執(zhí)行應(yīng)用程序,還是進(jìn)入 ISP 等模式,需要外界有一個輸入:這個輸入可以是某個引腳的電平變化,也可以是在有限的時間里通過某種通信接口獲取到一段外界指令,當(dāng) 2nd Bootloader 讀取到這個來自外界的輸入后,才能知道自己接下來要干什么。因此,除了實現(xiàn) ISP 下載的功能外,我們還需要實現(xiàn)選擇工作模式的功能,如圖2所示:

dcaaf9ca-05f0-11ee-962d-dac502259ad0.png

圖2 軟件設(shè)計

Ymodem 只是獲取二進(jìn)制文件的一種方式,除了 Ymodem,我們也可以采用 Xmodem,Zmodem協(xié)議,除了串口,還可以使用 CAN,甚至通過 USB 讀取 U 盤里的文件等方式。

綜上所述,在設(shè)計 2nd Bootloader 時,不能綁死選擇工作模式的方式,也不能綁死 ISP 的工作方式,甚至,不能綁死 2nd Bootloader 只能在兩種工作模式下二選一(不要使用 if & else 的語句區(qū)分工作模式,而應(yīng)使用 switch 語句區(qū)分工作模式),因此,2nd Bootloader 的頂層應(yīng)用邏輯,只能是下面的設(shè)計:

intmain(void)
{
......
switch(get_run_mode())
{
caseEXEC_QSPI:
jump_to_app(QSPI_BASE);
break;
caseISP:
isp();
break;
......
default:
jump_to_app(QSPI_BASE);
break;
}
......
}

如果我們期望從某種工作模式下切換到另一種工作模式,最好的做法是先讓外界輸入保持為目標(biāo)工作模式的狀態(tài),然后讓微控制器復(fù)位,再次進(jìn)入 2nd Bootloader,這樣的做法是能夠保持微控制器切換工作模式后,仍然保持相對 “干凈” 的環(huán)境狀態(tài),例如,微控制器前一次進(jìn)入到了 ISP 模式,通過串口更新了應(yīng)用程序,如果直接跳轉(zhuǎn)到應(yīng)用程序,則發(fā)現(xiàn)串口依然保持打開的狀態(tài),這對應(yīng)用程序而言可能不是期望的結(jié)果,那提前關(guān)閉串口呢?還有 GPIO 引腳的配置沒有改動……最簡單省事的做法,其實就是直接讓微控制器復(fù)位,而串口和串口的 GPIO 引腳也就會在微控制器復(fù)位之后,處于默認(rèn)相對比較 “干凈” 的狀態(tài)。這也是為什么圖x所示的流程圖,ISP 模式的下一步是復(fù)位微控制器。

當(dāng)然,如果在 get_run_mode() 的時候就用到了串口,那還是老老實實在 get_run_mode() 執(zhí)行到 return 之前,就把串口和 GPIO 處理干凈。

這里提一個比較“花”的設(shè)計方法,我們可以把 ISP 也做成應(yīng)用程序,下載到片內(nèi) Flash 中 一塊確認(rèn)好的位置(假設(shè)起始地址為 ISP_BASE),然后同樣使用 jump_to_app() 跳轉(zhuǎn),只是輸入參數(shù)從 QSPI_BASE 變?yōu)榱?ISP_BASE,這個做法會用在 USB DFU 模式上,因為一旦進(jìn)入了 USB DFU 模式,USB 就不能再作為其它設(shè)備進(jìn)行工作,當(dāng) USB 設(shè)備支持 USB DFU 時,就需要使用這種辦法單獨進(jìn)入到 DFU 模式下。

測試

選擇工作模式:

在這里,我們通過讀取指定引腳的電平狀態(tài)來確定該進(jìn)入何種工作模式。

uint32_tget_run_mode()
{
......
if(GPIO_ReadInDataBit(BOARD_BOOT_GPIO_PORT,BOARD_BOOT_GPIO_PIN))
{
returnEXEC_QSPI;
}
else
{
returnISP;
}
......
}

ISP 模式:

當(dāng)進(jìn)入 ISP 模式后,開始使用 Ymodem 協(xié)議接收數(shù)據(jù)。

voidisp()
{
......
/*getnewappbin&writetoqspiflash.*/
ymodem_recv_start(&ym,100000);
while(0==(YMODEM_STATUS_DONE&ym.status))
{
ymodem_recv_byte_handler(&ym);
}

/*resetmcu.*/
__set_FAULTMASK(1);
NVIC_SystemReset();
}

生成應(yīng)用程序的二進(jìn)制文件:

我們?nèi)匀灰?MindSDK 的 hello_world 樣例工程為例,修改其 Linker 文件并檢查代碼,使其成為一個可存儲在 QSPI Flash 上的應(yīng)用程序,隨后在 MDK 工程中,點擊魔術(shù)棒(Options for Target...),點擊 User 列表,如圖3所示,在指定位置(紅框中的 User Command)加入下面這句話,并在前面打上對勾:

fromelf.exe --bin -o "@L.bin" "#L"

然后編譯工程,就能在工程文件所在的目錄下找到生成的 bin 文件。

dcc84caa-05f0-11ee-962d-dac502259ad0.png

圖3 生成二進(jìn)制文件

本文使用 TeraTerm 軟件進(jìn)行 Ymodem 傳輸文件,如圖4所示:

dcf15e56-05f0-11ee-962d-dac502259ad0.png

圖4 TeraTerm Ymodem 發(fā)送文件

但在測試時發(fā)現(xiàn),當(dāng)文件傳輸?shù)?100% 時,TeraTerm 并沒有結(jié)束傳輸,但對 2nd Bootloader 的代碼進(jìn)行分析后并沒有發(fā)現(xiàn)存在邏輯問題,因此對 TeraTerm 的 Ymodem 協(xié)議產(chǎn)生了懷疑,如圖5所示。

dd221fb4-05f0-11ee-962d-dac502259ad0.png

圖5 TeraTerm 傳輸文件,總卡在 100% 處

使用兩個 USB 串口模塊,將其 TXD 與 RXD 相連,其中一個串口模塊使用 TeraTerm 打開,另一個使用 SSCOM 打開(為了能夠發(fā)送和顯示一些非字符類的控制指令),使用 TeraTerm 的 Ymodem 協(xié)議發(fā)送文件, SSCOM 接收來自 TeraTerm 的數(shù)據(jù),并按照 Ymodem 協(xié)議回復(fù)指令,模擬完整的 Ymodem 傳輸協(xié)議,如圖6所示。

dd491560-05f0-11ee-962d-dac502259ad0.png

圖6 模擬 Ymodem 協(xié)議傳輸文件過程

結(jié)果發(fā)現(xiàn),TeraTerm 實現(xiàn)的 Ymodem 協(xié)議在發(fā)送單個文件的時候,存在以下問題:

發(fā)送 EOT 指令后,需接收兩次 ACK 和字符 ‘C’。

沒有發(fā)送 last block。

因此,我們需要針對 TeraTerm 的問題,對 Ymodem 的實現(xiàn)做一些改動,或者使用其它軟件通過 Ymodem 傳輸二進(jìn)制文件。修改后的時序圖如下:

dd6fc30e-05f0-11ee-962d-dac502259ad0.png

圖7 針對 TeraTerm 的 Ymodem 實現(xiàn)進(jìn)行的改動

刪去了對 last block 的接收,并且在收到 EOT 后,主動發(fā)送兩次 ACK 和 字符 ‘C’,經(jīng)過修改后測試,TeraTerm 的 Ymodem 能夠按照傳輸完成的方式正常退出。

下載程序,如圖8所示:

dd95af74-05f0-11ee-962d-dac502259ad0.png

圖8 下載應(yīng)用程序

運行應(yīng)用程序,如圖9所示:

ddb781c6-05f0-11ee-962d-dac502259ad0.png

圖9 運行應(yīng)用程序

結(jié)語

本文在 2nd Bootlaoder 的基礎(chǔ)上實現(xiàn)了基于 Ymodem 協(xié)議的 ISP 功能,能夠通過復(fù)位后指定引腳的電平狀態(tài)來區(qū)分該執(zhí)行應(yīng)用程序還是進(jìn)入 ISP 模式,進(jìn)入 ISP 模式后,可以使用 TeraTerm 等軟件,通過串口,使用 Ymodem 協(xié)議將二進(jìn)制文件下載到與微控制器連接的 QSPI Flash 中,實現(xiàn)固件更新的功能。

但本文并沒有對固件更新過程中可能出現(xiàn)的意外進(jìn)行處理,所以這種 ISP 的辦法不能直接用在 OTA 升級中,在下一章中,我們將會探討 OTA 升級時可能會出現(xiàn)的意外情況,并且進(jìn)行處理。

審核編輯:湯梓紅

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

    關(guān)注

    10

    文章

    1642

    瀏覽量

    148677
  • ISP
    ISP
    +關(guān)注

    關(guān)注

    6

    文章

    478

    瀏覽量

    52016
  • 應(yīng)用程序
    +關(guān)注

    關(guān)注

    38

    文章

    3292

    瀏覽量

    57917
  • bootloader
    +關(guān)注

    關(guān)注

    2

    文章

    235

    瀏覽量

    45736
  • Ymodem
    +關(guān)注

    關(guān)注

    0

    文章

    3

    瀏覽量

    3633

原文標(biāo)題:靈動微課堂 (第259講)|mm32-2nd-bootloader技術(shù)白皮書(8)——進(jìn)階:實現(xiàn) Ymodem 更新代碼

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

收藏 人收藏

    評論

    相關(guān)推薦

    mm32-2nd-bootloader技術(shù)白皮書——配置軟硬件環(huán)境

    MM32F5 系列微控制器具備 QSPI 接口,可以外接 QSPI Flash,擴(kuò)大可使用的 Flash 空間,從而滿足那些需要大 Flash 空間應(yīng)用的需求,讓 Flash 空間的大小不再成為限制應(yīng)用開發(fā)的瓶頸。
    發(fā)表于 03-08 13:49 ?305次閱讀

    stm32 Bootloader設(shè)計(YModem協(xié)議)(轉(zhuǎn))

    位的win7下超級終端沒辦法使用。 不過SecureCRT工具到是可以在64位win7使用,但是官方代碼不對其支持。SecureCRT下支持的是最原始的YModem協(xié)議,第一幀數(shù)據(jù)包中不包含總字節(jié)數(shù)
    發(fā)表于 01-22 15:12

    談?wù)凷TM32F4 IAP BOOTLOADER YMODEM

    STM32F4 IAP BOOTLOADER YMODEM XModem、YModem、ZModem
    發(fā)表于 08-23 07:22

    基于ymodem協(xié)議的Bootloader是怎樣通過串口進(jìn)行傳輸?shù)哪?/a>

    STM32的Bootloader該如何去實現(xiàn)呢?基于ymodem協(xié)議的Bootloader是怎樣通過串口進(jìn)行傳輸?shù)哪兀?/div>
    發(fā)表于 12-06 06:26

    基于MM32F0140系列MCU實現(xiàn)UDS Bootloader的設(shè)計

    而言,如果程序內(nèi)置有基于FlexCAN Bootloader,則每次更新 ECU 的固件可不必再使用燒錄器進(jìn)行燒錄,而可直接通過 CAN總線來更新程序,而且隨著汽車智能化的普及,甚至可以對 ECU 進(jìn)行遠(yuǎn)程升級。有無
    發(fā)表于 09-15 16:35

    BK7252更新ymodembootloader功能

    提示: 如果板子還能正常啟動,可以直接更新RBL文件,一、更新ymodembootloader 固件硬件準(zhǔn)備:麻雀1號開發(fā)板,配套的無線編程器,typeC 線,PC 電腦軟件準(zhǔn)
    發(fā)表于 09-27 10:55

    使用OTA升級的方法更新ymodem bootloader的rbl文件

    前言上次分享了一個需要使用無線編程器燒錄帶 ymodem 功能的 bootloader ,有些朋友反饋說手上沒有無線編程器,so 建議造一個可以通過 ota 更新的帶 ymodem
    發(fā)表于 09-27 10:59

    通過Ymodem創(chuàng)建IAP應(yīng)用程序

    更新。以上3個步驟,我們就可以得到一個.bin的APP程序,通過bootloader程序即可實現(xiàn)更新。3.4 MCU 與上位機(jī)通信流程1. MCU與上位機(jī)通過
    發(fā)表于 11-03 20:11

    使用bootloader進(jìn)行ymodem_ota升級失敗是何原因

    問題描述:在使用官方提供的bootloader進(jìn)行ymodem_ota升級時發(fā)現(xiàn),在不更新的情況下,boot每次上電都會引導(dǎo)先從download區(qū)將程序?qū)懭隺pp區(qū),在運行。測試環(huán)境:使用官方提供
    發(fā)表于 11-16 10:48

    Bootloader 系統(tǒng)使用新應(yīng)用代碼和/或數(shù)據(jù)管理組件閃存的更新流程

    Bootloader 系統(tǒng)使用新應(yīng)用代碼和/或數(shù)據(jù)管理組件閃存的更新流程
    發(fā)表于 10-09 16:17 ?4次下載
    <b class='flag-5'>Bootloader</b> 系統(tǒng)使用新應(yīng)用<b class='flag-5'>代碼</b>和/或數(shù)據(jù)管理組件閃存的<b class='flag-5'>更新</b>流程

    Bootloader系統(tǒng)使用新應(yīng)用代碼和/或數(shù)據(jù)管理組件閃存的更新流程

    Bootloader系統(tǒng)使用新應(yīng)用代碼和/或數(shù)據(jù)管理組件閃存的更新流程
    發(fā)表于 10-10 08:24 ?12次下載
    <b class='flag-5'>Bootloader</b>系統(tǒng)使用新應(yīng)用<b class='flag-5'>代碼</b>和/或數(shù)據(jù)管理組件閃存的<b class='flag-5'>更新</b>流程

    bootloader如何更新

    BootLoader就是單片機(jī)啟動時候運行的一段小程序,這段程序負(fù)責(zé)單片機(jī)固件的更新,也就是單片機(jī)選擇性的自己給自己下程序??梢?b class='flag-5'>更新,也可以不更新,
    發(fā)表于 11-10 08:22 ?7862次閱讀
    <b class='flag-5'>bootloader</b>如何<b class='flag-5'>更新</b>

    stm32f103f8t6+keil+IAP+Ymodem(有線傳輸)+keil

    :stm32f103f8t6+Ymodem+Bootloader(有線下載)(單APP程序)文中灰色底色的為摘自其他作者的文章,文章下附鏈接筆者通過參考ST官方Bootloader代碼和正點原子APP
    發(fā)表于 12-17 18:10 ?21次下載
    stm32f103f8t6+keil+IAP+<b class='flag-5'>Ymodem</b>(有線傳輸)+keil

    mm32-2nd-bootloader配置軟硬件環(huán)境

    MM32F5 系列微控制器具備 QSPI 接口,可以外接 QSPI Flash,擴(kuò)大可使用的 Flash 空間,從而滿足那些需要大 Flash 空間應(yīng)用的需求,讓 Flash 空間的大小不再成為限制應(yīng)用開發(fā)的瓶頸。
    的頭像 發(fā)表于 03-08 13:51 ?806次閱讀

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

    mm32-2nd-bootloader技術(shù)白皮書(5)——編譯可在QSPI Flash上運行的程序
    的頭像 發(fā)表于 10-24 16:14 ?537次閱讀
    <b class='flag-5'>mm32-2nd-bootloader</b><b class='flag-5'>技術(shù)</b>白皮書(5)——編譯可在QSPI Flash上運行的程序
    主站蜘蛛池模板: 久久久香蕉视频 | 国产精品美女久久久久网站 | 狠狠干激情 | 丁香六月色婷婷综合网 | 日本免费一区二区视频 | 男人你懂的在线观看视频 | 黄a视频| 午夜爽爽 | www.天天色 | 色午夜影院 | 美女扒开尿口让男人30视频 | 网站大全黄免费 | 国产美女亚洲精品久久久久久 | 国产精品japanese人妖 | 色多多污网站在线观看 | 亚洲欧洲精品成人久久曰影片 | 午夜国产精品久久影院 | 手机看片久久 | 日本一二线不卡在线观看 | 色多多高清在线观看视频www | 久久网站免费观看 | 日日噜噜夜夜狠狠tv视频免费 | 亚偷熟乱区视频在线观看 | 99久久免费精品高清特色大片 | 最近高清在线视频观看免费 | 444kk免费| 欧美一区二区三区四区视频 | 欧美视频精品一区二区三区 | 182tv免费视视频线路一二三 | www.色视频 | aⅴ一区二区三区 | 激情五月激情综合 | 天天爽天天干天天操 | 久久精品亚洲精品国产色婷 | 国产亚洲卡二卡3卡4卡乱码 | 国产理论精品 | 成人三级电影在线观看 | 乱码一区二区三区完整视频 | 国产精品久久久久久久久齐齐 | 欧美一级特黄aa大片 | 人与牲动交xxxxbbbb高清 |