This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

IAP checksum read

Hi,

I'm using the P89LPC932A1 and attempting to read the global checksum using IAP during normal program execution. I have used this knowledgebase article as my guide:

http://www.keil.com/support/docs/2554.htm

So basically, I added this function to my code:

long unsigned IAP_ReadGlobalCRC (void)  {
  ACC = 6;                                          // MOV  A,#06H
  return ((unsigned char (code *)(void)) 0xFF03)(); // LJMP 0FF03H
}

As you can see, I changed the IAP vector from FF00 to FF03, which is what it should be. When I run the code on a real part, I do not get what I expect to get back. I generally receive back something like 0x0000000056. This is not the correct global checksum. Am I missing something? Thanks, Phil

Parents
  • Ouch. Didn't spot this. I think this knowledgebase article has a typo:

    long unsigned IAP_ReadGlobalCRC (void)
    
    should be
    
    unsigned long IAP_ReadGlobalCRC (void)
    

    After chaning, the code looks like it compiles correctly to:

                 ; FUNCTION IAP_ReadGlobalCRC (BEGIN)
                                               ; SOURCE LINE # 80
                                               ; SOURCE LINE # 81
                                               ; SOURCE LINE # 82
    0000 7406              MOV     A,#06H
                                               ; SOURCE LINE # 83
    0002 12FF03            LCALL   0FF03H
                                               ; SOURCE LINE # 84
    0005         ?C0007:
    0005 22                RET
                 ; FUNCTION IAP_ReadGlobalCRC (END)
    

Reply
  • Ouch. Didn't spot this. I think this knowledgebase article has a typo:

    long unsigned IAP_ReadGlobalCRC (void)
    
    should be
    
    unsigned long IAP_ReadGlobalCRC (void)
    

    After chaning, the code looks like it compiles correctly to:

                 ; FUNCTION IAP_ReadGlobalCRC (BEGIN)
                                               ; SOURCE LINE # 80
                                               ; SOURCE LINE # 81
                                               ; SOURCE LINE # 82
    0000 7406              MOV     A,#06H
                                               ; SOURCE LINE # 83
    0002 12FF03            LCALL   0FF03H
                                               ; SOURCE LINE # 84
    0005         ?C0007:
    0005 22                RET
                 ; FUNCTION IAP_ReadGlobalCRC (END)
    

Children
No data