
| 課程代碼: |
OS034C-9903 |
| 課程名稱: |
嵌入式Linux系統設計[套裝課程] |
| 課程日期: |
[9908期]
2010/8/22開課
|
| 上課時間: |
週六日 AM9:00~PM16:00(17:00) |
| 上課地點: |
台北市中正區漢口街一段45號8樓 傳識資訊教室 |
| 學習路徑: |
|
| 課程費用: |
•課程進行期間,提供一人一機TI OMAP 3530實機練習,學員可依借用辦法免費借回練習!
|
| 課程簡介: |
因為穩定性、效能佳,以及開放原始碼的特性,Linux已成為許多嵌入式系統非常喜歡採用的作業系統,許多IC設計公司的SoC所提供的BSP(Board
Support Package) 也經常提供Linux平台。本課程將完整介紹嵌入式Linux系統設計的開發流程及必要知識,包含ARM架構與軟體設計、GNU開發工具、Linux系統程式設計,開機初始化流程,以及Linux周邊驅動程式撰寫,讓學員在工作上面臨需要修改或重新撰寫開機程式及驅動程式等問題時,更具信心和方向感。 |
| 課程師資: |
本課程聘任講師群在嵌入式系統領域皆有超過五年以上相關資歷,真正具備嵌入式系統產品開發實務經驗,各模組由不同講師任教,學員可從中學習吸收不同觀點與經驗分享,並相互加以印證。 |
| 課程對象: |
1. IC設計公司與系統製造公司的軟、韌體工程師在職進修
2. 純軟體工程師或硬體工程師有志從事嵌入式Linux系統開發者
3. 想了解 Linux 在ARM處理器上整體開發流程之學習者
※ 本課程不適合非資訊,電子,電機相關背景之第二專長進修者參加 |
| 前置準備: |
※ 基礎知識: 建議需具備計算機組織, 作業系統概念, 有微處理器(如: 8051)使用經驗者佳
※ 必要技能: 需熟C語言, Linux指令操作
◎ 參加本課程學員, 需通過C語言及Linux指令測驗方可報名參加
◎ 若對Linux不熟或未通過Linux測驗者, 請先參加Linux先修課程
◎ 報名單元模組者, 需通過基礎測驗或參加先修課程方可報名參加
PS: 必要技能是學習嵌入式Linux的基礎門檻, 為了您的學習成效,
請確認上課前是否已具備這些基礎知識。 |
| 課程大綱: |
●
基礎F01: Linux系統與指令操作基礎
( 時數:12小時)
將由講師帶領您熟悉Linux BSP學程所需具備之Linux系統指令,及Virtual
machine等實際操作教學,讓未來能更專注於學習嵌入式系統相關知識。(課程結束仍會進行測驗) |
|
1. 簡易虛擬機器使用教學
2. GNU與UNIX命令列表
3. 系統登入- 登入/登出, 遠端登入, shell 觀念
4. 命令介紹- 系統管理員, 程序, 檔案與目錄, 網路, 套件/壓縮, 日期, 文字/尋找/編譯
5. Shell program & Linux Development : shell
command, environment variable, pipe簡介 |
■基礎F02:
Linux
System Programming
( 時數:24小時)
本課程將協助學員熟悉 Linux 系統操作、開發環境以及Linux上的Debug流程,如何使用
Linux system API 撰寫程式,並能以 IPC / Multi-thread / socket
來撰寫伺服軟體,培養學員具備(Embedded) Linux 程式開發的基礎能力。 |
1. Linux 系統環境及系統呼叫
- Linux history
- Linux 系統 Vs Windows
- What are Linux system calls
2. 開發及除錯環境
- Linux Vs Windows 開發流程
- Build environments (Makefile, gcc, ld ..etc)
- How to use GDB to debug
- Utilities: patch, diff, source control...etc.
3. Shell Programming
- What is shell programming
- Why shell programming
- Examples (init scripts, bash, perl ...etc)
4. 檔案處理
- Linux filesystems
- Linux file permissions (get/set)
- How to work with files
- File based API (fopen, fwrite, fread, fclose...etc)
|
5. 行程(process)及信號(signal)處理
- Linux process definition
- Process related API (exec*, fork..etc)
- Signal handling (signal, sigaction)
6. 行程間通訊(IPC)
- Pipe/Fifo
- Semaphore
- Shared memory
- Message Queues
- Linux IPC utility commands
7. Multi-thread
- Multi-thread in Linux
- thread synchronization (semaphore, mutex..etc)
- Thread options
8. Sockets
- Basic TCP/IP Programming (TCP/UDP)
- Unix domain sockets
- Different I/O models (Blocking, non-blocking,
signal driven...etc)
- Socket options |
■模組M01:
ARM架構與軟體設計
( 時數:21小時)
本課程將以ARM TI OMAP3530為例,介紹ARM 組合語言、指令集、週邊控制、中斷處理等重要概念,並熟悉ARM軟體程式設計技巧,對開機初始化和系統移植時會有幫助。
※觀念講解為主輔以實作※ |
1. Introduction to microprocessor
2. ARM programming model
3. ARM development tool
4. ARM instruction set
5. ARM support for high-level language
6. Coding in high-level language for embedded system |
7. How to Understand a System
8. Devkit 8000 Evaluation Board [new]
9. Program Deployment , Memory Controller &
Run time environment
10. Lab: I/O Access and Handle Interrupt
11. Memory Hierarchy
12. NEON technology [new] |
■模組M02:
GNU toolchain開發工具
( 時數:14小時)
一般選用GNU toolcahin來開發嵌入式系統或周邊,因缺乏整合性的開發環境,想要完全掌握開發流程,即需了解如Make
file、compile、ld script 等重要指令,本課程將深入介紹這些重要開發工具,讓學員在開發時能更容易上手。※觀念講解為主輔以實作※ |
1. Development Tools Chain for Embedded
Software
2. GNU Compiler Collection
3. Building and Managing Applications
- Compiling and linking from the command line
- Understanding application startup and crt0
- Disassembling object files and applications
- Converting to flat binary formats
- Constructing, managing and using libraries
4. Using gcc with a Makefile
- Introduction to GNU Make
- Introduction to Android build system [new] |
5. GCC Assembly and C Extensions
- GNU Assembly
- Directives
- Inline Assembly
- attributes
6. Detail for Linker
- Executable and Linkable Format
- Linker Script File
7. Debugging With GDB
8. Building Cross GCC |
■模組M03:
Bootloader設計實務
( 時數:14小時)
Bootloader開機載入程式主要用於初始化硬體的基本環境和載入OS到目標板上,建立功能完善的Bootloader是嵌入式系統的第一步也是極為關鍵的步驟,本單元將以Uboot為例,讓學員了解整個開機流程、如何新增uBoot
BSP,並能進一步設計簡易的bootloader。※觀念講解與實作各半※ |
1.simple bootloader
- JTAG interface
- SDRAM controller initial
- UART initial
- Program execution
- NOR Flash erase/write
- NAND Flash read/erase/write
- Xmodem |
2. U-boot
- Compiling U-boot & testing
- Add a new BSP to U-boot
- Tracing U-boot initial
- Add new command on u-boot
- Program execution on u-boot |
■模組M04:
嵌入式Linux系統實作 (
時數:12小時)
透過實作的方式,讓學員熟悉如何在uboot上配置Linux核心,課程中亦將動手編譯busybox與製作屬於自己的各種rootfs,並透過NFS於產品開發階段時使用,或是加入uboot的快閃記憶體中,以達成商品量產時的組態,並學習linux的kbuild
system, 讓學員可以配合自己的需求完成自行修改 configuration。※實作為主※ |
1.kernel booting briefing
- different booting consideration
- development: NFS
- production: NOR booting, NAND booting
- initrd vs initramfs
2. Kernel Concept briefing
- booting
- kernel command line
- kernel image
3. building linux kernel
- download source
- patch
- kbuild system
- custom your menuconfig
- environment parameters |
4. building rootfs
- download busybox
- NFS as rootfs
- jffs2 image
- System V init vs busybox init
- dynamic vs static libc
- ldd verification
5. MTD system
- MTD driver verification
- creating MTD partitions
- MTD utilities
6. Testing your own standlong system
- booting from NFS
- booting from MTD partitions
- booting from initramfs
- booting from initrd |
■模組M05:
Linux Device Driver
( 時數:28小時)
本課程將從了解Driver在Linux作業系統中所扮演的角色開始,讓學員從Linux的角度了解如何使用一個Driver以及Driver如何與Linux共同運作。接下來從簡單的Character
Driver剖析Linux Device Driver的運作,進而深入Driver撰寫的各個層面;包含資源配置、中斷處理、同步、記憶體管理等等。同時搭配各種不同的周邊裝置,如LED、Keypad、LCD
Panel、Ethernet MAC及USB裝置等一般嵌入式系統常用之硬體,加強學員對於設計Driver的實作能力同時增進撰寫Linux
Device Driver的技巧。※觀念講解實作各半※ |
1. Kernel Overview
2. Building and Running Module
Lab: Hello World
3. Embedded Development Introduction
Lab: Demo Board Driver
4. Char Device Drivers
Lab: A simple char device driver
5. Debugging Techniques
Lab: /proc and oops
6. Enhanced Char Driver
Lab: Sleep experiment
Lab: IOCTL test
7. Flow of Time
Lab: Task queues experiment |
8. Getting Memory
9. Hardware Management
Lab: I/O Operations
10. Interrupt Handling
Lab: Interrupt example
11. Mmap technique
Lab: LCD driver
12. Network Drivers
Lab: Network Device Driver Tracing
13. USB introduction:Linux-USB device
Lab: A simple USB driver |
●進階A01:
Linux Kernel重要觀念解析 (
時數:18小時)
本課程會介紹Linux kernel 2.6架構及運作原理,透過系統化講解、分析檢視原始碼,快速引領學員熟悉Linux核心重要觀念,期使學員在編寫Driver以符合硬體或應用的需求時,可以更具信心和方向感,絕對比不清楚緣由的試誤和比對法來得有效率許多。
※觀念講解為主※
|
1. Linux Overview
- What is Linux
- Linux kernel source & patches
- System Calls
- Inline assembly syntax introduction
- Linux bootstrap
2 . Process
- Process v.s. Program v.s. Thread
- Process attributes
- Process creation
- Process termination
- Context switch
- Scheduler
3 . Interrupts
- Linux exceptions and interrupts
- System call processing
- Exception processing
- Generate exception table
- Interrupt separation: top half & bottom half
|
4. Memory and Slab
- Physical and virtual memory
- Linux paging
- Memory initialization
- Buddy system
- Vmalloc
- Slab allocator
- Page faults
5 . File System
- Common file model
- The virtual file system
- Mounting file system
- VFS objects
- VFS initialization
- Registering file system
- Ext2 introduction |
|
| 實作環境: |
PC環境: Windows + Linux
作業系統: Host: Ubuntu (X86) , Target: kernel v2.6.29(ARM)
編譯工具: ADS or GCC
開發平台: TI OMAP3530 詳細規格 |
| 報名繳費: |
1. 課程諮詢專線:02-2312-2666分機60~63
2. 請填寫報名表後,傳真至02-23121918 或 email 至 service@fitpi.com.tw
信箱
3. 繳費方式:
A. 郵局劃撥-戶名:傳識資訊股份有限公司 帳號:19508028
B. 銀行匯款/ATM轉帳-
戶名:傳識資訊股份有限公司 帳號:第一銀行總行營業部(007)09310109277
C. 即期支票-抬頭:傳識資訊股份有限公司
4. 請於開課前繳清所有費用,以便為您保留名額及座位
下載報名表
|
| 備註: |
本公司保留課程彈性調整之權利
|
回前頁
|