TouchGFX工程中hex目標(biāo)文件的燒寫方法(二)使用KEIL-2

上一篇文章介紹了如何在KEIL中配置ST-LINK實(shí)現(xiàn)一鍵燒寫hex文件,可是,我就是想只用自動(dòng)生成的KEIL文件和工程選項(xiàng)配置來(lái)燒寫、調(diào)試,如何進(jìn)行呢?

這難道不是一個(gè)多余的問(wèn)題嗎?難道自動(dòng)生成的KEIL工程不能運(yùn)行的嗎?還真的不能運(yùn)行(燒寫失?。。?,詳情見(jiàn)下:

(這也許是TouchGFX當(dāng)前版本V4.10.0的小bug,期待將來(lái)升級(jí)后的版本不再有這個(gè)問(wèn)題。)

TouchGFX自動(dòng)生成的KEIL工程,編譯是沒(méi)有問(wèn)題的:


圖一

上圖第七行可以看到,0 Error,生成了hex,沒(méi)有問(wèn)題。但,按下 F8 燒寫快捷鍵,提示出錯(cuò):0x9000 0000 地址開(kāi)始的代碼段沒(méi)有找到相應(yīng)的燒寫算法。這是什么意思呢?讓我們來(lái)簡(jiǎn)單說(shuō)說(shuō)MCU燒寫flash的細(xì)節(jié):


圖二

不同的MCU,其配置的flash物理特性可能是有區(qū)別的,讀寫flash需要一些跟這個(gè)flash有關(guān)的參數(shù),比如讀寫周期、等待間隔、讀寫總線的定義等等,這些參數(shù)就是燒寫falsh的“算法”。實(shí)際進(jìn)行燒寫操作時(shí)是分為2個(gè)步驟的:首先需要把這些算法加載(download)到MCU內(nèi)部的RAM中,然后在MCU內(nèi)部運(yùn)行代碼來(lái)具體執(zhí)行這些算法、讀寫flash。這樣,就容易理解圖一提示的錯(cuò)誤了:燒寫地址 0x0800 0000 (內(nèi)部flash) 的那些代碼沒(méi)問(wèn)題,但對(duì)于地址 0x9000 0000 (外部flash),因?yàn)闆](méi)有加載對(duì)應(yīng)算法,不知道該怎么讀寫flash、無(wú)法進(jìn)行燒寫。讓我們來(lái)看看當(dāng)前的配置中燒寫算法加載的情況:


圖三


圖四

圖四顯示:默認(rèn)只加載了F7片內(nèi)2個(gè)地址段的flash算法,需要手動(dòng)添加片外flash算法:點(diǎn)擊 Add 按鈕,在彈出的窗口中找到本文使用的F769I-DISCO板子對(duì)應(yīng)的算法、并添加進(jìn)來(lái):


圖五

試著按下 F8 再燒寫一次,又出現(xiàn)了錯(cuò)誤:


圖六

提示:無(wú)法加載燒寫算法!這是因?yàn)閐ownload算法文件是需要占用MCU片內(nèi)RAM空間的,而這個(gè)空間大小是由KEIL默認(rèn)分配好的,一般是0x1000 ?,F(xiàn)在需要擴(kuò)大這個(gè)空間到0x2000:


圖七

再次燒寫,出現(xiàn)燒寫的進(jìn)度條,直到燒寫完畢:


圖八


如果多次遇到能正常開(kāi)始燒寫、但中途報(bào)錯(cuò)、中斷燒寫的情況,可以改為在KEIL中使用ST-LINK燒寫(至少可以燒寫的更快?。?,見(jiàn)這里。

下一節(jié)將介紹:如何在IAR中燒寫目標(biāo)文件。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容