課程大綱

【實戰模組A】物聯網產品硬體設計技術應用實戰
課程目標 1. 熟悉電路圖繪製。
2. 熟悉PCB印刷電路板佈局(PCB Layout)設計與PCB製造過程(Gerber資料/鑽孔資料)。
3. 培訓成為PCB Layout能夠獨當一面的電子工程師。
課程大綱 1. PCB軟體安裝、各項環境設置
2. Tools個人設置、使用者介面介紹
3. 元件庫建立
4. 繪製電路圖、簡介使用元件庫、連線、圓形、弧形、長方形和TEXT
5. 電氣規則檢查(ERC)
6. 設計印刷電路板/PCB Layout(手動佈線/Autorouter 自動佈線器)
7. 繪圖與製造資料的輸出(Gerber資料/鑽孔資料)

【實戰模組B】Linux作業系統使用/GNU Make及Makefile 檔案介紹
課程目標 讓學員熟悉嵌入式Linux Device Driver課程所需具備之嵌入式Linux BSP操作及嵌入式Linux程式設計(含進階C語言),課程以實際在ARM開發版上操作教學,讓學員未來能更專注於學習嵌入式系統相關知識。
讓學員熟悉嵌入式Linux Programming課程所需具備之GNU Make知識,課程以實際在ARM開發版上操作教學,讓學員可在未來能更專注於學習嵌入式系統相關知識。
課程大綱 1. How to Build an Effective Embedded Linux Environment
2. 嵌入式Linux指令使用
3. 嵌入式Linux開機管理與網路設定
4. Introduction ARM BSP & SDK(適用於A8、ARM11、9)
5. Create Embedded System GNU Development Toolchain
6. Boot Loader (A8、ARM11-S3C6410、ARM9-S3C2440) Brief Introduction
7. Configure and Make Embedded System Kernel / Create Root-File System( arm-linux)
8. Lab: Create Kernel and Root-File System(ARM-Linux)
9. How to Porting the Linux to New A8、ARM11-S3C6410、ARM9-S3C2440
10. GNU Make/Makefile
An Introduction to Makefiles
How to Writing Makefile Rules and Writing the Commands in Rules
How to Use Variables
Conditional Parts of Makefiles
How to Run Make
Using Implicit Rules
【實戰模組C】嵌入式 C 語言實戰【適合嵌入式系統+單晶片+電控開發】
課程目標 1. 培養正確完整的嵌入式C語言 程式設計概念與程式設計基本能力。
2. 培養完整且符合業界之C語言韌體設計的能力。
3. 增加學員使用C語言開發應用程式的能力。
4. 整個課程內容包含C韌體程式技術,包含業界需要的進階韌體程式設計技巧。
課程大綱 1. C&C++ Tools Introduction and Setup
2. C&C++程式架構、常數(Constants)、資料型態/Alignment 與運算式、Endian-ness 與 Byte Ordering、嵌入式C Bitwise運算子
3. C&C++基本輸入輸出(Input/Output)
4.流程控制敘述(Flow Control & Loop)
5. C&C++ 編譯器前置處理器(Preprocessor Compiler Control): #include、#define/#undef、#if/#else/#endif/#ifndef
6. 指標(Pointer)、陣列(Array)、字串:字元陣列與字元指標 (String:Character Array, Character Pointer)、stringify operator、Token Concatenation Operator、 Memory Alignment LAB
7. 指標陣列(Pointer and Array)進階用法:多重指標與多維陣列、指標陣列化(Pointer to Array)
8. 陣列指標化(Array to Pointer)
9. C&C++函式(Function):函數的定義及呼叫、函數的原型宣告、參數的傳遞與預設初值、C++函數的Overload(同名異式、函數覆載)... unknown parameter的運用
10. Mixed C and Assembly ( include Parameter passing )
11. static、volatile、const and typedef
12. 結構型態(Structure Types):struct、enum、union Type、檔案IO處理(File I/O) 、bitwise field structure
13. 指標進階應用( 函式指標(Function pointer)、結構型態與指標、void指標(void pointer)

【實戰模組D】設計實作ARM物聯網嵌入式開發板-以 ARM Cortex Ax 為例
課程目標 嵌入式技術是近年竄起直升的熱門科技,而嵌入式技術目前正廣泛運用在多元的產品上,但各產品所使用之嵌入式作業系統也是百家爭鳴,並無統一之標準。然而就嵌入式 Boot Loader 和 OS/Driver 等設計,以及開發之實務上的操作程序而言,卻有脈絡可循,在熟悉這套程序和方法之後,只要搭配硬體上對產品之特定SoC(System on Chip)的了解,便能舉一反三,藉以開發各項嵌入式產品。而本課程就以 ARM處理器核心為例,並利用實驗板 ARM Cortex Ax 進行實作,讓學員藉此逐步了解嵌入式系統之各種不同應用的ARM硬體架構,包括: ARM Cortex Ax 處理器底層架構、ARM處理器之組合語言、Boot Loader、開機初始化流程、FLASH 的 Read/Write/Erase、開發板內之各類嵌入式硬體介面控制實作,以及如何將嵌入式 ARM+Linux Porting 至 ARM 開發版,以此熟悉嵌入式開發版設計的程序和方法。藉此自製ARM嵌入式開發板之能力,做為徜徉嵌入式技術領域的敲門磚。
課程大綱 一、嵌入式ARM計算機組織
1. 嵌入式 ARM Cortex Ax 處理器系統架構
2. 嵌入式ARM處理器軟體設計
【Lab】: 輔以大量的 ARM 組語LAB講解
【Lab】: Flash the LED on Boot Loader
3. ARM Cortex Ax CPU規格書說明
4. Flash Rom及相關週邊IC規格書說明
5. 嵌入式ARM開發板電路講解-ARM CPU/ROM/RAM/Peripheral
二、實作ARM 嵌入式系統開發平台-以 ARM Cortex Ax 為例
1. 適用於 ARM Cortex Ax 之 Boot Loader 簡介
2. 如何撰寫Boot Loader與Boot Loader程式功能
3. 如何撰寫Flash Rom的Read/Write/Erase程式
4. U-Boot 與 ADS BootLoader 的移植
5. 透過JTAG下載Boot Loader至ARM板
6. 透過Boot Loader下載編譯好的嵌入式Linux Kernel Image
7. 透過Boot Loader下載編譯好的嵌入式Root File System 8.Boot Loader & 嵌入式Linux之開機流程
【實戰模組E】嵌入式 Linux系統實作與程式設計實務
課程目標 本課程之Linux系統實作與程式設計,全部是在 ARM Cortex Ax、ARM11-S3C6410、ARM9-S3C2440嵌入式開發板上實作完成。課程內容從 ARM Cortex Ax 開發板平台開始介紹,講解ARM開發板、GNU Toolchain(Cross Compiler)、Boot Loader、建立自己的嵌入式Kernel與Root File System,再以自己建立的【嵌入式ARM+Linux】學習Linux指令使用及開機管理與網路設定。接著在ARM開發板以自己建立的【嵌入式ARM+Linux】為作業系統,以此雙OS系統為基礎在上面講授各種Linux 程式設計。整個【嵌入式ARM+Linux】程式設計課程,講師會現場撰寫實作程式的範例,隨後將程式透過Cross Compiler後上傳至ARM開發板執行。不同於一般幾乎都在PC的Linux上講授Linux程式設計。而且這些程式範例均會在ARM開發板上與硬體結合,使學員可以熟悉《軟硬兼施》的程式設計,讓偏【純軟的工程師】不會看到硬體就傻眼、讓偏【純硬的工程師】不會看到軟體就頭痛。課程結束後可以熟悉【嵌入式ARM+Linux】程式設計。
課程大綱 Embedded Linux 設計,適用於ARM-Linux
1. What is Needed Lib for Embedded System? ( System Calls & Library)
2. Embedded Linux File I/O:【Lab】STDIO/STDOUT Programming
3. Embedded Linux Files and Directories:【Lab】open/create/read/ write/lseek/fcntl/close
4. Embedded Linux Standard I/O Library:【Lab】Buffering I/O、Reading and Writing a Stream、Binary I/O、Formatted I/O
5. Embedded Linux System Data Files & Info:【Lab】Linux System Information Programming
6. Embedded Linux Termios:【Lab】RS232 Programming
7. Embedded Linux Process Control:【Lab】fork、vfork、exec
8. Embedded Linux Signals:【Lab】signal、kill and raise Functions、sigaction Function
9. Embedded Linux Inter-Process Communication:【Lab】Pipes、FIFOs、Message Queues、Semaphores、Shared Memory
10. Embedded Linux 多執行緒程式設計:【Lab】pThread Programming、Mutux Programming
11. Embedded Linux Network Socket Programming:【Lab】TCP/UDP Programming Embedded Linux Shell 程式設計【Lab】Embedded Linux Shell Programming:Simple Shell Example、Shell Operators Example、Shell Logic Structures Example

【實戰模組F】Step by Step講授嵌入式開發板Linux驅動程式實務
課程目標 學習不牽涉到硬體控制之單純的Linux驅動程式,是不難的。學習如何撰寫Linux驅動程式是難在其與硬體結合,使得驅動程式必須正確的驅動要控制的硬體。本課程重點在Step by Step介紹嵌入式產品開發過程中,產品研發人員如何實地撰寫【嵌入式 Linux 驅動程式】,我們從簡單的開發板之 Linux 驅動程式可適用於ARM-Linux架構入手,進而至 Character Device 的撰寫(分別以 LED 或SEG-7裝置實作),並可執行在ARM-Linux系統,並剖析 Linux 驅動程式與硬體間的運作,再深入 Linux 驅動程式撰寫的各個層面,同時搭配各種不同的周邊裝置,如 LED、LCD、Keypad、SEG-7、Network 裝置等一般嵌入式系統常用之硬體。講師於課堂中撰寫這些常見的驅動程式,並在現場於 ARM Cortex Ax 開發板上測試撰寫的【嵌入式 Linux 系統驅動程式】,讓學員實際熟悉【嵌入式 Linux 系統驅動程式】於實務上是如何撰寫,且於現場實際上機測試的過程中,更提供了從業學員之間技術交流的機會,締造教學相長之契機,共同朝向發揚嵌入式產業之目標邁進。
課程大綱 1. 嵌入式Linux 驅動程式程式架構
2. 嵌入式Linux 驅動程式之程式設計流程:Building and Running Module
【LAB】Hello World on ARM 開發板
3. 嵌入式Linux字元驅動程式
【LAB】A Simple LED Device Driver on ARM 開發板
4. 除錯技術:Debugging Techniques
【LAB】Create a /Proc Entry File system on ARM 開發板
5. 進階Linux字元驅動程式
【LAB】The LED Device Driver Using IOCTL on ARM 開發板
6. Getting Hold of Memory and Hardware Management
【LAB】ARM BSP I/O Operations on ARM 開發板
7. 嵌入式 Linux Platform Device 及 Platform Driver
8. Flow of Time: Current Time、Delaying Execution、Task Queues、Kernel Timers
【LAB】ARM BSP Experiment for LCM(or LED) Device on ARM 開發板(Current Time、Delaying Execution、Task Queues、Kernel Timers)
9. 嵌入式Linux Interrupt Handling
【LAB】ARM BSP Interrupt Example on ARM 開發板
10. 嵌入式Linux Memory Mapped I/O:
【LAB】Frame Buffer(TFT LCD顯示) on ARM 開發板
11. Linux Device Tree、Linux UART Driver、Linux SPI Driver、Linux I2C Driver、Linux User Space Driver
12. 網路卡驅動程式(以網路晶片dm9ks為例) dm9ks IC's Network Device Driver Tracing
13. Embedded Linux-USB Device Driver(USB驅動程式)
【LAB】A Simple USB Drive Tracing
14. Add your Device Driver into Kernel/ How to Porting Device Drivers to the 2.6 Kernel
【LAB】On ARM 開發版 Experiment:
(1.) Add a LED Driver into Kernel
(2.) Make Kernel
(3.) Testing
15. Concurrency in the Kernel:Spinlock and mutexe、Semaphores
【實戰模組G】物聯網IoT無線傳感網路系統實戰
課程目標 本課程主要介紹Zigbee-Pro標準網路協定,幫助學員快速瞭解 ZigBee 技術、802.15.4、NWK、HAL、Z-Stack OS等與 Zigbee 相關的技術規格及實務應用,以發展標準Zigbee系統產品,可縮短相關ZigBee產品的開發時程。
課程大綱 1. 各種物聯網感知層感測器: 溫度感測器、濕度感測器、光敏感測器、煙霧感測器、門磁感測器等
2. Introduction 6LowPAN
3. Zigbee IC 基礎實驗LAB:IO控制、 Timer、Interrupt、Power Consumer
4. ZigBee Z-STACK介紹及 TI Z-STACK 函數演示
5. Z-STACK OS層的應用技巧:建立自己的 任務、事件觸發、回應等
6. Z-STACK 下OS層的LED實驗及UART使用
7. 在Z-STACK上建立自己的專案工程
8. ZigBee Z-STACK組網過程
9. Z-STACK HAL層程式設計技巧
10. Z-STACK NWK層程式設計技巧:星狀、 串狀、網狀網路、路由深度等的設置
11. ZIGBEE的綁定原理及應用
12. LAB : Zigbee Light&Switch(燈及開關) ON/OFF control的應用程式設計

【實戰模組H】物聯網IoT嵌入式Linux與多媒體應用專案實作: 物聯網智能家庭自動化、網路通訊I/O與多媒體系列
課程目標 1. 完全以業界所需實務為導向,將嵌入式Linux常見之應用技術於課堂上直接講授並且實作。
2. 軟硬體直接整合,課程範例將直接在ARM開發板上執行測試。
課程大綱 一、網路通訊I/O
1. ARM開發板GPIO Linux 驅動程式
2. ARM開發板UART驅動程式控制實驗
3. ARM開發板周邊Linux驅動程式控制實驗
4. TCP/IP Socket Programming on ARM Development Platform
5. Serial Programming for POSIX on ARM Development Platform
6. Http Server Introduction & Porting to ARM Development Platform.(Httpd&BoA)
7. Porting SQLite Data Base to ARM Development Platform
Integrated Example: How to Design a Home Automation System
二、多媒體系列
1. ARM開發板GPIO Linux 驅動程式
2. ARM開發板周邊Linux驅動程式控制實驗
3. Multi-Media System Programming
4. QT X Window System
三、物聯網智能家庭自動化
學習方式:通過課程指定的實際專案案例,對本課程學習效果做一個總結,增強理論的掌握和動手能力,專案全程有老師輔導並控制開發進度,最後進行作品的驗收。
PS1: 本次課程指定的實際專案:物聯網智能家庭自動化(RS232傳輸介面)。
PS2: 學員需自行準備專案BOM表之零件備料,以DIP為主。
PS3: 因PCB板製作需時大約7至14工作天,及專案BOM表之零件備料也要花時間, 所以課程進度【實戰模組H】,會安排在課程進度A之後,適當時間就開始進行,以利於課程進度的進行。
課程內容:
(1.) 根據需求編寫需求分析報告和詳細設計,經講師評審通過後,進行下列步驟:
(2.) 電路圖和PCB設計、PCB板製作(送PCB板廠洗板)
(3.) 器件選型、專案BOM表之零件備料、學員進行元件焊接
(4.) 完成硬體調試
(5.) 完成軟韌體程式設計和系統調試