總網頁瀏覽量

顯示具有 STM32 標籤的文章。 顯示所有文章
顯示具有 STM32 標籤的文章。 顯示所有文章

2025年8月26日 星期二

台科大機械工程系學員 跨領域學習 韌體工程師所需的 嵌入式Linux系統建置 團體課程 專業

 



台科大機械工程系碩士班(一般生)畢業,目前在產業界擔任韌體工程師的學員(目前正在我開的團體課程學 嵌入式Linux系統建置)

----------

近期我在台北 自強基金會 開的 團體課:

1. [台北假日班]【適合非電機電子科系背景學員的電子電路入門】使用Tinkercad平台學習電子電路原理與實作

https://iws6645.pixnet.net/blog/post/347570356

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

https://edu.tcfst.org.tw/web/tw/class/show.asp?tcfst=yes&courseidori=14C066&fbclid=IwY2xjawMaOn5leHRuA2FlbQIxMABicmlkETF1VkszbjV4bVlwZWhwaFM5AR54cO77f0vpcPGkVxXXfJZQr3nNPIwgbYcNXRmyD1zyy0Kf9HKIyPuJFS19PQ_aem_zUcXH3T5HMFxf9iKs-bC3w

(這門有可能會延期到9月13開課,因前面有課程)



2025年2月21日 星期五

(NEW)2025年 6月 開在 清大自強基金會(台北)的 嵌入式Linux系統基礎建置課程

 

我近期開在台北自強基金會的課程

🎉🎉🎉熱烈招生中🎉🎉🎉

歡迎有興趣的朋友們踴躍報名~~

[台北班] ARM Cortex-A based平台之嵌入式Linux作業系統基礎建置實作 (結合板材實作)(自備NB)

上課時間:

2025/6/8(日)~7/6(日)9:00~16:00 共30小時

2025/5/25~6/22(日)每週日9:00~16:00 共30小時

(原2025/3/30~5/4(日)每週日9:00~16:00  共30小時(4/6停課))

報名連結➡️ https://edu.tcfst.org.tw/web/tw/class/show.asp?tcfst=yes&courseidori=14C029


#嵌入式系統 #SoC #韌體工程師 #嵌入式系統課程 #微控制器 #韌體工程師課程 #Embedded_Linux 


-----

歡迎各方洽談合作,務實/踏實追求共好。歡迎各方洽談合作,務實/踏實追求共好。歡迎電機電子資工本科系學員,也很歡迎非電機電子資工本科系的學員加入學習嵌入式系統技術/尋求轉職成為研發工程師的行列。

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


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

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

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

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

2024年9月26日 星期四

用ARM based的MCU或SoC晶片平台,並不代表就是在學ARM

 在台灣,許多人用了ARM based的MCU/SoC為主晶片的板子,就以為自己在學ARM,其實一輩子都完全沒真正接觸過ARM processor的內容,所以可見很多人其實根本不曉得自己口中的ARM到底是是指什麼/講什麼,也沒有很清楚自己做了一堆周邊應用但到底在實作什麼挖糕,其理論基礎對應的學科我想應該是計算機概論。


十幾二十年下來,這早已經變成嚴重的以訛傳訛。這類似的觀念在台灣真的很多。

另一個例子,有不少人以為學80x86原理沒意義,但其實Intel 在2016年所推出的Inte lQuark系列微控制器(MCU) D2000就是基於1993年推出的Pentium CPU。平台和技術年份根本不是重點,哪時會被拿來套在新平台或衍伸出新技術都不一定。用什麼款式的平台去學基礎其實不是該執著的點,只要適合學習即可。


-----

歡迎各方洽談合作,務實/踏實追求共好。歡迎電機電子資工本科系學員,也很歡迎非電機電子資工本科系的學員加入學習嵌入式系統技術/尋求轉職成為研發工程師的行列。

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


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

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

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

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



2023年7月28日 星期五

在 清大自強工業基金會(台北教育中心) 開課啦,都是嵌入式系統軟韌體的重要課程

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

今年受到 清大 自強工業基金會 台北教育中心 邀請合作開課,目前開設課程如下 (於十月中旬的周六&周日開始):

(1) 課程代碼:12C049
[台北全新規劃] ARM Cortex-A based平台之嵌入式Linux作業系統基礎建置實作 (結合板材實作)(自備NB) 熱烈招生中
https://edu.tcfst.org.tw/web/tw/class/show.asp?tcfst=yes&courseidori=12C049

(2) 課程代碼:12C050
[台北全新規劃]ARM Cortex-M based MCU嵌入式單晶片微控制器韌體開發(基礎) 熱烈招生中
https://edu.tcfst.org.tw/web/tw/class/show.asp?tcfst=yes&courseidori=12C050

https://edu.tcfst.org.tw/edm/workplace_taipei/workplace.html


-----

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

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


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

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

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

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


2023年5月24日 星期三

嵌入式「系統」不是純軟體,包含軟體與硬體(亦包含電路)。推薦全華科技出版的一本電子電路相關書籍


多年前還在讀碩士班時,覺得這本電子電路的書籍(如下圖,來源連結)很不錯(並非刻意幫該書籍打廣告)。雖然後來是以嵌入式系統軟硬體整合開發為主(包含沒有作業系統以及有作業系統的系統軟韌體開發以及周邊電路整合設計),但從高職開始接觸這些始終覺得很有親切感。


來源連結


不過印象深刻的是,當時在成功大學工程科學系資訊組(資訊工程與應用組)的研究所讀碩士班時,該組的所有師生,除了自己之外,幾乎完全沒有其他任何人對於類比電子電路有基礎及興趣....(甚至對數位電路有興趣的也不多),只有一位大學部專題生跟著我做一些相關方面。

其實對於物聯網(IoT)之中的感測單元/嵌入式系統來說,上述的方面絕對是重要的,否則如果一個IoT系統之中的感測電路子系統所產生的訊號是錯的,導致raw data是錯的,如果這些基本的輸入內容本身就是有問題的,根本不能期望用了(輸入到)什麼酷炫神奇AI演算法並以上層軟體整合執行之後,系統的結果就會正常,就好比人吃白飯,不可能會拉出金銀珠寶;又好比不可能用純語音訓練出來的語音model去做影像辨識、不可能沒有任何硬體單元之下就可以拿到感測資料(精確來說,世界上沒有甚麼「純軟體」這種事情,只是藉由可程式化的方式(分層)操控電腦這個「硬體系統」去完成功能)。但坦白說從碩士班許多同儕、業界的同事發甚至主管的狀況來看,「以為數據資料處理辨識演算法可以取代感測訊號處理電路」是某些純軟體的人有些觀念錯誤的地方(包含業界一些老闆和主管),但是成大工程科學系其實在大學部有一些電路相關的必修學科課程,也有微控制器系統相關的必選課程,但顯然對於許多人來說,修課的效果可能是極為有限,許多人其實有修過課,但就幾乎好像是沒修過一樣。而其實我在一些選擇走資訊軟體方向的電機系畢業學生身上也有看到一樣的狀況,並不是工程科學系的學生才有如此的狀況。

此外,也有一些具備電路、MCU韌體開發相關背景的資深業界主管,誤以為自己所做的系統不是嵌入式系統。換句話說,很多方面都問題來自於自身不擅長的跨領域問題(雖然以學校科系來說,工程科學系號稱是主打跨領域的系所)。

嵌入式系統是具備特定功能的電腦「系統」,包含硬體與軟體,絕對 不是 只有作業系統或者只有上層應用程式,很多人常誤以為嵌入式系統就是有跑作業系統軟體的系統,這也是常見的錯誤認知。事實上,多去查詢基本定義即可得知,歐美的專業領域課本也常列出,例如Muhammad Ali Mazidi等人所著作的「The 8051 Microcontroller and Embedded Systems (2nd Edition)」,從書名就可理解我上述所說,該原文書的進一步詳情可參考留言處,而這類原文書通常會將這些基本名詞的定義做出說明。

又要講實話了,台灣有很多人很愛嘴上談「學術」兩字,但是實際上似乎大多不太會想去把基本名詞定義給弄清楚,這是蠻奇怪的事情,如果重視學術就該有基本的嚴謹度,而不是只是把「學術」兩字掛在嘴巴上好像很高尚,但卻缺乏實質的內涵,偉大的工程開發貴在對細節的用心,包含這些名詞基本定義和用語。


-----

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

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


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

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

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

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


2023年5月16日 星期二

「應付考試」 真的 不一定等於 「 學習」

 在臉書上看到 曹齊平老師/學長的這篇 貼文:




而 後輩我 個人的感觸如下:

曹齊平老師/學長 是大約在40年前的成大工程科學系畢業的學士、以及清大動力機械系畢業的碩士,那年代的大學很少、碩士更少,當年要考上這些學校,難度比近20年來考上這些學校的難度困難太多。要論考試,他絕對是高手,然而他勇於講出許多人不願意去面對的事實,也就是「考試不一定等於真正的學習」。

我個人近年來輔導許多工程師/名校生/產學公司主管/名校大學教授等 的經驗及感觸也是如此 (嵌入式系統工程技術開發設計領域),很多「基本」的內容或者基礎名詞的含義等方面,反而鮮為人知,因為缺乏深入的思考內化,且容易滿足於考試分數的表象以及這些表象所帶來的現實面好處/表面上的成就,導致許多人在需要實際進行工程技術專案開發時遭遇到許多障礙,大多肇因於真正的基礎(不是應付考試的那套,需要實際搭配實務去了解內化內容)不好。

考試確實只是一種容易量化競爭比較的方式,不一定真的等於「學習」,事實上,學歷也是類似的道理,但社會因應多人的情況,制度上就是以這些表面易於量化篩選的方式為主,久而久之就形成了根深蒂固且難以變通的文化/價值觀。

想起了幾年前一位名校碩士生跟我說的:「考試前再熬夜準備,這樣子CP值比較高」。但其實這種做法/習慣/觀念 ,對於專業工程技術的學習 及 「研究/開發」過程是極度不合適的,但是這確實就是多數人被台灣教育體系所培養出來的觀念。

以現實面而論,或許考試制度仍有其一定程度的必要性和作用,有其優點但也有很多缺點,但關鍵是社會大眾看待考試制度的態度/心態,不必過於極端、過度看重,應該可以更多元的去深入了解思考專業知識內容,以及更多包容/理解那些較不喜歡這種篩選方式的族群(絕對也有其強處,也不一定比較不聰明)。

我覺得如果在台灣大家很愛講「學術 」這兩字,那就更應該去多深入花時間面對許多表象以外的真實內容以及含義,而不是嘴巴整天講學術而其實都「只是」喜愛易於量化的表象(例如分數幾分、學歷有沒有拿到、年薪多少、論文數量績效、計畫經費數量績效、頭銜、年資數量等),這些一點都不「學術」。

或許沒有任何一種制度/體制是十全十美的,但重點其實是在於群眾看待這些制度體制的態度,不應該去過度迷信任何一種體制/制度,因為那樣只會造成體制/制度的缺點持續放大或者腐敗,應該要客觀地因應時代去看待/監督並動態調整。

-----

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


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

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

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

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



感謝各家產業界工程師學員的在課後的主動心得分享回饋肯定

最近對於一位AIoT相關產品開發的軟韌體工程師學員於其開發過程中所遇到的 Arm Cortex-A9 processor(with MMU) based SoC/MCU(廠牌為 瑞薩/Renesas之 bootloader、chip internal/external RAM的access以及對應的flow、linker script等方面的相關問題和狀況進行解析及說明。


-------



-------


另外,於上個月的另一位於IC設計產業任職的軟韌體工程師在之前的課後主動心得分享回饋如下:


(現在較重視保養喉嚨&課程學員人數控管了)


感謝各路軟韌體工程師學員們,對於我的嵌入式系統技術諮詢課程的支持鼓勵~!!
歡迎各方洽談合作,務實/踏實追求共好!

-----

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


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

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

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

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




2022年12月14日 星期三

【 嵌入式系統(Embedded System) 到底是什麼? 】

【 嵌入式系統(Embedded System) 到底是什麼? 】

關於這方面,許多台灣的大學學術界資深老師(無論名校或者非名校)、產業界資深主管/工程師,常會誤以為嵌入式系統就是指有嵌入Linux的系統,其實這是個明顯的認知錯誤。個人應該已經不只十次在企業職缺或者大學校院內的論文看到這個問題,直到今年(2022)我還是有在國內的研討會論文中看到這個錯誤。

這情況類似之前提過的微處理機/微控制器的名詞常被混用的狀況,而許多歐美的相關技術書籍對此名詞有較嚴謹的說明。如果大家很重視「學術」,那就應該要對這些名詞的基本定義有一定的嚴謹程度。

同時讓我們看一下 Wikipedia英文版頁面內容(較詳細)對於嵌入式系統(Embedded system)的基本定義[1]:  「An embedded system is a computer system—a combination of a computer processorcomputer 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軟體被嵌入到一個系統。

就算是跑non-OS類型的軟韌體的MCU為核心的系統產品,基本上也都是嵌入式系統。並不是只有那些有跑(執行)嵌入式Linux或Android的系統才叫做嵌入式系統。

對於專業名詞定義認知落差,有時候就是造成工程開發過程中的溝通問題的來源。

Ref: 

[1] Wikipedia, Embedded system, https://en.wikipedia.org/wiki/Embedded_system .


-----

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


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

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

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

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

2022年7月3日 星期日

【感謝文】感謝給予肯定的各界朋友們

 【感謝文】

近期希望來上課的韌體工程師的學經歷背景越來越多元,

包含擁有頂尖大學工學博士學位的韌體工程師、大型知名網通設備系統廠的軟體工程師、美商BIOS工程師、網頁工程師、頂大工程系所研究生、資訊科教師等等,

幾乎都是看到部落格的課程介紹文章與技術文章而來。

很感謝這些朋友的捧場🙏,

讓小弟我有機會在教學的過程中能更了解除了IC設計公司(IC design house)以外的更多產業的工程師現況(因為小弟我過去除了擔任顧問的經驗之外,本身專職工程師的時期都是在IC設計公司任職)。

最大宗旨還是希望課程內容/諮詢內容都能直接對所有學員的產業工作有所幫助。

也很感謝許多正向表示欣賞與肯定的各方朋友們🙏,例如很榮幸在前陣子能受邀參與勞動部&工研院所舉辦的韌體職訓課綱專家會議,提供自己的經驗看法與建議,並且讓小弟我能有機會能舉薦後續審查委員的學界代表。以及所有曾經來洽談合作的所有科技新聞媒體與產業公司和工程師學員們 🙏

-------

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

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


本學習區之Facebook粉絲頁如下:

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

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

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


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 (如 智慧家庭、智慧農業、自動化系統...)
            • 穿戴式裝置(慣性感測、生醫訊號處理應用...)


         


        2021年7月30日 星期五

        於10年前,在大二暑假時期設計製作的以8051 MCU為核心的PCB電路,順便聊聊某些名校大學系所的推甄文化。

        想當初就讀大學時期,除了堅持學業成績常保持在第一之外,幾乎每個寒暑假、甚至修課讀書以外的時間都自願在實驗室做專題專案度過(坦白說比起多數人的大學生活來說,真的不輕鬆,但很充實,將碩班生活提前到大學時期來過),

        當時主要為了想要多參加教育部競賽,以便推甄名校大學的碩士班。沒想到後來到了所謂名校大學,看到不少名校大學大學部直升的學生幾乎是不用花太多時間做專題,更不用積極參加校外全國競賽,很輕易就可以直升本系碩士班(有些系所真的只看考生大學就讀的校名、系名,或者看是否有認識的教授推薦,就佔了大部分的錄取因素,但如此的作法確實也錄取了許多大學時期不太用心在專業方面的直升學生,說真的不少人的專業實力在大學時期是真的沒什麼累積,就連學科理論基礎也未必比較有概念),坦白說,時至今日,個人對某些不太客觀的推甄錄取標準現象仍感到有些感慨。

        分享一下10年前,於大二升大三的暑假時期,在實驗室開發的一個小作品(印象中這個小作品後來沒有拿去正式參賽,後續我和同學們還做了另外四至五個作品專案去參加教育部舉辦的競賽,也在大三這一年內,拿到了4個教育部競賽獎項),這是一個8051 MCU為核心的PCB電路,包含MCU韌體程式的撰寫(使用KEILC開發環境)、電路設計、PCB電路Layout和製作。這是就讀大學時期的第一個PCB電路  (記得在更久以前,在就讀高職時期,就有做過小型電子琴電路,當時也是洗板子,但印象中當時Layout好像是用手繪的方式..所以當時電子琴電路的走線沒辦法這麼筆直)。

        而當時還不流行Arduino這類的現成MCU板子,所以除了韌體程式和PC端GUI程式的撰寫之外,我們大學那間實驗室的電路板幾乎都是學生們自己做電路設計、Layout設計 和 洗版製作的。

        主要透過Counter計數來自8051 MCU外部的紅外線遮斷模組的訊號,並透過GPIO顯示於LCD,同時也藉由UART輸出串列資料,再藉由ICL232  IC將8051 UART訊號電氣位準轉換為RS232 Cable訊號位準,將資料傳輸資料至PC端由GUI程式做後續應用處理。

        當時設計製作的PCB電路,如下FB貼文中的照片所示。



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

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

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

        【若需要嵌入式系統技術輔導課程 可來信洽談合作方式: iws6645@gmail.com,亦可先參考 課程招生網頁連結

        2021年7月29日 星期四

        【課程內容介紹】STM32 MCU韌體課程 之 中斷(Interrupt)機制: NVIC基本原理與應用 課程簡介

        下方影片為32bits ARM Cortex-M CPU based STM32 MCU韌體課程 之 中斷(Interrupt)機制: NVIC基本原理與應用 教材實驗影片

        課程內容將介紹其基礎原理觀念 與 實驗實作過程: 在基礎觀念原理方面將會教導NVIC(Nested Vectored Interrupt Controller)中斷機制原理基本觀念,並說明何謂Interrupt Vector Table (中斷向量表);何謂Nesting、Tail-Chaining、Late-Arriving等feature;何謂Interrupt priority grouping、Preemption priority (group priority)、Subpriority、EXTI與NVIC實驗較相關的內容等等,並帶領學員觀看ST官方技術文件之相關對應內容;

        而在實作實驗的部分,將教導學員使用STM32CubeMX tool搭配IDE如KEILC(MDK ARM)或者STM32CubeIDE進行操作,以及介紹由講師所提供的範例程式中的重要API函數與流程。

        將UART preemption priority設置較高,UART exception搶占EXTI exception flow



        將兩者之preemption priority設置相同,UART exception無法搶占EXTI exception flow,按發生順序執行。




        兩者之preemption priority設置相同,EXTI exception無法搶占UART exception flow,按發生順序執行。



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

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

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

        【若需要嵌入式系統技術輔導課程 可來信洽談合作方式: iws6645@gmail.com,亦可先參考 課程招生網頁連結







        2021年7月15日 星期四

        多次參加外商IC設計公司所舉辦之技術研討會的感想

        參加許多次外商IC設計公司的研討會 以及 使用過這些廠商的IC的經驗,覺得ST以及ADI這類廠商真的完全不只是IC design house ,又或者應該說,IC design house應該就要像這樣。

        從許多角度可感受到他們的系統設計能力很強 (從硬體角度就是IC外的那些電路設計相關議題,包含很多類比領域的電路,例如電源電路),也包含到軟韌體和開發工具鍊,且涵蓋的應用方向領域極廣,相當完整,而且在推廣方面也蠻積極的。

        並不是說外國的月亮就一定比較圓,但覺得許多台廠公司真的還有著許多可加強的空間,也希望台廠公司能多重視 系統設計&整合 的能力和人才,否則在大部分的狀況下,真的只能繼續跟在人家後面賺辛苦錢。

        從另一方面來說,這或許也反映了不同國家之間的學用落差 & 大學/學術界 狀況的差異。

        而目前我個人開設一些嵌入式系統軟韌硬體課程,其目的也是希望能減少台灣的學用落差

         

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

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

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

        2021年5月21日 星期五

        【課程內容介紹】【STM32】STM32 UART基礎教學之部份簡介(主要以簡易的Receive data應用為範例作教學)

        歡迎透過合法的方式分享此文內容,若要轉載/轉貼,請明確貼出此原始連結並標示作者基本資訊請勿抄襲及非法轉貼(例如擷取內文但並未註明出處)

        STM32_UART基礎教學之部份簡介(主要以簡易的Receive data應用為範例作教學)。

        課程會介紹關於UART的基礎使用方式,包含Polling(輪詢)和interrupt(中斷)機制的差異和基本使用觀念。

        而在中斷的方面,

        下列影片1的情況是因為我們 沒有 讓CPU或DMA去讀(read) Receive Data Register之中的接收資料,也沒有去對RXNE flag寫0,所以RXNE flag沒有被清除,導致UART ISR flow不斷地被觸發。

        影片1

        而影片2的情況是因為我們讓CPU從Receive Data Register把資料給讀走(在ISR flow中呼叫使用了HAL_UART_Receive),所以RXNE flag被清除,所以每當UART收到來自PC端(中間串接UART轉USB的module)的字元資料(character byte data),UART ISR flow才會被觸發。

        影片2

        另外,在課程中也會提及blocking mode API(以HAL_UART_Receive為例) 和 non-blocking mode API(以HAL_UART_Receive_IT為例)的差異,如影片3。

        影片3

        影片中使用的STM32板子型號是STM32F407G-DISC1 (STM32F4-Discovery),板子上的主MCU晶片型號是STM32F407VGT6(ARM Cortex-M4 CPU based)。

        另外關於一些在ST官方手冊[1]中相關的部分:

        ST RM0090官方手冊[1]



        ST RM0090官方手冊[1]

        題外話,注意這裡的STM32 MCU通訊功能周邊裝置的blocking/non-blocking mode API,和作業系統(如Linux)的blocking/non-blocking I/O model的意思(實際狀況)不太一樣,勿混淆。

        也可於下方連結進去我於facebook的公開貼文中觀看,謝謝。



        Ref: 

        [1] STM32 RM0090 Reference manual Rev 19: https://www.st.com/resource/en/reference_manual/dm00031020-stm32f405-415-stm32f407-417-stm32f427-437-and-stm32f429-439-advanced-arm-based-32-bit-mcus-stmicroelectronics.pdf


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

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

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

        2021年5月20日 星期四

        【STM32】記錄今天看到的STM32 MCU RM0090 Reference manual Rev 19的973~974頁 USART Receiver(章節30.3.3)的一個寫法上的小問題

        歡迎透過合法的方式分享此文內容,若要轉載/轉貼,請明確貼出此原始連結並標示作者基本資訊請勿抄襲及非法轉貼(例如擷取內文但並未註明出處)

        STM32 MCU的多數手冊都寫得不錯,但偶爾似乎還是難免會有些小問題。

        今天下午看到一個關於STM32 MCU RM0090 Reference manual(STM32F405/415, STM32F407/417, STM32F427/437 and STM32F429/439 advanced Arm®-based 32-bit MCUs)  Rev 19的973~974頁 USART Receiver(章節30.3.3)的Start bit detection和Character reception這兩個連續的小節的內容中,對於RXNE flag被set(被設立為1)的條件的條件方面的文意內容的矛盾。

        下列兩張圖皆為該ST手冊[1]的內容,請注意被紅線框起的部分:

        [1] 973頁




        [1] 974頁

        [1] 1006頁



        後來看到ST論壇也曾有外國人提出來討論。連結網址: https://community.st.com/s/question/0D50X00009XkhmtSAB/rxne-irq-generation


        Ref: 

        [1] STM32 RM0090 Reference manual Rev 19: https://www.st.com/resource/en/reference_manual/dm00031020-stm32f405-415-stm32f407-417-stm32f427-437-and-stm32f429-439-advanced-arm-based-32-bit-mcus-stmicroelectronics.pdf

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

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

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

        2021年3月23日 星期二

        【STM32】【課程介紹】使用STM32CubeMX + KeilC(MDK-ARM) 的 STM32 (ARM based MCU)開發環境建置 開課啦

        使用STM32CubeMX + KeilC(MDK-ARM) 的 STM32 (ARM based MCU)開發環境建置開課囉

        主要包含以下內容:

        - STM32CubeMX這款initialization code generator工具的基本使用操作

        - KeilC(MDK-ARM) IDE 基本下載安裝(評估版)與使用操作

        - 兩種韌體燒錄方式教學

           (1) 透過ST-Link(V2) debugger進行燒錄(以STM32 MCU之Serial Wire Debug介面進行燒錄搭配KeilC debug模式的基礎操作教學)

           (2) 搭配使用ST官方的flash loader軟體以及UART轉USB轉換線/模組,藉由STM32 MCU的USART1進行燒錄

        - 基本簡易GPIO輸出驅動範例程式DEMO與教學(驗證開發環境)

        - STM32 MCU基礎架構/觀念(包含帶學員瀏覽官方技術手冊)

        [實際內容將可能視學員之實際狀況與進度進行調整]


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

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

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

        2021年3月18日 星期四

        【課程內容介紹】本學習區之嵌入式系統SoC/MCU晶片內部IO Port結構、Open-drain(開汲極)、Push-Pull output(推挽式輸出)等相關課程內容介紹

        歡迎透過合法的方式分享此文內容,若要轉載/轉貼,請明確貼出此原始連結並標示作者基本資訊請勿抄襲及非法轉貼(例如擷取內文但並未註明出處)

        近期在對擔任韌體開發工程師的學員進行授課的過程中,以8051 MCU作為實驗目標教材,介紹到了8051 MCU四組I/O Port的內部硬體結構和運作原理,


        尤其是Port0的部分,因為其兼顧作為8051存取外部記憶體所使用的Address/Data bus的IO Port,當談到如何將其作為一般用途的IO Port(GPIO)時,也會介紹到Open-drain(開汲極)與外加Pull-up resister的相關原理,也會藉由ST官方的STM32 MCU AN4899這份AP note資料手冊的GPIO內部結構圖來額外補充Push-Pull output(推挽式輸出)的概念。


        ST官方 STM32 MCU AN4899 AP note

        並且會說明在軟韌體層面(以組合語言/指令集說明),是如何與上述的IO Port硬體運作進行相互作用/搭配而共同完成開發者肉眼可視的這些IO功能。

        此外,關於8051 MCU之Port0搭配Port2作為存取外部記憶體所使用的Address/Data bus的相關原理的部分,雖然現在的MCU很少直接這樣做了,但是仍為學習底層相關原理的一個重要概念,故仍然會在課程內對學員進行說明。


        相關文章:

        1.【課程介紹】本學習區已開設 & 未來即將開設之嵌入式系統軟韌體技術課程 & 課程特色!

        2. 許多人對於8051 MCU常有的錯誤觀念討論與闢除 (2020/10/12更新) 


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

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

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

        2021年3月8日 星期一

        什麼是嵌入式系統?

        歡迎透過合法的方式分享此文內容,若要轉載/轉貼,請明確貼出此原始連結並標示作者基本資訊請勿抄襲及非法轉貼(例如擷取內文但並未註明出處)

        許多人都聽說過嵌入式系統,包含許多學生、教師甚至是從業工程師,即便這是個在工程界常聽到的名詞,但卻常常有人對此名詞感到困惑。

        但到底什麼是嵌入式系統呢?

        我們可以看一下Wikipedia上面的定義說明(該內容重點也符合英國電機工程師協會的定義)

        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 electrical system.

        從上述內容我們可以看出,簡單來說,嵌入式系統就是一種整合了電腦處理器、記憶體、I/O周邊裝置等單元、具備特定功能的電腦系統 (常被應用於電子系統或者機械系統之中)。

        嵌入式系統的整合應用隨處可見,只要是具備電腦系統在其中的產品,都是嵌入式系統的範疇。例如冷氣機、洗衣機、平板、手機、數位電視、數位機上盒、智慧穿戴手環等等。

        當然現在的手機或平板電腦的功能越來越廣泛,就嵌入式系統的定義來說顯得有些模糊了,但因為仍是裝置類型的產品,且主要以通訊功能為主,所以仍可歸類為嵌入式系統(和廣泛用途的PC個人電腦系統仍有不少差異)。

        而我過去最常見到的錯誤認知是:

        • 有些純軟體背景的人認為,嵌入式系統就是指Embedded Linux或者做Linux kernel相關內容

        事實上,Embedded Linux是執行在某些嵌入式平台上面的的作業系統軟體,而不論是SoC或者MCU或者Embedded Microprocessor平台,即便其執行的軟體不屬於OS軟體(或RTOS),而可能只有跑non-OS的韌體程式(例如做一些做硬體控制或感測器訊號的擷取),這當然也是屬於嵌入式系統。

        而雖然如果是有跑Embedded Linux的嵌入式系統,其中當然有Linux kernel,但其實這就較偏向於作業系統的範疇,因為Linux kernel也可能是PC上的Linux kernel,不能以此概括嵌入式系統,因為嵌入式系統是一個系統而不是單一個部分而已(同樣的,如果一個系統只有純電子電路,而沒有任何的電腦單元在其中,那也不屬於嵌入式系統)。

        一樣都是嵌入式系統領域,卻常因人們各自不同背景而有不同的解讀或理解。所以在這裡特別作個說明,也建議閱讀下列相關文章。

        相關文章:

        1.   現代計算機系統核心硬體常見平台的分類與簡介概述

        2.   Arduino到底是什麼? MCU又是什麼?

        3.  MPU/MCU/Embedded Microprocessor/Embedded Processor名詞定義探討與整理

        4. 許多人對於8051 MCU常有的錯誤觀念討論與闢除 

        5. 【課程介紹】本學習區已開設 & 未來即將開設之嵌入式系統軟韌體技術課程 & 課程特色!


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

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

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





        2021年1月29日 星期五

        【課程介紹】本學習區已開設之嵌入式系統軟韌體技術課程 簡介

        本區於之前已開設之課程:

        (一) 嵌入式系統基礎理論與實務課程(包含業界職缺介紹)

        -> 以麻雀雖小五臟俱全之8051 MCU為實驗教材(以紮實基礎理論與實務觀念為課程核心,對於初學者而言,其實不會有8051太老舊的問題,希望初學者奠定紮實基礎以利初學者學習與至相關產業就業)。

        (1) 嵌入式系統基本理論觀念(包含類別、業界職缺介紹)主要將以講師本身的產業任職 與 多年來輔導朋友們的經驗,希望帶領初學者認識一般學校比較不會教的知識(到底何謂嵌入式系統?有哪些分類?在產業常見的工程師職務類別有哪些?韌體可以找哪些工作?可以去挑戰哪些公司?有何限制?),甚至有需要的話都可以也可以在此課程內做相關產業職缺的求職輔導。 

        (2) 在MCU實務的方面將包含基礎架構知識、指令集(組合語言實驗,包含各式定址法、8051記憶體系統架構、中斷機制等),標準8051內部各式周邊原理與驅動實驗(以C程式語言或組合語言實驗,視學員之基礎與學習狀況而定) 

        該課程之介紹網頁連結請點此

         

        同時也向大家介紹一下近期小弟我這邊已開始著手準備、於未來即將開設課程:

        (二) STM32 (ARM Cortex-M CPU based MCU)韌體開發基礎課程

        -> 預計將會包含STM32 MCU應用基礎觀念、ST工具軟體與KEILC IDE(MDK-ARM)開發環境建置、常見周邊驅動原理與應用(如GPIO、UART、TIMER、I2C、SPI等等,以及中斷機制)





        (三) Embedded Linux on 嵌入式微處理器系統開發板(預計會是beaglebone black或類似的開發板)
        -> 預計將會包含系統基礎觀念、開發環境建置、系統各階段軟韌體建置(bootloader、Linux kernel、filesystem、basic application program、裝置驅動程式(Linux device driver)基礎觀念 等項目)之教學


        上述這些都是以現在國內多數的大學院校普遍教得比較隨便(或太淺,或缺乏業界實戰經驗觀念)、但是對任職韌體研發工程師相關職務相當重要的課程內容。

        若有一定的學員需求和市場,上述課程將會於後續再拆分出更細緻的課程項目。

        另外上述內容也可依學員自身的基礎、需求與學習狀況與講師共同討論客製化個人專屬課程內容方向。


        • Q&A

        相關文章: 【這個學習區開設的課程目標是什麼? 要找科技業軟體開發相關的工程師工作,不是靠名校碩士學歷或者刷Leetcode比較快嗎?】 


        • 課程特色

        講師個人學經歷簡歷: https://sites.google.com/view/wenliangsun/

        - 講師本身具備 產業界開發經驗(兩間知名IC設計公司之 軟韌體公版 與 系統應用工程開發),兼具軟體、韌體與硬體開發相關技術背景,亦曾於中小企業擔任產品研發顧問,了解相關產業對於人才技術基礎方面的需求

        - 講師長期接觸學術界,了解國內大學校院於嵌入式系統軟韌硬體技術教學方面的不足與缺漏

        - 主要以 一對一家教模式極小班制 的方式授課 

        - 可按照每位學員的不同狀況與需求(如就業內容需求)針對授課內容進行 客製化安排規劃

        - 上課時間可自由動態調整(與講師雙方討論確認即可)

        上多少課程付多少費用,上課費用每次結清,可自由決定上課時數,不必被強制綁死整個系列課程,不須要在事前就將系列課程的所有費用付清

        不好高騖遠,從具體而微之較簡易之嵌入式硬體平台開始切入,著重重要基礎觀念與技術的養成,也並非只是手把手按照範實驗例照本宣科的那種表面上讓高規格的硬體平台功能能動就好的課程

        可從嵌入式軟韌體相關產業職缺與狀況之相關觀念開始輔導,並非一般補習班之制式化課程

        可協助產業界企業公司進行人員之嵌入式系統相關技術培訓輔導


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

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