在台灣,許多人用了ARM based的MCU/SoC為主晶片的板子,就以為自己在學ARM,其實一輩子都完全沒真正接觸過ARM processor的內容,所以可見很多人其實根本不曉得自己口中的ARM到底是是指什麼/講什麼,也沒有很清楚自己做了一堆周邊應用但到底在實作什麼挖糕,其理論基礎對應的學科我想應該是計算機概論。
十幾二十年下來,這早已經變成嚴重的以訛傳訛。這類似的觀念在台灣真的很多。
另一個例子,有不少人以為學80x86原理沒意義,但其實Intel 在2016年所推出的Inte lQuark系列微控制器(MCU) D2000就是基於1993年推出的Pentium CPU。平台和技術年份根本不是重點,哪時會被拿來套在新平台或衍伸出新技術都不一定。用什麼款式的平台去學基礎其實不是該執著的點,只要適合學習即可。
目前分類:嵌入式系統 (51)
- Sep 26 Thu 2024 02:29
用ARM based的MCU或SoC晶片平台,並不代表就是在學ARM
- Sep 26 Thu 2024 00:33
本園區之嵌入式系統基礎技術課程的導向,偏重產業開發所需,而非讓初學者看到花俏功能為目的
多年來對於嵌入式系統領域的開發與教學經驗讓我感受到,多數產業公司找工程師來開發產品的功能目標是應用,但是開發技術的訓練/基礎奠定的過程,絕對不適合是應用導向 (例如單純call API/現成函數而沒有深入了解其原理細節),不能只是用現成的模組和函數去湊出功能,起碼要了解最基本的基礎觀念與系統架構。以背後設計原理為主,不以主打看到花俏功能為目標,所以我的教學基本上不會強調及主打主流媒體喜歡提及的AI、IoT及應用功能,而是著重在軟韌體開發的細節(如C語言的語法細節原理、軟硬體系統架構),主要希望栽培開發所需要的基礎。
因為在真實去產業界做真實的產品開發階段(嵌入式系統軟韌體/軟硬體整合),不太可能都只純粹依靠那些高度現成的開發板及太過上層的API做應用(即便是使用API也常要懂其背後原理,也可能是要從更底層去做開發),因為實際做產品開發和純創意maker角度需求、所需的背景基礎程度大多是不同的。
在訓練課程中,一旦主打應用功能或者花俏的趨勢 (AI或IoT應用功能之類的),就容易掩蓋掉基礎,而讓初學者誤以為自己會了,但其實只是綁在某塊開發板及其現成的範例程式或函數(常見的例子就是使用標準Arduino API函數所集成的範例程式去兜出應用功能,而沒有去懂更進一步的原理)。而實際上要從頭開發(或較有深度的開發)時,就會發現自己其實沒有具備該有的能力和觀念(其實即便是應用這些API,要做好產品也是需要懂原理,否則將容易產生許多問題)。
--------------------
歡迎電機電子資工本科系學員,也很歡迎非電機電子資工本科系的學員加入學習嵌入式系統技術/尋求轉職成為研發工程師的行列。
- Jul 08 Mon 2024 15:53
幾年前和上市櫃IC設計公司洽談合作,發現招募上的一些狀況和問題
幾年前和一間設計開發MCU微控制器的上市櫃公司談合作,他們招募韌體研發工程師的面試考題內容涵蓋電路基礎和C語言。
考題內容包含: 橋式全波整流的交流電轉直流電的電路設計、OPA反向放大器、非反向放大器、BJT/FET極性與基本開關電路設計、計算某個PCM(Analog to Digital)應用所需的記憶體空間等。
雖然該職缺要求國立大學碩士畢業,但其實這些面試考題 比 高職電子科/資訊科/電機科所教的學科還要簡單不少,正規高職電類科系的理論深度其實更深很多。但按照主管說的情況是,來面試的碩士畢業應徵者大多也沒能力把這些考題給回答完整。
而後來和該司的副總經理討論,他自己是普通大學畢業,但他也覺得其實在MCU韌體、軟硬體整合設計系統工程方面的職務上,似乎有技職教育歷程的畢業生的表現較好 (說真的,以我自己曾經在IC設計公司負責面試應徵者的經驗也是這樣)。故經過討論後,他們也有想開始去調整職缺對於學歷的要求。
這事情讓我頗有感觸,台灣的產業其實應該可以多了解一下教育端的實際狀況。
- Jun 18 Tue 2024 16:51
近期將開在 清大自強基金會(台北分會)的 嵌入式Linux系統基礎建置課程
近期將開在 清華大學 財團法人自強基金會的 嵌入式Linux系統基礎建置課程
ARM Cortex-A based平台之嵌入式Linux作業系統基礎建置實作 (結合板材實作)(自備NB) 熱烈招生中
2024/7/7(日)~8/4(日),每週日,9:00~16:00,共30小時
課程時間更改為: 2024/8/4(日)~9/1(日),每週日,9:00~16:00,共30小時
課程與報名網址:
- Apr 08 Mon 2024 02:27
【TI AM335x SoC系統晶片之GPIO驅動操作流程】
【TI AM335x SoC系統晶片之GPIO驅動操作流程】
作者: 林普賢 ( sam91001200@gmail.com )、 孫文良( iws6645@gmail.com )
首先要去看開發板的電路圖。這裡以Beaglebone green wireless這塊開發板(dev. board)為例,在以下網址可以找到此開發板的電路圖。
https://wiki.seeedstudio.com/BeagleBone_Green_Wireless/
(註: 而我們實驗時所使用的Beaglebone green wireless與Beaglebone Black這兩塊板子上面的系統晶片SoC同為TI的AM3358,所以在此二塊開發版上,其驅動GPIO的方式是同理的。)
- Nov 29 Wed 2023 20:35
Intel 8051 MCU的user manual有被MIT(麻省理工學院)的網頁給收錄
- Nov 29 Wed 2023 20:24
近期來上課的學員之 學經歷背景,包含: 聯發科技、華碩電腦 與 日立集團之專職工程師!
近期開班嵌入式系統韌體授課,來上課的工程師學員有包含來自 聯發科技、華碩電腦、日立 等知名企業的工程師學員。
學員的學歷有 雲科大電機工程碩士、台大光電工程碩士、成大電機工程碩士、成大醫學工程碩士、淡江機電工程學士、中正大學外文學士、交大工學碩士等。
- Nov 22 Wed 2023 16:52
[台北全新規劃] ARM Cortex-A based平台之嵌入式Linux作業系統基礎建置實作 (結合板材實作)(自備NB)
課程名稱: [台北全新規劃] ARM Cortex-A based平台之嵌入式Linux作業系統基礎建置實作 (結合板材實作)(自備NB)
課程資訊:
上課時間:
2023/12/2~12/30(六)每週六,9:00~16:00共30小時
- Jul 28 Fri 2023 01:40
在 清大自強工業基金會(台北教育中心) 開課啦,都是嵌入式系統軟韌體的重要課程
今年受到 清大 自強工業基金會 台北教育中心 邀請合作開課,目前開設課程如下 (於十月中旬的周六&周日開始):
(1) 課程代碼:12C049
[台北全新規劃] ARM Cortex-A based平台之嵌入式Linux作業系統基礎建置實作 (結合板材實作)(自備NB) 熱烈招生中
https://edu.tcfst.org.tw/web/tw/class/show.asp?tcfst=yes&courseidori=12C049
- Jul 05 Wed 2023 01:42
8051 MCU 在產業界仍歷久不衰! 證據實在太多了,再次舉例!
許多產業公司的MCU韌體工程開發相關職缺條件中,仍會強調8051基礎 ,在我過去的許多篇文章中也已有多次說明,在此再次舉例。
以PC BIOS知名美商 鳳凰科技(PHOENIX TECHNOLOGIES INC)的 EC / MCU Firmware Engineer職缺內容為例,請參見下圖 (來源為該公司於104人力銀行網頁所刊登之 EC / MCU Firmware Engineer職缺內容 )
------
- May 24 Wed 2023 23:26
嵌入式「系統」 並不是純軟體,包含軟體與硬體(亦包含電路)。推薦全華科技出版的一本電子電路相關書籍
- May 16 Tue 2023 00:28
感謝各家產業界工程師學員的在課後的主動心得分享回饋肯定
最近對於一位AIoT相關產品開發的軟韌體工程師學員於其開發過程中所遇到的 Arm Cortex-A9 processor(with MMU) based SoC/MCU(廠牌為 瑞薩/Renesas) 之 bootloader、chip internal/external RAM的access以及對應的flow、linker script等方面的相關問題和狀況進行解析及說明。
- Feb 11 Sat 2023 16:16
是 嵌入式系統「開發板」, 而不是「開發版」
有感而發,隨手寫個基礎小觀念分享。
長年來,看過不少背景較偏向純軟體的工程師、成大的學生、成大碩士論文裡面,常有人把嵌入式系統的板子的 「開發板」(development board) 給 誤寫成 「開發版」。
可參考下圖正確的字詞: 「開發板」。
- Aug 30 Tue 2022 02:44
又有產業公司來洽談MCU嵌入式系統韌體課程合作事宜,歡迎!
- Aug 15 Mon 2022 16:54
看到國內知名的IC設計公司於2022年持續推出新的8051系列MCU產品
http://www.weltrend.com.tw/zh-tw/product/index/13 |
https://news.cnyes.com/news/id/4661532 |
過去我已經說過N次了,8051系列的MCU,依然活耀於產品市場[1]-[3],
- Mar 31 Thu 2022 16:03
以訛傳訛 是很常見的情況!
即便你只要隨便看一下 維基百科(Wikipedia)上面有關8051 MCU的介紹,就會馬上看到:
The Intel MCS-51 (commonly termed 8051, typically pronounced eight-oh-five-one) is a single chip microcontroller (MCU) series developed by Intel in 1980 for use in embedded systems [1].
或者隨便查一下嵌入式系統(embedded systems)的介紹,同時也會知道MCU(微控制器)與傳統所稱「微處理機」(ordinary/general microprocessors)的差異:
Modern embedded systems are often based on microcontrollers (i.e. microprocessors with integrated memory and peripheral interfaces), but ordinary microprocessors (using external chips for memory and peripheral interface circuits) are also common, especially in more complex systems[2].
即便上述資料是如此的詳細且易於查詢,但還是會有許多人會誤以為有跑Linux之類的OS的系統才算是嵌入式系統(embedded systems)、誤以為許多跑Non-OS firmware的MCU based的系統就不是嵌入式系統;還有很多大專院校的電機電子資訊相關系所教授和許多業界主管/老闆們還是一天到晚「微處理機」、「微處理機」的去稱呼MCU。這些就是所謂的以訛傳訛,而這些以訛傳訛呢,可能幾十年來皆存在於許多學生、大學教授、業界工程師、業界高階主管之間。
- Dec 16 Thu 2021 18:25
【嵌入式系統基礎原理與實務課程】ADC驅動應用基礎教學
昨天替一位有十幾年業界經驗的工程師學員上課 (嵌入式系統基礎課程,該學員希望未來有機會轉職嵌入式系統韌體程式開發),
到了ADC (Analog to Digital Converter)基礎應用原理與實作應用的單元。
實驗平台使用ADC0804 (沒想到在過了十年後,又接觸到這顆IC),雖然這顆IC的型號款式似乎停產(?) 目前在各大通路都缺貨導致價格昂貴 (似乎有些地方的賣價漲到單顆IC數百元),
且這顆ADC0804是並列輸出(Parallel Output),現在的產品或許應該已經很少會用這顆IC。現在許多ADC都已整入於MCU/SoC之中,就算外接通常也會使用串列輸出(SPI、I2C)類型的ADC chip(例如Microchip的MCP30XX系列ADC)。
但是,這顆ADC(ADC0804)拿來作為嵌入式系統韌體初學者的教材仍然很好用,其中許多基礎包含MCU IC 與 周邊IC 之間的整合,還是有值得初學者學習之處,
- Nov 26 Fri 2021 23:37
軟韌體工程師,可以完全沒有任何硬體電路基礎背景嗎?
負責電腦系統底層系統的軟韌體工程師,可以完全沒有任何硬體電路基礎背景嗎?
舉個例子,
如果軟韌體工程師沒有一點硬體背景,碰到MCU/SoC晶片外部沒有或漏掉被上料(接上pull up resistor), I/O又沒有enable internal pull-up resistor,那I/O狀態如果又是open-drain output,許多週邊裝置根本連動都不會動,因為根本無法輸出digital high level voltage,例如I2C。
而對於應用功能開發而言,軟韌體工程師又是首當其衝。
就算去查軟韌體程式碼查到天荒地老都沒用,因為根本不是軟韌體程式碼的問題。
- Nov 20 Sat 2021 16:24
【從事嵌入式系統軟韌體開發,絕對不能只有看到表層的應用功能,而是要能掌握「電腦」系統軟硬體】
【從事嵌入式系統軟韌體開發,絕對不能只有看到表層的應用功能,而是要能掌握「電腦」系統】
Joseph Yiu這位作者的The Definitive Guide to ARM® CORTEX®-M3 and CORTEX®-M4 Processors (Third Edition), 2014部分內容有被放在ScienceDirect網頁上(知名學術期刊出版商Elsevier的書籍線上收錄網站),例如關於ARM Cortex-M0/M3/M4 CPU的Exception Return Mechanism的這部份(如該網頁內容): https://www.sciencedirect.com/topics/engineering/exception-return-mechanism?fbclid=IwAR3A4jgqY7IzOIe1vH4iE9qn1cSe0sNHsG_ab4EPyTU-X2R605APd8zYPYg
或者像是Interrupt Vector Table這個部份 (包含數位作者的著作部份內容):https://www.sciencedirect.com/topics/engineering/interrupt-vector-table
你會發現,相較於8051,其實ARM Cortex-M CPU的硬體豐富些、複雜些, 但想要達成的目的(基本原理)是一樣的,或者說是延伸發展而來的。相較於8051內的CPU,ARM是用更豐富的硬體(相對的也變複雜)來達成一些機制目的,算是一些優化的行為。
- Oct 14 Thu 2021 17:46
【嵌入式系統基礎原理與實務課程】初學者到底該學習哪款MCU? Subroutine/Function call實際上做了哪些事?
👇延伸上次的GPIO基礎學習說明
❓許多初學者或工程師朋友們常會問我,想學好嵌入式系統基礎,到底該學ARM、8051還是PIC? 該學習幾位元的CPU平台?
🥸首先,我建議應該先了解這個問題是在「問什麼」,什麼是ARM?
ARM是CPU,而8051和PIC是MCU,朋友們可自行想想看,CPU和MCU是一樣的東西嗎?
又,假設初學者只有呼叫過(複製貼上、頂多改參數/引數) 人家所寫好的API (例如開源社群 或者 IC Design公司的軟韌體單位 所提供的API Library函數庫)來驅動MCU作事(完成功能)的話,