完全是友善自己查詢,做個記錄。
樹莓派4的SOC是ARM64, cortex A72,支援最新的ARMv8指令集,且有衆多的開源資料,适合用來學習ARM64彙編,其他晶片大同小異,遇到需要,再進一步研究qemu支援的晶片;
最新版官方qemu尚未支援樹莓派4, 這裡直接采用笨叔提供的qemu工具
1.測試代碼test.S
.global _start
_start:
mov x1,0x80000
mov x3,16
ldr x0,[x1]
ldr x2, [x1,#8]
ldr x4, [x1,x3]
ldr x5, [x1,x3,lsl #3]
2. 編譯
makefile檔案
ARMGNU ?= aarch64-linux-gnu
test.elf: test.o
$(ARMGNU)-ld -Ttext 0x0 -o test.elf $^
%.o : %.S
$(ARMGNU)-gcc -o $@ $< -g -c
clean:
rm *.o *.elf -f
3.qemu模拟調試
由于qemu自帶gdb_server,這裡用gdb來單步調試
3.1 啟動qemu
qemu-system-aarch64 -machine raspi4 -nographic -kernel test.elf -S -s
3.2 再開一個終端,啟動gdb,連結qemu
gdb-multiarch --tui benos.elf
連結gdb_server
``
檢視寄存器值
3.3 用eclipse可視化環境調試
(1).建立一個新工程test,添加帶調試資訊的程式test.elf,配置如下:
連結成功後,啟動gdb,可以友善檢視寄存器或變量值如下: