ARM64+樹莓派4b+JLINK模擬器實驗環境搭建指南

rlk8888發表於2022-02-09
ARM64體系結構與程式設計,全球原創的ARM64實驗,笨叔帶隊,等你喲!

ARM64體系結構與程式設計-yx音訊: 00:00/ 00:20

奔跑吧第三季視訊課程實驗裝置清單

  1. 硬體開發平臺:樹莓派4B (2G或者4G記憶體)
  2. 軟體模擬平臺:QEMU BenOS定製版
  3. 開發主機:Ubuntu Linux 20.04
  4. MicroSD卡一張以及讀卡器
  5. USB轉串列埠線一根
  6. J-Link v11模擬器

注意:

  1. J-Link模擬器需要額外購買,請登入SEGGER公司官網查詢中國區代理商資訊。在校師生以及個人愛好者可以聯絡J-Link中國區的代理商購買J-LINK EDU版本。
  2. 建議讀者下載笨叔製作好的虛擬機器映象(支援VMware player或者VirtualBox),裡面內建了openocd軟體以及QEMU BenOS定製版。
    虛擬機器image下載地址:
    訂閱了第三季旗艦篇視訊課程的小夥伴請ping笨叔索取下載地址。


ARM64+樹莓派4b+JLINK模擬器實驗環境搭建指南



ARM64+樹莓派4b+JLINK模擬器實驗環境搭建指南



ARM64+樹莓派4b+JLINK模擬器實驗環境搭建指南


如果有小夥伴需要在物理機上安裝Ubuntu Linux,其實也是可以的。笨叔提供了QEMU_BenOS的deb安裝包,注意,安裝包只能在ubuntu 20.04中使用。其中:

  1. qemu-system-arm-pi4_4.1.50-3_without_GIC_amd64:表示只支援樹莓派4中的Legacy interrupt controller的版本。
  2. qemu-system-arm-pi4_4.2.50-3_with_GIC_amd64:表示只支援樹莓派4中的GIC。
    小夥伴可以先安裝其中一個,等到做中斷相關的實驗的時候,再根據視訊課程的講解來切換。
  3. openocd-benos_1.0-2_amd64:這個是openocd for 樹莓派4.

安裝樹莓派OS和測試BenOS

小夥伴可以參考《樹莓派+JLINK實驗環境搭建.pdf》這個文件來。

當你拿到一個全新的樹莓派4和全新的MicroSD卡的時候,你可以先燒寫一個樹莓派OS,然後先把串列埠線接上,並測試串列埠線是否連線成功。

  1. 下載一個最新的樹莓派OS,一定是要Raspberry Pi OS,不要使用第三方的樹莓派OS,例如ubuntu for Raspberry Pi。國內小夥伴可以從清華源中下載。
https://mirrors.tuna.tsinghua.edu.cn/raspberry-pi-os-images/raspios_arm64/images/raspios_arm64-20

下載完成之後,使用燒寫工具把image 燒寫到MircoSD裡,在windows下可以使用Win32DiskImager 軟體來進行燒錄,Linux主機可以使用dd命令。
2.修改MircoSD卡中boot分割槽裡面的config.txt配置檔案,在這個檔案裡新增兩行。

uart_2ndstage=1
enable_uart=1

3.把MircoSD插回到樹莓派4上,開機。
樹莓派OS預設的使用者名稱:pi,密碼為:raspberry

4.配置樹莓派4上的wifi。可以使用樹莓派上的配置工具,在串列埠中輸入如下命令。

$ sudo raspi-config

選擇“Network Options”來配置WIFI密碼等。


ARM64+樹莓派4b+JLINK模擬器實驗環境搭建指南


  1. 更新軟體包。
    我們最好是全系統的更新軟體包,這樣會自動更新了SPI BootRom韌體。
sudo apt update
sudo apt full-upgrade
sudo reboot

更新完成之後,我們reboot機器。
5.關機,把MicroSD卡拔下來。把本季課程的實驗程式碼中的 樹莓派韌體 拷貝到 MicroSD裡。
目錄在:armv8_trainning/tools/pi_boot_fw

把上面pi_boot_fw目錄下面的所有檔案拷貝到 MicroSD的boot分割槽裡。
實驗參考程式碼見百度網盤中的:

實驗參考程式碼目錄中的armv8_trainning_xxxxx.tar.xz, 在做實驗之前,請認真閱讀裡面的《實驗參考程式碼使用指南》以及對應的視訊講解。

然後把MicroSD插入到樹莓派上,開機。你應該能看到如下列印。說明串列埠已經ready了!

Starting start4.elf @ 0xfec00200 partition 0
MESS:00:00:05.264585:0: arasan: arasan_emmc_open
MESS:00:00:06.125361:0: Read command line from file 'cmdline.txt':
MESS:00:00:06.131256:0: 'logdev=ttyS1'
MESS:00:00:07.167549:0: brfs: File read: 13 bytes
MESS:00:00:07.179048:0: brfs: File read: /mfs/sd/benos4.bin
MESS:00:00:07.181512:0: Loading 'benos4.bin' to 0x80000 size 0x4b30
MESS:00:00:07.187507:0: Device tree loaded to 0x2eff4200 (size 0xbd33)
MESS:00:00:07.193841:0: uart: Set PL011 baud rate to 103448.300000 Hz
MESS:00:00:07.202824:0: uart: Baud rate change done...
Booting at EL2
Booting at EL1
Welcome BenOS!

樹莓派和JLINK的連線

小夥伴可以參考《樹莓派+JLINK實驗環境搭建.pdf》這個文件來。

1.硬體連線
要在樹莓派上使用J-Link模擬器,首先需要把J-Link模擬器的JTAG介面連線到樹莓派的擴充套件板上。樹莓派的擴充套件介面已經內建了JTAG介面。我們可以使用杜邦線來連線。
J-Link模擬器提供20管腳的JTAG介面,如圖所示。


ARM64+樹莓派4b+JLINK模擬器實驗環境搭建指南


小夥伴一定要分清楚,哪個是JLINK模擬器中JTAG中管腳1。靠近JTAG介面拗口的一排pin腳,其中最右邊的那個是管腳1。


ARM64+樹莓派4b+JLINK模擬器實驗環境搭建指南


樹莓派與J-Link模擬器的連線需要8根線,如表所示。
表 樹莓派與J-Link模擬器連線

JTAG介面 樹莓派管腳號 樹莓派排管腳名稱
VTref 01 3.3v
TRST 15 GPIO22
TDI 37 GPIO26
TMS 13 GPIO27
TCK 22 GPIO25
RTCK 16 GPIO23
TDO 18 GPIO24
GND 39 GND


ARM64+樹莓派4b+JLINK模擬器實驗環境搭建指南



ARM64+樹莓派4b+JLINK模擬器實驗環境搭建指南


連線完成的效果圖如下, 強烈建議,大家使用不同顏色的8根杜邦線來連線,這樣不容易接錯線。


ARM64+樹莓派4b+JLINK模擬器實驗環境搭建指南


大家在大一的金工實習的時候,連複雜的錘子都做出來了,連這8根線對你們來說,小菜一碟。連線完成之後,再細心檢查一遍。

拷貝loop.bin程式到Micro SD卡上。另外還需要修改config.txt配置檔案,開啟樹莓派對JTAG介面的支援。Loop.bin和修改後的config.txt在armv8_trainning/tools/jlink目錄裡有,小夥伴可以拷貝到SD卡里。注意,SD裡的原有的start4.elf等檔案還是要保留。
完整的config.txt檔案如下。

# BenOS for JLINK debug
[pi4]
kernel=loop.bin
[pi3]
kernel=loop.bin
[all]
arm_64bit=1 
enable_uart=1 
uart_2ndstage=1 
enable_jtag_gpio=1
gpio=22-27=a4
init_uart_clock=48000000
init_uart_baud=115200

進入到armv8_trainning/tools/jlink目錄。
下面通過openocd來命令來連線J-Link模擬器,使用“-f”選項來指定一個配置檔案。

$ sudo openocd -f jlink.cfg
Open On-Chip Debugger 0.10.0+dev-01266-gd8ac0086-dirty (2020-05-30-17:23)
Licensed under GNU GPL v2
For bug reports, read
    
Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections
Info : J-Link V11 compiled Jan  7 2020 16:52:13
Info : Hardware version: 11.00
Info : VTarget = 3.341 V

從上述日誌可以看到OpenOCD已經檢測到J-Link模擬器,版本為V11。

使用如下命令來連線樹莓派,如圖所示。

$sudo  openocd -f jlink.cfg -f raspi4.cfg


ARM64+樹莓派4b+JLINK模擬器實驗環境搭建指南


說明JLINK已經連線上了,接下來可以看 視訊課程的第三節課,來學習如何使用JLINK模擬器來除錯BenOS。

注意:

如果通過openocd連線樹莓派沒成功,一共要先檢查JTAG連線是否正確,認真檢查幾遍。另外,檢查loop.bin和config.txt檔案是否正確。

答疑

Q:沒有樹莓派4b和JLINK模擬器,可以完成第三季的實驗嗎?
A:我們可以使用QEMU來完成本季課程的80~90%的實驗,但是有部分實驗需要在樹莓派4b上上完成,因為QEMU不能100%模擬硬體行為。我們建議大家還是準備一個樹莓派4b的開發板。

Q:沒有JLINK模擬器會影響本季課的實驗嗎?
A:在樹莓派4b上除錯程式時,特別是彙編程式碼時,如果發生了當機,我們常常會束手無策,最多隻能使用串列埠等方式來協助除錯。如果使用硬體模擬器,例如JLINK,我們就可以很方便地找到當機發生的原因。

Q:JLINK模擬器如何購買?
A:我們推薦大家購買正版的JLINK模擬器。大家可以聯絡SEGGER公司在中國區代理商。另外,在校師生以及個人愛好者可以通過代理商購買JLINK EDU版本模擬器。

Q: 如何學習本課程?
A :建議認真看視訊,認真看ARMv8晶片手冊,認真完成實驗,總結歸納。

Q: 實驗實在做不來,怎麼辦?
A: 我們提供了所有實驗的參考程式碼。我們建議大家獨立完成實驗,若實在做不出來,可以參考我們提供的參考程式碼,不過還需要思考哪些地方沒有做出來,及時做總結。

版權宣告


ARM64+樹莓派4b+JLINK模擬器實驗環境搭建指南

視訊課程地址:
淘寶:
微店:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70005277/viewspace-2855018/,如需轉載,請註明出處,否則將追究法律責任。

相關文章