MCU單晶片韌體設計

2017年8月30日 星期三

[新手教學] ARM boot Loader 數位課程學習須知



 教學影片內容為ARM 微理機架構解說與ARM Boot Loader 等技術主題的說明並有講師Demo Pi 3影片

目標對象:
  1. 有嵌入式系統開發經驗但並未接觸過底層開機程式碼 (Boot code)

先備知識: 

  1. Linux 系統操作能力
  2. 熟悉的C程式
  3. 會使用gcc, make 的等GNU開發工具
  4. Raspberry Pi 的操作使用經驗
Raspberry Pi 3 環境建置:


請先登入學習平台,在[課程公告]處, 點選下載ARM Files.rar ,解開後內容如下

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

其中 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上的範例

  
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.


 Note: code 在Pi 3上測試過
      目前講師所整理的code 僅以Raspberry Pi 3 搭配艾鍗 Raspberry Pi 3 Shield 版本為主







沒有留言 :

張貼留言