總網頁瀏覽量

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粉絲頁如下:

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

多年來對於嵌入式系統領域的開發與教學經驗讓我感受到,多數產業公司找工程師來開發產品的功能目標是應用,但是開發技術的訓練/基礎奠定的過程,絕對不適合是應用導向 (例如單純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,亦可先點擊參考這篇介紹文章


2024年7月8日 星期一

幾年前和上市櫃IC設計公司洽談合作,發現招募上的一些狀況和問題

幾年前和一間設計開發MCU微控制器的上市櫃公司談合作,他們招募韌體研發工程師的面試考題內容涵蓋電路基礎和C語言。

考題內容包含: 橋式全波整流的交流電轉直流電的電路設計、OPA反向放大器、非反向放大器、BJT/FET極性與基本開關電路設計、計算某個PCM(Analog to Digital)應用所需的記憶體空間等。

雖然該職缺要求國立名校碩士畢業,但其實這些面試考題 比 高職電子科/資訊科/電機科所教的學科還要簡單不少,正規高職電類科系的理論深度其實更深很多。但按照主管說的情況是,來面試的碩士畢業應徵者大多也沒能力把這些考題給回答完整。

而後來和該司的副總經理討論,他自己是普通大學畢業,但他也覺得其實在MCU韌體、軟硬體整合設計系統工程方面的職務上,似乎有技職教育歷程的畢業生的表現較好 (說真的,以我自己曾經在IC設計公司負責面試應徵者的經驗也是這樣)。故經過討論後,他們也有想開始去調整職缺對於學歷的要求。

這事情讓我頗有感觸,台灣的產業其實應該可以多了解一下教育端的實際狀況。


-----

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

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


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

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

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

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


2024年6月24日 星期一

針對 非電機電子背景學員 的 基礎硬體電路課程 (開設於清大自強基金會之台北分會)

 

近期我將開在 清華大學財團法人自強工業基金會 台北分會 開設:  【適合非電機電子科系背景學員的電子電路入門】使用Tinkercad平台學習電子電路原理與實作 課程

很適合沒有電機電子電路背景(如非電資工程本科系出身的朋友,或者是出身於電資工程本科系但背景是偏向純軟體、但又需要用到基礎硬體電路觀念的朋友,例如需要從事韌體程式與軟硬體系統整合之開發者)來學習。

上課時間:2024/8/13(二),8/14(三),8/20(二),8/21(三)共四天 9:00~17:00共28小時

課程課綱詳細資訊與報名網址如下:

https://edu.tcfst.org.tw/web/tw/class/show.asp?tcfst=yes&courseidori=13S085



-----

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

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


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

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

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

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


2024年6月18日 星期二

近期將開在 清大自強基金會(台北分會)的 嵌入式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小時

課程與報名網址如下:

https://edu.tcfst.org.tw/web/tw/class/show.asp?tcfst=yes&courseidori=13C024&fbclid=IwZXh0bgNhZW0CMTEAAR2eh0gt5jiRzG5IL3OLxh1eMxqqlYuC5KctHSocrPtR9gwSdF8jr_s1Mew_aem_I0QTpfNX4J9Sm1qD-f4RSA



-----

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

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


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

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

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

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

2024年4月8日 星期一

【TI AM335x SoC系統晶片之GPIO驅動操作流程】


作者: 林普賢 ( sam91001200@gmail.com )、 孫文良( iws6645@gmail.com )


首先要去看開發板的電路圖。這裡以Beaglebone green wireless這塊開發板(dev. board)為例,在以下網址可以找到此開發板的電路圖[1]

https://wiki.seeedstudio.com/BeagleBone_Green_Wireless/

(註: 而我們實驗時所使用的Beaglebone green wireless與Beaglebone Black這兩塊板子上面的系統晶片SoC同為TI的AM3358,所以在此二塊開發板上,其驅動GPIO的方式是同理的。)

如果我們想要點亮開發板上的D5 LED,就必須尋找它連接的引腳。由下圖可以得知D5所連接的引腳為GPIO1_24





這時候我們就可以在AM335xDatasheet[2]找到原來GPIO1_24PIN_NameGPMC_A8,並且引腳的模式需要選擇為7




現在我們已經知道要操作的引腳是GPMC_A8,接下來就是看Reference ManualGPIO feature去了解如何操作各個暫存器完成我們想要的功能。


由上面這張系統框圖可以看到,整個GPIO的操作其實不困難。給GPIO週邊提供時鐘、配置GPIO週邊的I/O方向、最後多工器選擇引腳的輸出由哪個週邊接管。有了這個系統框圖再搭配各個暫存器的說明,要自己寫出GPIO的裝置驅動程式相信不會太困難。

 

首先是圖中最左邊的Power & Clock,有玩過stm32的朋友一定很熟悉。沒錯,就是打開GPIO週邊的時鐘,沒有這個時鐘GPIO週邊是不會工作的。我們需要驅動LED的引腳是GPIO1_24,所以要操作CM_PER_GPIO1_CLKCTRL這個暫存器將GPIO1的時鐘打開。

 

操作記憶體地址這邊只講一次,其他暫存器的地址也是這樣查找的。在Reference Manual[3]我們尋找CM_PER_GPIO1_CLKCTRL應該找的到以下資訊:


可以看到CM_PER_GPIO1_CLKCTRL它的記憶體地址是基於CM_PER偏移了AC h,至於CM_PER的地址在哪裡呢? 可以在Memory Map的章節查到:



所以這樣我們就知道了CM_PER_GPIO1_CLKCTRL的記憶體地址,接下來要要看看需要設定這個暫存器的哪些內容。這裡需要操作Bit 18的欄位以及Bit [0:1],表示將時鐘致能開啟GPIO功能。對應的example code(先暫時不討論ioremap)如下:

static volatile unsigned int *CM_PER_GPIO1_CLKCTRL = 0x44E00000 + 0xAC;

*CM_PER_GPIO1_CLKCTRL = (1<<18) | 0x2;

接下來要講解GPIO週邊的暫存器操作,在裝置初始化的時候其實只需要操作GPIO1_OEoutput功能啟用就好,而GPIO1_CLEARDATAOUTGPIO1_SETDATAOUT都是在撰寫功能時才會進行操作。這裡只會講解GPIO_OE的操作方式,其餘兩個暫存器的操作方式也是同理。



可以看到上圖說明想要啟用GPIO1對應接腳需要對相對應的bit進行clear操作,對應的程式如下:

*GPIO1_OE &= ~(1<<24);                            // GPIO1_24設置為輸出模式

*GPIO1_CLEARDATAOUT = (1<<24);       // GPIO1_241(高電位)

*GPIO1_SETDATAOUT = (1<<24);           // GPIO1_24 0(低電位)

最後是GPMC_A8的引腳選擇功能。由於晶片的接腳有限,對於同一支引腳它可能被各個不同的週邊共享,但同一時間只能選擇一種功能進行操作。這裡我們需要的選擇一般的輸入輸出模式,所以需要將對應的暫存器賦值為7(先前有提及)。對應的程式如下:

*conf_gpmc_a8 = 7;

至此,所有涉及點燈的GPIO操作以及其對應的暫存器已講解完畢,如果手邊有基於AM335x系列處理器的開發板的朋友,可以趕緊來實戰看看驗證成果。


References: 

[1] Seeed Studio BeagleBone® Green Wireless Schematic

[2] AM3358 Datasheet

[3] AM3358 Technical Reference Manual


林普賢、孫文良

-----

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

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


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

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

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

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



2024年4月5日 星期五

當編譯U-boot時遇到fatal Error: openssl/evp.h No such file or directory時的解法

嵌入式Linux開發記錄 

如題,當編譯U-boot時遇到fatal Error: openssl/evp.h No such file or directory時的解法為下載並安裝libssl-dev,指令如下:

$ sudo apt-get install libssl-dev


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


-----

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

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


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

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

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

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