這一系列的USB DIY 應該算是USB DIY 系統應用中的"最後一哩路"。
怎麼說呢?!因為一般會使用USB 來搞一些系統應用中,常常可能因為在系統應用上,
針對未來日趨複雜或不可知的系統應用需求,有可能要有隨時更新USB 本身的
控制韌體程式的問題。當然啊~您也不可能一天到晚都在Recall 把您賣出去的
USB 系統,常常叫回來更新程式啊...現在講求雲端應用時代,當然程式更新
就得要有雲端或遠端更新的功能啊。這一種東西也有人稱為"韌體智能升級",
就是所謂的 ISP (In-System Programming)。
那要如何做到"韌體智能升級"呢?!最重要的當然就是要您發展第一版韌體中,
就要把這個功能的韌體建在您的第一版的韌體程式中:我們一般也俗稱他就是
Bootloader 程式。這跟一般燒錄MCU 的ISP 不同,一般燒錄MCU 的ISP是在
MCU 在停止工作下,譬如我們把他的RESET 腳拉住,然後再進入所謂的JTAG 或是
每一家MCU 自己制訂的通訊協定下進行程式更新燒錄。
但這一種"韌體智能升級"的Bootloader 就得要藉助韌體本身的運作程式來完成
韌體程式功能:說起來是有一點要自廢武功。當然您也可以說:
"欲練神功,必先自宮"...哈~哈~ .........
---
當然這些所謂的神功也沒有要做到必先自宮的作法那麼恐怖啊...有些"韌體智能升級"
的Bootloader 也不會搞得那麼恐怖或冒那麼大的風險...他的作法也可以做得很安全,
"韌體智能升級"失敗~至少還可反覆燒錄升級啊...只要您不要把自己的Bootloader 程式
搞死就可以了。
當然啊~這樣子的作法是會比較浪費一點程式韌體的資源,譬如他的ROM size 會被犧牲,
或是會佔去一些記憶體或相關周邊資源。如果您的程式韌體的功力好的話,您可以
做得很省ROM Size ,甚至每一版韌體之間都可以完全不同,搞得每一次更新程式
就像是一棵剛出廠的MCU 處女般的完美如初。
像我一開始發表USB DIY 時所提到的 GT6816 故事:USB DIY 講座(七)-- USB Controller
他就是完全可以自廢武功的更新程式...這些更新方法稍後我們都會再提及的。
----
當然我也不可能用那一種冷門又高深莫測的 USB MCU 來講解USB HID Bootloader ,
我還是用一般市面上容易取得的USB MCU 來說明。
當然啊~這些USB MCU 的原廠也會發表一些類似的系統應用的參考文件或範例
來供您快速的導入系統應用。您也可以用力的搜尋與下載...但他不保證您馬上可以
使用的~至少我的經驗是如此。
譬如:以我常用的C8051F321 MCU 來講:原廠網站上提供的資料是:
http://www.silabs.com/Support%20Documents/TechnicalDocs/AN200.pdf
一來他不是一般的HID Class ,第二個他的PC 端應用範例程式掛了一大堆Library...
連韌體程式也是...您說:您會想用?!當然啊~這一篇文章中也有提到許多
Bootloader 的作法與在系統應用上需要考慮的地方,還是值得一讀的啦!
那要怎麼辦?!其實,原廠也有提供真正USB HID Class 的範例....
但很不幸的是~在官方網路上沒有公布。不信的話...您可以打電話到原廠的
FAE 支援單位問問...看他們會不會給您?!但也很不幸的是:他的USB HID CLASS
範例用的是:C8051F340 ...哈~這一棵原廠已經建議用F380 取代了!
另外~我也可以直接跟您說:那個範例也不能直接跑起來...問題也是一堆,
還是要自己花時間整理重寫一下。
所以啦~大家還是忍耐一下,就把這最後一哩路,陪著大家一起走完吧~
當然啊~很重要的一件事是:這一系列的文章不會在別的部落格出現,
也因為Yahoo 部落格即將關閉,雖然我也別的備份Blog ...但這一系列文章
我應該只會寫在這裡而已,那就委屈大家一下了囉....
另外就是:當我整理完這一系列文章之後,我怕我也沒有多的時間在玩這些
有的沒有的啦~老大不小了~還是得找些正經事來做,再不然也要多花一點時間
多陪陪賈老師...這幾年也辛苦她了。
謝謝各位。
(待續)
原廠給的USB HID bootload程式~竟然是不使用ISR的方式做~我當初看了也滿傻眼的~只要稍微改動一下~所以的時序都亂了~那就連裝置列舉都不行了~滿無言的~
回覆刪除不過~這一切都是歷史了~因為現在的MCU幾乎都有獨立Flash 空間來做儲存Bootload code了~真的不用像之前那樣還要切割flash空間來儲存~還要考慮INT Vector的判斷oxoxox等問題~ 不過這卻也是學習8位元微處理的精隨阿~
?!...我們講的是同一支範例程式嗎?...那您當初怎麼也不寫篇文章來討論一下。
刪除其實,好好的研究一下這一支程式,對於一些寫程式或瞭解一般MCU 架構真的有很大的助益。