名人堂再聚首 2023-02-16 13:02 采纳率: 79.2%
浏览 27
已结题

PIC单片机做IAP

大家好!

最近有个项目要在PIC18F45K80单片机上做在线编程,也就是常说的IAP,之前有做过STM32的IAP,PIC系列单片机的没有接触过,主要是这个单片机存储空间有点小,FLASH已经被程序用了80%了,而且也没有外部存储器,可能需要直接擦除原来的程序才能在线更新程序,有经验的朋友能否给个思路?谢谢了!

  • 写回答

3条回答 默认 最新

  • zmy1127 2023-02-16 14:35
    关注

    对于PIC18F45K80单片机的在线编程(IAP),有几种实现方法。以下是其中的一些:

    1.使用内部EEPROM:PIC18F45K80单片机具有内部EEPROM,可以使用EEPROM进行在线编程。EEPROM可以通过编程方式进行读/写,而不需要擦除整个FLASH。如果您的程序存储在FLASH中的某个区域中,可以使用EEPROM存储新程序的数据,然后将其加载到FLASH中。使用EEPROM进行在线编程的优点是,可以避免在更新程序时擦除整个FLASH的过程,因此可以节省时间。

    2.使用Bootloader:另一种常见的在线编程方法是使用Bootloader。Bootloader是一段特殊的程序,用于启动单片机并准备它进入在线编程模式。在进入在线编程模式后,Bootloader将读取新程序的数据,并将其写入FLASH中。使用Bootloader进行在线编程的优点是,它可以在不破坏现有程序的情况下,更新程序代码。

    3.直接擦除FLASH:如果您的程序存储在FLASH的整个空间中,或者存储在FLASH的第一个扇区中,那么在在线编程时,您可能需要擦除整个FLASH,然后将新程序加载到FLASH中。这种方法有一些缺点,因为擦除整个FLASH会导致程序数据的丢失,并且也需要花费更长的时间。

    需要注意的是,在实现在线编程时,必须确保保护程序的安全。因此,您可能需要在Bootloader或程序的代码中添加安全机制,例如密码验证或CRC校验,以确保只有授权的用户才能进行在线编程。

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

报告相同问题?

问题事件

  • 系统已结题 3月19日
  • 已采纳回答 3月11日
  • 创建了问题 2月16日

悬赏问题

  • ¥60 如何把照片修复成原始拍摄图
  • ¥80 Exited too quickly (process log may have details)
  • ¥15 爬知乎登录之后内容加载不出来
  • ¥15 怎么用protues测量通频带
  • ¥15 zepelin使用sparkInterpreter 异常
  • ¥15 paho mqtt 接收不到消息
  • ¥15 函数r关于两个分量y,z方向上的图像,分开画r随y的图像,r随z的图像
  • ¥15 如何用Matlab求Pearcey函数的数值积分?
  • ¥15 一个简单的函数定义问题,输出结果是相反的,怎么回事呢?
  • ¥15 页面加载报错,不知道怎么处理