ARM64+树莓派4b+JLINK仿真器实验环境搭建指南

2,863 阅读4分钟

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笨叔索取下载地址。

图片

图片

图片

如果有小伙伴需要在物理机上安装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密码等。 图片

  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:0arasan: 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:0brfs: File read13 bytes
MESS:00:00:07.179048:0brfs: 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:0uart: Set PL011 baud rate to 103448.300000 Hz
MESS:00:00:07.202824:0uart: 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接口树莓派管脚号树莓派排管脚名称
VTref013.3v
TRST15GPIO22
TDI37GPIO26
TMS13GPIO27
TCK22GPIO25
RTCK16GPIO23
TDO18GPIO24
GND39GND

图片

图片

连接完成的效果图如下,强烈建议,大家使用不同颜色的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
    http://openocd.org/doc/doxygen/bugs.html
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: 我们提供了所有实验的参考代码。我们建议大家独立完成实验,若实在做不出来,可以参考我们提供的参考代码,不过还需要思考哪些地方没有做出来,及时做总结。

版权声明

图片

购买方式

视频课程地址: 淘宝:shop115683645.taobao.com/ 微店:weidian.com/?userid=169…