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
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
一、網路通訊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.) 完成軟韌體程式設計和系統調試