總網頁瀏覽量

顯示具有 嵌入式Linux 標籤的文章。 顯示所有文章
顯示具有 嵌入式Linux 標籤的文章。 顯示所有文章

2025年8月5日 星期二

在Dcard論壇上面的軟韌體工程師求職資訊亂象? 求職者真的有深入了解軟韌體工程師職務嗎?

 

這幾年輔導許多工程師轉職或畢業生求職,有感而發。

大約這五到六年來,太多年青的學生/畢業生/工程師,太過盲目相信Dcard上面許多年青人所散播的不實的產業職位薪資資訊 ,以及錯誤的就業準備方向的錯誤資訊,而被誤導。

這些現象是源自於太多學生/畢業生的自卑心態,常在網路社群上面打腫臉充胖子(尤其像是Dcard這種匿名平台),謊報自己實際的收入與薪資 (例如才剛進公司沒多久,根本還沒被打考績、也還沒待到能拿分紅的時候,就在Dcard上面說自己年收入多少。又或者把自己「預估」的分紅/獎金均攤成月薪(灌水),然後去Dcard等平台上面去散播,或許是希望得到點讚/愛心數/關注,讓別人都覺得自己很厲害,希望可以得到讚賞)。

加上台灣社會偏好以訛傳訛及盲目相信的「一窩蜂」的風氣,導致大多數人都會信奉某一套流行說法,很多人被這些錯誤資訊給誤導,也缺乏去多方驗證的基本客觀判斷 (學歷大多在表面上提升到碩士/博士,結果基本的客觀多方查證 及 深度思考,其實依然很少人會去做)。

一些盲目用詞及粗糙的說法都會相當流行且被跟隨 (例如以為要能錄取/勝任軟韌體工程師的職務,只要面試前臨時抱佛腳準備C語言、計算機組織、大學教授愛用的OS bible課本(恐龍本)的內容「就好了」,或者為了所謂「side project」而搞出表面的「side project」(side project已成為年青人準備求職的流行名詞),結果其基礎方面根本是一問三不知。其實公司要的根本不是你的「side project」,而是你的「基礎」是否能勝任該研發工作。或者許多人連什麼是non-OS的系統軟韌體都沒聽過/沒概念,就誤以為軟韌體工程師一定是開發Linux/Android based的系統 (其實不少產業界的主管/工程師也有這個狀況)。事實上,軟韌體就是為了驅動微電腦電子產品而存在的,但許多純資訊相關背景科系的學生/畢業生/求職者卻連基本常見的I/O周邊裝置與其相關的基本介面電子電路都不太知道是什麼 (因為他們的大學老師們也不知道)。

或者看到一些想走純軟體技術的人跑去資策會的技術培訓補習班課程補習,就誤以為資策會就是專門開設軟體技術培訓課程的單位。

諸多的迷信或者錯誤的觀念充斥於匿名網路論壇平台,距離實際狀況有一段很大的落差 。

這些讓我想起大約13~14年前,一堆不懂電腦系統基礎學理(理論基礎/架構原理等)的 高海科大 及 成功大學 的 教授 和 研究生們,似乎很有默契的異口同聲(雖然彼此之間不認識),都說8051 MCU太老舊、沒用了、不要學。結果事實是到了十幾年後的這幾年,一堆IC設計公司依然在推出8051 MCU新產品。例如台灣知名IC設計公司 松翰科技(Sonix technology)到今年(2025年)還推出新款的車用8051 MCU IC)。實際上,在產業界,甚至連更老舊的6502 CPU/Microprocessor都還有少數部分產品在用(需維護其軟韌體),Z80 CPU/Microprocessor也是直到去年(2024年)才宣告停產(已經在市場上48年),而且這兩款還不是在消費性電子產品上面更通用的MCU (Microcontroller Unit) 而是General Microprocessor。

或者一些就讀名校一路直升的純資訊/純軟體背景學生,雖然在國高中時期修過物理、大學時期修過必修的物理及某些電子電路相關課程,但是就好像跟沒學過一樣,去盲目相信許多網路上(如PTT)的片面訛傳 (不懂何謂韌體,也有人以為做韌體就是做硬體,而除了IC設計以外的硬體都完全不值得學,以為這些都沒出路,覺得應該學純軟體 或者 演算法應用,才是高尚、有學問) 。

又或者其實是在寫App (注意: 實際上的App不一定是你認知中的App才叫App,可以有很多層次),結果因為是for target裝置的,就以為這都叫作「嵌入式系統」的系統軟韌體開發,或者實驗室號稱以「嵌入式系統」方向為主,卻誤以為「嵌入式系統」的「嵌入」是指「嵌入軟體」或者嵌入「OS」,這種完全錯誤的認知。

自從大約9年前的AlphaGo圍棋軟體打敗韓國棋士的影片新聞爆紅,科技部(現在又改回國科會並拆分出數發部)開始主打AI為主的計畫導向之後,全國的大學師生皆盲目的執著/糾結於AI,不分系所/領域、不分青紅皂白,學生們好傻好天真地以為做AI就會很有出路,凡是不知道要做什麼方向的學生,十之八九會跟你說想要做AI相關的論文題目或專題,而多數的大學教授們也不知其所以然的盲目追求AI相關計畫及開設相關課程。學生們在學校盲目(或被迫)做AI淺層應用,到了畢業、需要求職的時候,才發現產業界裡面真正的AI研發職缺數量其實非常的少 (但太多人都想要做AI相關的工作,僧多粥少),為了要找份工作,這時才回頭去找系統相關的研發職位(軟/韌/硬體等),畢竟系統開發才會需要比較多的工程師投入。

這些案例皆足以顯見, 並不是 博士/教授 或 一路就讀名校的學生 甚至業界人士/主管/高層/老闆等,就能具備最基本的 專業領域 基礎學理認知與判斷能力,這些都牽涉專業領域的基本學理(理論基礎)、思考能力與判斷邏輯,這些其實與個人的實質作為/實質累積 較為相關。

實際上,大多數人是盲目相信「訛傳」、「人云亦云」,相當缺乏獨立自主的批判性思考,這或許與台灣人從小到大所受到的教育方式/風氣文化有關。

資訊技術隨著時代進步,但每個時代中的大多數人們的認知/判斷能力大多沒有相對的實質進步,這也顯現從每個台灣人小時候所受到的基層教育到大學教育也沒有相對的實質進步。

三十年前的台灣社會是一窩蜂,而到了三十年後的現在,台灣社會依然是一窩蜂。即便多數人的學歷文憑已經從當年的高中職、專科、大學 畢業,提升到碩士/博士畢業,但這個一窩蜂盲目跟隨群眾的現象似乎依然沒有多少改變。

-----

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

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


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

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

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

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

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,亦可先點擊參考這篇介紹文章

2025年2月21日 星期五

(NEW)2025年 6月 開在 清大自強基金會(台北)的 嵌入式Linux系統基礎建置課程

 

我近期開在台北自強基金會的課程

🎉🎉🎉熱烈招生中🎉🎉🎉

歡迎有興趣的朋友們踴躍報名~~

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

上課時間:

2025/6/8(日)~7/6(日)9:00~16:00 共30小時

2025/5/25~6/22(日)每週日9:00~16:00 共30小時

(原2025/3/30~5/4(日)每週日9:00~16:00  共30小時(4/6停課))

報名連結➡️ https://edu.tcfst.org.tw/web/tw/class/show.asp?tcfst=yes&courseidori=14C029


#嵌入式系統 #SoC #韌體工程師 #嵌入式系統課程 #微控制器 #韌體工程師課程 #Embedded_Linux 


-----

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

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


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

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

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

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

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,亦可先點擊參考這篇介紹文章


2022年12月14日 星期三

【 嵌入式系統(Embedded System) 到底是什麼? 】

【 嵌入式系統(Embedded System) 到底是什麼? 】

關於這方面,許多台灣的大學學術界資深老師(無論名校或者非名校)、產業界資深主管/工程師,常會誤以為嵌入式系統就是指有嵌入Linux的系統,其實這是個明顯的認知錯誤。個人應該已經不只十次在企業職缺或者大學校院內的論文看到這個問題,直到今年(2022)我還是有在國內的研討會論文中看到這個錯誤。

這情況類似之前提過的微處理機/微控制器的名詞常被混用的狀況,而許多歐美的相關技術書籍對此名詞有較嚴謹的說明。如果大家很重視「學術」,那就應該要對這些名詞的基本定義有一定的嚴謹程度。

同時讓我們看一下 Wikipedia英文版頁面內容(較詳細)對於嵌入式系統(Embedded system)的基本定義[1]:  「An embedded system is a computer system—a combination of a computer processorcomputer memory, and input/output peripheral devices—that has a dedicated function within a larger mechanical or electronic system.  It is embedded as part of a complete device often including electrical or electronic hardware and mechanical parts. 

簡單來說,嵌入式系統就是被嵌入到電子/機械/機電硬體系統內、具備特定/專用功能的 計算機(電腦)系統。 這個「嵌入」並不是 在指Linux OS軟體被嵌入到一個系統。

就算是跑non-OS類型的軟韌體的MCU為核心的系統產品,基本上也都是嵌入式系統。並不是只有那些有跑(執行)嵌入式Linux或Android的系統才叫做嵌入式系統。

對於專業名詞定義認知落差,有時候就是造成工程開發過程中的溝通問題的來源。

Ref: 

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


-----

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


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

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

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

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

2021年10月7日 星期四

【Embedded Linux】【開機啟動程式】關於bootloader/bootstrap名詞之探討&想法

因為前陣子剛好trace到bootstrap相關的code,今天看到Youtube上的台大資工系的OS課程影片,所以就稍微探討一下關於Bootstrap這名詞的使用與定義差異,雖然這些名詞或許本來就難免會隨著年代及平台的差異而被混用。 

該台大資工系課程影片中16:38開始的部分 (對應這篇po文的第一張截圖圖片) https://www.youtube.com/watch?v=OQiCacvx5rQ&t=997s 

以下是探討的部分: 

雖然boot就是源自於bootstrap的縮寫,但有些名詞如果要細究,似乎又有些在名詞定義有所差異的狀況可以探討。 

後來發現上面那課程投影片以及說法是恐龍本(恐龍書)內的部分描述,而課程影片似乎是更簡化一些的PPT呈現與描述方式。

實際上如果是ARM(如Cortex-Ax系列) based的嵌入式SoC Linux系統,從bootROM到head.o、misc.o(被包含在被壓縮的kernel核心的zImage之中)之間包含許多階段的軟韌體程式。 

在系統啟動/上電之初負責初始化hardware(例如課程影片照恐龍本內容所提到的CPU registers, device controller , memory)的程式,其實就嵌入式系統常見說法是bootloader (此處將這些名詞區分得詳細些) (註: 關於初始化硬體的部分,在常見的PC架構則是會有一部分稱作BIOS,而在嵌入式系統通常將這些部分統稱為bootloader。所以若要對照常見的嵌入式系統架構的話,可對照或類似於嵌入式系統的bootloader的某一部分,如許多SoC內的boot ROM內的ROM code就是類似的其中一部分,當然其實也還包含ROM code之後的一些部分)。 

因為有著上述被包含在被壓縮的kernel核心的zImage之中的head.o、misc.o等程式(注意,這篇po文所講的head.o指的並不是那個不包含一堆object file的那個Linux核心本尊vmlinux內的那個head.o,雖然它們都在zImage之中。另外要注意有兩種情況都叫作vmlinux),

所以若嚴格或精確一點來說(至少在開頭描述過的嵌入式系統上),或許 不適合 將 負責 繁複的硬體初始化 及 zImage階段的處理器配置(如快取、暫時關閉中斷訊號、準備C code執行環境等) 的head.o、負責解壓縮、重定址Linux kernel等步驟的misc.o等程式 都全部統稱為Bootstrap program或全部統稱為bootloader,因為head.o、misc.o等程式,主要是負責把被壓縮的OS核心zImage解壓縮 & 重新定址等等的動作的部分,而並不是負責所謂的initialize all aspect of the system hardware。 

國外有一本有名的、介紹嵌入式Linux的書籍([1])的5.1.3節的內容是將Bootstrap program與Bootloader作出區隔,這本書將zImage之中的head.o與misc.o等程式歸類為Bootstrap program,但這樣的區隔方式也可能會造成混淆,畢竟boot這詞源自於bootstrap,會讓人覺得Bootstrap program原本就是bootloader不是嗎? 但head.o、misc.o也是屬於將OS kernel帶起的重要程式(只是不屬於我們常講的bootloader的範疇),所以我認為[1]這本書的作者會想要作出這種區隔也還算可以理解。 

總結一下,簡單來說,在有跑Linux的嵌入式系統中,負責課程影片內所指的(系統啟動/上電之初的)initialize all aspect of the system hardware(如memory)的階段通常稱為bootloader;而被包含於zImage的階段的head.o、misc.o等帶起核心的必要程式,已經不屬於我們常講的bootloader階段,

所以如果在OS課程中將這些部分都統稱為bootstrap program或bootloader,可能是會顯得比較rough一些。當然了,一般大學部的OS課程若要講得很詳細的話,或許也不容易,但如果是針對一般的PC系統講解,則負責最初initialize all aspect of the system hardware的應該是BIOS,在BIOS負責的任務結束之後才換成bootloader(bootstrap program)接手。 

另外,其實bootloader初始化系統硬體之後,也不一定就要接著帶起一個OS kernel,也可以是接著帶起non-OS program,端看實際的應用需求而定。 

題外話,關於開機初始化memory的方面 (於bootloader的階段),小弟個人過去在科技業工作時,曾實際負責過相關內容多次 (bring up過多款會跑Linux/Android的SoC系統晶片的公版軟韌體)。 

Ref: [1] Embedded Linux Primer: A Practical Real-World Approach, 2/e,https://www.tenlong.com.tw/products/9780137017836




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

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

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

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


2021年9月3日 星期五

【Embedded Linux(嵌入式Linux)系列課程】Root Filesystem之編譯建置與執行 課程簡介

Root Filesystem之編譯建置與執行 課程簡介

Root Filesystem為根目錄檔案系統。簡而言之,檔案系統為電腦資料的儲存和組織(架構)方式,與作業系統之間有著密切的關係

延續上一節Kernel之編譯建置與執行之課程內容後,這節課程將會帶領學員:

  • 課程實驗內容將透過 純文字指令方式(command line) 進行,符合科技產業界對於此類系統的開發方式

  • Host PC端之Ubuntu Linux開發環境中,取得Busybox這款知名的開源檔案系統建置工具的source code,並透過GNU Toolchain編譯工具對其進行編譯,以建置出給Beaglebone Blcak嵌入式系統開發板所運行使用的Root Filesystem(根目錄檔案系統)

  • 以Busybox建置製作Root Filesystem的過程,包含嵌入式系統目標平台上所需的基本目錄及裝置節點(device nodes)

  • 準備Busybox執行所需之動態連結函數庫(該課程主要實驗方式);也會額外補充介紹靜態連結的編譯方式。

  • 建立檔案系統所需之基礎檔案(如/etc/inittab、/etc/init.d/rcS、/etc/fstab......等等)

  • 如何讓執行於Beaglebone Blcak板子的Linux Kernel從SD卡掛載(mount)學員於課程內所建立的Root Filesystem 

實驗Demo影片:


從上電進行開機流程之後進入根目錄畫面,展示在Beaglebone Black板子上執行ls、cat /proc/interrupts及cat /proc/cpuinfo指令。



本園區之FB粉絲專頁如下:

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

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

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

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




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他們的官方網站上放置關於晶片的介紹。

---------

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

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


2021年8月20日 星期五

【Embedded Linux(嵌入式Linux)系列課程】Kernel之編譯建置與執行 課程簡介

Embedded Linux系列之Kernel之編譯建置與執行 課程簡介

Kernel為作業系統的核心,是現代作業系統之中最基本也是最主要的單元,簡略而言,Kernel主要負責整體電腦系統的資源管理。

延續上一節Bootloader開機啟動程式建置與執行之課程內容後,這節課程將會帶領學員:

  • 課程實驗內容將透過 純文字指令方式(command line) 進行,符合科技產業界對於此類系統的開發方式

  • Host PC端之Ubuntu Linux開發環境中,取得Linux Kernel source code,並透過GNU Toolchain編譯工具對其進行編譯,以建置出給Beaglebone Blcak嵌入式系統開發板所運行的Embedded Linux Kernel Image

  • 製作Boot script(包含帶給Kernel的必要啟動參數以及與啟動核心相關的UBoot指令)

  • 介紹如何讓Beaglebone Blcak板子從SD卡載入並啟動Linux Kernel Image

  • 介紹在產業界工作常會使用到的透過TFTP(Trivial File Transfer Protocol)從Host PC端載入Embedded Linux Kernel ImageBeaglebone Blcak板子上並且執行的方式 
  • 介紹如何編譯裝置結構樹devicetree source file(.dts)以得到device tree binary(.dtb),及如何透過UBoot將其載入給Linux Kernel

實驗Demo影片(註: 此為尚未建置Filesystem的狀態):

SD卡(MMC)載入並啟動Linux Kernel (透過boot script自動booting)


透過TFTP從Host PC端載入Embedded Kernel ImageBeaglebone Blcak板子上並且執行 
(刻意敲UBoot指令給大家看)



本園區之FB粉絲專頁如下:

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

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

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

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

2021年8月16日 星期一

【阿良的嵌入式系統技術學習區】 嵌入式Linux (Embedded Linux) 基礎實務 課程內容介紹

課程涵蓋內容如下:


  • 說明:  雖然近年來已經有Yocto、Buildroot、OpenWrt等組件工具可以簡化許多在嵌入式Linux建置過程中的繁複流程(若未來有機會的話,可能會開這些工具的使用教學課程),但是,無論在許多有做SoC的IC design house(IC設計公司) 或者 系統廠 的嵌入式Linux軟韌體相關研發單位,嵌入式Linux各階段軟韌體的基礎建置(包含對應的編譯開發環境的各環節)能力,也就是本課程的教學主軸,仍是非常重要的,在過程中將會學習到許多在進行嵌入式Linux系統開發時所需的基礎觀念和經驗。
  • 在此課程內容中,有著許多細節,通常對於初學者自學而言將會消耗大量的時間在克服一些技術細節方面所帶來的困難,大多需要實際的經驗才能在較短的時間內克服,所以若讓有經驗的人指導,在學習上將會事半功倍。
  • 課程實驗內容將透過 純文字指令方式(command line) 進行,符合科技產業界對於此類系統的開發方式

  • 實驗硬體平台預計為ARM Cortex-A8 based SoC(系統晶片)為核心之開發板(Beaglebone Black)

本園區之FB粉絲專頁如下:

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

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

個人簡介: 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,亦可先參考 課程招生網頁連結