大家好!
最近有个项目要在PIC18F45K80单片机上做在线编程,也就是常说的IAP,之前有做过STM32的IAP,PIC系列单片机的没有接触过,主要是这个单片机存储空间有点小,FLASH已经被程序用了80%了,而且也没有外部存储器,可能需要直接擦除原来的程序才能在线更新程序,有经验的朋友能否给个思路?谢谢了!
大家好!
最近有个项目要在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校验,以确保只有授权的用户才能进行在线编程。