Week #7 mini-arm-os

作業要求 (A)

  • 安裝和設定 QEMU
  • 依據指示,將 00-Semihosting, 00-HelloWorld, …, 07-Threads 均實際測試並研讀程式碼
  • 在 github 上 fork mini-arm-os,並修改 07-Threads (不要增加新的目錄!),提供基本的 shell,然後能夠用新建立的 thread 計算 fibonacci 數列
  • shell 程式碼可參照 rtenv+ 的 main.c,裡頭提供 shell 實做
  • 建立新的 Hackpad,列於「+作業區」,需要標注「開發紀錄 (A)」

預先安裝必要的套件

sudo apt-get install git zlib1g-dev libsdl1.2-dev automake* autoconf* libtool libpixman-1-dev flex bison
sudo apt-get install gcc-arm-none-eabi libnewlib-arm-none-eabi
  • 若 Ubuntu 使用 64bit 版本 ,請額外安裝 lib32gcc1 之套件
sudo apt-get install lib32gcc1 lib32ncurses5
 

STM32 on QEMU 環境建立與測試

cd ~
mkdir -p workspace
cd workspace
 
cd qemu_stm32
git submodule update --init dtc || sudo apt-get install libfdt-dev
./configure --disable-werror --enable-debug \
    --target-list="arm-softmmu" \
    --extra-cflags=-DSTM32_UART_NO_BAUD_DELAY \
    --extra-cflags=-DSTM32_UART_ENABLE_OVERRUN \
    --disable-gtk
make
  • 設定 qemu 的路徑,假設 qemu_stm32 目錄位於 $HOME/workspace 裡面
export PATH=~/EmbededSystem/workspace/qemu_stm32/arm-softmmu:$PATH
cd ~/workspace
git clone https://github.com/embedded2015/mini-arm-os.git || git clone git@github.com:embedded2015/mini-arm-os.git
 
 

00-HelloWorld

觀察順序(根據張家榮同學的註解)
Makefile -> hello.ld ->  startup.c> reg.h -> hello.c
Reset Register Map
Makefile
$(TARGET): hello.c startup.c
        $(CC) $(CFLAGS) $^ -o hello.elf
        $(CROSS_COMPILE)objcopy -Obinary hello.elf hello.bin
        $(CROSS_COMPILE)objdump -S hello.elf > hello.list