реклама на сайте
подробности

 
 
> Запретить Keil генерить кусок кода в определенной памяти .hex, сумбурно, но подробнее внутри
Метценгерштейн
сообщение May 11 2018, 07:39
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



Пишу под nrf52. Сделал бутлоадер. Но есть задача- при перезагрузке софта сохранять данные. По описанию, данные надо располагать с определенного адреса.
Вот пример структуры, которая именно там и расположена.
Код
volatile PASSKEY_CONTEXT pass __attribute__((section(".ARM.__at_0x72500"))) =
{
    .passkey_length             = 6,     .passkey                 = "123456",
};


Теперь бутлоадер при обновлении эту область памяти не перетирает. Данные сохраняются.

Но замечена одна особенность, при генерации прошивки, добавляется после этой структуры еще кусок кода в 40 кБ. Если прошивка сильно отличается, то этот код тоже изменяется. И получается, что обновляется прошивка, а в конце памяти этот кусок не обновляется. Результат- проект падает и перезагружается.

Приведу сгенерированный .hex
Код
:102500000631323334353600000000000000000090
:1025100000000000011022011A4002B11BFFFF144D
:10252000016194618A028B893D0C012E0C101818F0
:1025300018122901014E1220027540C490D00314D4
:08254000E136022303FF000055
:040000050001F20103
:00000001FF


как видите, четко видна расположенная структура, но еще какой-то код. В дисассемблере кейла- это какие-то инструкции. Что-то пишет, копирует, сравнивает. В исходниках это так и не нашел.

Как решить задачу?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Метценгерштейн
сообщение May 11 2018, 13:04
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



ходил по ссылке. Сделал структуру неинициализированной по определенному адресу. Ничего не дало. Возможно, был скрытый смысл в той ссылке,но я не уловил его.

тут еще интересное- прошивка на STM с тем же расположением структуры(подальше от кода) дает другую прошивку.
Код
:0200000400807A
:105500000631323334353600000000000000000060
:045510000000000097
:020000040800F2
:1000000010040020010100080B0A0008030A000880
:10001000070A000849010008550B0008000000000D
:10002000000000000000000000000000710A00084D
:100030004D01000800000000450A0008730A00088E
:100040001B0100081B0100081B0100081B01000820
:100050001B0100081B0100081B0100081B01000810
:100060001B0100081B0100081B0100081B01000800
:100070001B0100081B0100081B0100081B010008F0
:100080001B0100081B0100081B0100081B010008E0
:100090001B0100081B0100081B0100081B010008D0
:1000A0001B0100081B0100081B0100081B010008C0
:1000B0001B0100081B0100081B0100081B010008B0
:1000C0001B0100081B0100081B0100081B010008A0
:1000D0001B0100081B0100081B0100081B01000890
:1000E0001B0100081B0100081B010008DFF80CD0F1
:1000F00000F018F8004800477B0B000810040020AF


Видим, что в начале он расположил структуру и потом уже код. Ничего сплошными нулями он не отделял.
Реально ли так же кейл настроить на нрф?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Метценгерштейн   Запретить Keil генерить кусок кода в определенной памяти .hex   May 11 2018, 07:39
- - aaarrr   Цитата(Метценгерштейн @ May 11 2018, 10:3...   May 11 2018, 08:00
- - Метценгерштейн   в мар файле особо ничего подобного нет. Может не т...   May 11 2018, 08:08
|- - aaarrr   Цитата(Метценгерштейн @ May 11 2018, 11:0...   May 11 2018, 08:19
- - Метценгерштейн   в личке.   May 11 2018, 08:45
- - Метценгерштейн   Я вообще корректно структуру располагаю по адресу?...   May 11 2018, 11:25
|- - scifi   Цитата(Метценгерштейн @ May 11 2018, 14:2...   May 11 2018, 11:31
- - Метценгерштейн   У меня есть данные, которые не должны быть затерты...   May 11 2018, 11:44
|- - scifi   Цитата(Метценгерштейн @ May 11 2018, 14:4...   May 11 2018, 12:01
- - Метценгерштейн   Кодtypedef struct { uint8_t passkey_length; co...   May 11 2018, 12:20
|- - Метценгерштейн   Цитата(Метценгерштейн @ May 11 2018, 15:2...   May 11 2018, 12:43
- - VladislavS   Разместите структуру в неинициализированной секции...   May 11 2018, 12:24
- - VladislavS   А секцию по определённому адресу разместить не суд...   May 11 2018, 12:46
- - Метценгерштейн   можете пример привести? Я вроде так и делал у себя...   May 11 2018, 12:51
- - VladislavS   Вы по ссылке то ходили что я привёл?   May 11 2018, 12:53
- - VladislavS   Вы по ссылке то ходили что я привёл?   May 11 2018, 12:53
- - VladislavS   Скатер-файл мы, я так полагаю, не увидим сегодня?   May 11 2018, 13:08
- - Метценгерштейн   https://drive.google.com/open?id=1dnGRCJcw3...NJ0h...   May 11 2018, 13:16
- - VladislavS   Вы издеваетесь? Вы его должны сами написать и испо...   May 11 2018, 13:21
- - Метценгерштейн   Вот честно, скатером никогда не пользовался. Про н...   May 11 2018, 13:24
|- - VladislavS   Цитата(Метценгерштейн @ May 11 2018, 16:2...   May 11 2018, 13:34
- - Метценгерштейн   Кстати, хорошо что подсказали про него. Изменил ра...   May 11 2018, 13:36
- - ViKo   http://infocenter.arm.com/help/topic/com.a..._user...   May 11 2018, 20:20
- - Метценгерштейн   Да, все заработало как надо. Тут вот еще момент- э...   May 15 2018, 13:10


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th June 2025 - 02:09
Рейтинг@Mail.ru


Страница сгенерированна за 0.01344 секунд с 7
ELECTRONIX ©2004-2016