fpga

  linux banner 2017 v21 710 5 1
學程簡介 課程大綱 課程預覽 專題實績
 
課程大綱

【第一階段】  嵌入式Linux開發實務(35hrs)

了解嵌入式系統架構並能進行軟硬體系統的整合、移植與開發。在拿到一般嵌入式BSP後懂得如何開始,會知道如何進行核心組態與編譯, Boot loader 編譯以及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、NAS,手把手教你這些功能是如何被實現的。

  
 

     嵌入式 Linux 系統與開發流程簡介
     Linux Ubuntu作業系統安裝(使用虛擬機器)
     Linux 檔案系統與常用指令介紹

     Raspberry Pi 3 開發平台硬體介紹
     嵌入式 Linux 開發套件 BSP :
          --Cross compiler 的安裝與開發專案環境設定
  ■       --Boot loader 簡介與U-boot 編譯與使用
          --Linux Kernel 核心配置與編譯
          --Root filesystem建立- 使用buildroot
     Flash Layout 配置觀念與MTD  
     Open source 軟體移植:
          --gcc 常用編譯參數說明
          --Make、Makefile 語法說明
          --GNU Build System- Autotools
     Linux 程式設計:
       --Linux I/O 輸入輸出程式設計     
       --Linux Multi-Thread 多執行緒程式設計

       --Linux Network Socket 程式設計

     嵌入式Linux產品實作應用例子

       --Media Player:Porting MP3 Player
       --NAS:Porting SAMBA
       --Wi-Fi Router:Wi-Fi Driver, hostapd, dhcpd, bridge, ...
        --IP Camera:Porting Streaming server
        --HTTP Server & CGI:BusyBox

 

 講師實務經驗分享

嵌入式Linux開發初期,必須先建立好主機端的開發環境與GNU Toolchain (包含交叉編譯器版本的選擇),通常剛入行者,不是不會寫程式,而是被這個環境搞死。和MCU相比,由於MCU開發者多半只要按[下一步] 就能裝好開發工具,對嵌入式Linux開發者,那是一種奢求。
上這門課可以了解整個嵌入式Linux的架構觀念與開發流程(這對於剛切入領域甚為重要),包含boot loader、Linux核心交叉編譯、板子Flash空間配置、Root File system產生等。Linux有很多開源軟體(Open Source),你會想要了解如何移植這些Open Source,不論是應用程式、函式庫,還是驅動程式。這時你會開始要去懂Makefile、Shared Library與Static Library、 kernel module等。也一定會遇到gcc或ld error等,要去了解問題所在,你會發現善用GNU Toolchain對於Debug或分析問題很有幫助。
有一個系統架構後,我們帶你進入實際產品應用,包含Wi-Fi Driver移植、USB Camera整合應用等,讓你更能想像該如何快速整合出一個嵌入式軟體架構。

 
【第二階段】  嵌入式Linux驅動程式(28hrs)

熟悉Linux驅動程式架構並能實際動手撰寫Linux 核心底層的驅動程式。了解如何撰寫Linux硬體驅動程式,配合Raspberry Pi 硬體實戰 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 - BCM2835 C I/O Library

 講師實務經驗分享

嵌入式Linux系統的另外一個主要工作就是加入新硬體,此時我們要能了解硬體界面、控制原理與晶片功能,更重要的是為它撰寫一隻Linux驅動程式。
涉及底層Linux驅動程式架構,對於Linux核心程心的掌握是一定要具備的!如何學好它?先要有一個實驗平台搭配硬體裝置,試著學會同步與非同步I/O控制、硬體中斷、I/O通訊等實際裝置驅動才有真正的感覺在設計驅動程式。此外,Linux驅動程式開發也是要準備好相關開發環境,才能開始編譯,所以通常沒概念者也難以切入。
Linux驅動程式是嵌入式系統的核心技術之一,但台灣很少有大學能夠開這種課程,因此初入職場的工程師,即使程度好的也僅僅只具觀念上與架構上的認知而已,鮮少有人真正有驅動程式的開發經驗,然而產業界對於RD研發工程師,有較高的職能要求。本課程使用Raspberry Pi ,並搭配我們自行設計的Raspberry Pi I/O擴充板作為驅動程式實戰演練,讓你快速上手Linux驅動程式!

職場沒有永遠,學習沒有終點

Keep improving!無論你想做什麼、熱情在哪裡,

人生最值得投入的Project,就是精進自己。

 OpenCV

 

延伸學習

 

課程諮詢