fbpx

enginner course

現在位置:艾鍗學院Embedded Linux 課程> 嵌入式Linux開發實務課程

學程簡介 課程大綱 課程預覽 專題實績 會員優惠

 

➤ 【實體遠距同步教學】全台開課並提供錄影補課,歡迎免費洽詢!
📌 本課程可申請補助:大人提、小人提、退輔會補助適用

♦ 課程與企業徵才合作,幫助學員訓後就業!歡迎填表預約免費諮詢>>

♦ 提供學員專屬講師助教群平台,訓中訓後為你排難解惑

 

 

第一階段   Linux系統建置實務

明明是基本功的部分卻卡好久?從不會到會的關鍵一步,重點統整、障礙突破,帶你穩紮穩打基本功,了解遇到問題該怎麼解決,快速上手Linux系統。

此門課是為了進入嵌入式Linux開發的預備課程,要在Linux作業系統開發,對Linux這套作業系統的操作環境須要有一定的熟悉度,包含Linux系統架構、檔案系統結構、指令操作、網路設定、常用伺服器建置等。

  
 
  • 開發平台硬體Raspberry Pi
  • 套件安裝管理及Linux常用指令
    • 套件安裝 dpkg及用法
    • 套件安裝 apt-get及用法
    • 套件安裝 apt-cache及用法
    • 網路配置
    • 服務配置 -啟用SSH
    • 常用指令
    • 開機重啟 命令
    • Linux相關指令分類
 
  • 檔案結構與檔案系統
    • 檔案類型 與副檔名
    • 權限
    • 檔案系統 類型
    • 系統結構
    • 硬碟分割
  • 使用者帳號管理
  • 伺服器安裝與設定
    • SAMBA

 

第二階段   嵌入式Linux設計開發

了解嵌入式系統架構並能進行軟硬體系統的整合、移植與開發,幫助開發者Debug與分析問題。

帶你瞭解Embedded Linux的主要部份,上手Embedded Linux BSP:在拿到一般嵌入式 BSP後懂得如何開始,會知道如何進行核心組態與編譯,Bootloader , Kernel編譯以及Root File system建立等。能熟悉GNU Toolchain的使用,包含GNU AutoTools與Makefile的撰寫,並理解Open Source程式與函式庫的移植技巧 。 課程利用Raspberry Pi 開源硬體,讓你從空的SD card,從無到有建構自己的嵌入式Linux 系統並能使板子能開機 (Board bring up)。在Linux系統建立完成之後,教你開發 Linux Pthread、Socket及File (Device) I/O的系統程式。最後,以嵌入式Linux常見的產品,如IPCam、Wi-Fi Router、Media Player,手把手教你這些功能是如何被實現的。

 
  • 嵌入式Linux系統軟硬體架構簡介
  • Raspberry Pi 開發平台
  • Embedded Linux BSP
    • Buildroot
    • Toolchain
    • Bootloader, U-Boot
    • Linux Kernel
    • Root Filesystem, BusyBox
    • OpenWrt
    • Yocto
  • Flash Layout 配置與Linux MTD
 
  • Open Source Porting程式移植
    • GNU Build System
    • gcc 常用編譯參數說明與最佳化
    • Make、 Makefile 編譯配置說明
    • Cross Compilation
  • 嵌入式Linux產品整合應用實作

     * 本單元所列之應用主題,每梯次選用可能不同

    • Media Player:Porting MP3 Player
    • NAS: Porting SAMBA
    • Wi-Fi Router:Wi-Fi Driver, hostapd, dhcpd, bridge, ...
    • IP Camera:Porting Streaming server

 

第三階段   Linux驅動程式設計

不管你是要自己撰寫或移植,這都是資深嵌入式系統工程師的必修課。

瞭解開發Linux驅動程式需要的知識,並掌握Linux驅動程式設計概要及學習方法。熟悉Linux驅動程式架構並能實際動手撰寫Linux 核心底層的驅動程式。能看懂程式碼、分析程式碼,進而修改程式碼,體驗一個驅動程式形成的每個細節,並能加以改寫完成自己的程式。實戰GPIO Driver、Linux中斷處理、UART Driver、SPI Driver、I2C Driver、ADC Driver等Driver。

  
 
  • 字元裝置Driver
  • Linux Misc Device
  • Linux GPIO 驅動程式 for LED, Button,Relay
  • Raspberry Pi 功能說明與BCM283x 使用說明
  • Pi 擴充卡硬體功能介紹與電路圖接腳說明
  • Linux 中斷註冊 & 中斷控制器HAL層架構
  • Bottom Halves (Tasklet & Work Queue)
  • 進階字元Driver:
    • Non- blocking I/O : 使用Wait Queue & completion 機制
    • kernel 對UserSpace通知: SIGIO 信號非同步通知,call_usermodehelper()
 
  • Kernel Timer List (Jiffies, timer ticks) for LED 閃爍
  • Linux Serial port 驅動程式 for Bluetooth 模組
  • Linux Platform Device & Platform Driver 架構
  • Linux Device Tree
  • Linux SPI Client驅動程式 for ADC Driver (MCP3008)
  • Linux IIO Driver(Linux Industrial I/O Subsystem)
  • Linux SPI Bus master 驅動程式 for BCM2835 SPI controller
  • Linux I2C Client驅動程式 for EEPROM
  • Linux I2C Bus master驅動程式 for BCM2835 I2C controller
  • Linux User Space Driver

建議自備器材:
1.讀卡機x1
2.Ethernet網路線x1(短的即可)

 
 

 

Linux系統程式設計 
▶ 了解Linux system call (如I/O, IPC, pthread等),而能運用這些system call實現linux程式,亦藉此了解OS在嵌入式系統所扮演的角色
▶ 了解 server/client程式運作與 TCP/IP原理
▶ 能夠以 C語言實作 TCP/UDP/Raw Socket
▶ 能夠以 ioctl/fcntl/setsockop去控制 Socket;的行為
▶ 實現 Broadcast,Multicast
  
 
  • Low Level I/O Routine
  • File and Directory Manipulation
  • General Library Interface
  • Processes
  • Signals
  • POSIX Thread
  • InterProcess Communication
  • Shell programming
  • Linux Serial Programming
  • Linux Sokcet Programming
  Linux系統程式設計-Linux Socket
  • TCP/IP 網路簡介(1)
  • TCP/IP 網路簡介(2)
  • Wireshark 工具使用
  • TCP Socket程式與Socket API介紹
  • Socket多工處理
  • UDP Socket
  • Unix Domain Socket
  • Socket Option & Ioctl

 
ARM Boot Loader設計 
▶ 了解ARM核心架構與ARM例外處理
▶ 能熟悉ARM組合語言並能撰寫Startup code與Linker Script
▶ 配合Raspberry Pi硬體自幹 Boot code
  
 
  • SoC基本架構
  • ARM處理器架構
  • ARM組合語言
  • Thumb mode
  • 標準程序呼叫
  • ARM Exception handling /例外中斷處理
  • Memory Barrier & Coprocessor
  • 系統程式-Linker & startup code
 
  • Bare-metal Development using Raspberry Pi
    • 認識Broadcom BCM283x SoC
    • Raspberry Pi開機流程
    • 實作 GPIO 驅動-LED、 Button
    • 實作BCM2835 中斷控制器
    • 實作System Timer 中斷
    • 實作GPIO中斷
    • 實作UART
  • GPU 與ARM間的溝通用Mailbox 界面實作Framebuffer

 

 

課程預覽

     

#ARM Boot Loader                                                #Linux驅動程式 

課程 Q&A 專區
 
➤艾鍗學院的嵌入式系統課程,跟其他培訓機構有什麼不一樣?

艾鍗學院的核心教學方針強調 "How to do"(如何實作)"Trial and error"(從錯誤中學習),並進一步引導 "How to think"(建立工程師邏輯思維)

擔任本學程的講師皆為業界實際從事產品開發設計的資深 RD 工程師與研發經理。正因如此,每一門課都直擊業界不對外公開的實務開發方法。我們不僅傳授底層架構與技術原理,更將講師們多年來在實務產品開發過程中踩過的坑、累積的 Debug 經驗整理成獨家教材。透過手把手(Hands-on training)實戰,讓您快速跨越學習痛點,真正具備將 Embedded Linux 導入商業產品開發的即戰力!

嵌入式Linux系統課程架構
➤非本科背景(電子/電機/資工),也可以報名這門課並往嵌入式工程師發展嗎?

非本科背景學員也可以參加本課程,為轉職相關工作做準備。本課程在設計上考量跨領域學習者的需求,採循序漸進的教學方式,協助學員逐步建立嵌入式系統所需的核心能力。

在前期階段,將從 Linux 系統建置與操作基礎開始,並搭配 C 語言基礎補強與資料結構等數位學習資源,協助非本科背景學員銜接課程內容。課程中安排多項實務導向的 Lab 練習,透過實作累積經驗,逐步理解嵌入式開發流程,並建立可作為求職參考的作品基礎。若以轉職為目標,建議在學習過程中投入足夠時間練習,並整理個人作品與學習檔案。實務上,也可先從助理工程師或相關初階職缺切入,逐步累積經驗,再往嵌入式工程師發展,會是相對穩健的路徑。

➤報名這門「嵌入式 Linux 開發實務課程」需要先具備很強的 C 語言基礎嗎?

這門課程的精髓在於系統整合與硬體驅動程式(Driver)撰寫,雖然開發主要使用 C 語言,但您不需要是頂尖的 C 語言大神才來上課。

只要您具備最基本的變頭、迴圈、指標等觀念即可。對於驅動程式(Driver)和核心(Kernel)開發所需的進階指標操作與記憶體配置,業界業師會在實作單元中,對照著硬體 DataSheet(規格書)一條一條程式碼帶您看懂、分析並動手改寫。如果您覺得自身 C 語言許久未用有些生疏,開訓前亦可透過艾鍗學員專屬的數位輔助課程先行複習補強,不用擔心跟不上。

➤如果未來公司專案需要使用其他 SoC 平台(如 NXP i.MX 系列),在平台上會有更換、卡關的困難嗎?

這裡整理擁有 16 年以上嵌入式開發經驗的艾鍗資深業師看法:「各 Embedded System 平台之間雖然周邊硬體有別,但底層作業系統的運作架構是共通的。」

以業界常用的 NXP i.MX 平台為例:只要作業系統同樣是使用 Linux,本課程所教授的 Linux Kernel 組態、編譯、BSP 移植以及 Linux Driver(驅動程式)核心框架(如字元裝置、Platform Driver 驅動架構)皆能完全相容、一體適用!唯一的差別僅在於不同 SoC 的周邊暫存器(I/O Bus Address)不同,程式碼只需做對應的微調。在艾鍗熟悉了一種標準平台並搞懂核心技術,未來更換到任何新平台都能輕易上手,這才是帶得走的真功夫。

➤艾鍗學院的上課地點在哪裡?外縣市學員適合報名嗎?有提供線上遠距或錄影補課嗎?

地址位於臺北市中正區重慶南路一段143號4樓,艾鍗學院實體教室近(捷運臺大醫院站、西門站、台北車站,步行僅需 5 - 10分鐘),不論是搭乘高鐵、台鐵、捷運或客運前來,交通都極為便利。

為了照顧全台灣各地的學員,本課程採取【實體教室與遠距同步教學】。不論您在台中、台南或高雄,都能透過遠距系統即時與業師互動、發問。更重要的是,每堂課皆提供課堂錄影補課機制

➤什麼是嵌入式系統?這門學程涵蓋了哪些主要的技術範疇?

「嵌入式系統(Embedded System)」是一種嵌入在裝置內部,為特定應用、特定功能而量身開發的計算機系統。智慧型手機、智慧家電、智慧工廠的工業機器人、自動駕駛車、AIoT 邊緣運算終端等,全部都是嵌入式系統的應用產物。

嵌入式系統的設計本質上就是小規模的軟硬體系統整合,橫跨了資訊、通訊、電子三大核心領域。其技術範疇縱向跨越了上層應用軟體、嵌入式作業系統(如 Linux/RTOS)、核心韌體(Firmware)、I/O 周邊介面技術以及硬體電路裝置。因此,想要勝任高薪的嵌入式開發工作,必須具備能夠打通軟硬體壁壘的紮實整合功夫。

➤為什麼艾鍗學院選擇使用 Raspberry Pi(樹莓派)作為嵌入式 Linux 課程的教學平台?

Raspberry Pi 是一片功能強大且享譽全球的 Linux-Based 開源硬體板。相較於其他相對封閉的核心晶片,樹莓派的硬體線路與 SoC DataSheet(晶片規格書)的揭露程度非常完整。在學習 Linux 裝置驅動程式、Linux USB 驅動程式、ARM Bootloader 開發 時,學員不會因為拿不到關鍵的晶片硬體資訊而陷入卡關窘境。

此外,Raspberry Pi 引出了極具彈性的 40-Pin I/O 介面(含電源),學員能以實戰方式,接上艾鍗獨家研發的 I/O 擴充子板進行實驗,對控制電路與 Driver 的對接將會「非常有感」,而非流於紙上談兵。同時,Pi 內建 Wi-Fi 與低功耗藍牙(BLE),在實作 IoT Gateway 或智慧物聯網感測節點(Sensor Node)等前瞻技術時,硬體支援度也是業界首選。

特別提醒:許多人玩過樹莓派卻僅止於「使用現成套件」,很少人真正理解其內部的軟硬體架構設計。艾鍗的目標是培養業界急需的開發工程師。我們的訓練從空的 SD 卡開始,由核心原始碼(Kernel Source Code)編譯到根目錄檔案系統(Root Filesystem)的完整建置。接著帶您深入 Bootloader 設計、ARM CPU 架構與中斷向量表,讓您徹底搞懂微處理器底層一切程式如何執行的所有細節!

➤Android HAL(硬體抽象層)跟嵌入式 Linux 韌體的關聯性在哪邊?

首先必須了解,Google Android Framework 本質上是一個強大的 GUI 圖形作業系統。當上層的 Android APP 想要存取底層硬體(例如:G-Sensor 加速度計、GPS 定位模組、Wi-Fi 網卡等)時,都必須完全仰賴 Android Framework 內部的 HAL(硬體抽象層)軟體架構

所謂的 Android HAL,就是負責介接上層以 Java 撰寫的 Framework 程式碼與作業系統最底層 Linux Kernel 驅動之間的關鍵橋梁。它讓 APP 開發者只需呼叫 HAL 層的標準 API,而 HAL 內部則負責去操作底層的 Linux 驅動程式。也就是說,不論 Android 上層畫面多麼精美,底層的 Linux Driver 要先能動,上層的 APP 才可以用!這也是為什麼精通 Linux 驅動開發的工程師在網通與智慧手機產業如此搶手的原因。

Android HAL 與 Embedded Linux 驅動程式架構關係圖
➤學會嵌入式 Linux 開發技術後,未來可以做什麼?有哪些職涯方向與工作選擇?

★ 掌握核心技術,您將具備開發以下尖端產品的能力:

  • 電腦/嵌入式系統領域: 工業電腦、通訊手機、消費性電子產品開發、車載系統、生醫檢測儀器、高階 ICT 資通訊產品。
  • 自動控制系統領域: 智慧自動控制(PID)、HMI 人機介面程式設計、馬達精密驅動、智慧機械手臂、工業機器人。
  • 通訊與智慧物聯網: 無線通訊產品、高效能網卡開發、IoT 物聯網網關(IoT Gateway)、多功能感測節點(Sensor Node)。
  • 邊緣運算與影像處理: 智慧安全監控設備、Edge AI 人臉/物件即時辨識系統。

 

★ 業界求才若渴!您完訓後可成功對接的工作職缺有:

Embedded Linux 工程師嵌入式軟/韌體工程師 │ 嵌入式應用開發工程師 │ BSP 軟/韌體工程師 │ Linux 軟/韌體工程師 │ Linux 驅動程式工程師 │ 韌體研發工程師 │ BIOS 開發工程師 │ RTOS 系統工程師 │ Linux Kernel 核心工程師 │ 物聯網開發工程師

 

🔥 點此直擊 104 嵌入式 Linux 徵才專區(人才供不應求) 熱門職缺

Linux embeddedlinux SALEVIP

課程諮詢