【闲鱼群控源码】【源码盒子买卖】【eclipse提示源码】swdio源码

时间:2024-12-23 01:19:28 编辑:电梯模拟c 源码 来源:企业网站设计与开发源码

1.Game and Watch 破解刷机教程
2.SWD协议分析(附SWD离线下载源码)

swdio源码

Game and Watch 破解刷机教程

       本教程适用于任天堂新版Game&Watch Mario/Zelda版本。进行刷机操作有风险,若机器在刷机过程中发生硬件损坏或机器无法正常使用,我们概不负责。

       更新日期://

       根据评论区用户@alexzhong 的建议,在下载编译固件所需的闲鱼群控源码gcc工具链时,请确保下载x版本的工具链,而非arm版本。否则,可能会在编译过程中遇到错误。

       准备工具:

       - 十字螺丝刀一把

       - Y字螺丝刀一把

       - stlink(推荐淘宝盗版stlink v2,价格在元以内)

       - Game&Watch Zelda/Mario 版本 MXUFM2I-G(用于扩展内存大小,可选)

       - 一台装有Ubuntu的电脑(或使用具有USB直通功能的虚拟机如VMware)

       认识Game&Watch硬件:

       - Game&Watch主控为stmh7b0vbt6,配备Mhz Cortex-M7内核与kb内部flash存储。

       - 外部Flash采用mxu系列的1.8v spi nor flash,Zelda版本为4MB大小,Mario版本为1MB大小,源码盒子买卖通过OctoSpi接口连接主控。

       - 电池与喇叭与Switch Joycon同款,以降低成本。

       - 主板供电为1.8v,debug接口的VDD也是1.8v,请勿接至3.3v供电,以防硬件烧毁。

       硬件接口定义:

       - Zelda版本:连接SWCLK, GND, SWDIO三根线。

       - Mario版本:同样连接SWCLK, GND, SWDIO三根线,但需注意不要连接VDD。

       更多硬件信息参考:github.com/ghidraninja/...

       破解加密和备份原机固件:

       - Game&Watch固件经过加密,尽管硬件开放性高,但固件本身仍需破解。

       硬件准备:

       - 断开电池连接,将SWDIO, SWCLK, GND线连接至stlink对应端口。

       - 将stlink连接到Ubuntu系统(或VMware)。eclipse提示源码

       - 使用Game&Watch的typec电源。

       系统软件准备:

       - 自行编译安装OpenOCD,由于版本和自带库问题,可能无法使用apt自动安装。

       - 确保git submodule更新完整,可能需要反复尝试。

       - 下载并解压arm gnu toolchain。

       备份和破解流程:

       - 下载脚本仓库。

       - 配置脚本环境。

       - 运行脚本备份外部flash。

       - 确保flash备份后,开始向flash中写入内容。

       - 备份内部flash,确保机器处于蓝屏模式,完成所有文件备份。

       - 机器在完成脚本4解锁和脚本5恢复后,赏金大师源码变为解密状态,可刷入其他固件。

       错误代码分析:

       - 运行中可能出现各种问题,查看logs目录下的n_openocd.log以获取详细错误信息。

       - 确保脚本有读取usb设备的权限,运行sudo命令以获得权限。

       - 连接器与设备不兼容时,可尝试更新stlink v2的固件。

       编译并刷入retro_go固件:

       - Game&Watch无扩展存储,所有游戏rom均在固件内。

       - 支持运行的游戏平台包括:GBC、GB、GBA、NES、SNES、N、无线AP源码MD、SMS、SCS-1、SFC、PCE、GG、PS、PSX、SCE、PS2、PS3、PS4、Xbox、Xbox、XboxOne、Wii、WiiU、DS、3DS、PSVita、NDS、3DS、WiiU、Switch等。

       - 准备游戏rom,确保容量不超过flash大小。

       - 编译前,确保所有破解流程要求的软件已安装完毕。

       - 下载固件源码,配置运行环境。

       - 将游戏rom放入rom目录,编译固件。

       - 编译完成后,自行刷机。

SWD协议分析(附SWD离线下载源码)

       SWD协议分析内容

       SWD协议的基本信息比特序,即数据传输顺序为最低有效位优先,先传输低位数据,后传输高位数据。例如,对OK的ACK响应数据为0b,先传输低位1,再传输高位0。

       SWD的传输闲置状态为空闲周期,主机通过将SWDCLK时钟拉低来代表空闲时期。

       ARM SWD采用单条双向数据连接线(SWDIO),为了防止主机与设备间的竞争,在传输方向变化时需要线路周转,此期间主机与设备均不驱动数据线,数据线状态不确定。周转时间长度由DLCR寄存器的TURNROUND位控制,默认为一个时钟周期。

       在数据传输过程中,SWD使用偶校验,传输数据中为1的个数为偶数则结果为0,否则为1。

       数据基本传输流程包括数据传输方向和开始条件。ORUNDETECT标志位代表超时检测模式,该模式允许长时间高吞吐量连接,上电后默认禁用。数据传输步骤包括写请求和读请求,写请求在ACK阶段和数据传输阶段有一个周转期,读请求在数据传输阶段后存在周转期。

       数据包请求后始终为转换时间,此时主机和目标均不驱动线路。ACK响应包含转换时间,仅在发生READ事务或接受WAIT或FAULT确认时需要。DATA传输包含转换时间,仅在READ事务中存在。

       数据传输完毕后,主机需进行操作。SWD寄存器介绍包括SW-DP状态机、SW-DP寄存器和SW-AP寄存器。状态机有内部ID代码,目标读取前状态机不工作。APnDP值决定访问这些寄存器。

       AHB-AP具有位AHB-DP寄存器,地址宽度为6位,最多达字节或字节。

       SWD协议的操作包括成功写入和读取操作。写入操作在主机接收到OK的ACK响应后立即开始数据传输,无需周转期。读取操作在数据传输完毕后存在周转期。

       从JTAG切换到SWD操作涉及位JTAG到SWD选择序列,包括读取芯片ID、清除错误标志位和使能AP调试。读取MCU任意寄存器需发送两次读操作或一次读操作后发送一次读RDBUFF寄存器操作。写入MCU任意寄存器需参考相关文档。

       具体操作流程和更多细节可参阅相关文档资料和源码。附件包含ARM调试接口架构规范和DAPProg源码。