I am using the SiLabs bootloader (from AN200) along with my application which is running Keil's RTX tiny. I have been able to get the test application to hand over from the bootloader on my custom board. I have been able to get the bootloader to use the latest USBXpress libraries and hand over to my application. I have been also able to get the timer 0 interrupt remapped to the application for handling.
The problem I am having is that the application software (running at address 0x1200 now) is not able to start RTX tasks -- other than task 0, my initialization task. The application appears to be stuck in os_create.A51, more specifically the following code loop (starting at line 89):
?C0017: MOV A,R5 XRL A,R1 JZ ?C0018 ; while (p1 != p2) { ; p1++; ; DBYTE[p1-2] = DBYTE[p1]; ; } INC R1 MOV A,@R1 DEC R1 DEC R1 $IF (CODE_BANKING) DEC R1 $ENDIF MOV @R1,A $IF (CODE_BANKING) INC R1 $ENDIF INC R1 INC R1 SJMP ?C0017
The code runs fine when programmed without the bootloader (from address 0). Not sure why the tasks are not being created properly.
Any help is greatly appreciated.
Thanks.