树莓派4B

介绍

树莓派4B的工程是XWOS主仓库中的示例工程。工程目录位于 xwbd/RPi4B

开发环境搭建指南

下载源码

git clone https://gitee.com/xwos/XWOS.git

git clone https://github.com/xwos/XWOS.git

vscode

调试需要先安装 vscode

安装插件:

  • Cortex-Debug
  • C/C++
  • Chinese (Simplified) (简体中文) Language Pack for Visual Studio Code

安装工具链

xwtc 是XWOS编译的工具集合,可以从百度网盘下载,按照内部 说明.md 安装就可。

若用户使用 Ubuntu-24.04 作为开发环境,需要额外安装一些工具:

sudo dpkg-reconfigure dash # 选择 “否”
sudo apt install build-essential
sudo apt install emacs # 如果是纯命令行服务器环境,改为emacs-nox

openocd

Ubuntu

    1. 解压。
    1. 打开 主文件夹 ,按 ctrl+h 显示隐藏文件,找到 .local/ 。 将解压后内容( bin , openocd , libexec , …等文件夹)拷贝到 .local/ 内并合并。
    1. 重新登录系统后生效。

Windows

    1. 解压。
    1. 右键点击 此电脑 –> 属性 –> 高级系统设置 –> 环境变量
    1. 找到环境变量 Path ,增加解压后的 bin 文件夹路径。
    1. 重新登录系统后生效。

编译

编译的方法有两种:

  • 打开终端,在终端中输入
    • 切换到电路板目录 cd xwbd/RPi4B
    • 编译 make -j20
    • 清理 make d
  • Vscode中选择 终端 –> 运行任务
    • 编译 build
    • 清理 clean

调试

制作启动TF卡

  • 到树莓派官网 https://www.raspberrypi.com/software/ 下载 Raspberry Pi Imager
  • 使用 Raspberry Pi Imager 制作一个可启动的SD卡
    • Device选择 RASPBERRY PI 4
    • 系统可以选择
      • RASPBERRY PI OS(64-BIT)
      • Use custom 并选择 ubuntu 的img
  • 打开TF卡的 system-boot 分区,删除其中所有文件 。
  • xwbd/RPi4B/firmware/ 目录下的所有文件拷贝到TF卡的 system-boot 分区。

连接调试器

JTAG 信号 树莓派4B排针 GPIO 备注
TMS J8-13 27
nTRST J8-15 (TRST) 22
VTREF J8-17 (3v3) Segger官方的JLink必须接
RTCK J8-16 23 可以不接
TDO J8-18 24
TCK J8-22 25
TDI J8-37 26
GND J8-39
nRESET/SRST J2-RUN

连接终端串口

UART 信号 树莓派4B排针 GPIO 备注
TXD J8-08 14
RXD J8-10 15
GND J8-25
  • 波特率:2000000 BPS

启动调试

  • 插入TF卡
  • 插入电源
  • 等待片刻(等待树莓派4B的GPU完成系统的初始化、读取config.txt,加载固件)
  • 运行与调试 页面
    • 首次上电
      • JLink 选择 Rpi4b-AllCores-Openocd-Jlink-Launch
      • DapLink 选择 Rpi4b-AllCores-Openocd-Daplink-Launch
    • 接入正在运行的系统
      • JLink 选择 Rpi4b-AllCores-Openocd-Jlink-Attach
      • DapLink 选择 Rpi4b-AllCores-Openocd-Daplink-Attach

VSCODE中调试树莓派4B

调试经验

使用调试器时启动时序可能错误

  • 调试启动后,CPU0会停在 soc_init() ,其他CPU会在 SPIN_TABLE 自旋。
  • 继续运行CPU0至 cpu0_mthd_mainfunc() 线程的 soc_boot_mp() ,CPU0会启动其他CPU。 此时,才可点击其他CPU的 继续运行 按钮。

高外设地址模式

  • Vscode的插件 Cortex-Debug 只支持32bit的地址。开启高外设地址模式会导致外设寄存器显示功能失效。