第 2 頁,共 4 頁
★ 【實體遠距同步教學】全台開課並提供錄影補課,歡迎免費洽詢!
♦ 課程與企業徵才合作,幫助學員訓後就業!歡迎填表預約免費諮詢>>
♦ 提供學員專屬講師助教群平台,訓中訓後為你排難解惑
|
明明是基本功的部分卻卡好久?從不會到會的關鍵一步,重點統整、障礙突破,帶你穩紮穩打基本功,了解遇到問題該怎麼解決,快速上手Linux系統。
此門課是為了進入嵌入式Linux開發的預備課程,要在Linux作業系統開發,對Linux這套作業系統的操作環境須要有一定的熟悉度,包含Linux系統架構、檔案系統結構、指令操作、網路設定、常用伺服器建置等。
|
|
- 開發平台硬體Raspberry Pi 3
- 套件安裝管理及Linux常用指令
- 套件安裝 dpkg及用法
- 套件安裝 apt-get及用法
- 套件安裝 apt-cache及用法
- 網路配置
- 服務配置 -啟用SSH
- 常用指令
- 開機重啟 命令
- 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 核心底層的驅動程式。能看懂程式碼、分析程式碼,進而修改程式碼,體驗一個驅動程式形成的每個細節,並能加以改寫完成自己的程式。實戰GPIO Driver、Linux中斷處理、UART Driver、SPI Driver、I2C Driver、ADC Driver等Driver。
|
|
- 字元裝置Driver
- Linux Misc Device
- Linux GPIO 驅動程式 for LED, Button,Relay
- Raspberry Pi 3 功能說明與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 3
- 認識Broadcom BCM283x SoC
- Raspberry Pi 3開機流程
- 實作 GPIO 驅動-LED、 Button
- 實作BCM2835 中斷控制器
- 實作System Timer 中斷
- 實作GPIO中斷
- 實作UART
- GPU 與ARM間的溝通用Mailbox 界面實作Framebuffer
|
|
|
▪ 艾鍗的嵌入式系統課程有什麼不一樣?
艾鍗強調"How to do"與"Trial and error"並引導"How to think"的訓練方式,擔任本學程的講師皆為實際從事產品開發設計的資深RD工程師/研發經理,正因為如此,每一門課都是提供業界實際的開發方法,不僅提供原理、架構、觀念,我們更把實務上產品開發過程中所遇到的問題,累積解決問題的經驗整理成課程,透過Hands on training的方式,教授業界實務開發要領與分享工程問題解決Know-How,讓你可以快速了解Embedded Linux的開發工作,並能真正將Embedded Linux導入產品開發。
▪ 如果未來我需要使用其他平台的開發環境,會有更換上的困難嗎?
這裡整理嵌入式開發經驗16年以上艾鍗講師的看法: Embedded System平台之間有獨特的地方,也有共通的地方,也受到個人經驗的影響。 舉例如要用I.MX:若OS依然是使用Linux的話,針對driver的部分皆適用在i.MX平台上,只是i.MX的一些周邊 (I/O)bus address會和Pi3不一樣,程式碼需做微調。 實務上會需要碰不同的平台,我每年也都會接觸到新平台,多接觸就會累積經驗,先孰悉一種平台再切換到另一個平台也會更加容易。
▪ 什麼是嵌入式系統?有哪些技術範疇?
「嵌入式系統」是一種嵌入在裝置內部,為特定應用而開發的計算機系統,嵌入式系統的設計可說是小規模的系統整合,是一涵蓋資訊、通訊、電子領域之專業;同時其技術領域縱跨軟體嵌入式作業系統RTOS、韌體、I/O介面及硬體裝置範疇。因此從事嵌入式系統開發,必須具備能夠整合軟硬體的紮實功夫。
▪ 為什麼選擇用Raspberry Pi來學習嵌入式Linux?
Raspberry Pi 是一片Linux-Based的開源硬體板子,其硬體線路 & SoC DataSheet的揭露相較其他板子算是相當完整,對於想學習嵌入式Linux核心的開發,包含Linux裝置驅動式程式、Linux USB驅動程式、ARM Bootloader開發不會一直遇到沒有硬體資訊的窘境。此外,由於Raspberry Pi 拉出了40 Pin I/O 介面(包含電源),對於想要以實戰方式學習Linux裝置驅動程式的人將會非常有感覺,而不僅僅是概念上的認知。另外Raspberry Pi 3 具有Wi-Fi和BLE, 所以學習物聯網相關的技術,如 IoT Gateway、Sensor Node設計等,硬體支援度也相當好。
其實不少人都玩過Raspberry Pi,但多數人止於"使用"階段,很少真正懂得Pi內部的軟硬體架構設計。艾鍗是以教授業界對於嵌入式Linux系統開發所需的職能作為訓練的目標,而Raspberry Pi 僅是我們硬體教學平台的選擇之一。我們的訓練從空的SD卡開始,由核心原始碼編譯到根目錄檔案系統的完整建置。接著你能熟悉Linux系統程式設計、看得懂DataSheet,理解Linux Driver框架、了解Linux 核心、並能實際完成Linux核心驅動程式。接著你能更進一步挑戰ARM Bootloader 設計,理解ARM CPU架構與指令集、ARM 中斷向量表與SoC間的行為,了解一個程式到底是如何被執行的種種細節 。(此時,你將真正搞懂什麼是"微處理器")。
▪ Android HAL跟嵌入式Linux的關聯性在哪邊?
首先必須了解Google Android Framework,是一個GUI 圖形系統。而如何讓APP也能存取到底層的硬體如G-Sensor、GPS、WiFI等。都必須有賴於Android Framework的HAL軟體架構.所謂的Android HAL,就是介接上層用JAVA寫的Framework code和Linux底層的部份。使得APP只看到HAL層,HAL內部負責底層Linux的溝通。而底層硬體就是和linux Driver 有關了。總之,底層要先能動,上層APP才可以用!
▪ 學嵌入式Linux可以做什麼?
★有嵌入式技術在身,你可以開發:
電腦/嵌入式系統一電腦、手機及其他消費性電子產品的開發、生醫儀器、ICT資通訊產品
控制系統一自動控制系統(PID)、HMI程式、馬達驅動、機械手臂、機器人
通訊系統一無線通訊、網卡開發
IoT 物聯網— IoT Gateway、Sensor Node
影像處理—安全監控設備、人臉/物件辨識應用
★有嵌入式技術在身,可以從事的工作有:
Embedded Linux工程師 │
嵌入式軟/韌體工程師 │ 嵌入式應用開發工程師 │ BSP軟/韌體工程師 │ Linux軟/韌體工程師 │ Linux驅動程式工程師 │
韌體研發工程師 │ BIOS 工程師 │ RTOS 工程師 │ MIS工程師 │ Linux Kernel工程師 │ 物聯網工程師
嵌入式Linux人才供不應求