總網頁瀏覽量

顯示具有 Cortex-M 標籤的文章。 顯示所有文章
顯示具有 Cortex-M 標籤的文章。 顯示所有文章

2023年10月24日 星期二

自強基金會 加開 ARM Cortex-M based MCU嵌入式單晶片微控制器韌體開發課程

因首次開班響應熱烈,故又加開一班,歡迎報名

課程代碼:

12C054

[台北全新規劃]ARM Cortex-M based MCU嵌入式單晶片微控制器韌體開發(基礎)(自備NB)

上課時間:

2023/12/3~2024/1/8(12/31停課) 9:00~16:00 

上課時數:

30 小時

網址: https://edu.tcfst.org.tw/web/tw/class/show.asp?tcfst=yes&courseidori=12C054 


-----

歡迎各方洽談合作,務實/踏實追求共好。

個人簡歷: https://sites.google.com/view/wenliangsun/


‼本園區開設之技術課程進一步詳情請參見下方blog網頁的課程介紹👇:
本學習區之Facebook粉絲頁如下:

--------------------------

孫文良 (阿良的嵌入式系統技術學習區)

【若需要嵌入式系統技術輔導課程 可來信洽談合作方式: iws6645@gmail.com,亦可先點擊參考這篇介紹文章

2021年11月20日 星期六

【從事嵌入式系統軟韌體開發,絕對不能只有看到表層的應用功能,而是要能掌握「電腦」系統】

【從事嵌入式系統軟韌體開發,絕對不能只有看到表層的應用功能,而是要能掌握「電腦」系統】

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是用更豐富的硬體(相對的也變複雜)來達成一些機制目的,算是一些優化的行為。

所以本園區的嵌入式系統基礎課程使用8051 MCU這種小而美、架構相對較簡易(講原理而非只是表層應用的話,對初學者來說已經夠難了)來闡述這些電腦基本的知識原理理論、並搭配實驗/實作驗證基礎原理,如function/subroutine、ISR的branch及return的原理,包含堆疊(stack)的觀念,

很多人可能不知道萬一堆疊(stack)的內容被踩掛了(值被蓋掉),當你呼叫一個函數,在函數執行結束之後就回不來原本的流程了,這就是所謂的bug,不要以為你用高階語言(C語言)就不可能發生,因為編譯器在你Build code時不一定都有噴warning、而就算有噴warning你也不一定會去注意。

這樣才不會淪於「只會」做很表層的應用 、只知道抽象流程、而沒有實際了解處理器在實體層面到底是如何「實現/完成這些流程轉換」 。這也是許多工程師常有的問題、也是很多大學師生對於這方面的技術視野極度侷限的問題  (只想要拿現成的軟硬體模組去湊出功能、以為這樣就很厲害了)。

在學校甚至某些企業內部,甚至常有那種常把重點放在功能是否創新創意打嘴砲、或者著重上層應用演算法以包裝論文的風氣文化,不是說這些部份不好,而是如果只有這些部份,從技術基礎與深度的角度來看,就太過於偏廢,而且事情的發展往往很容易走到這方面來。畢竟拿現成的東西來兜出功能最快了,就人性面的角度來說,多數人(外行人當然多於內行)都只想看到功能,或是只想看到有漂亮應用數學式子的論文,而不管東西是怎麼開發設計的、不管開發者是否理解其架構原理。

千萬不要以為這些重要的理論基礎沒用 (以為和做出表面的應用功能 沒直接相關),事實上,在做產品開發時,當遇到一定困難度的bug時,就會與這些基礎觀念的累積有很大的關係。

我常建議我的學員工程師們,從事嵌入式系統軟韌體開發,絕對不能只有看到表層的應用 (程度只到只會拿現成的函數來兜出應用功能)。工程師們如果希望有比較好的軟韌體職涯出路,需要有一定的技術視野和深度,而不能只會call API(現成函數)做應用,當遇到有難度的bug時或者希望優化增進效能或降低運算功耗時,會發現自己啥都不懂。

畢竟嵌入式系統就是具備特定功能的「電腦系統」,你還是必須要對「電腦」內部組織原理有所掌握,以及對於周邊的電子電路有所理解,電腦晶片內外部的軟硬體基礎知識都需要兼備,這樣才是完整具備 系統設計規劃、系統設計觀 的研發工程師,如果不知道這些部份的存在和重要性,那都不算「完整」的系統設計能力。

而選擇用8051做為課程實驗平台的另一方面原因是,8051比較不會像是ARM CPU based MCU的細節這麼多而複雜 (難以讓初學者吸收理解),就像還不會騎腳踏車的人(還沒掌握基本平衡感),並不該在一開始就去騎多功能的機車(很容易雷殘而導致放棄學習騎車),這是一樣的道理。

如果你平常(長年來)在寫所謂的軟韌體,如果都只有 呼叫(複製、貼上、改參數)現成的函數(API function)在作純應用,那你可能會聽不懂我在講什麼,你會以為你呼叫現成的函數就代表你「懂ARM」了,事實上這是差十萬八千里,就像你在個人電腦(PC)上面用DEV C++ IDE軟體去撰寫一隻呼叫printf標準API去印出"hello world"字串在螢幕上的C語言程式(.c),但你可能完全講不出這台複雜的電腦系統的任何原理一樣。

另外,關於MCU/SoC應用所牽涉的周邊裝置驅動以及基礎介面電子電路的方面的原理和實作實驗,本園區的課程也都會涵蓋。

所以,外行人才會以為8051太老舊、xx平台太老舊,事實上事物的本質是看你怎麼去了解和應用,許多數十年前的演算法也會被用來設計現代的產品 (例子太多講不完,例如Dynamic Time Warping algorithm),很多技術都沒有什麼老舊/不老舊的問題,而是看你怎麼去用它。

很多人常會說xx平台、xx技術太老舊過時,沒用了,

拜託,很多人可能根本不知道,Python的問世時間是1991年 (距今30年前),怎麼不說Python太老舊? 

類神經網路(Neural Network,NN)的計算模型大約是在1943年被創造發展,怎麼不去說Neural Network太老舊?   

所有技術和平台不都是幾十年前開始問世、累積過來的? 難道會空中樓閣、直接空降?

現代微積分是在17世紀被研究發展起來的,都幾百年前的東西了,怎麼不去跟學校要求拿掉微積分必修??

從頭到尾就是人的問題,而不是什麼技術老舊與否的問題。

-----------

‼課程進一步詳情請參見下方blog網頁的課程介紹👇:

 

2021年8月16日 星期一

【阿良的嵌入式系統技術學習區】STM32系列MCU韌體程式設計基礎實務 課程內容介紹

課程涵蓋內容如下:

  • 韌體程式常用程式語言
    • 組合語言指令集與MCU架構簡介
      • 以架構簡潔清晰的Intel MCS51指令集為教材範例
    • C語言基礎複習
    • 高階與低階語言(C語言 與 組合語言Assembly)差異介紹與實驗驗證

  • STM32 MCU常見開發環境操作教學
    • ARM KEILC 評估版 整合開發環境(IDE)操作教學
    • STM32CubeMX工具與STM32Cube IDE操作教學
    • 其它IDE簡介(如 IAR)

  • 中斷(Interrupt)機制
    • ARM Cortex-Mx系列搭配之NVIC (嵌套式向量中斷控制器)介紹
    • 中斷優先權實驗

  • 周邊裝置驅動原理與實作
    • GPIO(通用輸入/輸出介面)
      • GPIO架構與驅動原理
        • IO Port結構原理、Open-drain(開汲極)、Push-Pull output(推挽式輸出)、Pull-up、Pull-down等相關硬體電路原理
      • 外部簡易電路整合應用設計原理
      • 輸出驅動實驗(GPO, General Purpose Output)
      • 輸入驅動實驗(GPI, General Purpose Input)
    • Timer/Counter(計時器/計數器
      • 計時器
      • 計數器
      • 輪詢與中斷應用實驗
    • UART (通用非同步串列傳輸通訊介面
      • UART之協定原理
      • 輪詢與中斷應用實驗 (與其它具備UART介面之設備進行通訊實驗
      • RS232與RS485纜線介紹
        • 電氣位準轉換原理
        • 相關IC介紹
    • ADC(類比轉數位轉換器
      • 輪詢與中斷機制  搭配 亮度感測器 進行實驗
    • I²C串列通訊介面
    • SPI串列通訊介面
    • 其它各種周邊裝置、I/O介面或協定(PWM、1-wire、DAC、DMA...)

  • 基礎電子電路與元件應用
      • 類比電子電路 與 數位電子電路 基礎原理觀念
      • 基本電壓、電流量測
      • 二極體
      • 電晶體
        • 如: BJT開關應用、MOSFET (如level shift電路應用)
      • OPA(運算放大器)基本應用
      • 穩壓IC應用介紹
        • 光耦合IC
          • Relay繼電器驅動

        • 進階選修
          • GPIO進階應用之 矩陣多按鈕鍵盤 掃描輸入演算法
          • GPIO進階應用之 多合一七段顯示器 掃描輸出演算法
          • LCD顯示驅動
          • 各式無線通訊模組應用(藍牙、ZigBee、LoRa、Wifi等等)
          • 各式感測器應用(如: 溫度、溼度、三軸加速度感測器、陀螺儀、電流感測、pH酸鹼值、ORP氧化還原...等等)
          • 步進馬達驅動
          • 直流馬達驅動
          • 應用專題
            • 物聯網IoT (如 智慧家庭、智慧農業、自動化系統...)
            • 穿戴式裝置(慣性感測、生醫訊號處理應用...)