Вот пример структуры, которая именно там и расположена.
Код
volatile PASSKEY_CONTEXT pass __attribute__((section(".ARM.__at_0x72500"))) =
{
.passkey_length = 6, .passkey = "123456",
};
{
.passkey_length = 6, .passkey = "123456",
};
Теперь бутлоадер при обновлении эту область памяти не перетирает. Данные сохраняются.
Но замечена одна особенность, при генерации прошивки, добавляется после этой структуры еще кусок кода в 40 кБ. Если прошивка сильно отличается, то этот код тоже изменяется. И получается, что обновляется прошивка, а в конце памяти этот кусок не обновляется. Результат- проект падает и перезагружается.
Приведу сгенерированный .hex
Код
:102500000631323334353600000000000000000090
:1025100000000000011022011A4002B11BFFFF144D
:10252000016194618A028B893D0C012E0C101818F0
:1025300018122901014E1220027540C490D00314D4
:08254000E136022303FF000055
:040000050001F20103
:00000001FF
:1025100000000000011022011A4002B11BFFFF144D
:10252000016194618A028B893D0C012E0C101818F0
:1025300018122901014E1220027540C490D00314D4
:08254000E136022303FF000055
:040000050001F20103
:00000001FF
как видите, четко видна расположенная структура, но еще какой-то код. В дисассемблере кейла- это какие-то инструкции. Что-то пишет, копирует, сравнивает. В исходниках это так и не нашел.
Как решить задачу?