ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
23 ноября
1322397 Топик полностью
RxTx (21.06.2023 06:39, просмотров: 187) ответил POV на В асме пока плаваю... вот есть такой переход на функцию инициализации файловой системы (с этим моментом косяк и связан).
Код 
0x08003FAE    MOVW        r0,#0x25B8
0x08003FB2    MOVT        r0,#0x2000     ;  Две эти команды загружают регистр r0 адресом 0x200025B8, (RAM начинается с 0x2000 0000)
0x0803FBB6 LDR r0,[r0,#0x00] ; Регистр r0 загружается из RAM, из ареса 0x200025BB
0x08003FB8 BLX r0 ; А далее вызывается (т.е. CALL) процедура по адресу r0

В RAM ячейке по адресу 0x200025B8 лежит адрес процедуры (указатель на функцию), оттуда считывается 0x00000000

(RAM в startup.s очищается)


В адрес 0x00000000 в зависимости от SYSCFG.MEM_MODE (регистр 2 бита) может мэппится 4 области 00: Main Flash, 01: System Flash, 10: FSMC, 11: Embedded SRAM

в момент сброса в биты этого регистра переписывается состояние BOOT,0 BOOT1 пинов микроконтроллера.

По коду

0x00000000 DD78   BLE  0x000000F4

не скажешь что это адекватный код для адреса 0x00000000

Либо 1. В ячейке 0x200025B8 должен быть не 0x00000000 и не должен переходить на 0x00000000

Либо 2. В адрес 0x00000000 смэплено не то.
См пины BOOT0, BOOT1 чтобы на них было адекватное, не висели в воздухе.

Спасибо, князь. Вы настоящий дворянин. И программист.