教學影片內容為ARM 微理機架構解說與ARM Boot Loader 等技術主題的說明並有講師Demo Pi 3影片
目標對象:
- 有嵌入式系統開發經驗但並未接觸過底層開機程式碼 (Boot code)
先備知識:
- 具Linux 系統操作能力
- 熟悉的C程式
- 會使用gcc, make 的等GNU開發工具
- 有Raspberry Pi 的操作使用經驗
Raspberry Pi 3 環境建置:
請先登入學習平台,在[課程公告]處, 點選下載ARM Files.rar ,解開後內容如下
其中 pi-boot.zip 要傳送到PC Linux下 (註: 講師用的Linux環境是 Ubuntu 16.04, 但其實只要Toolchain能執行就可以,和使用那一套Linux Distribution並無太大關聯) ( 延伸閱讀: 用VirtualBox 掛載 Linux )
ARM Files 檔案目錄結構:
├─ADS_code (ADS 課程範例原始碼)
├─Document (Data Sheet及電路圖等文件)
├─Tools
│ ├─2016-05-27-raspbian-jessie-lite.zip (Raspberry Pi 3官方Image File)
│ ├─ADS12trial.rar (ADS 1.2 試用版)
├─pi-boot.zip (Raspberry Pi Bootloader 課程範例原始碼)
├─TOC.tx
├─Document (Data Sheet及電路圖等文件)
├─Tools
│ ├─2016-05-27-raspbian-jessie-lite.zip (Raspberry Pi 3官方Image File)
│ ├─ADS12trial.rar (ADS 1.2 試用版)
├─pi-boot.zip (Raspberry Pi Bootloader 課程範例原始碼)
├─TOC.tx
其中 pi-boot.zip 要傳送到PC Linux下 (註: 講師用的Linux環境是 Ubuntu 16.04, 但其實只要Toolchain能執行就可以,和使用那一套Linux Distribution並無太大關聯) ( 延伸閱讀: 用VirtualBox 掛載 Linux )
ARM bootloader on Raspberry Pi 3
=====================================
在 Linux 下 執行 "unzip pi-boot.zip" , 解開後的內容如下, 請照README.txt 或下方說明, 完成第一個Pi上的範例
=====================================
在 Linux 下 執行 "unzip pi-boot.zip" , 解開後的內容如下, 請照README.txt 或下方說明, 完成第一個Pi上的範例
pi-boot
│ gcc-arm-none-eabi-5_3-2016q1-20160330-linux.tar.bz2
│ gcc-arm-none-eabi-6-2017-q1-update-linux.tar.bz2
│ make.dep
│ README.txt
├─bcm2835_lib
├─example
│ ├─bare_button
│ ├─bare_button_in
│ ├─bare_gpio
│ ├─bare_mailbox
│ ├─bare_timer
│ ├─bare_uart_poll
│ └─uart_interrupt
└─startup_code
boot.o
boot.S
link.ld
Makefil
start.o
start.S
How to Build
------------------------
step1: untar Toolchain
------------------------
gcc-arm-none-eabi-5_3-2016q1.tar.gz --> for 32-bit Linux host
gcc-arm-none-eabi-6-2017-q1-update-linux.tar.bz2 --> for 64-bit Linux host
For example,
tar jxvf gcc-arm-none-eabi-6-2017-q1-update-linux.tar.bz2
-------------------------
step2: Setup Toolchain Path
-------------------------
export PATH=$PATH:/home/it/pi_baremetal/trunk/gcc-arm-none-eabi-6-2017-q1-update/bin
type "arm-none-eabi-gcc -v"
it will display : gcc version 6.3.1
-------------------------
step3: make boot code firstly
-------------------------
#modify make.dep to determine which version to use
# 0 for 32bit ; 1 for 64
Host_64=1
cd startup_code ; make
-------------------------
step4: test demo code
-------------------------
cd example/bare_gpio
make
output==>armgpio.bin
-------------------------
step5: put the code to Raspberry Pi 3
-------------------------
copy 'armgpio.bin' to micro SD card and add one line
kernel=armgpio.bin
at the end of the config.txt file. Then, you insert micro SD card into Raspberry Pi,and power on. After booting, you can see LED is blinking.
# 0 for 32bit ; 1 for 64
Host_64=1
cd startup_code ; make
-------------------------
step4: test demo code
-------------------------
cd example/bare_gpio
make
output==>armgpio.bin
-------------------------
step5: put the code to Raspberry Pi 3
-------------------------
copy 'armgpio.bin' to micro SD card and add one line
kernel=armgpio.bin
at the end of the config.txt file. Then, you insert micro SD card into Raspberry Pi,and power on. After booting, you can see LED is blinking.
Note: code 在Pi 3上測試過
目前講師所整理的code 僅以Raspberry Pi 3 搭配艾鍗 Raspberry Pi 3 Shield 版本為主
目前講師所整理的code 僅以Raspberry Pi 3 搭配艾鍗 Raspberry Pi 3 Shield 版本為主