總網頁瀏覽量

顯示具有 軟體 標籤的文章。 顯示所有文章
顯示具有 軟體 標籤的文章。 顯示所有文章

2025年7月8日 星期二

(7/12本周六開課 最後3個名額) 自強基金會(台北分會) 加開班[台北班] ARM Cortex-A based 平台之嵌入式Linux作業系統基礎建置實作 (附贈可跑Linux的嵌入式系統開發板 及 相關材料,課程現場實作)(自備NB) 如期開班

 

(最後3個名額) 自強基金會(台北分會)  加開班[台北班]  ARM Cortex-A based 平台之嵌入式Linux作業系統基礎建置實作 (附贈可跑Linux的嵌入式系統開發板 及 相關材料,課程現場實作)(自備NB)  如期開班 

報名連結 : https://edu.tcfst.org.tw/web/tw/class/show.asp?tcfst=yes&courseidori=14C065&fbclid=IwY2xjawLZaSVleHRuA2FlbQIxMABicmlkETFkMEFZb3VFYk81QnZZTHFrAR7tos6xwsLxux7ZfpjOhZH4Rj17zfL0wNqK9_MgSaBu0Kivx0cUXmo6aKkWAA_aem_nuZimA1fP_DQvjMfGE-GNA

因為有3位學員因臨時有事無法全程參與課程(想改成其他梯次上課),所以目前這梯課程目前有3位空缺,請有興趣或者原本是候補備取的學員,若想早些上課,可考慮報名這個梯次喔~ (7/12也就是本周六開始上課,上午9:00~下午16:00,中午1小時午餐休息)。 

每梯次課程的學員人數會有所限制  (因兼顧課程品質,所以會限制每梯次上課人數,學員當場聽我講解完原理及實驗步驟講解之後,馬上當場進行實作實驗操作,我會當場協助解決每位學員實際遇到的問題,所以要花時間,故限制每梯次人數)

課程內容大綱 (包含Linux GPIO驅動程式demo影片) 如下方連結所示:

https://www.facebook.com/sun.wen.liang.580515/posts/pfbid0kaH649i56VadgQqHw1dWoPKya8MRP1eYQNWioFwApHvLd2TGHbj6Kgu8CsaxFJ5Bl?__cft__[0]=AZWfbGKL6LYtzDTu088827Ns3WLAtCWDx5rl1dckyiGuqATaqJz34KTxUib9rocJOrGQGytMGBFXAKc_RifouHIzMuOdSnQrQiKQNVyo693AfWfLvurFGMHsYEEGW4dGnOOn6TJbTG6FcOpkqayeWvbXyW3F430sayWxft9h1qT1Mg&__tn__=%2CO%2CP-R

從GNU ARM Linux Cross compilation toolchain(GNU ARM Linux編譯工具鏈 arm-linux-gnueabi- )、samba server等基礎開發環境建置、及於Host PC Linux distribution(Ubuntu)之上建置 for ARM cortex-A based SoC為核心單元之嵌入式系統開發板(Embedded system dev. board )之 開機啟動程式 Bootloader (U-Boot)、Linux kernel(Linux作業系統核心) 及 根目錄檔案系統 Root filesystem (Busybox)、U-Boot階段Tftp upload kernel image(from PC to the dev. board)等,並於嵌入式系統開發板實際執行驗證之後,接續的課程單元為Linux核心驅動程式的基礎。

Linux核心驅動程式課程基礎課程內容包含Beaglebone black Rev C.的BJT作為開關的電子電路原理、AM3358 SoC(系統晶片)內的 GPIO registers (clock、pinmux、output enable 、clear data及set data等暫存器)、Linux kernel module(driver program/.ko file)撰寫(包含各式基本的系統呼叫System Call、file operation struct、copy_from_user/copy_to_user、裝置註冊相關的Kernel API等等)、及上層應用程式等觀念與實際範例皆逐一介紹,從硬體(電子電路、系統晶片架構、GPIO周邊裝置驅動)到 系統軟/韌體程式開發 皆完整涵蓋(原理與實作實驗)。

#Linux裝置驅動程式

#嵌入式Linux系統

#Linux_kernel_driver

#Linux_kernel_module

#Linux

#Embedded_Linux

#Device_driver

#ARM_CortexA_based_SoC

#TI_AM3358_SoC

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

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

孫文良 個人簡歷: 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,亦可先點擊參考這篇介紹文章



本園區之嵌入式系統基礎技術課程的導向,偏重產業開發所需的基礎,而非讓初學者看到花俏功能為目的

多年來對於嵌入式系統領域的開發與教學經驗讓我感受到,多數產業公司找工程師來開發產品的功能目標是應用,但是開發技術的訓練/基礎奠定的過程,絕對不適合是應用導向 (例如單純call API/現成函數而沒有深入了解其原理細節),不能只是用現成的模組和函數去湊出功能,起碼要了解最基本的基礎觀念與系統架構。以背後設計原理為主,不以主打看到花俏功能為目標,所以我的教學基本上不會強調及主打主流媒體喜歡提及的AI、IoT及應用功能,而是著重在軟韌體開發的細節(如C語言的語法細節原理、軟硬體系統架構),主要希望栽培開發所需要的基礎。

因為在真實去產業界做真實的產品開發階段(嵌入式系統軟韌體/軟硬體整合),不太可能都只純粹依靠那些高度現成的開發板及太過上層的API做應用(即便是使用API也常要懂其背後原理,也可能是要從更底層去做開發),因為實際做產品開發和純創意maker角度需求、所需的背景基礎程度大多是不同的。

在訓練課程中,一旦主打應用功能或者花俏的趨勢 (AI或IoT應用功能之類的),就容易掩蓋掉基礎,而讓初學者誤以為自己會了,但其實只是綁在某塊開發板及其現成的範例程式或函數(常見的例子就是使用標準Arduino API函數所集成的範例程式去兜出應用功能,而沒有去懂更進一步的原理)。而實際上要從頭開發(或較有深度的開發)時,就會發現自己其實沒有具備該有的能力和觀念(其實即便是應用這些API,要做好產品也是需要懂原理,否則將容易產生許多問題)


-----

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

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


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

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

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

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

2024年7月10日 星期三

非電資本科系背景 也很適合做 嵌入式系統開發!

近期幫一位業界工程師學員上課,該學員的學歷是商科( 國際貿易系)畢業, 目前在工業電腦廠用MCU做測試治具開發,自學嵌入式Linux系統(包含驅動程式、bootloader與kernel系統建置等),能力非常好,也很積極。

從開始做嵌入式系統輔導教學至今,輔導過 食品系、日文系、商科、機械系的學員,大多在嵌入式系統開發的表現都非常好,其表現甚至贏過不少電資工程本科系背景的人。

非電資本科系背景的人 也很適合做嵌入式系統開發!


-----

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

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


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

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

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

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


2023年11月22日 星期三

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

課程名稱: [台北全新規劃] ARM Cortex-A based平台之嵌入式Linux作業系統基礎建置實作 (結合板材實作)(自備NB)

課程資訊: 

https://edu.tcfst.org.tw/web/tw/class/show.asp?tcfst=yes&courseidori=12C049&fbclid=IwAR3JVkpyck1OLPxWBqcUK0dJOd3bTdO0WekH4xh1K7zn-vo5CEFMxylU8ig

上課時間:

2023/12/2~12/30(六)每週六,9:00~16:00共30小時 

上課時數:

30 小時

上課地點:

台北教育中心(台北市中正區博愛路80號3樓)

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年6月7日 星期三

著名的「鳥哥的Linux私房菜」網站/書籍 的 作者,是 崑山科技大學 的老師!

在資訊科技圈之中 相當著名的 「鳥哥的Linux私房菜」網站/書籍 的 作者 鳥哥 就是 蔡德明 教授,他已在 崑山科技大學 資訊傳播系 任教十幾年。

也許很多朋友不太清楚上述這個狀況,故在此分享。
 
長年來,許多台清交成等名校大學的相關領域師生,以及眾多產業界工程師,也因為 鳥哥的Linux教學網站和書籍 而受益良多。

而剛好從這學期開始,我自己也有幸至 崑山科技大學 兼任講師,實在是深感榮幸。

崑山科技大學 Kun Shan University
.


-----

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

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


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

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

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

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


2023年5月16日 星期二

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

最近對於一位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,亦可先點擊參考這篇介紹文章




2023年4月20日 星期四

近來,收到來自國內一線 IC design house 公司之研發工程師 的 技術輔導課程需求

近來開始有收到國內一線 IC design house 公司軟韌體工程師學員來尋求軟韌體系統開發基礎的輔導諮詢課程需求,有這方面課程需求的人明顯比過去還多。

長期以來,我很感謝所有工程師學員的認可和支持。

對於各類工程師的相關需求,都非常歡迎。

因自身一路以來的經歷和體會,多年來對於多數學校在軟韌體系統設計開發、軟硬體整合技術方面的巨大學用落差(亦包含許多產業公司對於招募機制的問題與輕忽)與技術輔導的看法及評估,至今已得到結果方面的證實。

(許多問題的根源是來自整個台灣社會長期以來的觀念和文化,並非單一方或者單一問題所致)

事實上,許多嵌入式系統開發的實際面向來說,絕對不單只是coding純軟體方面的技術問題(例如很多實際的軟硬體整合或/週邊驅動應用的開發、SoC(系統晶片)/MCU(微控制器)晶片中的內部硬體架構觀念,與這些年在某些公司面試與年輕求職者之間所盛行的純軟體刷題幾乎無直接相關,許多是軟體與基礎硬體觀念之間的隔閡問題;反過來說,許多較偏向純韌體的工程開發單位,普遍較缺乏對於計算機系統、作業系統方面的基礎觀念理解),實際狀況牽涉許多對於系統的理解、背景知識、自身對於軟硬體基礎的缺乏及實際開發除錯的經驗與思考等等。

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


-----

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


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

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

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

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


2022年7月15日 星期五

2年前回成大帶碩士生執行產學合作案的足跡



台灣的業界和學界各自還是有很多不同的文化和想法,要促成兩者合作成功,是真的要花不少心力。


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

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

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


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

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

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

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

2022年2月9日 星期三

因友人介紹,近期有台大電機系教授洽詢合作! 很歡迎學術界和產業界多方合作交流喔!

如下圖,近期因朋友李博士的介紹,所以有 台灣大學 電機工程學系 的 教授 來討論合作。


回顧這幾年,我大多都是針對業界工程師開課輔導,幾年前自從聯發科(晨星半導體)離開回到南部後,主要回成大幫忙帶產學合作案(同時在他們合作的中小企業公司擔任顧問),當時在成大也有掛計畫下的臨時人員 (同時也算是合作的成大教授的顧問腳色)。

目前也還是有在接觸大學/學術界,多方交流&合作,目標理想還是希望促進減少學用落差、幫助台灣社會及產業發展。同時也推廣技職教育,也希望台灣的技職教育能正常化、特色化,走出自己的一條路。

都很歡迎交流討論任何合作模式,若有合適的合作機會的話,我都會盡量提供真心的建議和實際經驗。


-----

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


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

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

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

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

2021年12月16日 星期四

【嵌入式系統基礎原理與實務課程】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 之間的整合,還是有值得初學者學習之處,

例如ADC上的CS(Chip Select)、RD(Read)、WR(Write)、INTR(Interrupt)等腳位(Pin)的驅動存取 與 整合應用、ADC IC Datasheet內容(包含訊號的電氣特性、時序 等等)、與輸出類比訊號的感測器sensor(如光敏電阻作為環境亮度感測器之間的基礎整合應用)。

嵌入式系統軟韌硬體的初學者可藉此學習到以核心處理單元(如各式MCU/SoC)存取像是這類周邊裝置IC(如ADC)的一些相關基礎。

本單元課程內容包含ADC基礎應用原理(A/D的取樣、量化、解析度規格等),實驗方面以8051 MCU與這顆ADC0804之間的整合應用為主,以C語言撰寫MCU韌體去擷取ADC0804輸出的數位訊號教學,實驗方式包含透過MCU的GPIO與中斷控制器,去針對ADC0804 INTR訊號與轉換完畢的數位輸出訊號作輪詢(Polling) 與 中斷(Interupt),這兩種機制都會作完整介紹並且帶學員進行實驗。

黑線IC的部分修改自TI ADC080X Datasheet的general schematic來進行教學實驗中的電路繪製

TI ADC080X Datasheet

TI ADC080X Datasheet

TI ADC080X Datasheet

TI ADC080X Datasheet


註: 此課程專注在嵌入式系統韌體的ADC應用基礎教學,而不是在純硬體電路設計,所以該課程實驗教學沒有到去區分各種接地的差異。 

此外,課程也提供使用 別種形式的ADC實驗平台的教學選擇,例如使用MCU/SoC內部的ADC (例如: 該單元可用Atmega328P MCU內部ADC進行實驗教學)。

------

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

2021年8月23日 星期一

【好書介紹】電腦技術並不是只有軟體! 介紹一本介紹Intel 80x86為核心的IBM電腦系統軟硬體的好書

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

因為搞不清楚狀況的人很多(執著表面的年份、新舊),先介紹一款Intel 在2016年所推出的基於x86(1993年推出的Pentium) ISA Compatible CPU 的Inte lQuark系列 微控制器(MCU): D2000

該MCU內的CPU的類型是1993年推出的Pentium(本來是要被命名為80586) ISA Compatible的CPU,在這款2016年推出的MCU的Intel官方Datasheet內的介紹可見下圖紅框圈起處

- 其內部CPU info :

32 MHz, 32 bit, single core, single thread, Pentium ISA compatible (如果看不懂這是x86的人,請自己google一下,做點功課,或見下圖的Intel官方手冊內容)

https://static6.arrow.com/aropdfconversion/3675d6354c6d8ac364213bdd827aacc81c93c43d/119736798394079quark-d2000-datasheet.pdf


- 其內部I/O :

SPI, I2C, GPIO, SPI, Comparators, ADC, PWM, DMA, UART

- Wikipedia的Intel Quark系列介紹: 

Intel Quark is a line of 32-bit x86 SoCs and microcontrollers by Intel, designed for small size and low power consumption, and targeted at new markets including wearable devices. The line was introduced at Intel Developer Forum in 2013.

...... However, in 2016 Arduino released the Arduino 101 board[3] that includes an Intel Quark SoC.

https://en.wikipedia.org/wiki/Intel_Quark

- Datasheet

https://static6.arrow.com/aropdfconversion/3675d6354c6d8ac364213bdd827aacc81c93c43d/119736798394079quark-d2000-datasheet.pdf

- Wikipedia的Pentium系列內容介紹: 

https://en.wikipedia.org/wiki/Pentium

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

執著技術和平台的表面年份數字、或者人云亦云沒有必要重點在於是否合適

很多事情,尤其是電腦技術領域,真的不見得是越舊的年代的東西就代表完全過時無用,事實上有許多技術概念真的都是通用的,而去了解80x86和其相關系統設計的觀念,也是一樣的。

真實的專業研究之所以有價值,原因也在於此,技術不限於年份數字的這種表象,只要是適用、可解決或改善問題的idea觀念,都極有可能再拿出來被使用。

例如8051已經是40年的老MCU IP,但從台灣一線的IC設計公司公告的職缺內容可看出,至今仍有著需要了解8051的能力的工程師職缺,可參見我的下方PO文 (點選 查看更多)


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

先聲明,這篇不是工商服務廣告,單純介紹過去讀過的電腦技術類的好書

這本80x86 IBM PC and Compatible Computers Assembly Language, Design, and Interfacing Volumes I & II , 2002年出版,作者是Muhammad Ali Mazidi和Janice Gillispie Mazidi,出版社為Prentice Hall(Pearson)。

https://www.amazon.com/80X86-IBM-Compatible-Computers-Interfacing/dp/013061775X

中譯版書名為: IBM PC and Compatible Computers Design, and Interfacing - IBM PC系統設計與介面技術(第四版),東華書局出版,譯者為 方志鵬。 

這本書涵蓋了很多電腦系統的軟韌硬體基礎觀念內容,在當年(十幾年前,大約19歲的時候)給了我不少啟發。

和 計算機組織/結構課本(科目)的一個不同之處在於,這本書或這類的科目會實際介紹8086/8088/80286/.../Pentium等微處理器IC及一些組合語言程式之外,也會介紹一些關於 介面電子電路 以及許多周邊IC與硬體(如8288 bus controller、8284 clock generator、記憶體介接電路、Programmable I/O的8255、LM34/35溫度Sensor、ADC0848、DAC808、8259中斷控制器、8253 Timer、LCD驅動、步進馬達驅動、 DMA 8237、UART 8250、UART轉RS232電壓位準轉換器、硬碟、鍵盤、印表機、數學運算coprocessor、視訊、以及其它許多IC,包含與微處理器IC之間的各種實際訊號狀態)的內容。

雖然這本書介紹的許多IC的型號比較舊,但是許多基礎原理觀念至今仍是共通的(畢竟電腦技術就是這幾十年來持續演化)。

另外還包含一些支援OS的微處理器的特性基礎,如80386的user/supervisor mode、virtual memory、page table、TLB等觀念,到了高速記憶體介面與存取章節也有各種記憶體的介紹(DRAM、SDRAM、cache memory的存取機制、write through、write back、cache coherence等觀念。後續談到80486時也會介紹到Pipeline;Pentium章節會提到superpipeline、supersclar、Harvard architecture、pipeline hazard、compiler的instruction scheduling、RISC/CISC的特性比較、out-of-order execution、branch prediction;MS-DOS的結構、記憶體管理;PCI、USB bus;BIOS;MS DOS和BIOS的ISR (INT _ _H對應的ISR),涵蓋內容相當廣泛。

許多讀資訊工程系的朋友可能會不太清楚,這門課的名稱通常叫作微處理機與介面設計、微算機原理、介面設計,但現在在學校關於這種科目通常都是拿MCU(微控制器)的開發板來讓學生實驗,而不是像早期真的用微處理機(微處理器,如8086、Z80等)搭配一堆IC的兜成介面的方式來教了。另外,嚴格來說,這門課的範圍比計算機組織的範疇還廣(包含一部分計算機組織的內容),但通常學校只會教到這本書的內容的一小部分。外國的書像是現在介紹的這本比蠻有名,而台灣比較常見的書是台灣科大電子系林銘波老師所出版的一系列微算機原理書籍。

這是一門在本質上很偏向實務和基礎理論觀念並重的課程,許多大學在這方面的教學都很輕忽。此外,這科也並不是研究所指定考科,所以常被忽略,研究所考科通常是計算機組織結構,但是性質和內容仍有不小的差異。

而關於介面硬體電路的方面,是近年來許多國內大學的電資工程系所普遍比較不重視的一環,畢竟現成的硬體用慣了,就容易忽視其存在與重要性。

但其實電腦系統技術絕對不是只有純軟體,若沒有紮實的硬體系統(包含類比式與數位式硬體),軟體哪來的用處呢?就算現在的SoC和MCU的集成度很高,很多週邊硬體都整進去了,但是基礎觀念和介面電路還是少不了啊!



註1: 這裡講的微處理器(微處理機)就真的是傳統所指的 "微處理器"(Microprocessor),例如8086/80286/80386/80486/Pentium IC裏頭就是CPU單元, 而不是微控制器(MCU, Microcontroller)!   並且也不是在指SoC或MCU被稱作的嵌入式微處理器(Embedded Microprocessor)的狀況。

順帶一提,這本書在談到鍵盤的章節,也會介紹到標準IBM PC內的鍵盤內都會有一顆微控制器(MCU),該微控制器內含一顆微處理機(微處理器)、RAM、ROM以及幾個I/O Port,這裡很清楚就可以釐清微處理機和微控制器的差異!

註2: 這本書後續還有續作: The x86 PC: Assembly Language, Design, and Interfacing, 5/e,2009年出版, 作者: Muhammad Ali Mazidi, Janice G. Mazidi, Danny Causey)

https://www.tenlong.com.tw/products/9780135026489




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

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

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

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

2021年8月13日 星期五

【Embedded Linux(嵌入式Linux)系列課程】Bootloader開機啟動程式之編譯建置與執行 課程簡介

Embedded Linux系列之Bootloader課程簡介

Bootloader 為 開機啟動程式,其主要任務簡而言之為在電腦系統上電(Power ON)之初的階段,對系統硬體(包含CPU自身、Clock系統、周邊裝置、DRAM、Storage device等)進行一系列的初始化,並負責啟動作業系統核心(OS Kernel)。

註: 若拿SoC based嵌入式系統和PC系統作比對,粗略而言,則嵌入式系統的bootloader,即涵蓋了PC系統的BIOS及bootloader的功能(意思就是負責上電之初的硬體初始化與帶起OS Kernel等工作,在嵌入式系統上都是由bootloader負責)。這只是作個粗略的比對/比擬,當然兩種系統在細節上還是有些差異。

本課程將會帶領學員:

  • 在Host PC端之安裝於虛擬機器的Ubuntu Linux distribution環境中,透過純文字指令式(command line)之方式進行開發(讓學員了解Embedded Linux系統於產業界的常見開發方式)
  • 使用GNU編譯工具練(GNU Toolchain)對UBoot source code進行編譯,建置出MLO或稱x-loader的SPL (Secondary program loader) 與 uboot.img (Third stage program loader),並且於核心系統晶片(SoC)為ARM Cortex-A8 CPU based AM3358的BeagleboneBlack RevC開發板上執行
  • 針對課程實驗內容所用到的Storage Device(SD Card)作妥適的分割與格式化處理
  • 介紹UBoot的部分常用指令並引導學員進行實作練習
  • 背景基礎觀念
    • Bootloader運行流程,從ROM Code(bootROM)到MLO (SPL, Secondary program loader)階段,再到 uboot.img (Third stage program loader)的執行流程基礎原理
    • 相關軟韌硬體平台觀念(non-OS/OS based系統差異、MPU/MCU/SoC、DRAM/SRAM、NOR/NAND/eMMC flash memory特性,何謂Memory map I/O與Port map I/O)

UBoot於BeagleboneBlack開發板之執行之畫面 (尚未置入Linux Kernel與filesystem)如下影片。

註: 實驗用開發板並不一定只限於BeagleboneBlack,若學員希望使用/學習其它款式的硬體平台,請事先與講師討論協議。


本園區之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日 星期四

【學員成功轉職案例】脫離22K低薪,學得一技之長, 從非本科系成功轉職韌體工程師 經驗分享

大家好,這篇文章是一位長期接受本園區作者(講師)輔導的一位學員人士,在當時成功轉職韌體工程師的經驗與心得分享。


以下文章內容為學員分享的經驗與心得: 

各位想轉職的朋友大家好😀,一開始容我先自我介紹 

學員的學經歷:

  • 國立名校大學 研究單位 韌體研發工程師 (專任研究助理)
  • 私立科技大學 電機工程系 碩士
  • 國立科技大學 水產食品科學系 學士

大學畢業2年後,決定轉職的動機?

大學時期,其實大多數時間也沒有接受到畢業後到底該做什麼的引導或觀念啟發,大學畢業後,不清楚該做什麼工作比較有發展性,大學剛畢業後的2年,曾做過收銀員、百貨櫃姐、作業員....(服務業、製造業等居多)。

上面這些工作的共同點就是薪水都在22K左右,好一點的也不超過29K,且都是花大量時間換取金錢。每次工作回到家就是放鬆時刻,洗完澡看看影片、滑滑臉書(我是老人),摸一摸時間一下子就到12點了,隔天一早再次過著重複的人生,就算放假也只想發懶、睡覺休息,一點進步的空間都沒有。但是隨著年紀增長,有時候也會想:我能一直這樣工作到老嗎?答案當然是否定的。

想要脫離22K,就是要跟別人不一樣,要有不可取代性,要學一技之長。

就是因為有想過要改變,想脫離22K的人生才開始有了轉職的想法。當時身邊認識的朋友就是在科技業上班,以及一直以來都是就讀工程背景的專業人士,有猜到嗎?就是這個技術部落格的作者阿良老師啦(灑花)。


不是相關科系也可以做韌體研發?會不會贏不過理工相關科系呢?

對於想轉職的朋友,這個問題確實是相當重要。想當初我也問過阿良老師一模一樣的問題🤓。

當時大學畢業,剛出社會工作兩年的我,在阿良老師的建議下,決定轉職電資工程相關領域(電機電子資工),由於我是食品科系畢業,在阿良老師的輔導及討論評估下,認為我需要再去修習理工相關科系,原因是有利於找尋電資工程方面相關的工作,當然每個人狀況不同老師都會給予不同的建議(老師在學界及業界都有相關經驗)。

經過他的評估、輔導和討論之後,我決定再次地回到學校(沒錯,我想都沒想過我會讀碩士,我又不喜歡讀書🤣),當時我已經24歲。

從一開始報考碩士班考試,阿良老師就開始輔導我,針對碩士班考試相關基礎和科目開始準備,像是程式語言、計算機概論、數位邏輯電路、作業系統、資料結構等專業內容目標一一教學。

後來順利考上研究所碩士班之後,阿良老師依照他對於產業界和學術界的了解,輔導我該如何選擇學校的課程,過程中遇到任何專業領域問題,阿良老師都跟我一起參與並解決我的問題。在修習研究所的過程中,除了課堂上所需完成的專案(project)外,阿良老師也安排、鼓勵我參加聯發科與經濟部合辦的比賽,來增加自己的表達能力等經驗以及增加後續應徵工作的經驗值,一直到寫碩士論文,阿良老師也非常積極的指導我研究方向及內容,一直到我碩士畢業。

碩士畢業後,阿良老師也持續輔導我關於找工作的方向,甚至包含找工作所需的履歷表、面試內容準備,阿良老師都會給予經驗的傳授,過程中也會不斷地指導專業內容相關的細節

經過阿良老師的長期用心輔導後(包含就業過程),我在26歲時轉職成功!順利地在當時找到國立名校大學(國內四大名校之一)研究單位的韌體程式研發工程師的工作(待過這學校的幾個單位,工作內容都是與嵌入式系統&物聯網裝置相關的軟韌體程式研發相關),工作過程中也不斷有阿良老師的輔導協助。

值得一提的是,在名校大學研究單位的其中一段工作時間內,在我辦公室座位的右手邊坐的是清華大學電機工程碩士畢業的工程師同事,而我左手邊坐的是台灣大學畢業的工程師同事,這些是在以前不是畢業於電資相關科系、也不是名校畢業的我,在過去從來沒想像過可以達成的事


名片

然而,在國立名校大學的研究單位上班,其實也常會接觸到許多的博士後研究員(博後)同事、主管和研究生們,許多人都是國立名校大學畢業,當然也看了許多令人「大開眼界的事情…比如說某些名校畢業的同事在專業基礎能力上的一些狀況,有時也會讓我感到相當意外 (當然這又是另一方面的許多故事了(笑)),讓我深刻理解到什麼是阿良老師長期以來所敘述台灣社會很普遍發生的「產學落差」、「學用落差」。

所以,關於非本科系是否適合做韌體、專業方面是否一定會比不上本科系名校畢業生?在看完上述內容之後,我想,大家的心中應該有答案了。


轉職為韌體工程師,學到了什麼?

對於大學就讀食品科系的我轉職到電資工程領域,覺得落差真的是蠻大的。現在回頭思考,會發覺過去我個人在大學時期比較多是背誦題目及應付考試(當然也有實驗課),相較起來我個人在當時是比較缺乏深度的思考,也缺乏有經驗的老師的引導。

而在後來跨入到電資工程領域並且參與工程專案研發之後,發現很多是需要深入思考的邏輯。過程中也有參與比賽(需要表達),因為要介紹自己開發的作品的功能發想及特色,所以表達能力也會訓練到、需要簡報presentation,製作簡報PPT的能力會變強(至少要有基本sense)、在過程中對於比賽作品專案時程的掌握、過程中開發作品遇到bug,也要學會找答案,所以找資料的能力會增加相對的英文能力也會增加,最最重要的是透過參與比賽、以及科技發展技術及綜合以上的能力增強後,自己的認知與視野會不同!其實這些都是無形中就增加的能力,有的甚至還要會拍影片😅(例如參加競賽的時候)

韌體研發工程師的薪水真的比較高嗎?

對於在大學剛畢業時期的我,每個月的薪水大約落在23K~28K左右。而在經過阿良老師的長期輔導、電機碩士班畢業之後,我找到的韌體工程師職位工作的薪水相較於過去大幅增加了50%~60%,等於投資自己、替自己加薪加值,在經濟方面終於也不用像以前那樣的緊迫,而且所學習到的軟韌體相關專業技能,是會隨著經驗的增加而持續精進進步,所以我覺得,學得專業一技之長」是真的非常重要


最後最後鼓勵各位朋友一句話:

「你不需要很厲害才能開始,但你需要開始才會很厲害」

雖然這句話已經聽到老掉牙了,但這句話在我有時候失落時都還能鼓勵到我😝


以上為學員之經驗與心得內容



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


阿良的嵌入式系統技術學習區

部落格作者(課程講師)簡介: https://sites.google.com/view/wenliangsun/

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