課程大綱(講師將按照該梯次學員之整體背景、學習狀況與時間狀況而彈性調整增減該內容及順序):
1. 嵌入式系統簡介
- 硬體平台(感測與控制類MCU V.S. 網路多媒體應用類之大型SoC)
- 大型作業系統軟韌體 V.S. 裸機韌體之差異介紹(基礎觀念)
- OS與non-OS之差異、用途等(闢除迷思)
- 裸機(bare metal/non-OS)軟韌體範例介紹與現場demo
- 嵌入式Linux作業系統與開源軟體專案簡介
- 手動(Roll Your Ow/Build from Scratch)與使用buildroot或yocto建置BSP之差異
- 本課程內容與使用高度現成平台(如Raspberry Pi與其官方主要推薦sop方式並作應用)之差異
- 產業公司相關職缺介紹與概況
- 如果本身是偏向純軟體背景,對於想成為一個能力堪稱完整的系統軟韌體研發工程師來說,該補足哪些知能?開發時要注意什麼?
2. ARM Cortex-A based SoC大型系統晶片與開發板硬體平台介紹
- 電腦架構複習: 以各種微電腦晶片之原廠手冊內容為例
- 課程實驗用之TI SoC AM3358架構、原廠技術文件介紹
- 課程實驗用之開發板: Beaglebone black規格、電路圖(schematic)導讀、PCB Layout簡介
- 基礎電子元件介紹、CMOS/TTL觀念、MOSFET/BJT電晶體
- 記憶體之基礎觀念
3. 開發環境建置:
- Host PC端之虛擬機軟體下載與安裝
- Host PC端之PC Linux distribution下載與安裝
- Linux基礎指令操作
- GNU交叉編譯工具鍊(GNU Toolchain)建置
- Linux環境變數
- COM Port相關原理(UART、UART to USB晶片模組、VCP等)
- COM Port應用程式下載與安裝(如teraterm或putty等)
- 課程實驗用開發板之儲存裝置空間配置規劃實作
- Samba Server建置
- SSH Server建置
4. 下列各單元之開源專案原始碼下載、配置(移植之過程)與編譯之步驟與背後原理,並使其成功執行於硬體開發板。包含各種Compile error情況該如何解決、編譯建置過程之log訊息閱讀。
4-1: U-Boot Bootloader(開機啟動程式)
- 包含開機流程原理說明,從SoC內之ROM code至開機完成之各階段原理
- 移植所需之.config
- U-Boot常見指令
- menuconfig
4-2: Linux kernel (Linux作業系統核心)
- 移植所需之.config
- uImage與zImage、LOADADDR與mkimage
- dts/dtb
- Boot script建置(for uboot)及其內容指令與參數(如boot arguments)
- 記憶體空間位址安排規劃、SoC之memory map說明
- 如何透過uboot的TFTP load Kernel image到目標平台
4-3: Busybox Filesystem(檔案系統)
- 創建rfs基本目錄for目標平台
- 觀察busybox所需之動態連結函數庫
- 建立基本device node
- 創建init
- 創建執行時期相關配置檔
5. 簡易Linux Device Driver驅動程式1: 基礎觀念
- Linux系統架構(user/kernel space到硬體)、系統呼叫(system call)機制
- device node(/dev/xxx)、major/minor number
- kernel module與built-in觀念
- 編譯建置方法
- Makefile、Kconfig、.config與menuconfig
- /proc與/sys簡介
6. 簡易Linux Device Driver驅動程式2: GPIO驅動程式
- GPIO周邊裝置簡介
- GPIO驅動LED之電子電路設計原理
- 電路圖(schematic)導讀
- BJT電晶體基礎特性及其作開關應用之電路原理
- MMIO觀念
- MMU、虛擬記憶體位址觀念
- 周邊裝置之暫存器(register)位址與功能查找
- 系統晶片之原廠技術資料手冊(Datasheet、Manual)內容導讀
- pin mux
- C語言重要觀念複習(如:指標、結構指標、暫存器之定址)
- kernel driver範例程式逐行講解
- kernel driver基礎kernel api介紹(如: ioremap)
- 編譯建置.ko(kernel module)檔
- 範例user app應用程式逐行講解
- kernel driver與user app整合串接之實作原理
7. 訊號量測儀器操作
- 三用電表
- 示波器
- 邏輯分析儀
8. Linux系統軟韌體開發之Debug除錯技巧與經驗分享
-----
歡迎各方洽談合作,務實/踏實追求共好。歡迎電機電子資工本科系學員,也很歡迎非電機電子資工本科系的學員加入學習嵌入式系統技術/尋求轉職成為研發工程師的行列。
孫文良 個人簡歷: https://sites.google.com/view/wenliangsun/
--------------------------
孫文良 (阿良的嵌入式系統技術學習區)
【若需要嵌入式系統技術輔導課程 可來信洽談合作方式: iws6645@gmail.com,亦可先點擊參考這篇介紹文章】
沒有留言:
張貼留言