PIC单片机做IAP

大家好!

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

对于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校验,以确保只有授权的用户才能进行在线编程。

该回答引用Chatgpt
在PIC18F45K80单片机上进行在线编程,需要注意以下几点:

1、确认芯片支持IAP
首先需要确认芯片是否支持IAP,因为不是所有的单片机都支持在线编程。可以查看单片机的数据手册或者参考资料。

2、使用IAP库
在确定芯片支持IAP之后,需要使用IAP库进行在线编程。这个库通常由芯片厂商提供,也可以在第三方网站上下载。使用IAP库可以使编程变得更加简单和安全,可以避免一些错误和问题。

3、调整程序大小
因为存储空间有限,需要确保程序的大小不超过FLASH的可用空间。如果程序大小超过FLASH的可用空间,需要对程序进行精简或者采用其他方法进行优化。

4、擦除FLASH
如果需要更新程序,需要首先擦除FLASH。因为擦除FLASH会清除所有数据,包括程序和数据,所以需要确保程序和数据已经备份。在擦除FLASH之前需要先将所有引脚配置为输入,防止在擦除FLASH过程中引脚状态的变化对芯片造成影响。

5、在线更新程序
在擦除FLASH之后,可以进行在线更新程序。更新程序可以通过串口或者其他方式进行。在更新程序之后,需要重新配置引脚,并重启芯片,使得更新后的程序生效。

需要注意的是,在线编程是一项非常复杂和风险较高的操作,需要谨慎操作。建议在进行在线编程之前,进行充分的测试和备份。同时,也建议在更新程序之前,先进行仿真或者模拟,以确保程序的正确性和稳定性。

谢谢大家提供的思路,我刚在Microchip的官方下载了一个使用Bootloader的方式,还在研究中,有不懂再来请教大家!