總網頁瀏覽量

顯示具有 系統晶片 標籤的文章。 顯示所有文章
顯示具有 系統晶片 標籤的文章。 顯示所有文章

2026年10月23日 星期五

【最新消息】【限量開放報名】2026/11月 團體線上直播+實體面授混合 嵌入式系統課程

  

【最新消息】

各位學員大家好~

本次
嵌入式系統實戰研習課程 將於 11月7日(星期六)開課

這次的上課模式會採取「線上直播 + 實體面授混合式教學」,學員聽完老師講完原理後,當場使用板子進行實作實驗,老師也會線上當場解決學員問題,也會在最後一次課程與學員見面面授

在最後一次的課程,會實際與大家面對面教學(地點會以學生居住地為考量) 方便全台灣的朋友們一起學習🧑‍🔧

內容除了會學習到,在資通訊、半導體/IC設計科技業界的韌體工作常用的量測儀器外,也歡迎各位學員將課堂上遇到的問題一一提出來詢問並解決喔~

期待與您們見面 ❤️


🎁 本課程將贈送實驗材料一套 (價值近5千元):
✔️ ARM Cortex-A SoC 嵌入式系統開發板
✔️ 相關晶片模組
✔️ 連接線材
✔️ 課程講義電子檔

給每位正式完成付費報名的學員,讓學員可以於課堂中進行 🔱實戰實作學習🔱


💻本課程所使用的電腦作業系統預設為Windows(Win 10 以上版本)


━━━━━━━━━━━━━━

🔥【早鳥優惠開放中】🔥

即日起至 10/31(六)前完成報名與繳費,即可享有✨早鳥優惠價✨!

⚠️ 名額有限,額滿即提前截止,敬請把握!


━━━━━━━━━━━━━━

✅【週六全天班】ARM Cortex-A SoC 嵌入式 Linux 系統建置實戰研習:平台建置、移植與整合開發


課程大綱:

https://jimsun-embedded.blogspot.com/2026/04/arm-cortex-soc-linux.html


報名表單:

https://forms.gle/5ocoBp2RMRtVQ8ee6

━━━━━━━━━━━━━━

⚠️ 在本粉絲頁公告的課程,才是孫文良老師本人親自授課,其他單位開設之課程不一定由孫老師授課喔!

📩 有任何問題歡迎私訊小編詢問


#嵌入式系統 #韌體工程師 #MCU #Linux #轉職 #跨領域 #SoC #技術進修 #實戰研習 #軟韌體工程師 #研發工程師 #手把手教學 #專業陪跑


-----


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

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


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

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

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

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


2026年4月3日 星期五

【ARM Cortex-A SoC 嵌入式 Linux 系統建置實戰研習:平台建置、移植與整合開發】課程大綱

 

課程大綱(講師將按照該梯次學員之整體背景、學習狀況與時間狀況而彈性調整增減該內容及順序):


1. 嵌入式系統簡介

   - 硬體平台(感測與控制類MCU V.S. 網路多媒體應用類之大型SoC)

   - 大型作業系統軟韌體 V.S. 裸機韌體之差異介紹(基礎觀念)

   - OS與non-OS之差異、用途等(闢除迷思)

   - 裸機(bare metal/non-OS)軟韌體範例介紹與現場demo

   - 嵌入式Linux作業系統與開源軟體專案簡介

   - 手動(Roll Your Own/Build from Scratch)與使用buildroot或yocto建置BSP之差異

   - 本課程內容與使用高度現成平台(如Raspberry Pi與其官方主要推薦sop方式並作應用)之差異

   - 產業公司相關職缺介紹與概況

   - 如果本身是偏向純軟體背景,對於想成為一個能力堪稱完整的系統軟韌體研發工程師來說,該補足哪些知能?開發時要注意什麼?


2. ARM Cortex-A based SoC大型系統晶片與開發板硬體平台介紹

   - 電腦架構複習: 以各種微電腦晶片之原廠手冊內容為例

   - 課程實驗用之TI SoC AM3358架構、原廠技術文件介紹

   - 課程實驗用之開發板: Beaglebone black規格、電路圖(schematic)導讀、PCB Layout簡介

   - 基礎電子元件介紹、CMOS/TTL觀念、MOSFET/BJT電晶體

   - 記憶體之基礎觀念


3. 開發環境建置: 

   - Host PC端之虛擬機軟體下載與安裝

   - Host PC端之PC Linux distribution下載與安裝

   - Linux基礎指令操作

   - GNU交叉編譯工具鍊(GNU Toolchain)建置

   - Linux環境變數

   - COM Port相關原理(UART、UART to USB晶片模組、VCP等)

   - COM Port應用程式下載與安裝(如teraterm或putty等)

   - 課程實驗用開發板之儲存裝置空間配置規劃實作

   - Samba Server建置

   - SSH Server建置


4. 下列各單元之開源專案原始碼下載、配置(移植之過程)與編譯之步驟與背後原理,並使其成功執行於硬體開發板。包含各種Compile error情況該如何解決、編譯建置過程之log訊息閱讀。


4-1: U-Boot Bootloader(開機啟動程式)

    - 包含開機流程原理說明,從SoC內之ROM code至開機完成之各階段原理

    - 移植所需之.config

    - U-Boot常見指令

    - menuconfig

   

4-2: Linux kernel (Linux作業系統核心)

    - 移植所需之.config

    - uImage與zImage、LOADADDR與mkimage

    - dts/dtb 

    - Boot script建置(for uboot)及其內容指令與參數(如boot arguments)

    - 記憶體空間位址安排規劃、SoC之memory map說明

    - 如何透過uboot的TFTP load Kernel image到目標平台

    

4-3: Busybox Filesystem(檔案系統)

    - 創建rfs基本目錄for目標平台

    - 觀察busybox所需之動態連結函數庫

    - 建立基本device node

    - 創建init

    - 創建執行時期相關配置檔


5. 簡易Linux Device Driver驅動程式1: 基礎觀念

    - Linux系統架構(user/kernel space到硬體)、系統呼叫(system call)機制

    - device node(/dev/xxx)、major/minor number

    - kernel module與built-in觀念

    - 編譯建置方法

    - Makefile、Kconfig、.config與menuconfig

    - /proc與/sys簡介


6. 簡易Linux Device Driver驅動程式2: GPIO驅動程式

    - GPIO周邊裝置簡介

    - GPIO驅動LED之電子電路設計原理

    - 電路圖(schematic)導讀

    - BJT電晶體基礎特性及其作開關應用之電路原理

    - MMIO觀念

    - MMU、虛擬記憶體位址觀念

    - 周邊裝置之暫存器(register)位址與功能查找

    - 系統晶片之原廠技術資料手冊(Datasheet、Manual)內容導讀

    - pin mux

    - C語言重要觀念複習(如:指標、結構指標、暫存器之定址)

    - kernel driver範例程式逐行講解

    - kernel driver基礎kernel api介紹(如: ioremap)

    - 編譯建置.ko(kernel module)檔

    - 範例user app應用程式逐行講解

    - kernel driver與user app整合串接之實作原理


7. 訊號量測儀器操作

   - 三用電表

   - 示波器

   - 邏輯分析儀


8. Linux系統軟韌體開發之Debug除錯技巧與經驗分享


-----

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

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


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

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

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

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


2026年2月5日 星期四

已結束報名【週日全天班】ARM Cortex-A 系統晶片SoC之嵌入式Linux作業系統建置與系統實作(基礎) 團體面授


【ARM Cortex-A 系統晶片SoC之嵌入式Linux作業系統建置與系統實作(基礎)】團體面授

  • 此課程須自備筆電(限Windows)
  • 隨課贈送(每人一套):SoC嵌入式系統開發板、相關材料及紙本講義
  • 本課程為確保教學品質(小班制),名額有限

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,就必須尋找它連接的腳位(pin)。由下圖可以得知D5所連接的腳位(pin)為GPIO1_24。





這時候我們就可以在AM335x的Datasheet[2]找到原來GPIO1_24的PIN_Name是GPMC_A8,並且腳位的模式需要選擇為7。




現在我們已經知道要操作的腳位是GPMC_A8,接下來就是看Reference Manual的GPIO 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_OE將output功能啟用就好,而GPIO1_CLEARDATAOUT和GPIO1_SETDATAOUT都是在撰寫功能時才會進行操作。這裡只會講解GPIO_OE的操作方式,其餘兩個暫存器的操作方式也是同理。



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

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

*GPIO1_CLEARDATAOUT = (1<<24);       // 將GPIO1_24清0 (低電位)

*GPIO1_SETDATAOUT = (1<<24);           // 將GPIO1_24置1 (高電位)

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



2023年7月5日 星期三

8位元的MCU在嵌入式系統設計中是否重要? 可由MCU大廠Microchip公司的產品推廣貼文去看出!


MCU大廠Microchip持續很積極的在推廣 8-bit 的 MCU


圖片來源: Microchip公司官方IG貼文

從單晶片微電腦/微控制器大廠Microchip的推廣貼文可看出,8位元的MCU 在 嵌入式系統設計領域之中實在是重要的角色。

上述該原廠貼文的hashtag的關鍵字是:

#embeddedsystems #analog #software #microchip #microcontrollers #mcus #engineering #tech #technology #innovation #power

為什麼一直重複講?因為沒有深入思考了解導致觀念錯誤的人實在太多。

圖片來源: Microchip公司官方IG貼文


上方第二張圖(原廠官方貼文)之hashtag關鍵字如下:
#analog #embeddeddesigns #microchip #microcontrollers #mcus #engineering #tech #technology 
#innovation #power


甚至看過許多業界主管/工程師/教授們連對於「嵌入式系統」的「基本定義」都有所誤會。

-----

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

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


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

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

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

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


2023年5月16日 星期二

感謝各家產業界工程師學員的在課後的主動心得分享回饋肯定

最近對於一位AIoT相關產品開發的軟韌體工程師學員於其開發過程中所遇到的 Arm Cortex-A9 processor(with MMU) based SoC/MCU(廠牌為 瑞薩/Renesas) 之 bootloader、chip internal/external RAM的access以及對應的flow、linker script等方面的相關問題和狀況進行解析及說明。


-------



-------


另外,於上個月的另一位於IC設計產業任職的軟韌體工程師在之前的課後主動心得分享回饋如下:


(現在較重視保養喉嚨&課程學員人數控管了)


感謝各路軟韌體工程師學員們,對於我的嵌入式系統技術諮詢課程的支持鼓勵~!!
歡迎各方洽談合作,務實/踏實追求共好!

-----

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


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

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

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

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




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年7月14日 星期三

【阿良的韌體科普系列】「韌體」到底是什麼? 和軟體有什麼不同? 【下篇】

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

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

承接中篇文章,下篇的內容如下: 

另外有些人可能會認為,被燒錄到裝置產品內的軟體都能叫做韌體,我甚至看過有人認為開發Android 裝置的上層軟體也是在做嵌入式系統韌體開發,對於這種觀念我個人是不同意的。因為畢竟只要是能執行軟體的產品 (有電腦系統在內),有什麼不是裝置呢? 即便個人電腦PC也是裝置的一種。其實或許應該以軟體的所在層次(Level)去區分,會較客觀一些。

無論硬體平台是SoC或者MCU;無論產品類型是小體積的裝置還是PC或家電;無論主要系統軟體是屬於有無OS的類型、無論軟體單元/種類是Linux kernel、BIOS、bootloader等等,只要是位於底層層次的軟體(存取CPU、周邊暫存器、記憶體的層次的軟體,我認為即可稱為韌體),撰寫韌體是需要考量到硬體狀況 (如果是控制I/O周邊用的韌體,時常還要考量及整合電腦晶片外部的電子電路設計)。

當然也有因為硬體架構較單純所以將應用程式和韌體混和撰寫的狀況,例如早期標準(至今仍可用於嵌入式基礎教學)的8051 MCU晶片的程式開發即是這種狀況(較早期的MCU硬體架構單純、資源較有限,不一定適合去將其軟體區分出太多高低階層次)。

  • 註: 電腦並非只有指個人電腦(PC),而是在許多人們於日常生活中所會使用到的產品裡面都有電腦(執行軟韌體程式以驅動各式硬體),例如手機、平板電腦、家電(數位電視、電視機上盒、洗衣機、冷氣...) 等等。

-----



嵌入式系統相關觀念教學文:

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

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

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


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


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

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

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

【阿良的韌體科普系列】「韌體」到底是什麼? 和軟體有什麼不同? 【中篇】

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

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

承接上篇文章,中篇的內容如下: 

所以,若要精確一點來說(說好的初學者科普呢),個人認為何到底謂韌體、何謂軟體,其實應該以該軟體所在的層次來區分,而不是以平台來區分。

以許多 初學者 或 學生 時常撰寫non-OS類型的Arduino軟體為例,當要驅動GPIO所對應的某支腳位輸出高電位時,如果使用的方式是是直接在Arduino IDE中去呼叫digitalWrite(Pin_Number, HIGH); 若以嚴格&精確一些的標準來說,呼叫函數的本身的這層程式碼的範疇,算是應用軟體層面(屬於 只負責下參數給這個現成的函數來應用這個函數,但看不到這個函數的內容是如何、實際上是如何接觸操作了什麼硬體暫存器 的層次)。 而 真正去實現digitalWrite這個函數的內容程式碼(對GPIO的暫存器作操作存取)的部分才是意義上較精確的韌體開發。

這時有些人可能會混淆,認為上述Arduino例子的digitalWrite(Pin_Number, HIGH)既然會直接驅動硬體(會讓Arduino板子輸出數位邏輯系統的高電位5V或3.3V(視MCU款式而定)訊號,那呼叫digitalWrite的層次的軟體怎麼會不屬於韌體呢?  

如果有這個疑問的朋友,可以自己想想,有什麼APP的最終功能目的不是驅動硬體動作呢? 例如你使用LINE APP發送文字訊息給朋友,此時手機畫面的硬體、手機通訊相關硬體其實都有做事(work),但難道LINE APP是韌體類的程式嗎?  既然世界上所有的軟體本來就都是為了驅動電腦硬體做事(以達到我們人類所指定的功能),那又何必區分獨立出韌體這個名詞呢?  所以,韌體應該必須是有其特定意義的。

當然了,上述講述的Arduino函數的這例子的說明內容,是比較精確嚴謹的韌體名詞作釐清,但如果將韌體這個名詞的定義放寬、放得更廣泛一些,那通常MCU的軟體等都會被統稱為韌體。

又例如許多消費性電子產品(如機上盒、路由器)內的軟體升級,這時的軟體也常被泛稱為韌體,所以使用者會看到的名詞是韌體更新(算是一種泛稱),但是實際上確切到底是更新了哪些部分的軟體、更新的到底是屬於底層還是屬於上層的軟體,其實當然只有原廠負責相關工作的工程師才知道。

以及 如果是在科技產業/企業公司的職缺名稱方面,即便是呼叫digitalWrite函數來應用以控制MCU(進而驅動其它硬體)的相關軟體工作(是否接觸更底層的真實定義上的韌體,就看工作性質而定),這些工作職缺通常也都被企業在人力銀行網站上 統稱為 韌體工程師 (畢竟是驅動MCU晶片功能的軟體,直覺上想起來仍是很直接會驅動硬體的軟體工作),

所以各位朋友會發現,有時候人們在這些名詞的使用上是會有混用情況的  (情況有點類似 微控制器Microcontroller 也常被稱作 微處理器Microprocessor,若要探究這兩者的差異細節,則可參考我之前撰寫的這篇文章去了解該兩者的詳細的定義和區別)。





其餘的內容會放在 下篇 繼續介紹(可直接點連結連入關看)。



嵌入式系統相關觀念教學文:

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

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

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


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


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

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

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