總網頁瀏覽量

2020年9月16日 星期三

8051 MCU 錯誤觀念闢除 第二彈文章!

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

為了闢除許多人對於嵌入式系統基礎學習的一些錯誤觀念,之前有發表過一篇文章:


但發現還是有不少朋友無法完整理解上列文章內容,在這裡做一些常見的錯誤觀念迷思的Q&A給大家參考:

Q1: 32bits ARM based的MCU不是比較好嗎?何必學這麼老舊的8051 MCU?

A1: 雖然上面內容中已經有說明,但這裡再詳細解釋。

很多人都誤以為用規格比較強的學習教材(嵌入式硬體平台),就代表自己神功附體,以為這樣子就可以讓學習效率大增。事實上,許多人常迷信於表面,以為自己用所謂ARM based的平台就代表自己比較厲害? 但其實在MCU應用開發的這塊,有多少人有去了解ARM CPU架構和指令集?多數人包含開課的講師通常也只不過將這個平台當成一塊MCU去跑code去設定周邊的registers而已不是嗎?有真正摸到ARM CPU架構嗎? 終究不就只是在玩一塊比較複雜的MCU? 真的有因為用ARM based的MCU所以就有去實際接觸到ARM CPU嗎? 終究不也是只是一樣在應用MCU內的各式周邊(如UART、I2C、SPI等等)? 其實CPU這塊當然是要有人理解的,例如搞出這個MCU軟體編譯工具與開發環境的工程師們,但這塊大多數已經被開源社群與IC design house做掉了,但這塊大多數已經被IC design house做掉了,對於MCU應用開發者來說,這塊已經是現成的工具。舉個例子,多數人玩MCU的C語言程式起跑點是main function,但是事實上在code flow跑到main function之前早就已經必須先去做其他事(startup),例如針對堆疊進行初始化等等(否則哪有C語言裡面這樣可以呼叫到函數跳來跳去的流程可用呢?),這塊是必要的,但是多數MCU應用者是拿現成的。好,把話題拉回來,用32bits MCU給初學者學,初學者真的會去細細探究這些已經是現成但較深入的部分嗎? 不會的,反而會因為32bits MCU的周邊大多較新穎又比8051的周邊複雜許多,反而會去忽略一些重要的周邊操作員裡細節基礎,而且也會因此而不敢挑戰這裡所說的所謂現成的部分(如透過Assembly組合語言去熟悉指令集),畢竟ARM(即便是ARM Cortex-Mx系列)指令集對於多數的所謂MCU應用初學者來說太複雜了(當然做MCU系統應用開發也未必就一定要很懂CPU這部分,但是用簡單具體而微的平台來熟悉一次這些細節,其基礎不是會更紮實嗎? 而且也會包含一些重要的細節如中斷、堆疊等底層原理,這就是我說的為何MCU初學者應該要先以8051這類較簡單MCU來入門的原因。並不是拿8051來應用,而是透過較簡易的MCU來徹底的了解一次MCU底層的這些細節,在經歷過這樣的過程後,未來要再接觸較複雜的MCU基本上也不是太大的問題)。反過來,如果一開始就學32bits MCU,不但可能沒有真正學到什麼ARM CPU架構,而且反而可能會因為這類MCU周邊的複雜度而混淆初學者應該要學到的一些重點,反而未必會讓基礎紮實。例如某些32bits MCU的Timer模式眾多且其對應設定過程相對繁複,因為這是針對許多現代各式產品應用而生,但這對於多數初學者而言可能太複雜了,其實初學者只要從8051那類較簡易的Timer去理解什麼是Timer和實際上如何使用的原理就夠了,而往後如果需要了解更複雜的Timer相信也不會是太大的問題,寧可不要讓初學者因為太複雜的周邊導致觀念混淆或者提前放棄。

其實接觸國內名校的這些年來,我發現即便光是8位元的MCU,其實我沒看過有多少名校學生真正在第一次課程內就學得好的,至今依舊如此(MCU基礎範圍內其實還有基本介面電子電路等硬體觀念,並非只有MCU本身)。如果一開始就用複雜的MCU當教材,只是表面上好像用很新很強的平台在學習,但實際上並沒有讓初學者學得比較紮實,

就像樹莓派學其實是個非常非常龐大的系統,許多初學者或學生表面上都會用,但是這類平台下面的內容硬要說起來就多得跟大海一樣廣又深,表面上的功能會動並不代表學生已經掌握了這些內容,只是拿了很多現成的東西去做相當後續的應用而已...我的第一份工作的公司就是做這類平台的,從這種大SoC IC到上面的整個系統軟韌體,這個複雜度比MCU還高太多太多(所以這種公司的研發工程師人數也很多),而許多初學者或學生甚至規劃課程的老師們並沒有去了解以及看到這個面向。而自己曾經帶過的同學們也蠻多在國內知名的MCU IC設計公司服務,所以整體來說,從產業經驗來回頭看,我還是覺得8051蠻適合教學的。

--------

Q2: 8051時脈這麼慢,學這有用嗎?

A2: 其實這又是類似Q1的問題(千篇一律),我認為對於專業技術的學習效率應該不是硬體規格問題,學習一門技術所應該著重的是基礎,而不是在比較實驗教材的規格強弱(就像是使用個人電腦的人就代表懂個人電腦這麼複雜的系統設計嗎),何況MCU在多數的應用上通常本來就不是在比速度的呀(這是用途差異的問題),例如做許多I/O控制應用大多不需要太過於高速,畢竟需要等待例如馬達這些設備的反應,這些機電設備的反應動作速度是遠比不上MCU內的CPU的。如果在應用上需要複雜的演算,從系統設計的角度上來說,也未必適合在MCU端來做全部的演算,應由本身具備較強運算功能的平台專門做演算。(補充一下,近年來ST等大廠有一些很不像傳統MCU的較高速的MCU產品推出,通常用在某些具備多媒體應用功能的消費性電子產品裝置,但這類的MCU平台規格已經和網路多媒體類的SoC或Embedded Microprocessor這類通常具有MMU的CPU的平台的應用很相近了)。

--------

Q3: 近代新的MCU大多是32 bits,很多還是based on ARM Cortex-Mx CPU的MCU(如STM32/笙泉/盛群/新唐/松翰等廠商接有出產這類的MCU IC產品),若用8051會不會因為期開發環境太老舊而導致學習者在往後無法適應32 bits MCU呢?

A3: 這不太是問題,因為現代MCU應用開發,不論8051 MCU或者32bits MCU,其開發環境基本上都是使用現成的圖形介面IDE(整合開發環境,如KEILC、IAR、STM32Cube等等),其環境大同小異(應該說幾乎一樣)。真正與MCU開發環境差異大的是Embedded Linux或者更精確地說是Linux kernel space相關系統軟體的開發,幾乎全部都是透過terminal敲指令式的開發環境,這種環境下很可能根本沒有IDE這類現成的圖形化介面可用,且就開發文化/生態系而言大多還是指令式較多。

--------

Q4: 繼Q1,初學者或學生們會因為用ARM based的MCU或SoC板子而突然神功附體、學習效益突飛猛進嗎?

A4: 不會。因為初學者和學生的普遍學習狀況並不會因為硬體平台規格增強,所以就學得比較好和比較多。實際上,對於大多數的初學者來說,硬體平台複雜反而容易忽略很多重要的觀念,正因為複雜,為了能看到東西會動(功能會動),反而會使用表面或現成的內容草草帶過,其觀念容易零碎化。與其如此,那還不如用麻雀雖小五臟俱全、具體而微、易於學習掌握的平台,還比較能夠掌握到底層的細節基礎,雖然是具體而微的平台,但在學習體會過這些基礎內容之後,未來再去接觸複雜的平台也比較能接受,也比較有觀念,比較不會太過零碎。

--------

Q5: 那照上面這樣說,初學者學習MCU是否一定只能學8051不可?

A5: 當然不一定只能用8051不可! 我也不是要當什麼8051的死忠擁護愛戴者,這些東西(平台)都是死的,沒什麼好迷信或死忠的。關鍵是要能從這些東西(平台)學到紮實且能延伸融會貫通的技術經驗和專業知識,才是核心重點。
如果今天有一款平台像是8051這樣,擁有麻雀雖小五臟俱全且具體而微的特性,複雜度不至於太高(對初學者來說其實如果談細節的話還是不容易)的MCU,而且又有很多技術資料可參考(容易取得),那當然絕對不一定只能用8051。
會推薦8051的原因只不過是因為這是一顆快要40年的長青樹等級的MCU,除了擁有較容易入門的特性外(事實上如果是用assembly並且針對MCU硬體架構細節原理去琢磨也已經有一些複雜度了),其技術資料、書籍和各路技術高手與網友們的經驗非常多,初學者相當容易取得這些資料來做為學習教材,所以才會這麼推薦用8051 MCU來作為教學平台。
另外再次重申/強調,教學應該著重於基礎技術觀念的紮實度,而不該只是看重讓東西(功能)會動就好,既然應該著重的是基礎的紮實程度(如堆疊、中斷、常見周邊的運作基本原理特性等),所以用8051這種在此些方面複雜度不算太高的平台是再適合不過了。

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

2020年9月9日 星期三

市場上最流行的嵌入式平台(Raspberry Pi/Arduino/STM32)都是外國貨? 台灣的去哪了?


台灣有聯發科、聯詠、瑞昱等這些有擅長做網路多媒體類的SoC晶片的公司;也有新唐、盛群、笙泉、松翰等擅長做 MCU晶片的公司

結果台灣自己的學校,特別是許多大學校院,不管是系所開課、研究單位或者起碼九成以上的學校實驗室用到網路多媒體類的嵌入式平台大多都選用Raspberry Pi(板子是英國廠商的,而上面的SoC晶片是博通的);用到MCU類的嵌入式平台時大多選擇用STM32(ST的MCU) 或Arduino(最普遍的款式的板子上面的MCU是Atmel的,Atmel已經在幾年前被Microchip併購),全都是用國外的晶片,且這不是在學界才有的現象,這幾年來也開始有了不少系統廠公司直接或間接地去使用這些平台之中的相關元素來做成自家的產品或者產品其中的一部分(特別是指Raspberry Pi和Arduino板子,而STM32則是本來就是業界愛用的晶片)
上述這狀況代表什麼呢?代表這些國外的平台比較先進或好用,而且因為已經太多人在使用和討論,正向循環之下,其技術資料很多,會造成更多屬於正循環結果的現象。而台灣的廠商大多可能還是只能辛苦地緊跟其後,辛苦地做costdown,要求員工辛苦地增加工時以即時達成客戶的各種要求
在台灣學術界每年產出一大堆論文之後還是如此,只有提到代工成果時才會明顯地想到其代工是由台灣廠商所負責的。這表示台灣的學術和產業發展很成功嗎??為何多數的自己人的第一選擇就不會是台灣自家研發的平台?
事實上,與Arduino系列之中最普及的uno/nano/mini/micro等板子上面的MCU主晶片也就是Atmega328相關的Atmega8 MCU晶片(一樣是基於AVR CPU的Atmega系列MCU,有內建ADC和SPI、I2C等周邊IP)是早在Arduino平台開始流行的很久之前就已經存在很久了的MCU晶片(按照datasheet的資訊顯示這款MCU在2002年就已經在市場上賣了(*參考資料1),被拿來開發Arduino初期的版本(*參考資料2與*參考資料3),也有不少公司將Atmega系列MCU用來開發產品。晶片都有了,就缺乏好的開發生態系去提升其開發便利性和普及性,但這樣的開發平台的生態系就是無法先由台灣的學術界去整合開創出來,所以最後Arduino這類的東西還是外國人先搞出來,而這樣的平台也確實影響了世界,畢竟這確實大大降低了多數初學者對於MCU的入門應用門檻
台灣從來不缺乏濫用創新這個詞的人,真正的實用創新絕對不是不懂專業技術且光喊口號就能做得到的 *參考資料1: ATmega8 datasheet, https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2486-8-bit-AVR-microcontroller-ATmega8_L_datasheet.pdf *參考資料2: https://www.arduino.cc/en/Main/ArduinoBoardSerialSingleSided3 *參考資料3: https://www.arduino.cc/en/Main/ArduinoBoardSerial



2020年8月29日 星期六

LinkIt 7697之範例程式SimplePeripheral搭配BLE Scanner App的測試注意事項

 分享2017年指導朋友們以 作品 參賽之開發過程中所遇到的問題之筆記紀錄

日期:2017/8/6

開發環境: Arduino IDE(版本:1.8.1)

開發板: LinkIt 7697

Android APP: BLE Scanner

在進行LinkIt 7697BLE功能測試時,將LinkIt 7697範例程式(SimplePeripheral)燒錄至LinkIt 7697開發板,並搭配APP(BLE Scanner)使用BLE傳送資料到LinkIt 7697進行GPIO  對應高低電位輸出(透過LED亮滅狀態)作測試。


這次發現LinkIt 7697之範例程式SimplePeriphera 如果是搭配BLE Scanner App進行測試的話,初學者們可能會需要注意的小地方(如下圖紅色圈起來的部分)

從範例程式中可以發現,case條件的選擇值被寫為數值1,而非字元'1'(單引號將數字包圍代表ASCII符號1, 而其符號值為0x31)



完整範例程式碼之github網址:

https://github.com/MediaTek-Labs/Arduino-Add-On-for-LinkIt-SDK/blob/master/middleware/third_party/arduino/hardware/arduino/mt7697/libraries/LBLE/examples/SimplePeripheral/SimplePeripheral.ino


再舉個例子,例如'0'的ASCII碼在十進制為48,而其十六進制為0x30

而我們所使用的APP(BLE Scanner)所送出的是0和1的字元(而不是),則這支LinkIt的範例程式應要以字元(而非數字)作為switch-case的條件項目,故須將數值1改為’1’0改為’0’才是符合BLE Scanner App功能的LinkIt範例程式


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




樹莓派Raspberry Pi常用之PiGPIO library之安裝

 

分享一下樹莓派基礎應用、非自行撰寫Linux device driver的情況下的開發者,常會應用到的一個樹莓派gpio控制的python API library: PiGPIO library之安裝筆記

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

樹莓派Raspberry Pi 3 B+環境建置基礎環境建置

 

將過去和朋友討論相關內容時的樹梅派應用基礎環境建置過程筆記分享出來供大家參考


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

2020年8月24日 星期一

【阿良的嵌入式系統技術學習區】嵌入式系統軟韌體 技術課程 招生

  • 可開設之課程

        (1) 嵌入式系統基礎原理與實務課程介紹連結

    • 包含嵌入式系統軟韌硬體基礎學理,包含:組合語言介紹、C語言複習、基礎介面電子電路、MCU架構、各式周邊裝置、各式感測器、無線通訊模組、IoT專題製作等內容。若您希望打下嵌入式系統的紮實基礎,建議要有這個學習過程,奠定進入此領域的專業基礎。
    • 若希望客製化課程內容 (例如針對工程師工作遇到的問題做為課程/諮詢內容,也可與講師討論)
    • 軟韌體工程師 職涯 工作內容方向選擇之分析建議,
      • 常見問題例如: 韌體到底有哪幾類工作方向?  該從事Linux系統軟韌體? 或者non-OS裸機類的MCU韌體? 或者介於兩者之間的工作?  按照經歷背景適合哪種? 該如何選擇? 有哪些對應的企業職缺? 如何避免找錯職缺、導致浪費時間?

        (2) 嵌入式Linux (Embedded Linux) 基礎實務課程介紹連結 

    • on ARM Cortex-A based平台

        (3) STM32系列MCU韌體程式設計基礎實務課程介紹連結 

    • on ARM Cortex-M based平台

        (4) FreeRTOS應用基礎

        (5) C語言程式設計

        (6) 基礎電子電路

    • 包含類比電路、數位電路之基礎觀念
        (7) Linux作業系統操作基礎
    • 如基礎觀念、基礎指令、目錄與檔案權限、vim編輯器基礎操作、ssh檔案傳輸應用、Samba server建置 等

        (8) 應徵科技業 軟韌體工程師相關職缺 之諮詢輔導

    • 包含履歷製作過程、面試應對方面之經驗分享教學

        (9) 基礎C#程式設計

        (10) 基礎Java程式設計

        (11) 基礎Python程式設計

        (12) Raspberry Pi(樹莓派)、Arduino等平台之應用

        (13) 適合初學者或學生的圖形程式: 如App Inventor、Scratch、Blockly等

        (14) 推甄(甄試)電機/電子/資工系 相關系所之研究所碩士班之指導諮詢

    • 包含系所選擇、研究方向分析建議、備審資料製作、指導教授選擇、畢業後未來工作方向分析 建議等

  • 輔導學員錄取軟韌體工程師職務之成果:
    • 陳x茹(食品系學士、經輔導後取得電機系碩士)錄取 知名大學研究中心韌體工程師職務(專任研究助理)
    • 任x誠(機械系學士)錄取 老牌光纖與照明系統廠公司MCU韌體工程師職務
    • 方x翔(機械系碩士)錄取 兩間知名大型系統廠Embedded Controller韌體工程師職務
    • 方x傑(能源與材料系學士)錄取 中小型上市公司單晶片應用工程師職務(工作內容為韌體程式與電路設計)
    • 解決其他多位產業界工程師實質基礎及開發問題(包含系統廠 & IC設計大廠工程師)
    • 其餘案例省略...(族繁不及備載,暫時不詳細更新)

  • 講師本身的產業業界經驗
    • 曾於 知名IC設計公司 擔任軟韌體開發、軟硬體整合開發設計 的研發類工程師 (產業經驗)
    • 於產業公司擔任 產品研發顧問、領導產學技術開發案 (產學經驗)
    • 曾於大專校院擔任講師 (教學經驗)
    • 曾輔導多位產業界工程師,給予明確方向協助其解決工作或轉職問題  (產業教學經驗)
    • 受邀參與 勞動部工研院 所舉辦之 「110 -111年度職業訓練政策研析暨基盤優化計畫服務案」研提技術職類訓練課程綱要:「韌體設計工程師課程」專家諮詢會議
      • 開會通知發文字號:工研學字第1110010784號
    • 曾實質共同指導 國立成功大學資深教授與其碩士班學生完成實質產學合作案之技術研究與開發
    • 曾實質共同指導 國立成功大學資深教授與其碩士班學生之碩士論文內容
    • 曾實質共同指導 國立成功大學資深教授與其碩士班學生參加政府部會舉辦之實務作品相關競賽獲獎
    • 詳情於  https://sites.google.com/view/wenliangsun/  進一步了解講師的資歷和各類經驗

  • 講師的教學經驗
    • 曾經輔導多位產業界工程師學員、希望轉職或就業韌體工程師相關職務之學員
    • 曾經與南科園區的艾克夏醫療儀器公司合作,開設嵌入式系統相關課輔導該司之工程師
    • 曾在台科電科技股份有限公司擔任 產品研發顧問
    • 曾經輔導過 機械背景 與 食品背景的人士,成功轉職 嵌入式系統/韌體研發工程師
    • 自離開科技業之工程師專職後,曾回校指導多位國立成功大學碩士生之研究內容(包含指導一般研究案、參加競賽、產學合作案、碩士論文等方面)的經驗,深刻了解國內大學校院在嵌入式系統教育方面的不足。
    • 於2間科技大學擔任過業界講師
    • 於2間科技大學擔任兼任講師(負責嵌入式系統、物聯網軟硬體整合相關課程)

  • 課程特色
    • 講師本身兼具軟體、韌體程式與硬體電路整合開發背景
    • 主要以一對一家教 或 極小班模式(將視情況而定)授課 
      • 原則以網路通話+畫面分享的方式遠端授課,除非學員人數足夠並且有適當的地點與交通方式,則可討論是否採取面授
    •  可在課程方向範圍內,按照每位學員的不同狀況與需求(如就業內容需求)針對授課內容進行客製化安排規劃
    • 上課時間可自由動態調整(與講師討論確認即可)
    • 上多少課程付多少費用,上課費用每次結清,可自由決定上課時數,不必被強制綁死整個系列課程,不須要在事前就將系列課程的所有費用付清
    • 課程內容重視 基礎理論原理基礎 與 實務技術的訓練,並不是只讓學員按照範實驗例的那種表面上讓功能work的課程。
    • 可從嵌入式軟韌體相關產業職缺與狀況之相關觀念開始輔導,與坊間補習班偏向制式化的課程性質有所差異
    • 可協助企業針對企業公司內部工程技術研發開發人員進行嵌入式系統技術培訓輔導


  • 歡迎下列類型的朋友來信洽談:

1. 已經身在業界、自身原本工作內容並非工程師但有興趣踏入電子、資訊產業的軟韌體開發工程師職缺,但不知道該怎麼做、感到茫然的朋友

2.     已身在業界,但覺得自己對於工作內容之專業基礎仍然不太熟悉、希望加強基礎奠定的朋友。 

3. 覺得在大學本科系學了四年或六年(加上碩士班的兩年)還是覺得沒學到什麼紮實的專業技術,自己不太知道要如何找到確切方向及目標的朋友

4. 原本為非電資工程本科系背景,但有意願希望能轉職(轉行)至電機電子資訊相關產業就職(尤其是嵌入式系統、軟體、韌體開發工程師相關職缺)的朋友

5. 學校專題或學位論文研究所需技術基礎輔導 (嵌入式系統、物聯網平台 方向相關,如STM32、Raspberry Pi、Arduino、8051、Atmega(AVR)系列等,或者其它嵌入式系統相關平台)

6.   希望應徵科技業 韌體工程師之 求職者所需之應徵諮詢服務(包含學經歷整理、履歷製作過程、面試應對等經驗分享與指導)

7.    希望推甄(甄試)電機/電子/資工系 相關系所之研究所碩士班之學生 (可提供指導諮詢服務,包含系所選擇、研究方向分析建議、備審資料製作、指導教授選擇、畢業後未來工作方向分析 建議等)


  • Q&A

相關文章: 

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

【課程原則】 賺錢很重要,但還有其它更重要的事! 關於我開設課程的原則


    附上幾篇過去的嵌入式系統相關觀念教學文:

    1. ARM Cortex-M3 CPU bit-banding功能機制講解,以STM32F103最小系統開發板之GPIO範例程式為例

    2. 【你所不知道的Arduino】Arduino UNO電源選擇電路之設計機制與動作原理分析 & 實際進行實驗量測結果之差異探討

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

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

    5.   許多人對於8051 MCU的常見錯誤觀念闢除

    6.  適合學習Embedded Linux及RTOS的開發板


    【若需要上述技術輔導課程,可email來信洽談合作方式: iws6645@gmail.com】


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

    2020年6月27日 星期六

    在台灣教育體制下之小時候對數學考試沒興趣,其數學能力就一定會一直爛嗎? 書讀越高越高尚?


    看完「做工的人」六集電視劇,回想自己的一些歷程,有些感觸。

    又是長篇大論,講講自己的古(雖然才剛滿29歲),算是給自己作個歷程回顧,看不爽的人就不要看。

    自己老家住的是40幾年擁擠老舊的小公寓,再基層不過的勞工家庭。

    自己在就讀國小高年級時期的數學科的表現被班導師徹底放棄,也因為自己喜歡熱血有趣的事物(三國志歷史、出師表、神奇寶貝扁扁、紙牌、橡膠玩偶、四驅車、電子雞、怪獸對打機、鋼彈、洛伊德、溜溜球、戰鬥陀螺、RPG、線上遊戲、遊戲王卡快樂快樂漫畫雜誌、各種漫畫和卡通、GB、GBA、WSC、哈利波特系列小說、魔戒小說、小王子)幾乎沒一樣不去玩(就算自己受到的家教方向是極度反對我去玩這些東西而有許多東西沒得買,但總是還是會能從同學那邊借到或A到可以玩的東西),而相對討厭死板的學校教學及考試內容,和教育方式嚴格的父親產生多次衝突,常被嗆說長大之後如果去做工很辛苦就不要抱怨父母沒栽培,所以從沒想過自己會走所謂讀書人的路。甚至在小時候曾想過要搞幫派,也幹過架,嗆聲叫囂之類的事情都幹過,所以更不可能想過自己會走理工領域的技術研發。小時候唯一會被老師特別誇獎優秀的科目似乎是作文和國文(國語),關於作文科目,通常老師還在講解寫作題目時我就已經將內容想得差不多或甚至寫完了。

    在國三時期有所謂的「能力」分班(當然個人不不認同這種對於能力的狹隘定義),一開始被按照國一和國二的成績而被分在B組,國二暑假時還跑去加入籃球隊每天跟著練球,當時看著A組同學都在上整天的輔導課,好像還會覺得慶幸。後來也不知道是怎樣,在國三剛開學時的基測模擬考成績分數好像比一些A組的同學還高,所以就被調到所謂的「A組」,但也只是應該算是A組裡面的後段班、璞攏共而已,當時就覺得自己的風格和許多當時所謂成績較前段、多數就讀普通高中的多數同學們有點格格不入,也不太認同當時多數學校老師對於所謂「優秀」的標準,深深覺得教育制度根本就有問題,但當時年紀太輕,其實也講不出個所以然。

    國中畢業後考上公立的高職,從此開始就讀技職體系,打從一入學開始就深刻感受到高職專業科目(至少是我接觸的電子工程領域的職科)的理論基礎內容內容對高中職階段的學生而言還真是深奧艱澀(到現在依然這樣覺得), 顯然國中多數老師就如同台灣社會多數的歧視與成見一樣,根本不了解高職體系。如果負責授課的高職老師本身不是很能理解這個階段學生的狀況和困難的話,其實很難把專業科目給教得「好」,因為很難讓這個年紀的學生去理解和愛上這些專業學科內容,坦白說這是造成許多同學會放棄走專業領域的原因之一,因為體驗不到專業技術開發的樂趣和成就感。自己在高職時期除了高一的數學和物理被當整套之外,也曾因為被老師誤會自己在上實習課的時候在打混,而被叫去走廊罰站過,其實當時也懶得去解釋什麼,因為就是不屑主流教育中的這一切。

    幸好自己對於學校某些老師的教學方式以及主流教育體制內的作法一直有所質疑,另外也是因為在了解了台灣社會對於技職體系的嚴重成見和歧視後,就很想證明這些技職教育體系的學科內容其實相當專業,真的非常想要證明這些客觀事實,所以一直沒有放棄。高三時期去聽補習班高三班的基本電學和電子學課程之後,因為教學方式的不同,開始覺得這些專業科目內容真是有趣,就如同上述小時候的各項熱血玩物一樣有趣,自此逐漸熱愛專業科目和這些被賦予工程物理意義的數學(而不是台灣的大學教育之前的極度死板的數學考試給我的印象,甚至應該說這些只是算數考試),這時才知道台灣的大學以前的教育對於許多人來說根本是充滿著許多相當混帳的問題,這與許多學生在大學以前的學業表現一條龍、大學以後的表象一條蟲的普遍現象可能也有關。而自己顯然是適合較自由、較需要找到動力就會自動自律的大學學習模式的,國中小高中那種不斷硬逼且填鴨的方式完全不適合自己以及許多人。

    自就讀大學開始,從大一的微積分以及大一下學期普通物理的電學和磁學開始,對這些數理科目大感興趣,會為了思考專業科目內容中的物理意義,而額外花大量時間、接近強迫症式鑽牛角尖的想破頭的去思考應付學科考試以外的數學式子背後所要呈現的觀念。在學科考試的方面(班上其實也有著學測數學科前標以上的幾位來自普通高中的同學),我的微積分的學期總成績接近滿分、海洋工程學院所舉辦的全學院同學參加的微積分競試是全學院排名第二高分(和班上來自普通高中的一位同學並列第二)、全學院的物理競試全學院特優(似乎是前五名、但詳細排名忘了),在後來大二的工程數學也考了幾次滿分(當然考試考高這種事並無法完全凸顯前述的興趣和這些對於物理意義的理解和成就感,有些東西是傳統的考試很難考得出來的),事實上,雖然這是一間國立科大,但是課程內容大部分都是相當數理性質的科目(如微積分、物理(I)(II)、工程數學(I)(II)、電路學(I)(II)、電子學(I)(II)、訊號與系統、機率與統計、通訊原理、數位通訊、電磁學(I)(II)、射頻電路設計、數位訊號處理等),所以大學階段的數學還真的算了不少,這是讓我大感興趣和成就感的(自己也感到很奇特的是在國小被老師放棄數學的人居然變成這樣)。另外也因為感受到光有學科其實在專業實務上是完全不足的,所以在大一暑假就開始加入實驗室做專題(雖然因為某些因素而換了幾次實驗室,但基本上大學階段因為寒暑假都在實驗室度過,所以大學階段幾乎沒放過寒暑假),學科方面讀到大學全系第一名畢業 (雖然成績這真的不一定能代表什麼。另外順帶一提,雖然學科成績是以傳統數理考試為主,但其實通常這個系的全系前幾名仍然大多都是來自高職的學生,努力還是有差的),還帶同學一起拿了不少全國專業競賽獎項。後來讀到所謂的名校碩士,畢業後去幹國內號稱底薪最高的公司的科技業工作。因為有著上述的求學經歷,所以花了自己許多時間去主動幫了不少人,用意只是希望他們不要被這個社會風氣文化之下的矛盾所誤導或阻礙。同時也因為這樣,所以不斷有機會讓我深入接觸學術界,所以也逐漸對許多所謂有社會地位的人開始有著深入的認識和了解。

    一路走來至今,對於「人」的感想(綜合了觀察及理解台灣社會上相當普遍的勞工階級被壓榨的文化)

    或許講到這裡有點跳tone ,但還是只想說

    負心多是讀書人

    許多人,書讀越高,掌握越多、得到越多,就只是越貪、越怕死、越沒膽、越自私、越務虛

    社會的亂象是哪來的呢?主流教育體系內為何充滿著諸多矛盾和問題呢? 而如果有人覺得這個社會很幸福美好,是因為社會真的很美好,還是只是因為自己運氣好、還沒雖到,甚至也許自己就是既得利益的一群?

    懂得去用心理解他人(包含理解在台灣的課業文化下成績表現不好的學生)和他人的職業(如基層的工人和其他任何從事辛苦職業的人),以及懂得回頭知恩圖報、回饋他人和社會的人,究竟有多少呢?