理論上不應該要邊移動邊開火,延長戰線。不過計劃趕不上變化,既來之則安之。
最近因為特別因素開始學習Linux kernel,看能不能Linux kernel和STM32兩邊都不要漏掉。不管怎樣,學習和實習絕對分不開,所以還是從環境架設開始吧。這次的實習環境架設的目標是:
今天只有辦到1, 2和4而已,剩下的還要繼續努力。
因為我已經裝過開發相關的套件,因此如果您是新手可能要自行摸索也許有需要另外安裝的套件如git
。嘛,練習解讀錯誤訊息也是一種學習。
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.5 LTS
Release: 14.04
Codename: trusty
主要分成下面三個步驟
直接看例子,剪下貼上就好
mkdir buildroot
cd buildroot
git clone git://git.buildroot.net/buildroot
網路上查到大部分都是從make menuconfig
開始。不過我是很明確地要用Qemu
跑ARM的系統。所以就找了一下發現有下面的指令
make qemu_x86_defconfig
想說既然有x86_defconfig
,那應該有arm_defconfig
吧? 錯!那我就去buildroot/board/qemu
目錄下找,有看到arm-versatile
。印象中以前有用過Qemu跑的Debian系統也是versatile
。所以就很高興地下了
make qemu_arm-versatile_defconfig
結果一樣GG,估狗查才知道正確的用法是:
make qemu_arm_versatile_defconfig
更新: 後來看手冊才知道有make list-defconfigs
可以查詢有哪些default config,果然前輩說要RTFM是對的,唉。
接下來就用make menuconfig
做細項調整,我主要是改成
另外本來想要嘗試設定更動Kernel版本,但是發現需要更進一步的瞭解buildroot才能夠達成。當作下次目標吧。
編譯只要下make
就會幫你下載和編譯開機需要的
output/image/roofs.ext2
zImage
,放在output/image/zImage
接下來也不難,可以參考board/qemu/arm-versatile/readme.txt
簡單來說就是執行下面指令,開機完使用root
登入不用密碼,使用poweroff
後再手動離開qemu。
qemu-system-arm -M versatilepb -kernel output/images/zImage -dtb output/images/versatile-pb.dtb -drive file=output/images/rootfs.ext2,if=scsi,format=raw -append "root=/dev/sda console=ttyAMA0,115200" -serial stdio -net nic,model=rtl8139 -net user
執行畫面如下
$ qemu-system-arm -M versatilepb -kernel output/images/zImage -dtb output/images/versatile-pb.dtb -drive file=output/images/rootfs.ext2,if=scsi,format=raw -append "root=/dev/sda console=ttyAMA0,115200" -serial stdio -net nic,model=rtl8139 -net user
...
Booting Linux on physical CPU 0x0
Linux version 4.7.0 (user@host) (gcc version 4.8.5 (Buildroot 2016.11-git-00439-g14b2472) ) #1 Mon Sep 26 22:36:42 CST 2016
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00093177
CPU: VIVT data cache, VIVT instruction cache
Machine model: ARM Versatile PB
....
EXT4-fs (sda): re-mounted. Opts: block_validity,barrier,user_xattr,errors=remount-ro
Starting logging: OK
Initializing random number generator... random: dd urandom read with 46 bits of entropy available
done.
Starting network: 8139cp 0000:00:0c.0 eth0: link up, 100Mbps, full-duplex, lpa 0x05E1
...
adding dns 10.0.2.3
OK
Welcome to Buildroot
buildroot login: root
#