ARM64+樹莓派4b+JLINK模擬器實驗環境搭建指南
ARM64體系結構與程式設計,全球原創的ARM64實驗,笨叔帶隊,等你喲!
ARM64體系結構與程式設計-yx音訊: 00:00/ 00:20
奔跑吧第三季視訊課程實驗裝置清單
- 硬體開發平臺:樹莓派4B (2G或者4G記憶體)
- 軟體模擬平臺:QEMU BenOS定製版
- 開發主機:Ubuntu Linux 20.04
- MicroSD卡一張以及讀卡器
- USB轉串列埠線一根
- J-Link v11模擬器
注意:
- J-Link模擬器需要額外購買,請登入SEGGER公司官網查詢中國區代理商資訊。在校師生以及個人愛好者可以聯絡J-Link中國區的代理商購買J-LINK EDU版本。
- 建議讀者下載笨叔製作好的虛擬機器映象(支援VMware player或者VirtualBox),裡面內建了openocd軟體以及QEMU BenOS定製版。
虛擬機器image下載地址:
訂閱了第三季旗艦篇視訊課程的小夥伴請ping笨叔索取下載地址。
如果有小夥伴需要在物理機上安裝Ubuntu Linux,其實也是可以的。笨叔提供了QEMU_BenOS的deb安裝包,注意,安裝包只能在ubuntu 20.04中使用。其中:
- qemu-system-arm-pi4_4.1.50-3_without_GIC_amd64:表示只支援樹莓派4中的Legacy interrupt controller的版本。
- qemu-system-arm-pi4_4.2.50-3_with_GIC_amd64:表示只支援樹莓派4中的GIC。
小夥伴可以先安裝其中一個,等到做中斷相關的實驗的時候,再根據視訊課程的講解來切換。 - openocd-benos_1.0-2_amd64:這個是openocd for 樹莓派4.
安裝樹莓派OS和測試BenOS
小夥伴可以參考《樹莓派+JLINK實驗環境搭建.pdf》這個文件來。
當你拿到一個全新的樹莓派4和全新的MicroSD卡的時候,你可以先燒寫一個樹莓派OS,然後先把串列埠線接上,並測試串列埠線是否連線成功。
- 下載一個最新的樹莓派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密碼等。
- 更新軟體包。
我們最好是全系統的更新軟體包,這樣會自動更新了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介面,如圖所示。
小夥伴一定要分清楚,哪個是JLINK模擬器中JTAG中管腳1。靠近JTAG介面拗口的一排pin腳,其中最右邊的那個是管腳1。
樹莓派與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 |
連線完成的效果圖如下, 強烈建議,大家使用不同顏色的8根杜邦線來連線,這樣不容易接錯線。
大家在大一的金工實習的時候,連複雜的錘子都做出來了,連這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
說明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: 我們提供了所有實驗的參考程式碼。我們建議大家獨立完成實驗,若實在做不出來,可以參考我們提供的參考程式碼,不過還需要思考哪些地方沒有做出來,及時做總結。
版權宣告
視訊課程地址:
淘寶:
微店:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70005277/viewspace-2855018/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 樹莓派搭建git伺服器 | 樹莓派小無相系列樹莓派Git伺服器
- 樹莓派搭建FTP伺服器樹莓派FTP伺服器
- 樹莓派搭建私人伺服器樹莓派伺服器
- 使用樹莓派搭建Ubuntu伺服器樹莓派Ubuntu伺服器
- 用樹莓派搭建svn伺服器樹莓派伺服器
- 09. 樹莓派ASP.NET環境配置樹莓派ASP.NET
- 樹莓派桌面體驗樹莓派
- 樹莓派 3 新手指南樹莓派
- 樹莓派搭建下載機樹莓派
- RHEL9.4搭建虛擬機器實驗環境虛擬機
- 計算機實驗室之樹莓派計算機樹莓派
- 樹莓派入門指南——資訊圖樹莓派
- 樹莓派自建 NAS 雲盤之——樹莓派搭建網路儲存盤樹莓派
- 【.NET 與樹莓派】數模轉換樹莓派
- 樹莓派使用入門:如何更新樹莓派樹莓派
- 樹莓派-感測器篇樹莓派
- 樹莓派是什麼 樹莓派能做什麼 樹莓派的功能用途樹莓派
- 樹莓派實戰:微信機器人(itchat實現)樹莓派機器人
- 樹莓派使用樹莓派
- 樹莓派 Zero WH 初使用體驗樹莓派
- 樹莓派使用入門:用樹莓派學 Linux樹莓派Linux
- 樹莓派4B踩坑指南 - (15)搭建線上python IDE樹莓派PythonIDE
- 使用樹莓派搭建區域網監控樹莓派
- 如何用樹莓派搭建一個顆粒物感測器樹莓派
- 基於樹莓派的內網穿透Web伺服器搭建樹莓派內網穿透Web伺服器
- 樹莓派從零開始搭建Samba檔案伺服器樹莓派Samba伺服器
- 基於樹莓派的叢集實驗(一)--spark on yarn樹莓派SparkYarn
- 樹莓派使用入門:如何用樹莓派來娛樂樹莓派
- 樹莓派使用入門:如何購買一個樹莓派樹莓派
- 樹莓派使用入門:慶祝樹莓派的 14 天樹莓派
- 樹莓派CM4(四):樹莓派映象替換核心樹莓派
- 樹莓派安裝 ubuntu 20.04 LTS 碰壁指南樹莓派Ubuntu
- 樹莓派 - 實戰篇 [基於 websocket 實現手機遠端控制樹莓派小車]樹莓派Web
- 樹莓派筆記樹莓派筆記
- 樹莓派與FileZilla樹莓派
- 折騰樹莓派樹莓派
- 樹莓派裝opencv樹莓派OpenCV
- 新樹莓派入手樹莓派