在解决基于pyocd的代码打包为exe后无法识别daplink仿真器的问题_大饼酱人的博客-CSDN博客

这个之后遇见的问题:

MCU使用的是GD32F425RG,需要进行下载甚至二次修改(这个坑在使用pyocd对gd32进行下载时的一些注意事项_pyocd下载_大饼酱人的博客-CSDN博客)的一个cmsis包,因此直接打包后读取这个pack有问题,但是在pycharm中运行没有问题。

找到了问题原因,pyocd原生库pack_target文件中get_installed_packs的缓存区文件路径错误cache = cmsis_pack_manager.Cache(True, True),因为缓存区和一些json文件在cmsis-pack-manager路径下面,通过default_path = user_data_dir('cmsis-pack-manager')获取到的路径是"C:\\Users\\addoi\\AppData\\Local\\cmsis-pack-manager\\cmsis-pack-manager",但是我这个文件夹不存在,奇怪的是在pycharm中它能找到并识别这个文件(实际路径是"C:\\Users\\addoi\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\\LocalCache\\Local\\cmsis-pack-manager\\cmsis-pack-manager\\"),打包exe后就找不大这个文件了,所以报错了

方法是换别人的电脑就行了,因为别人安装的包默认在用户名+AppData\\Local\\cmsis-pack-manager\\cmsis-pack-manager下面,或者另一个方法是我把自己的pack和json路径也移动到用户名下面

另一个治根的方法是修改pyocd的原生程序(可能可以通过接口来控制,但是不知道怎么弄),直接将installed_targets = pack_target.ManagedPacks.get_installed_targets(cache=cache)中的cache=cache修改为pack所在的cmsis-pack-manager的真实路径,但这样有风险

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐