Странное поведение STM32L152RB в разных партиях(?), какое значение _estack должно быть в ld скрипте?

Есть 2 платы, они электрически идентичны. Маркировки на чипах:
//4000
STM32L152 RBT6
GH24F VG
CHN GN 425

в другой
//3FFF
STM32L152 RBT6
GH244 VG
CHN GH 412

Прошивка пишется под линуксом на с++ и компилится с помощью GCC.
Что бы прошивка работала на первом в ld скрипте (взял здесь) параметр _estack = 0x20004000, но прошивка с такими параметрами не работает как надо (не работают порты GPIOC, но работает например USART на GPIOA и остальные пины) на втором чипе. Потом я где то наткнулся на чей то код для stm32l152 и там адрес был _estack = 0x20003FFF и с ним прошивка завелась. У меня нет идей почему так.

Утилита st-term из этого репо на обоих чипах выдаёт одинаково:
$ st-term
ST-Linky proof-of-concept terminal :: Created by Necromant for lulz
chip id: 0x416
core_id: 0x2ba01477
cpuid:impl_id = 0x41, variant = 0x2
cpuid:part = 0xc23, rev = 0
sram: 0x20000000 bytes @ 0x4000
stlinky magic not found in sram :(

//я её использовал для показа информации о чипе

Какую информацию еще добавить?
Подскажите где найти информацию по поводу адресации и почему так странно оно себя ведёт.
Спасибо.
  • Вопрос задан
  • 328 просмотров
Пригласить эксперта
Ответы на вопрос 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Надо смотреть, как именно символ _estack используется кодом.
Ищите объектник или либу со ссылкой на этот символ как на неопределённый и смотрите в исходник или дизассемблер.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы