最近對於一位AIoT相關產品開發的軟韌體工程師學員於其開發過程中所遇到的 Arm Cortex-A9 processor(with MMU) based SoC/MCU(廠牌為 瑞薩/Renesas) 之 bootloader、chip internal/external RAM的access以及對應的flow、linker script等方面的相關問題和狀況進行解析及說明。
最近對於一位AIoT相關產品開發的軟韌體工程師學員於其開發過程中所遇到的 Arm Cortex-A9 processor(with MMU) based SoC/MCU(廠牌為 瑞薩/Renesas) 之 bootloader、chip internal/external RAM的access以及對應的flow、linker script等方面的相關問題和狀況進行解析及說明。
近來開始有收到國內一線 IC design house 公司軟韌體工程師學員來尋求軟韌體系統開發基礎的輔導諮詢課程需求,有這方面課程需求的人明顯比過去還多。
長期以來,我很感謝所有工程師學員的認可和支持。
對於各類工程師的相關需求,都非常歡迎。
因自身一路以來的經歷和體會,多年來對於多數學校在軟韌體系統設計開發、軟硬體整合技術方面的巨大學用落差(亦包含許多產業公司對於招募機制的問題與輕忽)與技術輔導的看法及評估,至今已得到結果方面的證實。
(許多問題的根源是來自整個台灣社會長期以來的觀念和文化,並非單一方或者單一問題所致)
除了自己針對產業界公司的工程師學員們所開設的 一系列嵌入式系統技術輔導與諮詢課程以外,
在學校端目前已在明新科技大學的資訊工程系及推廣教育中心的龍巖學院班級課程兼任講師兩年,
感謝感恩 崑山科技大學 崑山科技大學 Kun Shan University 的 長官、師長、學長教授們,推薦晚輩小弟我有得以有能在崑山科技大學兼任講師 (包含前幾年的業師授課)、分享個人經驗的教學機會!
有感而發,隨手寫個基礎小觀念分享。
長年來,看過不少背景較偏向純軟體的工程師、成大的學生、成大碩士論文裡面,常有人把嵌入式系統的板子的 「開發板」(development board) 給 誤寫成 「開發版」。
可參考下圖正確的字詞: 「開發板」。
近期接受韌體工程師學員的諮詢,以MCU大廠 瑞薩 ( Renesas ) 的 網路/多媒體產品類型的核心單元 ARM-Cortex Ax based系統晶片(System on Chip, SoC)/較大型的MCU 為實際解說目標範例。
連帶順帶介紹與討論到了Memory Mapped I/O、各式Boot Mode、linker script的一些相關觀念。
【 嵌入式系統(Embedded System) 到底是什麼? 】
關於這方面,許多台灣的大學學術界資深老師(無論名校或者非名校)、產業界資深主管/工程師,常會誤以為嵌入式系統就是指有嵌入Linux的系統,其實這是個明顯的認知錯誤。個人應該已經不只十次在企業職缺或者大學校院內的論文看到這個問題,直到今年(2022)我還是有在國內的研討會論文中看到這個錯誤。
這情況類似之前提過的微處理機/微控制器的名詞常被混用的狀況,而許多歐美的相關技術書籍對此名詞有較嚴謹的說明。如果大家很重視「學術」,那就應該要對這些名詞的基本定義有一定的嚴謹程度。
同時讓我們看一下 Wikipedia英文版頁面內容(較詳細)對於嵌入式系統(Embedded system)的基本定義[1]: 「An embedded system is a computer system—a combination of a computer processor, computer memory, and input/output peripheral devices—that has a dedicated function within a larger mechanical or electronic system. It is embedded as part of a complete device often including electrical or electronic hardware and mechanical parts. 」
簡單來說,嵌入式系統就是被嵌入到電子/機械/機電硬體系統內、具備特定/專用功能的 計算機(電腦)系統。 這個「嵌入」並不是 在指Linux OS軟體被嵌入到一個系統。
【關於嵌入式系統/韌體 基礎課程的導向】
「建立紮實基礎的本質面,而不是如同比規格的軍備競賽,也不主打花拳繡腿的應用」
這幾年開始嘗試用系統結構相對簡單的實驗平台、簡單的方式,來教學/說明背後相對較深層、較複雜的電腦軟硬體原理。其實有些內容隨著逐年教學經驗累積與思考,雖然可能使用著一樣或類似的平台,但又會有不同的、更深層的體會,一直還是有不同的收穫與視野。
在基礎課程內容的方面,回歸最重要的基礎紮根本質面向。不去追求表面花拳繡腿的應用功能、不去依賴現成library及高度現成花俏的硬體模組,也不好高騖遠,而是主打紮實的基礎原理及驗證,包含帶學員去了解 組合語言/C語言背後的一些電腦軟硬體基礎原理、MCU原理架構、Datasheet內容(電氣特性、訊號時序、周邊控制操作、描述內容的閱讀理解方式)、基本電路 等等。
輔導多位軟韌體工程師的經驗發現,發現這些基礎原理其實才是許多工程師真正缺乏的東西(很多人工作是使用較新規格強大的MCU/SoC,但對於原理方面基礎沒有掌握,不知其所以然,突然遇到問題時也沒有時間去慢慢從頭學習或複習,只能用粗淺概念搭配 try and error的方式去撞牆/debug)。如果是表面的功能,某些工程師學員在耗費時間嘗試之後,或許有能力讓功能勉強動起來 (但是動得如何、能動幾次、是否有bug,就很難說了),但是一旦情境條件複雜化,出現較複雜的bug時,卻是未必有能力去分析,其實許多關鍵就在於基礎是否足夠紮實,而這個基礎紮實度其實需要原理和實驗兩者緊密配合。而若要能讓學員快速掌握重點、著重於學員對於深層原理細節的理解吸收程度與視野,其實教學課程必須用心設計,不能蜻蜓點水,更不能用比較實驗教材規格高低的軍備競賽的觀念去看待。
賀!!🎉 我的老師 成功大學 工程科學系 黃悅民 講座教授指導碩士生參加由教育部等單位所主辦的2022第27屆大專校院資訊應用服務創新競賽,分別榮獲:資訊應用組(IP6)第一名、AIoT創新應用組(TQC+)優勝 與 資訊應用組(IP5)佳作,共榮獲三個獎項。
https://innoserve.tca.org.tw/award.aspx |
近期,又有一間設備商使用到8051 MCU在做設備產品開發,該司之中有機械(電機電子/機構/控制) 和 資訊工程背景 的幾位工程師來洽談上課輔導合作,
主要希望奠定MCU/嵌入式系統軟韌硬體(從MCU架構、軟韌體 到 介面電子電路)的相關基礎,以及針對現在的產品開發現況進行諮詢。
很歡迎~! 🙏🎉
-----