總網頁瀏覽量

2021年10月10日 星期日

【嵌入式系統基礎原理與實務課程】 GPIO單元之簡介推廣

 🥸 最近在本園區所開設的 「嵌入式系統基礎原理與實務課程」內,和幾位工程師學員講解到GPIO的部分,頗有感觸。


GPIO (General-Purpose Input/Output)的應用看似簡單,但其背後的原理可有著不少學問。

如果以呼叫現成的API函數的方式來達成之前demo影片中以GPIO驅動LED亮/滅的簡易功能,整個過程大概只要2分鐘 (例如如果使用Arduino UNO這種板子上就有現成LED的開發板,就連外接LED的動作和時間都可以省了,搭配digitalWrite這類的現成函數真的只要2分鐘就可以完成),但事情的完整真相真的「只有」這麼簡單嗎❓❓ 這樣就是了解GPIO了嗎❓

‼事實上‼ 其應用功能(表面)背後的韌體、與GPIO結構驅動原理(從CPU到記憶體單元中去讀到你寫好且被Compiler編譯完成的machine code到驅動GPIO周邊,GPIO的數位高低電位是如何輸出驅動或讀取,詳情是怎麼一回事),可以講解好幾個小時,

韌體開發並不是純軟體開發,如果是驅動周邊 (Peripheral周邊裝置,詳見註1)的軟韌體開發工程師來說,一位有心於研發工作的工程師是有必要去精進加強自己對於軟韌硬體的基礎知識和了解,

這些很可能是許多軟韌體工程師過去在學校課程內所沒學過、甚至到工作後也從沒去思考過的內容,課程希望帶給學員不同的技術視野並啟發思考。

❗ 本園區開設的課程的GPIO課程內容會包含:

👉介紹標準MCS51的Intel官方Datasheet GPIO的相關內容

👉從了解MCU從執行你所撰寫的C code (被C51 Compiler編譯為數位訊號碼,也就是0和1組成的、符合MCS51指令集的機械碼 實際上是長什麼樣子?) 與Assembly language(組合語言)的關係是什麼? 而這些machine code是被燒錄到哪裡? 又是如何被MCU內的CPU所執行? 和I/O周邊裝置的關係又是什麼?

👉GPIO Port內的運作原理是什麼? 如何從GPIO輸出數位的High & Low電位? 如何由GPIO讀入數位的的High & Low電位? (可舉一反三了解其它MCU的稍有不同的GPIO架構)

👉在一般常見的GPIO外部元件驅動基礎應用下,基礎MCU/SoC外部介面電子電路原理講解,這包含類比電路與數位電路的相關基礎知識,例如如何用BJT、MOSFET做簡單的開關應用、如何和MCU/SoC的GPIO搭配?

👉何謂上拉(Pull-up)/下拉(pull-down)電阻? 何謂開汲極(Open drain)?

👉為什麼Standard 8051 MCU的GPIO Port0作高電位輸出應用時,需要外加上拉電阻(pullup resister)才能使用?

👉Standard 8051 MCU的GPIO Port0和Port2是如何存取外部記憶體(雖然現代很少這樣用了,但就學習專業的角度而言仍有了解該原理的學習價值),Port0又是如何兼具存取external memory時的Address bus和Data bus功能?

👉MCU/SoC內的CPU是如何存取周邊的 (如課程介紹所述,我們不只介紹8051,只是把8051當成講解與實驗教材)、何謂memory map I/O? 何謂Port map I/O? 這兩種方式有何差異? 8051 MCU內的CPU去存取I/O是屬於哪種方式?

👉實際韌體撰寫/燒錄/電路接線實驗 等實作教學

👉在課程介紹完8051 MCU內部組織原理的各單元之後,還會有各式的外部元件驅動原理與實驗教學 (可參見課綱介紹)

藉由上述的方式,讓學員完整了解電腦系統(包含嵌入式系統)「韌體」開發的基礎紮實與本質。

下方講義內容中的8051 PORT架構原圖參考自Intel MCS51 user manual而繪製,而講義為個人整理編寫

課程講義內容

🔎註1: Peripheral就是周邊裝置,以MCU/SoC內部的來說,例如GPIO、UART、I2C、SPI、ADC、DAC、USB、.......(族繁不及備載)都是Peripherals,但現在很多年輕學生(不分政治立場)都只聽過「外設」 (外部設備),因為大陸的嵌入式系統技術文章都是這樣講,而台灣近年來很缺乏嵌入式底層技術詳細探討類的網路文章)

‼課程進一步詳情請參見下方blog網頁的課程介紹👇:

2021年10月7日 星期四

【Embedded Linux】【開機啟動程式】關於bootloader/bootstrap名詞之探討&想法

因為前陣子剛好trace到bootstrap相關的code,今天看到Youtube上的台大資工系的OS課程影片,所以就稍微探討一下關於Bootstrap這名詞的使用與定義差異,雖然這些名詞或許本來就難免會隨著年代及平台的差異而被混用。 

該台大資工系課程影片中16:38開始的部分 (對應這篇po文的第一張截圖圖片) https://www.youtube.com/watch?v=OQiCacvx5rQ&t=997s 

以下是探討的部分: 

雖然boot就是源自於bootstrap的縮寫,但有些名詞如果要細究,似乎又有些在名詞定義有所差異的狀況可以探討。 

後來發現上面那課程投影片以及說法是恐龍本(恐龍書)內的部分描述,而課程影片似乎是更簡化一些的PPT呈現與描述方式。

實際上如果是ARM(如Cortex-Ax系列) based的嵌入式SoC Linux系統,從bootROM到head.o、misc.o(被包含在被壓縮的kernel核心的zImage之中)之間包含許多階段的軟韌體程式。 

在系統啟動/上電之初負責初始化hardware(例如課程影片照恐龍本內容所提到的CPU registers, device controller , memory)的程式,其實就嵌入式系統常見說法是bootloader (此處將這些名詞區分得詳細些) (註: 關於初始化硬體的部分,在常見的PC架構則是會有一部分稱作BIOS,而在嵌入式系統通常將這些部分統稱為bootloader。所以若要對照常見的嵌入式系統架構的話,可對照或類似於嵌入式系統的bootloader的某一部分,如許多SoC內的boot ROM內的ROM code就是類似的其中一部分,當然其實也還包含ROM code之後的一些部分)。 

因為有著上述被包含在被壓縮的kernel核心的zImage之中的head.o、misc.o等程式(注意,這篇po文所講的head.o指的並不是那個不包含一堆object file的那個Linux核心本尊vmlinux內的那個head.o,雖然它們都在zImage之中。另外要注意有兩種情況都叫作vmlinux),

所以若嚴格或精確一點來說(至少在開頭描述過的嵌入式系統上),或許 不適合 將 負責 繁複的硬體初始化 及 zImage階段的處理器配置(如快取、暫時關閉中斷訊號、準備C code執行環境等) 的head.o、負責解壓縮、重定址Linux kernel等步驟的misc.o等程式 都全部統稱為Bootstrap program或全部統稱為bootloader,因為head.o、misc.o等程式,主要是負責把被壓縮的OS核心zImage解壓縮 & 重新定址等等的動作的部分,而並不是負責所謂的initialize all aspect of the system hardware。 

國外有一本有名的、介紹嵌入式Linux的書籍([1])的5.1.3節的內容是將Bootstrap program與Bootloader作出區隔,這本書將zImage之中的head.o與misc.o等程式歸類為Bootstrap program,但這樣的區隔方式也可能會造成混淆,畢竟boot這詞源自於bootstrap,會讓人覺得Bootstrap program原本就是bootloader不是嗎? 但head.o、misc.o也是屬於將OS kernel帶起的重要程式(只是不屬於我們常講的bootloader的範疇),所以我認為[1]這本書的作者會想要作出這種區隔也還算可以理解。 

總結一下,簡單來說,在有跑Linux的嵌入式系統中,負責課程影片內所指的(系統啟動/上電之初的)initialize all aspect of the system hardware(如memory)的階段通常稱為bootloader;而被包含於zImage的階段的head.o、misc.o等帶起核心的必要程式,已經不屬於我們常講的bootloader階段,

所以如果在OS課程中將這些部分都統稱為bootstrap program或bootloader,可能是會顯得比較rough一些。當然了,一般大學部的OS課程若要講得很詳細的話,或許也不容易,但如果是針對一般的PC系統講解,則負責最初initialize all aspect of the system hardware的應該是BIOS,在BIOS負責的任務結束之後才換成bootloader(bootstrap program)接手。 

另外,其實bootloader初始化系統硬體之後,也不一定就要接著帶起一個OS kernel,也可以是接著帶起non-OS program,端看實際的應用需求而定。 

題外話,關於開機初始化memory的方面 (於bootloader的階段),小弟個人過去在科技業工作時,曾實際負責過相關內容多次 (bring up過多款會跑Linux/Android的SoC系統晶片的公版軟韌體)。 

Ref: [1] Embedded Linux Primer: A Practical Real-World Approach, 2/e,https://www.tenlong.com.tw/products/9780137017836




--------------------

孫文良 (阿良的嵌入式系統技術學習區)

個人簡介: https://sites.google.com/view/wenliangsun/

【若需要嵌入式系統技術輔導課程 可來信洽談合作方式: iws6645@gmail.com,亦可先參考 課程招生網頁連結


2021年9月4日 星期六

適合初學者的【嵌入式系統基礎原理與實務課程】

‼ 在此推廣一下 適合初學者的【嵌入式系統基礎原理與實務課程】‼

👉 本po文的影片內容為一個簡易的小範例,由8051 MCU GPIO之Output(輸出)驅動LED完成簡易跑馬燈功能。

影片內容包含從操作KEIL C51 IDE的免費評估版對程式碼進行編譯,並且藉由 ISP (In System Programming) 燒錄方式(便宜又好用) 對8051 MCU進行燒錄並觀察執行結果。


.

❓ 看完這篇po文的demo影片,或許有些學員會感到疑惑,這影片的跑馬燈功能,豈不是在學校課程裡面就看過/做過了? 這不是都很簡單嗎? 

 

不用擔心 🥸,其實這些表面上簡單的demo功能的背後,其實有著許多深入的學問和需要學習的基礎觀念,在業界做深入的技術問題時很可能會需要這些觀念,而許多大學學校課程不一定會詳細教背後詳細原理,也可能是學員過去從來沒有仔細思考過的較深入的基礎內容。

.

以這個po文的demo影片內容來舉例背後涵蓋的基礎內容,例如: 

👉 以8051實際實作範例說明低階語言 (組合語言,Assembly Language)與C語言(高階語言)的實際差異介紹

👉 介紹8051 指令集 (組合語言 其實即為對應指令集 的 助憶符號)

👉 MCU的原廠官方Datasheet技術手冊的基本閱讀能力

👉 MCU內部架構、GPIO架構原理(例如Port0的open drain是指什麼)、暫存器存取、記憶體組織架構

👉 MCU外部介面電子電路原理(與基礎,包含數位電路和類比電路及訊號的基本觀念)

👉 C語言的各種技巧與重點(包含8051基礎應用以外的平台的韌體開發常見內容和觀念),韌體程式流程追蹤與撰寫

👉 整合開發環境(IDE)操作

👉 ISP燒錄韌體之方式,以及燒錄器所對應軟體之操作 


上述內容在本學習區所開設的課程內容中都會詳細講述,

.

許多學校課程會講的內容,本課程當然會涵蓋到;而就連許多學校課程裡面沒講到的(詳細細節原理與實務開發經驗),在本課程內還是會學到。

.

註: 這門課的核心並不只是教你8051 Microcontroller,而是關於嵌入式系統(Embedded System)的軟硬體入門理論觀念與技術基礎,

同時也會補充許多「真正的計算機概論」的重要內容,不要懷疑,多數人不一定真的有理解過,包含: 

👉 何謂電腦?

👉 何謂嵌入式系統? 

👉 何謂跑non-OS及何謂有跑OS的電腦(計算機)系統

👉 何謂CPU? 何謂MCU(微控制器)? 何謂微處理機? 何謂SoC(系統晶片)? 

👉 產業相關職缺類別與實際可能的工作內容情況(講師分享自身的產業工作經驗與曾經輔導多位學員的經驗)

👉 以8051 MCU作為範例實作的目標教材,目標是希望學員能打下紮實的嵌入式系統基礎,課程內容中會有一系列的基礎實作教學

.


本園區之FB粉絲專頁如下:

--------------------

孫文良 (阿良的嵌入式系統技術學習區)

個人簡介: https://sites.google.com/view/wenliangsun/

【若需要嵌入式系統技術輔導課程 可來信洽談合作方式: iws6645@gmail.com,亦可先參考 課程招生網頁連結


2021年9月3日 星期五

【Embedded Linux(嵌入式Linux)系列課程】Root Filesystem之編譯建置與執行 課程簡介

Root Filesystem之編譯建置與執行 課程簡介

Root Filesystem為根目錄檔案系統。簡而言之,檔案系統為電腦資料的儲存和組織(架構)方式,與作業系統之間有著密切的關係

延續上一節Kernel之編譯建置與執行之課程內容後,這節課程將會帶領學員:

  • 課程實驗內容將透過 純文字指令方式(command line) 進行,符合科技產業界對於此類系統的開發方式

  • Host PC端之Ubuntu Linux開發環境中,取得Busybox這款知名的開源檔案系統建置工具的source code,並透過GNU Toolchain編譯工具對其進行編譯,以建置出給Beaglebone Blcak嵌入式系統開發板所運行使用的Root Filesystem(根目錄檔案系統)

  • 以Busybox建置製作Root Filesystem的過程,包含嵌入式系統目標平台上所需的基本目錄及裝置節點(device nodes)

  • 準備Busybox執行所需之動態連結函數庫(該課程主要實驗方式);也會額外補充介紹靜態連結的編譯方式。

  • 建立檔案系統所需之基礎檔案(如/etc/inittab、/etc/init.d/rcS、/etc/fstab......等等)

  • 如何讓執行於Beaglebone Blcak板子的Linux Kernel從SD卡掛載(mount)學員於課程內所建立的Root Filesystem 

實驗Demo影片:


從上電進行開機流程之後進入根目錄畫面,展示在Beaglebone Black板子上執行ls、cat /proc/interrupts及cat /proc/cpuinfo指令。



本園區之FB粉絲專頁如下:

--------------------

孫文良 (阿良的嵌入式系統技術學習區)

個人簡介: https://sites.google.com/view/wenliangsun/

【若需要嵌入式系統技術輔導課程 可來信洽談合作方式: iws6645@gmail.com,亦可先參考 課程招生網頁連結




2021年8月23日 星期一

Beablebone Black或Nano Pi很適合拿來作為Embedded Linux的研究/學習平台!

歡迎透過合法的方式分享此文內容,若要轉載/轉貼,請明確貼出此原始連結並標示作者基本資訊請勿抄襲及非法轉貼(例如擷取內文但並未註明出處)

先聲明,這篇不是工商服務廣告,單純介紹和分享一些嵌入式系統板子的使用經驗。

BeagleboneBlack(BBB)這板子真的蠻不錯的,

除了上面的AM3358 SoC系統晶片維持TI SoC的一貫風格(TI OMAP系列SoC也是如此) 釋出很多SoC的詳盡手冊資料(眾多開發板上的SoC款式,我看過釋出資料最詳細的就是他們公司)、很適合拿來做有深度的研究之外,

也真的很適合拿來做技術教學,

TI官方網站的AM3358 SoC頁面(上面提供許多詳盡的資料)


BeagleboneBlack板子的schematic(電路圖)PCB設計都有公開,而板子上的User LED有4個,

很方便拿來做Linux Kernel Device Driver串接上層user space的Application program(藉由system call機制存取底層資源)的相關基礎教學Demo用~  

還可順便講解一些基礎的介面電子電路原理 (對較篇向純軟體背景或者非電機電子科系的學員們,也會有不少幫助)。


                                                              圖諞來源: Beaglebone black電路圖
https://github.com/beagleboard/beaglebone-black/blob/master/BBB_SCH.pdf?raw=true



圖諞來源: Beaglebone black電路圖
https://github.com/beagleboard/beaglebone-black/blob/master/BBB_SCH.pdf?raw=true


圖諞來源: https://elinux.org/Beagleboard:BeagleBoneBlack#Minix_.28Discontinued.29


也可以從Beagleboard官方網站連進去觀看各種資訊和資源~

Beagleboard官方網站


------------

另外,像是Nano Pi系列的板子也很棒喔,

除了期價格和性能比很好,

其相關的技術文件資訊(如其相關的技術文件資訊連結2)也算頗為豐富,電路圖資訊也很完全,

而板子上面的核心SoC系統晶片的方面,

除了社群網頁上放置其SoC的架構和完整的規格資訊之外(Datasheet),其原廠Allwinner也有在wiki page他們的官方網站上放置關於晶片的介紹。

---------

其它也還有許多很不錯的嵌入式系統開發板,未來若有機會的話再一一介紹,也歡迎各家廠商來洽推廣談合作方式!

--------------------


【好書介紹】電腦技術並不是只有軟體! 介紹一本介紹Intel 80x86為核心的IBM電腦系統軟硬體的好書

歡迎透過合法的方式分享此文內容,若要轉載/轉貼,請明確貼出此原始連結並標示作者基本資訊請勿抄襲及非法轉貼(例如擷取內文但並未註明出處)

因為搞不清楚狀況的人很多(執著表面的年份、新舊),先介紹一款Intel 在2016年所推出的基於x86(1993年推出的Pentium) ISA Compatible CPU 的Inte lQuark系列 微控制器(MCU): D2000

該MCU內的CPU的類型是1993年推出的Pentium(本來是要被命名為80586) ISA Compatible的CPU,在這款2016年推出的MCU的Intel官方Datasheet內的介紹可見下圖紅框圈起處

- 其內部CPU info :

32 MHz, 32 bit, single core, single thread, Pentium ISA compatible (如果看不懂這是x86的人,請自己google一下,做點功課,或見下圖的Intel官方手冊內容)

https://static6.arrow.com/aropdfconversion/3675d6354c6d8ac364213bdd827aacc81c93c43d/119736798394079quark-d2000-datasheet.pdf


- 其內部I/O :

SPI, I2C, GPIO, SPI, Comparators, ADC, PWM, DMA, UART

- Wikipedia的Intel Quark系列介紹: 

Intel Quark is a line of 32-bit x86 SoCs and microcontrollers by Intel, designed for small size and low power consumption, and targeted at new markets including wearable devices. The line was introduced at Intel Developer Forum in 2013.

...... However, in 2016 Arduino released the Arduino 101 board[3] that includes an Intel Quark SoC.

https://en.wikipedia.org/wiki/Intel_Quark

- Datasheet

https://static6.arrow.com/aropdfconversion/3675d6354c6d8ac364213bdd827aacc81c93c43d/119736798394079quark-d2000-datasheet.pdf

- Wikipedia的Pentium系列內容介紹: 

https://en.wikipedia.org/wiki/Pentium

------------

執著技術和平台的表面年份數字、或者人云亦云沒有必要重點在於是否合適

很多事情,尤其是電腦技術領域,真的不見得是越舊的年代的東西就代表完全過時無用,事實上有許多技術概念真的都是通用的,而去了解80x86和其相關系統設計的觀念,也是一樣的。

真實的專業研究之所以有價值,原因也在於此,技術不限於年份數字的這種表象,只要是適用、可解決或改善問題的idea觀念,都極有可能再拿出來被使用。

例如8051已經是40年的老MCU IP,但從台灣一線的IC設計公司公告的職缺內容可看出,至今仍有著需要了解8051的能力的工程師職缺,可參見我的下方PO文 (點選 查看更多)


------------

先聲明,這篇不是工商服務廣告,單純介紹過去讀過的電腦技術類的好書

這本80x86 IBM PC and Compatible Computers Assembly Language, Design, and Interfacing Volumes I & II , 2002年出版,作者是Muhammad Ali Mazidi和Janice Gillispie Mazidi,出版社為Prentice Hall(Pearson)。

https://www.amazon.com/80X86-IBM-Compatible-Computers-Interfacing/dp/013061775X

中譯版書名為: IBM PC and Compatible Computers Design, and Interfacing - IBM PC系統設計與介面技術(第四版),東華書局出版,譯者為 方志鵬。 

這本書涵蓋了很多電腦系統的軟韌硬體基礎觀念內容,在當年(十幾年前,大約19歲的時候)給了我不少啟發。

和 計算機組織/結構課本(科目)的一個不同之處在於,這本書或這類的科目會實際介紹8086/8088/80286/.../Pentium等微處理器IC及一些組合語言程式之外,也會介紹一些關於 介面電子電路 以及許多周邊IC與硬體(如8288 bus controller、8284 clock generator、記憶體介接電路、Programmable I/O的8255、LM34/35溫度Sensor、ADC0848、DAC808、8259中斷控制器、8253 Timer、LCD驅動、步進馬達驅動、 DMA 8237、UART 8250、UART轉RS232電壓位準轉換器、硬碟、鍵盤、印表機、數學運算coprocessor、視訊、以及其它許多IC,包含與微處理器IC之間的各種實際訊號狀態)的內容。

雖然這本書介紹的許多IC的型號比較舊,但是許多基礎原理觀念至今仍是共通的(畢竟電腦技術就是這幾十年來持續演化)。

另外還包含一些支援OS的微處理器的特性基礎,如80386的user/supervisor mode、virtual memory、page table、TLB等觀念,到了高速記憶體介面與存取章節也有各種記憶體的介紹(DRAM、SDRAM、cache memory的存取機制、write through、write back、cache coherence等觀念。後續談到80486時也會介紹到Pipeline;Pentium章節會提到superpipeline、supersclar、Harvard architecture、pipeline hazard、compiler的instruction scheduling、RISC/CISC的特性比較、out-of-order execution、branch prediction;MS-DOS的結構、記憶體管理;PCI、USB bus;BIOS;MS DOS和BIOS的ISR (INT _ _H對應的ISR),涵蓋內容相當廣泛。

許多讀資訊工程系的朋友可能會不太清楚,這門課的名稱通常叫作微處理機與介面設計、微算機原理、介面設計,但現在在學校關於這種科目通常都是拿MCU(微控制器)的開發板來讓學生實驗,而不是像早期真的用微處理機(微處理器,如8086、Z80等)搭配一堆IC的兜成介面的方式來教了。另外,嚴格來說,這門課的範圍比計算機組織的範疇還廣(包含一部分計算機組織的內容),但通常學校只會教到這本書的內容的一小部分。外國的書像是現在介紹的這本比蠻有名,而台灣比較常見的書是台灣科大電子系林銘波老師所出版的一系列微算機原理書籍。

這是一門在本質上很偏向實務和基礎理論觀念並重的課程,許多大學在這方面的教學都很輕忽。此外,這科也並不是研究所指定考科,所以常被忽略,研究所考科通常是計算機組織結構,但是性質和內容仍有不小的差異。

而關於介面硬體電路的方面,是近年來許多國內大學的電資工程系所普遍比較不重視的一環,畢竟現成的硬體用慣了,就容易忽視其存在與重要性。

但其實電腦系統技術絕對不是只有純軟體,若沒有紮實的硬體系統(包含類比式與數位式硬體),軟體哪來的用處呢?就算現在的SoC和MCU的集成度很高,很多週邊硬體都整進去了,但是基礎觀念和介面電路還是少不了啊!



註1: 這裡講的微處理器(微處理機)就真的是傳統所指的 "微處理器"(Microprocessor),例如8086/80286/80386/80486/Pentium IC裏頭就是CPU單元, 而不是微控制器(MCU, Microcontroller)!   並且也不是在指SoC或MCU被稱作的嵌入式微處理器(Embedded Microprocessor)的狀況。

順帶一提,這本書在談到鍵盤的章節,也會介紹到標準IBM PC內的鍵盤內都會有一顆微控制器(MCU),該微控制器內含一顆微處理機(微處理器)、RAM、ROM以及幾個I/O Port,這裡很清楚就可以釐清微處理機和微控制器的差異!

註2: 這本書後續還有續作: The x86 PC: Assembly Language, Design, and Interfacing, 5/e,2009年出版, 作者: Muhammad Ali Mazidi, Janice G. Mazidi, Danny Causey)

https://www.tenlong.com.tw/products/9780135026489




--------------------

孫文良 (阿良的嵌入式系統技術學習區)

個人簡介: https://sites.google.com/view/wenliangsun/

【若需要嵌入式系統技術輔導課程 可來信洽談合作方式: iws6645@gmail.com,亦可先參考 課程招生網頁連結

2021年8月20日 星期五

【Embedded Linux(嵌入式Linux)系列課程】Kernel之編譯建置與執行 課程簡介

Embedded Linux系列之Kernel之編譯建置與執行 課程簡介

Kernel為作業系統的核心,是現代作業系統之中最基本也是最主要的單元,簡略而言,Kernel主要負責整體電腦系統的資源管理。

延續上一節Bootloader開機啟動程式建置與執行之課程內容後,這節課程將會帶領學員:

  • 課程實驗內容將透過 純文字指令方式(command line) 進行,符合科技產業界對於此類系統的開發方式

  • Host PC端之Ubuntu Linux開發環境中,取得Linux Kernel source code,並透過GNU Toolchain編譯工具對其進行編譯,以建置出給Beaglebone Blcak嵌入式系統開發板所運行的Embedded Linux Kernel Image

  • 製作Boot script(包含帶給Kernel的必要啟動參數以及與啟動核心相關的UBoot指令)

  • 介紹如何讓Beaglebone Blcak板子從SD卡載入並啟動Linux Kernel Image

  • 介紹在產業界工作常會使用到的透過TFTP(Trivial File Transfer Protocol)從Host PC端載入Embedded Linux Kernel ImageBeaglebone Blcak板子上並且執行的方式 
  • 介紹如何編譯裝置結構樹devicetree source file(.dts)以得到device tree binary(.dtb),及如何透過UBoot將其載入給Linux Kernel

實驗Demo影片(註: 此為尚未建置Filesystem的狀態):

SD卡(MMC)載入並啟動Linux Kernel (透過boot script自動booting)


透過TFTP從Host PC端載入Embedded Kernel ImageBeaglebone Blcak板子上並且執行 
(刻意敲UBoot指令給大家看)



本園區之FB粉絲專頁如下:

--------------------

孫文良 (阿良的嵌入式系統技術學習區)

個人簡介: https://sites.google.com/view/wenliangsun/

【若需要嵌入式系統技術輔導課程 可來信洽談合作方式: iws6645@gmail.com,亦可先參考 課程招生網頁連結