上一篇文章介紹了如何在KEIL中配置ST-LINK實現(xiàn)一鍵燒寫hex文件,可是舶衬,我就是想只用自動生成的KEIL文件和工程選項配置來燒寫唬涧、調(diào)試,如何進行呢宫补?
這難道不是一個多余的問題嗎檬姥?難道自動生成的KEIL工程不能運行的嗎?還真的不能運行(燒寫失敺叟隆=∶瘛),詳情見下:
(這也許是TouchGFX當前版本V4.10.0的小bug贫贝,期待將來升級后的版本不再有這個問題秉犹。)
TouchGFX自動生成的KEIL工程,編譯是沒有問題的:
上圖第七行可以看到稚晚,0 Error崇堵,生成了hex,沒有問題客燕。但鸳劳,按下 F8 燒寫快捷鍵,提示出錯:0x9000 0000 地址開始的代碼段沒有找到相應的燒寫算法也搓。這是什么意思呢赏廓?讓我們來簡單說說MCU燒寫flash的細節(jié):
不同的MCU,其配置的flash物理特性可能是有區(qū)別的傍妒,讀寫flash需要一些跟這個flash有關(guān)的參數(shù)幔摸,比如讀寫周期、等待間隔颤练、讀寫總線的定義等等既忆,這些參數(shù)就是燒寫falsh的“算法”。實際進行燒寫操作時是分為2個步驟的:首先需要把這些算法加載(download)到MCU內(nèi)部的RAM中嗦玖,然后在MCU內(nèi)部運行代碼來具體執(zhí)行這些算法患雇、讀寫flash。這樣踏揣,就容易理解圖一提示的錯誤了:燒寫地址 0x0800 0000 (內(nèi)部flash) 的那些代碼沒問題庆亡,但對于地址 0x9000 0000 (外部flash),因為沒有加載對應算法捞稿,不知道該怎么讀寫flash、無法進行燒寫。讓我們來看看當前的配置中燒寫算法加載的情況:
圖四顯示:默認只加載了F7片內(nèi)2個地址段的flash算法娱局,需要手動添加片外flash算法:點擊 Add 按鈕彰亥,在彈出的窗口中找到本文使用的F769I-DISCO板子對應的算法、并添加進來:
試著按下 F8 再燒寫一次衰齐,又出現(xiàn)了錯誤:
提示:無法加載燒寫算法任斋!這是因為download算法文件是需要占用MCU片內(nèi)RAM空間的,而這個空間大小是由KEIL默認分配好的耻涛,一般是0x1000 》峡幔現(xiàn)在需要擴大這個空間到0x2000:
再次燒寫,出現(xiàn)燒寫的進度條抹缕,直到燒寫完畢:
如果多次遇到能正常開始燒寫澈蟆、但中途報錯、中斷燒寫的情況卓研,可以改為在KEIL中使用ST-LINK燒寫(至少可以燒寫的更快E糠),見這里奏赘。
下一節(jié)將介紹:如何在IAR中燒寫目標文件寥闪。