總網頁瀏覽量

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

2023年1月7日 星期六

近期接受韌體工程師學員的諮詢,各廠牌的嵌入式晶片/軟硬體平台都可諮詢合作!

近期接受韌體工程師學員的諮詢,以MCU大廠 瑞薩 ( Renesas ) 的 網路/多媒體產品類型的核心單元 ARM-Cortex Ax based系統晶片(System on Chip, SoC)/較大型的MCU 為實際解說目標範例。

連帶順帶介紹與討論到了Memory Mapped I/O、各式Boot Mode、linker script的一些相關觀念。


圖片來源: Renesas datasheet & website


圖片來源: Renesas datasheet & website

圖片來源: Renesas datasheet & website

本區接受工程師的顧問諮詢,可客製化諮詢內容針對工程師在自己的工作/公司中所使用的各家嵌入式系統晶片平台軟硬體作為諮詢/授課/教學目標。

瑞薩官網資訊: https://www.renesas.com/us/en/products/microcontrollers-microprocessors/rz-mpus/rza2m-image-processing-rtos-mpu-drp-and-4mb-chip-ram


-----

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

正常的高職電資科系的專業科目理論教育,其實很紮實, 而且內容太多了

延續之前寫的2篇文章:

「名校學歷」真的值得迷信和過度崇拜嗎? 分享一下我個人的實際經驗和看法

每次在書局翻到高職參考書,都有感覺,

高職專業科目課綱(至少我讀過的電子科系) 的理論課程基礎真的很多、很紮實,而且我甚至認為內容太多了 (對那年紀的學生而言)。

(學太多,很多內容考完試如果沒常用,就會就逐漸淡忘。但是,這個問題,其實在普通高中體系更嚴重,大多只是為了考試而學)

以最近在書局看到的高職「微處理機」科目的幾本參考書內容為例,包含 CPU組織架構(以x86和Z80為例)、指令集/組合語言、各式記憶體種類(DRAM、SRAM、NAND/NOR  Flash、EEPROM等等)、各式週邊(GPIO、Timer、UART/RS232、I2C、SPI、ADC、DAC等等)、isolated-I/O、memory-map I/O、中斷、RISC/CISC、堆疊、Cache觀念,甚至連多核心架構都有介紹!也有8051 MCU內容。

計算機概論的內容也不錯,而關於上層軟體的實作相關方面有VB程式語言(以這階段來說我認為蠻適合)。

在屬於類比電路方面的基本電學和電子學的內容,幾乎全部都是電學對應的數學計算,也沒比大學的電子學簡單  (我在讀科技大學的時候的電子學課本是名校大學也都在用的smith電子學的第五版,這本是電子學其中一本bible),基本上教學的重點內容是幾乎和高職時期的這些科目相同的,而數位邏輯電路也是一樣(讀科技大學時期是用morris mano的digital design,這本也是該領域bible課本)。但是大學的授課時數相對少(每周三小時、扣掉期中考期末考和一些國定假日,大學實際授課時數會很多嗎? 其實不會比高職紮實的,但高職那時年紀較小是真的,但是厲害的學生還是有,學習看個人)

其實很多高職課本和參考書裡面的專業知識,許多人讀到名校碩士甚至博士畢業,當了業界工程師或大學教授,都未必清楚,甚至有些人對這些基礎沒聽過(很多人在大學修課就像沾醬油,早忘光了),

很多讀到名校碩博士畢業的人可以捫心自問,自己真的熟悉這些基礎觀念嗎?

技職教育在台灣被歧視和忽視,對台灣社會是極大損失。

誰說高職沒有理論基礎?

(附上近期在書局看到的其中幾本參考書照片,而照片中有兩本書的作者是自己當年就讀的高職電子科的老師)





許多台灣人很喜歡說 讀高職沒理論基礎、讀普通高中才有學術理論基礎

其實我們可以看看 (如圖)

高職升學的 電機與電子群資電類 和 電機與電子群電機類的 統測題目內的專業科目(基本電學、電子學、數位邏輯、計算機概論、電工機械 等) 

是否大部分的題目和內容,台清交成等校電機資工系的電機電子博士教授都會?

一定會有人說曾經學過,但久沒用就忘記了。沒錯啊,大家都這樣,可以理解,那所以普通高中的考試就沒這問題? 難道技職教育就是比較該被歧視嗎?

我親眼看過許多教授(電機博士 或 資工博士)根本不太知道這些基礎的阿,那所以技職該被歧視? 請不要忘了 這是高職生的題目。

歷屆四技二專統一入學測驗(統測)試題 (考古題):

下面是110學年度四技二專統測 電機與電子群 資電類 和 電機類的部分試題截圖:
 

          



    

          

 




再舉個例子

其實如果以台灣社會一般對於考試成績分數的傳統觀念來說, 

成大某些工程系所(電資相關系組)碩士班,過去收了蠻多大學時期讀樹德科大的學生(碩士班推甄,可能是因為有些教授之間相互認識推薦),我會有這個印象是因為我看過許多位。

其實統測滿分700分,在我考統測的那幾年,以電機電子群電子類來說(電子類 就是現在的 資電類) ,樹德科大 只要250分左右就會錄取,後來應該更低。

而當時隨便一間本島的國立科大,其實最少都要530分以上(登記分發),跟250分差很遠。

但是很多成大教授因為根本不清楚科技大學的分數排名或者入學狀況,所以反而可能對這些相對高分的本島國立科大的印象較差,

上述這情況這是有所矛盾的,

但是其實許多大學時期讀樹德科大的學生,後來在成大碩士班依然都會順利畢業,而且表現可能還不錯,也看過碩士畢業就去聯發科當工程師的。

這些現象反映出了蠻多的事實,可以讓大家反思,技職體系真的有比較差嗎?? 該受到台灣社會的歧視嗎? 

Ref:

2021年10月14日 星期四

【嵌入式系統基礎原理與實務課程】初學者到底該學習哪款MCU? Subroutine/Function call實際上做了哪些事?

 👇延伸上次的GPIO基礎學習說明


❓許多初學者或工程師朋友們常會問我,想學好嵌入式系統基礎,到底該學ARM、8051還是PIC? 該學習幾位元的CPU平台?

🥸首先,我建議應該先了解這個問題是在「問什麼」,什麼是ARM?
ARM是CPU,而8051和PIC是MCU,朋友們可自行想想看,CPU和MCU是一樣的東西嗎?

又,假設初學者只有呼叫過(複製貼上、頂多改參數/引數) 人家所寫好的API (例如開源社群 或者 IC Design公司的軟韌體單位 所提供的API Library函數庫)來驅動MCU作事(完成功能)的話,

🔎我們以呼叫下列函數為例子 (不針對特定平台,但看函數名稱應該很清楚這在做啥):
GPIO_Setup(Pin_number, Output);
GPIO_Output(Pin_number, High);

無論你是使用什麼CPU based的MCU/SoC晶片為核心的板子(無論CPU是ARM、8051、MIPS、AVR、PIC MCU內的CPU),上述code確實能讓MCU的GPIO Port輸出數位訊號的1(高電位),

但是,如果只是呼叫這些函數的話,有讓你接觸到CPU架構嗎? 和CPU有什麼關係? 甚至很多人可能沒思考過,到底什麼是CPU?

初學者或沒思考過這些問題的工程師朋友們,也有可能會連上述這些範例程式碼,在MCU上電開始動作時,到底是被存放在哪裡的狀態下被CPU給提取和執行,可能都不清楚 。

🧐但我們試想一個問題,如果只是呼叫函數,而從來沒了解過背後的原理基礎,那是否一位受過基本實驗訓練的國中生、高中生就能作這些了? 對於系統開發設計的基礎知識與深度是否足夠?

恐怕有許多朋友從來沒有思考過這些問題。

‼本園區的 「嵌入式系統基礎原理與實務課程」,能藉由適合初學者奠定基礎觀念的8051 MCU (架構相對簡易清晰的微電腦平台) 作為教材,讓你了解CPU到底做了些什麼? 當然每款CPU之間會有差異,但是建立基礎觀念之後,許多觀念都是通用且可延伸的。

再次重申‼ 這個課程並不是只教你8051 MCU怎麼用,也不是只教8051,
而是以8051這款 架構相對簡易清晰的微電腦平台 (且資料完整豐富)作為實作/實驗/理論觀念驗證的實驗平台,

期望學員能在學習完課程後能奠定嵌入式系統(更精確來說是電腦底層觀念,不只是嵌入式系統)基礎,包含CPU指令集/行為、記憶體存取、基礎常見周邊裝置驅動應用、基本介面電子電路(類比&數位),

希望學員將這些學習內容消化吸收後,在未來於職場工作上遇到其它微電腦晶片平台時,可以有清晰的架構觀念,能舉一反三、能藉由紮實的基礎而在未來工作之中遇到其它平台時,能有自行舉一反三、擁有自學熟悉新平台的能力。

-------

🥸 再延伸上述的說明內容,以subroutine call或者function call為例

👉無論是哪款CPU,基本上都會有一些必須的暫存器,例如PC (Program Counter register,程式計數器)、 SP (stack pointer register,堆疊指標)、PSW (Program Status Word register,程式狀態字組),這些暫存器的用途為何?

👉堆疊(stack)是什麼時候需要使用? 呼叫subroutine(這邊是指組合語言的副程式)或者在C語言作function call時是如何被使用? 是如何被實現? CPU在此時做了哪些事?

👉當撰寫C語言去呼叫函數、或者撰寫組合語言呼叫副程式,CPU所執行的程式流程是怎麼跳 過去執行subroutine的?

👉中斷(Interrupt)發生時,又是如何使用堆疊來完成中斷機制? CPU所執行的程式流程是怎麼跳 過去執行ISR (Interrupt Service Routine,中斷服務程式)的?

👉以8051內的CPU指令集為例,CALL指令分為ACALL和LCALL,差別在哪? 而和Stack(堆疊)相關的PUSH/POP/RET/RETI指令是在做什麼的? 實際上做了哪些相關的事?

👉CPU在執行完subroutine或者ISR(中斷服務程式)之後要如何回家(回到主流程?) 如果堆疊之中這些被存放的值被意外地改掉,會發生什麼事?

再講些題外話,
👉如果用C語言撰寫MCU程式,你知道main()函數被執行之前做了什麼事嗎?

👉如果用C語言撰寫MCU程式,例如宣告變數 unsigned char i=1; 你知道這個i變數的物理實體設備空間實際上是什麼嗎? 知道實際上這個i=1是如何被實現的嗎?




🥸 再強調一次,如果只有經歷過呼叫現成的API的經驗,讓MCU會動就滿足,而從來沒了解過這些API背後的底層原理基礎的話,那是否一位受過最基本的實驗步驟訓練的國高中生就能做這些了? 讀到大學甚至碩、博士畢業,或者身為工程師的專業度在哪裡呢?

我想這些是很值得大家思考的事! 我認為專業領域的視野和深度,可以決定一位工程領域人員的實際專業價值。

‼課程進一步詳情請參見下方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,亦可先參考 課程招生網頁連結