總網頁瀏覽量

顯示具有 微處理器 標籤的文章。 顯示所有文章
顯示具有 微處理器 標籤的文章。 顯示所有文章

2023年2月11日 星期六

是 嵌入式系統「開發板」, 而不是「開發版」

有感而發,隨手寫個基礎小觀念分享。

長年來,看過不少背景較偏向純軟體的工程師、成大的學生、成大碩士論文裡面,常有人把嵌入式系統的板子的 「開發板」(development board) 給 誤寫成 「開發版」。

可參考下圖正確的字詞: 「開發板」。



對於不了解的朋友簡單說明一下,粗略來說,嵌入式系統的開發板就是適合產品雛型開發時期的用板子,大多會拉出大部分的I/O腳位和製作介面電路、接頭在板子上,提供軟韌體工程師做軟韌體開發或者學習之用,畢竟這階段還不確定開發者會想拿這種嵌入式電腦晶片去開發什麼產品,所以這階段的電路板還不是產品精簡客製化的樣子,而是較偏向屬於開發、或學習驗證階段所使用的板子(board) 。

 ( 在學校方面,從2013年接觸成大相關系所的同儕們就常發現這種小問題,直到去年2022年看到成大碩士班的學生的學位論文口試,還是一堆這種錯誤,且很少教授和學生本身會去注意到,原因大概是因為資訊領域太多人都沒有去了解自己在使用的板子的一些基本觀念,板子對自己來說是現成的,所以這情況越來越多。實例我就不貼出來了,以免傷到一些人的心。當然也看過許多電機資工出身但是背景偏向軟體的工程師也都常有這種狀況,所以有感而發。

從過去在我的貼文所分享一堆學界或業界常見的字詞錯誤案例的分享中大家可以發現很多人在論文中的常見字詞錯誤並不是因為打錯字,而是來自於基本的觀念不清楚所導致。

或許這些小地方無傷大雅,或許不是大問題,但個人是覺得既然大學的研究所碩士學位論文號稱是做「學術研究」的「學術」論文,當然應該對這種基本的字詞要有基本的嚴謹程度才是,畢竟「板」和「版」 兩個字雖然只差在部首,但意思差很遠 ) 

-----

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


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

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

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

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

2022年12月8日 星期四

【關於本園區之嵌入式系統韌體基礎課程導向】「建立紮實基礎的本質面,不是軍備競賽,也不是花拳繡腿的應用」

【關於嵌入式系統/韌體 基礎課程的導向】

「建立紮實基礎的本質面,而不是如同比規格的軍備競賽,也不主打花拳繡腿的應用」

這幾年開始嘗試用系統結構相對簡單的實驗平台、簡單的方式,來教學/說明背後相對較深層、較複雜的電腦軟硬體原理。其實有些內容隨著逐年教學經驗累積與思考,雖然可能使用著一樣或類似的平台,但又會有不同的、更深層的體會,一直還是有不同的收穫與視野。

在基礎課程內容的方面,回歸最重要的基礎紮根本質面向。不去追求表面花拳繡腿的應用功能、不去依賴現成library及高度現成花俏的硬體模組,也不好高騖遠,而是主打紮實的基礎原理及驗證,包含帶學員去了解 組合語言/C語言背後的一些電腦軟硬體基礎原理、MCU原理架構、Datasheet內容(電氣特性、訊號時序、周邊控制操作、描述內容的閱讀理解方式)、基本電路 等等。

輔導多位軟韌體工程師的經驗發現,發現這些基礎原理其實才是許多工程師真正缺乏的東西(很多人工作是使用較新規格強大的MCU/SoC,但對於原理方面基礎沒有掌握,不知其所以然,突然遇到問題時也沒有時間去慢慢從頭學習或複習,只能用粗淺概念搭配 try and error的方式去撞牆/debug)。如果是表面的功能,某些工程師學員在耗費時間嘗試之後,或許有能力讓功能勉強動起來 (但是動得如何、能動幾次、是否有bug,就很難說了),但是一旦情境條件複雜化,出現較複雜的bug時,卻是未必有能力去分析,其實許多關鍵就在於基礎是否足夠紮實,而這個基礎紮實度其實需要原理和實驗兩者緊密配合。而若要能讓學員快速掌握重點、著重於學員對於深層原理細節的理解吸收程度與視野,其實教學課程必須用心設計,不能蜻蜓點水,更不能用比較實驗教材規格高低的軍備競賽的觀念去看待。

下方是一些課程原理內容驗證實驗簡易展示,為MCS51 MCU外部中斷的幾個相關原理驗證教材中的影片,在簡單現象背後的詳細原理分析方面會花較多的時間在課程內說明。





課程內容中會帶學員閱讀了解IC/MCU Datasheet相關內容 :

圖片來源: [1]


圖片來源: [1]


圖片來源: [2]


圖片來源: [2]

8051到今年都還有IC design house公司在推出新款,例如 偉詮電子(WELTREND) 在 今年(2022年)還有持續推出數款8051系列MCU的新版本。但因應教學需求(不是針對應用)所以我選擇使用架構更簡易的較舊式的基本款來做教學。

圖片來源: [3]


再次強調,這個基礎課程的目標是: 「建立紮實基礎的本質面,而不是如同比規格的軍備競賽,也不主打花拳繡腿的應用」。

----

此外,課程內容也可客製針對學員們在工作上遇到的相關內容諮詢,協助分析並給予明確方向/建議。


資料/規格技術手冊圖片來源:

[1] INTEL, MCS51 MICROCONTROLLER FAMILY USER’S MANUAL.

[2] Nuvoton(新唐科技), W78E516D/W78E058D Data Sheet.

[3] WELTREND(偉詮電子), 首頁 >產品資訊>微控制器>8-bit MCUs,  http://www.weltrend.com.tw/zh-tw/product/index/13

-----

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


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

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

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

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

2022年8月23日 星期二

又有產業界的RD工程師,因為需要用到8051 MCU做產品開發,來洽談上課輔導合作。很歡迎!

近期,又有一間設備商使用到8051 MCU在做設備產品開發,該司之中有機械(電機電子/機構/控制) 和 資訊工程背景 的幾位工程師來洽談上課輔導合作,

主要希望奠定MCU/嵌入式系統軟韌硬體(從MCU架構、軟韌體 到 介面電子電路)的相關基礎,以及針對現在的產品開發現況進行諮詢。

很歡迎~! 🙏🎉

-----

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


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

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

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

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

2022年3月31日 星期四

以訛傳訛 是很常見的情況!

即便你只要隨便看一下 維基百科(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。這些就是所謂的以訛傳訛,而這些以訛傳訛呢,可能幾十年來皆存在於許多學生、大學教授、業界工程師、業界高階主管之間。

很多人就是不喜歡去把一些基本的工程名詞定義給查清楚,看來...稍微用心思考+查一下資料真的是太難了。

Ref:

[1] Intel 8051, Wikipedia, https://en.wikipedia.org/wiki/Intel_8051

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


-----

個人簡歷: 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月23日 星期一

Beablebone Black或Nano Pi很適合拿來作為Embedded Linux的研究/學習平台!

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

先聲明,這篇不是工商服務廣告,單純介紹和分享一些嵌入式系統板子的使用經驗。

BeagleboneBlack(BBB)這板子真的蠻不錯的,

除了上面的AM3358 SoC系統晶片維持TI SoC的一貫風格(TI OMAP系列SoC也是如此) 釋出很多SoC的詳盡手冊資料(眾多開發板上的SoC款式,我看過釋出資料最詳細的就是他們公司)、很適合拿來做有深度的研究之外,

也真的很適合拿來做技術教學,

TI官方網站的AM3358 SoC頁面(上面提供許多詳盡的資料)


BeagleboneBlack板子的schematic(電路圖)和PCB設計都有公開,而板子上的User LED有4個,

很方便拿來做Linux Kernel Device Driver串接上層user space的Application program(藉由system call機制存取底層資源)的相關基礎教學Demo用~  

還可順便講解一些基礎的介面電子電路原理 (對較篇向純軟體背景或者非電機電子科系的學員們,也會有不少幫助)。


                                                              圖諞來源: Beaglebone black電路圖
https://github.com/beagleboard/beaglebone-black/blob/master/BBB_SCH.pdf?raw=true



圖諞來源: Beaglebone black電路圖
https://github.com/beagleboard/beaglebone-black/blob/master/BBB_SCH.pdf?raw=true


圖諞來源: https://elinux.org/Beagleboard:BeagleBoneBlack#Minix_.28Discontinued.29


也可以從Beagleboard官方網站連進去觀看各種資訊和資源~

Beagleboard官方網站


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

另外,像是Nano Pi系列的板子也很棒喔,

除了期價格和性能比很好,

其相關的技術文件資訊(如其相關的技術文件資訊、連結2)也算頗為豐富,電路圖資訊也很完全,

而板子上面的核心SoC系統晶片的方面,

除了社群網頁上放置其SoC的架構和完整的規格資訊之外(Datasheet),其原廠Allwinner也有在wiki page他們的官方網站上放置關於晶片的介紹。

---------

其它也還有許多很不錯的嵌入式系統開發板,未來若有機會的話再一一介紹,也歡迎各家廠商來洽推廣談合作方式!

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


【好書介紹】電腦技術並不是只有軟體! 介紹一本介紹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年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年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,亦可先點擊參考這篇介紹文章】