柒壹漆 2024-05-27 09:30 采纳率: 100%
浏览 15
已结题

pic(dspic33)读保护有解吗

用PICkit3 Programmer读取一个pic的程序固件,如下:

img


这应该是读保护了吧,用什么办法能把固件提取出来吗

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-05-27 09:30
    关注

    引自免费微信小程序:皆我百晓生

    要解除DSPIF33的代码保护并提取固件,你需要通过特定的步骤和工具来进行操作。由于你已经使用了PICkit 3 Programmer,接下来我会提供一种可能的方法,但这可能会破坏你的设备,因为这涉及到对芯片进行编程,所以请谨慎操作。

    1. 理解配置寄存器: 在你提供的信息中,可以看到Code Protect配置选项为0043,这个值表示代码保护是启用的。在dsPIC33系列微控制器中,第0位(从右向左数)控制着代码保护功能。如果该位置1,则代码保护处于开启状态。

    2. 禁用代码保护: 要禁用代码保护,你需要将Code Protect寄存器中的第0位设置为0。这意味着你需要将Code Protect寄存器的值更改为0000

    3. 重新编程: 使用PICkit 3 Programmer或其他支持的编程工具,执行以下操作:

      • 配置工具以写入新的配置寄存器值。
      • Code Protect寄存器的新值(例如0x0000)写入到内存地址F80008处。
      • 如果成功,你应该能够在Code Protect行看到新值,确认代码保护已关闭。
      • 现在应该可以正常读取程序内存了,但在此之前,最好再次保存当前的配置寄存器备份以防意外。

    注意:此过程可能导致你的设备永久失去代码保护,因此在尝试之前一定要确保你了解风险,并且你有足够的权限和责任去执行这些操作。此外,不同的开发环境和工具可能有不同的界面和步骤,这里仅提供了基本的指导。

    下面是一个简单的伪代码示例,展示了如何修改配置寄存器值:

    # 假设pk3_programmer 是 PICkit 3 Programmer 的对象
    # 假设 new_code_protection_value = 0x0000 是新的配置寄存器值
    
    def disable_code_protection(pk3_programmer, new_code_protection_value):
        # 写入新的 Code Protect 寄存器值
        pk3_programmer.write_memory(0xF80008, new_code_protection_value)
    
    disable_code_protection(your_pk3_programmer_instance, 0x0000)
    

    请注意,上述代码并非实际可运行的代码,而是为了说明目的而编写的伪代码。你需要根据实际使用的编程工具和API来实现相应的操作。如果你不熟悉具体的编程工具和API,建议寻求专业人士的帮助,以免损坏你的硬件。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月4日
  • 已采纳回答 5月27日
  • 创建了问题 5月27日