Что-то непонятное происходит.
Сделал несколько экспериментов.
Первый через JLink
1. Через JFlash стираю всю флешку.
2. Через JFlash заливаю свой загрузчик.
3. В JFlash ставлю защиту от чтения (Target->Secure chip). Проверяю JFlash считать данные не может.
4. Через UART средствами своего загрузчика заливаю прошивку. Все работает.
Второй через STLink
1. В ST-Link utility стираю всю флешку.
2. Заливаю свой загрузчик.
3. Ставлю защиту от чтения Level 1. Загрузчик больше не подает признаков жизни.
Третий через ST-Link
1. В ST-Link utility стираю всю флешку.
2. Заливаю свой загрузчик.
3. Через UART заливаю прошивку. Все работает как надо
4. Ставлю защиту от чтения Level 1. Опять никаких признаков жизни.
JLink и ST-Link дали разные результаты и оба отличаются от того что я получил вчера. Как так?
Цитата
Так видимо вторичный загрузчик из ОЗУ работает...
Надо разбить и в ОЗУ копировать только ту часть, которая флеш пишет.
Я пользуюсь SPL библиотеками от ST. Я знаю все начнут тыкать пальцем. У меня с ней не бывало проблем. Мне казалось там были директивы для размещения функций записи в ОЗУ. Проверил их нет. Посмотрел в дебаггере адреса функций, они лежат во флеш. Кажется при этом были какие-то нюансы. Надо запрещать все прерывания когда функции записи лежат во флеш?
При старте загрузчик читает параметры из EEPROM. Может это вызывает HardFault при включенной защите от чтения? У меня нет вывода отладочной инфы в HardFault handler.
Цитата
CRC аппаратно считаете? Может, тактирование не разрешили?
Нет считаю программно. С CRC возникала проблема только когда включена защита от чтения. Да и ту сегодня уже не могу повторить.