前言
我看了好几个关于gamewatch的刷机教程了
但是呢
我还没走完gamewatch的刷机之路
一方面是要告诉大家
这个世界上还是有很多和我一样不懂坏境配置的同学
做教程也不应该先入为主的代入
有一些东西默认大家都懂的
所以就有了这样的一个
从零开始和我一起走完gamewatch刷机九九八十一难的教程
一、虚拟机篇
虚拟机 就是类似电脑模拟器
用电脑模拟电脑
常用的就是VMware
常用版本就是16或者17版本
这里一定要强调版本 版本的不同好像是会导致一些不清楚的奇怪bug
具体的安装就需要大家检索来进行安装了
具体的方法就是使用非百度搜索的搜索引擎来寻找安装教程
我总不可能连搜索引擎都要教你怎么使用吧
但是可以说用英文 How to install VMware 或者 虚拟机安装教程
在google或者bing等搜索
你会找到很多有用的视频教程

二、ubantu篇
ubantu是一个linux系统
可以在进行下载 https://ubuntu.com/
直接使用它的免费试用版本就行
这里就需要你搜索 如何在虚拟机安装ubantu
How to install Ubuntu on VMware

三、坏境配置篇
1、终端
什么是终端
终端就像是windows的命令行 cmd 或者 power shell的工具
具体是什么这里就不说那么多 想知道的还是自己去搜索

2、安装虚拟机复制粘贴工具
首先 因为我们操作的是虚拟机
有的人是使用ssh工具进行操作的
我们不说这种
我觉得很多人还是不懂的
因为你是windows系统 你的粘贴板在ubantu里面是不能直接用的
你需要安装软件才行
Ubuntu虚拟机复制粘贴秘籍
当你需要在Ubuntu虚拟机和Windows系统之间复制粘贴文件时,可能会遇到一些挑战。新安装的虚拟机通常不支持这一功能,但通过简单的配置,你可以轻松实现这一目标。以下是详细步骤:
一、首先,打开终端并输入以下命令,以移除旧的open-vm-tools:
sudo apt-get autoremove open-vm-tools
二、接下来,安装open-vm-tools-desktop,这将为你提供所需的工具:
sudo apt-get install open-vm-tools-desktop
三、 最后,重启你的虚拟机。一旦重启,你就可以在Ubuntu虚拟机和Windows系统之间自由地进行复制粘贴操作了。
通过这些简单的步骤,你可以轻松地在两个系统之间传输文件,提高开发效率。
打开终端 执行以下两条命令
sudo apt-get autoremove open-vm-tools
sudo apt-get install open-vm-tools-desktop
打完这两个代码可能需要你输入密码
在linux输入密码是不显示的
这里要注意
这里的密码是你ubantu系统的登录密码
3、安装OpenOCD
这个是备份和解锁用的工具
打开终端输入
git clone https://github.com/kbeckmann/ubuntu-openocd-git-builder
cd ~/ubuntu-openocd-git-builder/
./build.sh
sudo dpkg -i openocd-git__.deb
sudo apt -y -f install
我在执行 git clone GitHub - kbeckmann/ubuntu-openocd-git-builder 的时候就出现了错误
首先是让你 输入账号和密码
然后我就输入了我的github的账号密码发现还是不行
这里需要大家使用google搜索 Github鉴权配置
来进行处理
需要自己注册github的账号然后配置鉴权代码
并把链接中的代码替换成自己的账号和鉴权代码
才能进行拉取 克隆操作
具体教程Github鉴权配置鉴权失败解决方法 个人中心设置 开发者设置 生成token token权限范围的配置 生成和复制 使 - 掘金
执行./build.sh的时候也会出现错误
这里是大家缺少一个工具 需要提前安装jimtcl 否则就会报错无法执行完成
jimtcl是一个脚本解释器
在使用 Ubuntu 时,如果你想安装 Jim Tcl(一个轻量级的 Tcl 解释器),你可以通过几种不同的方式来安装它。
使用 Ubuntu 的包管理器
Ubuntu 的包管理器(APT)通常提供了最简单的方式来安装软件。
你可以通过打开终端并运行以下命令来安装 Jim Tcl:
打开终端执行以下两个命令
sudo apt update
sudo apt install jimtcl
这个时候再回头就可以成功运行 ./build.sh了
编译成功之后我就直接把它复制出来在根目录了
方便之后调用

干货 如果你上面也能用 那就算了
如果不能用 接下来的这个很重要
划重点 opedocd不要自己编译 用系统的
sudo apt-get update
sudo apt-get install openocd
这样你的openocd就工作正常了
可以使用openocd -v查看openocd的版本号
如果终端显示了版本号那就没啥问题了
自己编译的好像是不会显示版本号的
也可能是版本太旧的原因 总之建议使用能显示的
这样才能确保 stlink被成功使用并调试机器
4、安装ToolChain
这个是编译工具是编译stm32单片机代码用的
我们直接使用终端执行
sudo apt install gcc-arm-none-eabi
进行安装

最后再终端输入 arm-none-eabi- 之后按 TAB 键,会列出可执行的指令集
这几个gcc编译器在应该就可以了
四、备份、开锁gamewatch
这里说一下cd这个命令行的意思
就是切换目录用的
比如cd AAA
那么就需要当前目录下有AAA文件夹
那么现在就切换进了AAA文件夹来执行文件或者命令
如果是空的cd 那就会回到根目录
打开终端执行这个
cd
git clone https://github.com/ghidraninja/game-and-watch-backup.git
git clone如果不能执行
就像我上面说的
配置好Github鉴权代码 做相应替换
就能拉取成功了
拉取成功之后执行
cd game-and-watch-backup
这个时候才能执行
这几个命令
./1_sanity_check.sh stlink mario(zelda)
./2_backup_flash.sh stlink mario(zelda)
./3_backup_internal_flash.sh stlink mario(zelda)
./4_unlock_device.sh stlink mario(zelda)
./5_restore.sh stlink mario(zelda)
比如说./1_sanity_check.sh stlink mario(zelda)例子代码 不是让你直接复制粘贴就这么用的
你需要改写成
塞尔达:
./1_sanity_check.sh stlink zelda
马里奥:
./1_sanity_check.sh stlink mario
1_sanity_check.sh是用来检测运行环境的
基本上就是检查你openocd是否成功识别到了
比如我这里就是这样写的
export OPENOCD="/home/question/openocd"
这里的这个命令就是告诉 终端
以后我再输入OPENOCD这个关键字
你就把OPENOCD等价替换为等号后面引号内的内容
目前我还卡在2_backup_flash.sh 这里
无法读取芯片内容 可能是stlink的问题 今天已经下单了新的stlink
这里错误的图片看上面终端的 就是这个错误

目前用 watch lsusb命令查看 stlinkV2是正常接进去的 连接点也用万用表测试了没啥问题

最终 我终于备份 开锁成功了
划重点 opedocd不要自己编译 用系统的
sudo apt-get update
sudo apt-get install openocd
这样你的openocd就工作正常了
然后讲述一下成功过程
连接stlink V2
然后展示一下我是怎么接线的
最后是接线参考
首先是
cd game-and-watch-backup
切换到这个文件夹里
然后依次执行
./1_sanity_check.sh stlink zelda
./2_backup_flash.sh stlink zelda
./3_backup_internal_flash.sh stlink zelda
./4_unlock_device.sh stlink zelda
./5_restore.sh stlink zelda
注意 ./3_backup_internal_flash.sh stlink zelda
注意第三个命令 执行之后机器会黑屏
这里就执行完了第三个命令的上半部分
然后断开usb供电 再供电 按下开机按钮
此时game watch会进入蓝屏状态
回到电脑 按下回车 完成下半部分命令
3、4、5的命令都需要你输入一个y 然后回车
一直下一步就能完成了
stlink V2的接线示意图 两个机器接法其实是一样的 只是引脚多了一些空位
记得VTREF引脚不要接线

可以参考一下我的接线 不需要焊接也不需要 插针
导线插进去 然后塞一根牙签固定 记得要确保线和线之间不要碰在一起

之后就可以开始准备游戏了 下一步就是把retro go编译之后刷进去