Enterprise Training

GNU Toolchains & Embedded Linux Programming

第 4 版|SP000|企業內訓課程

從 GCC、Linker、GDB、Makefile、ELF 與 GNU Binutils,到 Linux 系統程式設計、多執行緒與 Embedded IoT,建立 Linux 開發工具與系統程式設計的完整基礎。

為什麼要學習 Embedded Linux Programming?這門課程在學習 Linux 系統程式設計與觀念,這是寫好 Linux 應用程式,並學好 Linux 驅動程式的基礎。Linux Threading 是經常應用在 Linux 應用程式的技術,也是重要的 Concurrency 觀念,同時也影響 Linux 驅動程式的設計。

GNU Toolchains 是 Linux 的主要開發工具,也是學習 Linux 的基本主題。因此,本課程不是把工具零散地逐一介紹,而是把重要的 Linux 系統程式觀念融入工具的操作過程,並透過一個連貫性的範例進行研究討論,使工具、觀念與實作形成一條完整的學習主線。

GNU Toolchains 是 Linux 的主要開發工具,這是學習 Linux 的基本主題。本訓練課程整理並精選主要的 Linux 系統程式入門主題,幫助初學者有效學習 Linux 開發工具與系統程式設計。
— Moko365 Team
Course Overview

GNU Toolchains 是 Linux 開發的第一堂課

訓練學員使用 GNU 開發工具,並在工具的操作過程中講解重要的 Linux 系統程式觀念,將觀念融入工具的操作過程,並透過工具的操作驗證觀念。

因此,本課程不是單純介紹 GCC、GDB 或 Makefile 的使用方法,而是從 GNU Toolchains 切入,進一步整理編譯、連結、載入、除錯、系統呼叫、程序同步與多執行緒等重要主題,使 Linux 開發工具與系統程式設計形成一套完整且可驗證的學習架構。

程式設計部份,本課也以一個連貫性的範例進行研究討論(Web Server),藉此解析 Process、Signal、IPC、Socket 與 POSIX threads 的實務意義;讓學員在連續的主線中理解整體觀念,而不是停留在零碎知識。

Five Pillars

學習 Embedded Linux Programming,要先建立這五大主軸

GCC & Linker

理解 GCC 常用參數、startup files、shared library 與 linker script,建立編譯與連結的基本觀念。

Debugging

透過 GDB、symbol table 與除錯環境建立,理解 Linux 程式在執行階段的分析方法。

ELF & Loader

從 GNU Binutils、ELF、loader 與 linker 切入,理解可執行檔與 shared library 的運作方式。

System Programming

整理 system calls、process、signal、IPC、mmap、shared memory 與 socket 等 Linux 系統程式設計核心主題。

Threading & IoT

以 POSIX threads、producer-consumer、semaphore 與 Embedded IoT 實習,銜接多執行緒與嵌入式應用。

Methodology

這門課不是只教工具,而是把觀念融入工具操作

在工具的操作過程中講解重要的 Linux 系統程式觀念,將觀念融入工具的操作過程,並透過工具的操作驗證觀念。

這種教法的重點,不是把 GCC、Makefile、GDB 當成獨立主題,而是讓學員理解程式從 source code 到 executable,再到除錯、執行、同步與通訊的完整過程。工具只是入口,真正要建立的是 Linux 系統程式設計的整體觀。

本課也特別適合作為 Linux Device Driver 與 Embedded Linux 後續學習的基礎。這門課是寫好 Linux 應用程式,並學好 Linux 驅動程式的基礎。

Course Legacy

課程歷史

對 Moko365 來說,這門課的價值不只來自 GNU Toolchains 本身,也來自它長期被當成 Linux 系統程式與 Embedded Linux 的入門核心。本課自 2009 年即已開班,2015 年 01 月 27 日完成第四次改版,第四版新增 GNU Toolchains for Embedded IoT 與 IoT 程式實習練習。

里程碑

2009 年

課程開始開班,建立 GNU Toolchains 與 Linux 系統程式設計的基礎教學主線。

2010 年

版本變更紀錄顯示 2010 年 03 月、06 月與 07 月進行 agenda refined 與第三版初始版本整理。

2015 年

完成第四次改版,新增 GNU Toolchains for Embedded IoT,並把 IoT 程式撰寫實習納入正式課綱。

2018 年

累計已推出至仕橙版第 19 期,課程歷經多年公開課與企業內訓累積。

開課與版本記錄(部份摘錄)

  • 仕橙版第 11 期(暨 Jollen’s Consulting 第 18 期)已於 2018 年 01 月 07 日結訓(台北)。
  • 仕橙版第 10 期(暨 Jollen’s Consulting 第 17 期)已於 2017 年 05 月 07 日結訓(台北)。
  • 仕橙版第 09 期(暨 Jollen’s Consulting 第 16 期)已於 2016 年 06 月 05 日結訓(台北)。
  • 仕橙版第 08 期(暨 Jollen’s Consulting 第 15 期)已於 2015 年 09 月 20 日結訓(台北)。
  • 仕橙版第 07 期(暨 Jollen’s Consulting 第 14 期)已於 2015 年 02 月 08 日結訓(台北)。
  • Ver 3.0(2010 年 07 月 05 日):3rd-Initial version.
  • Ver 1.1(2010 年 06 月 15 日):Agenda refined.
  • Ver 1.0(2010 年 03 月 24 日):Initial version.

完整課程歷史紀錄,請參閱舊版課程簡章

Who Should Attend

適合對象

  • Embedded Linux 初學者與進階開發者
  • 需要建立 GNU 開發工具基礎的 Linux 工程師
  • 想補齊 Linux 系統程式設計觀念的應用程式開發者
  • 後續要學 Linux Device Driver 的工程師
  • 企業內部需要建立一致 Linux 開發工具鏈觀念的團隊
Prerequisites

先備知識

  • 基本的 Linux 終端機環境操作
  • C 語言
  • 若具備 Linux 開發或嵌入式開發經驗,學習效果更佳
Course Outline

課綱總覽

標準版維持 12 小時、2 天,企業版則依團隊背景調整主題比例。

2 天標準版

第 1 天
  • 第 01 堂課:GCC & Linker
  • 第 02 堂課:GNU Debugger
  • 第 03 堂課:Makefile, Makefile Rules
  • 第 04 堂課:GNU Binutils, ELF, loader/linker
第 2 天
  • 第 05 堂課:系統程式觀念
  • 第 06 堂課:系統程式設計
  • 第 07 堂課:多執行緒設計
  • 第 08 堂課:GNU Toolchains for Embedded IoT

客製企業版

工具導向版
  • 強化 GCC、Linker、GDB、Makefile、ELF 與 loader/linker
  • 適合新進 Linux 團隊與 build / debug 能力補強
系統程式導向版
  • 強化 Process、Signal、IPC、mmap、Socket 與 POSIX threads
  • 適合作為 Linux Application 與 Driver 進修前的基礎班
Embedded IoT 導向版
  • 強化 Threading、Interrupt handling、Timer、Sensor Fusion 與 Lightweight Web Server
  • 適合 IoT 與嵌入式應用團隊

企業內訓可依團隊背景,調整工具、系統程式與 Embedded IoT 的授課比例。

Jollen Chen
Jollen
Moko365 講師暨技術總監
Instructor

長期投入 Embedded Linux、Linux Device Driver 與 Android 架構教學

Jollen 在 Embedded Linux 與 Linux Device Driver 有超過 20 年的研發與企業內訓經驗,在 Android Framework 軟體架構方面,也有 15 年的授課經驗,並長期在科技業擔任 Linux & Android 技術顧問。

此外,Jollen 曾於 Linux 基金會舉辦的 Open Source Summit 全球開發者社群大會上,多次擔任講者發表演說,也於歐洲與加拿大發表有關區塊鏈與去中心化 IoT 架構的論文,並獲 ACM SIGBED Review 刊登。Jollen 於 2016 年創辦 Flowchain 基金會,開發原創區塊鏈作業系統技術,並獲多項相關國際專利。

這門課的特色,不只是內容完整,而是由長期從事 Embedded Linux、Linux 工具鏈、系統程式設計與驅動程式教學的講師主講,能夠將工具、觀念與實作整理成一條有邏輯的學習主線。

Enterprise Inquiry

GNU Toolchains,是學習 Linux 的基本主題

若您的團隊正在建立 Linux 開發工具鏈、補強系統程式設計基礎,或作為 Linux Device Driver 與 Embedded IoT 研發的前置訓練,本課程將提供一套較完整的工具觀、系統觀與分析方法。

聯絡方式建議
  • 索取企業內訓簡章
  • 安排課前需求訪談
  • 確認工具導向或系統程式導向版本
  • 依團隊背景調整 Embedded IoT 實作比例