Przy uruchamianiu funkcji pomiędzy FLASH i RAM w procku STM32F103 linker dodaje procedury skoku pomiędzy pamięciami swoje w trakcie linkowania. Procek chodzi tylko w trybie trumb ale procedury dodawane są z wykorzystywaniem rozkazów arm.
W tym momencie przy wywołaniu takiego skoku dostajemy HardFault-a.
dla przykładu
fragment z pliku *.list
20004420 <__display_screen_set_display_function__veneer>:
20004420: e51ff004 ldr pc, [pc, #-4] ; 20004424 <__display_data_get_temp_veneer>
20004424: 080002f8 .word 0x080002f8
a tak pokazuje debuger
20004420: 0x04f01fe5 ; <UNDEFINED> instruction: 0xf004e51f
20004424: 0x0000f802 lsls r0, r7, #11
20004426: 0x00000008 lsrs r0, r0, #32 => jmp 0x080002F8
nie pomaga włączanie podczas linkowania -thumb ani -mthumb-interwork.
nie pomaga dołożenie swoich procedur venner, linker ich nie widzi.
Z góry dzięki za pomoc.
W tym momencie przy wywołaniu takiego skoku dostajemy HardFault-a.
dla przykładu
fragment z pliku *.list
20004420 <__display_screen_set_display_function__veneer>:
20004420: e51ff004 ldr pc, [pc, #-4] ; 20004424 <__display_data_get_temp_veneer>
20004424: 080002f8 .word 0x080002f8
a tak pokazuje debuger
20004420: 0x04f01fe5 ; <UNDEFINED> instruction: 0xf004e51f
20004424: 0x0000f802 lsls r0, r7, #11
20004426: 0x00000008 lsrs r0, r0, #32 => jmp 0x080002F8
nie pomaga włączanie podczas linkowania -thumb ani -mthumb-interwork.
nie pomaga dołożenie swoich procedur venner, linker ich nie widzi.
Z góry dzięki za pomoc.