raspberry-pi - RASPi 4B:如何从 OpenOCD/JTag 加载和运行 kernel8.img?
问题描述
我是树莓派的新手。在一些博客之后,我现在可以使用软件 OpenOCD 通过 JTAG 连接在 JLink (v11) 与我的 Pi4B 之间建立连接。
出于调试目的,这些博客通常建议将 a 复制infloop.bin
到/boot
分区中,然后更改config.txt
指定kernel=infloop.bin
,以便框在启动时无限循环运行。
我猜想使用的目的infloop.bin
是,当halt
从 OpenOCD 编辑时,CPU 在已知状态而不是随机状态下停止。因为,如果机器正常启动,我仍然可以halt
使用 OpenOCD 的 4 个内核(但 CPU 状态可能没有明确定义)。
使用的问题infloop.bin
是,当我想将盒子切换回正常使用kernel8.img
时,我必须手动将SD卡与盒子断开,然后将其安装到PC上,更新config.txt
,然后将SD卡重新插入盒子.
有没有办法省略手动操作?我尝试了以下方法:
- 将 SD 卡中的内容复制
kernel8.img
到运行 OpenOCD 的 PC。 - 当我想更改时
/boot/config.txt
,我halt
从 OpenOCD 中选择目标,然后load_image kernel8.img 0x80000
,然后resume 0x80000
,希望真正的内核可以正确启动,因此我可以 ssh 到框进行更新/boot/config.txt
。
但是,这似乎resume 0x80000
不起作用。似乎永远PC
停留在(通过命令)......我也尝试了地址 0()但也没有工作。0x80000
reg pc
load_image kernel8.img 0x0
之后发生了什么resume 0x80000
?有没有办法kernel8.img
从 OpenOCD 启动?
谢谢。
解决方案
推荐阅读
- javascript - 如何嵌套多个 jQuery 函数,以便变量可以访问?
- slack-api - 缺少 conversation.info 松弛 API 调用的 num_members 属性
- tsql - SQL Server 2017 中的 SQL 查询无法正常工作
- c++ - c++11中的constexpr概念
- android - 窗口重新启动后反应本机给出错误 module.js:549
- automation - rpa 工具开发的语言自动化
- android - 如何在 Google Cloud Platform 上从外部 api 查询和存储数据,并使其可供应用用户使用
- java - NullPointerException 创建自己的 JSON 响应对象
- python - 给定一个输入字符串,如何在 O(k logN + W) 时间内搜索所有字谜,其中 W 是输出大小,k 是字符串中的最大字符?
- git - 我可以将一个文件中的更改拆分为两个提交吗?