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

 
 
> Размещение массива в памяти программ, с последующим редактированием hex при перепрошивке
skyled
сообщение Jan 12 2011, 05:20
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 217
Регистрация: 11-06-10
Пользователь №: 57 868



Подскажите пожалуйста такую штуку. Мне нужно разместить 600 шт констант в памяти программ (t2313). В дальнейшем по необходимости редактировать непосредственно сам скомпилированный hex меняя значения констант, но без перекомпиляции. Редактировать и прошивать будет специальная программа. Собственно вопрос как адресно разместить константы в памяти программ чтобы точно знать какой байт в каком случае менять? Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
alexeyv
сообщение Jan 12 2011, 08:52
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 298
Регистрация: 26-01-09
Из: Пермь
Пользователь №: 43 940



Цитата
Где можно почитать про эти bin?


Здеся!!!
Бинарный файл в общем случае - это последовательность произвольных (а не только текстовых) символов.
В нашем случае - это образ (дамп) flash-памяти МК, который содержит исполняемый код (машинные инструкции) и данные
Конвертируется из hex-файла специальными утилитами. одну я уже упоминал - hex2bin.exe. В инете их можно найти кучу. Я в Дельфях сделал свою примерно за полтора часа.
Любой программатор программирует МК БИНАРНЫМИ данными, а не в HEX'овом виде, перевод осуществляется перед прошивкой.
Проще говоря HEX-формат - это текстовая запись любых бинарных данных в текстовом виде

Например -
:103510009AE010929E0A019690939B0A80939A0AD1
: - обязательный признак
10 - длина данных =16 (в 16-тиричном виде)
3510 - смещение
00 - команда что строка с данными(еще есть 01,02,03,04)
9AE010929E0A019690939B0A80939A0A - 16 байт полезной нагрузки
D1 - контрольная сумма

Насчет привязки объекта в WinAVR

// привязка секции (имени) к определенному адресу
// выполняется в Настройках Проекта => Custom Options => Linker Options

-Wl,--section-start=.TableCoef=0x0800
// адрес в БАйтах


// привязка объекта к фиксированной по адресу секции (имени)

ubyte tcoef2[2] __attribute__((section(".TableCoef"))) =
{
// #include "coef2.h"
};

// взятие адреса
register ubyte *address ;// asm("r14");
address = (ubyte*)tcoef2;
bplis = pgm_read_byte( address++);

// содержание coef2.h :

0x05,0x09,0xEB,0xA5,0xDD,0xCA // comment
,0x05,0x08,0x22,0xE2,0x2A,0xAB
,0x09,0x00,0x08,0x00,0x80,0x00, 0x81,0x08,0x88,0x00

У меня использовался массив, но можно сделать и набор любых объектов
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- skyled   Размещение массива в памяти программ   Jan 12 2011, 05:20
- - SasaVitebsk   Для этого есть несколько вариантов. 1. Вы вообще н...   Jan 12 2011, 05:41
- - skyled   Файл map идея хорошая. Только чтобы не получилось,...   Jan 12 2011, 05:45
|- - kolobok0   Цитата(skyled @ Jan 12 2011, 11:45) ...чт...   Jan 12 2011, 06:34
- - alexeyv   Цитатапо необходимости редактировать непосредствен...   Jan 12 2011, 06:26
|- - 777777   Цитата(alexeyv @ Jan 12 2011, 12:26) Есть...   Jan 12 2011, 08:59
- - GDI   Цитата(skyled @ Jan 12 2011, 11:20) Редак...   Jan 12 2011, 07:11
- - skyled   ЦитатаЛучше всего менять не в Hex-файле, а в сконв...   Jan 12 2011, 07:11
- - skyled   Цитата22.18.3.1 prog_char Type of a "char...   Jan 12 2011, 08:41
- - alexeyv   ЦитатаВсе программы уже написаны до нас У Вас ест...   Jan 12 2011, 09:03
|- - 777777   Цитата(alexeyv @ Jan 12 2011, 15:03) У Ва...   Jan 12 2011, 09:07
- - skyled   Я объявил в WinAVR массив и посмотрел как располож...   Jan 12 2011, 09:33
- - alexeyv   ЦитатаВо-первых можно заставить купить вашего рабо...   Jan 12 2011, 09:51
|- - 777777   Цитата(alexeyv @ Jan 12 2011, 15:51) С EE...   Jan 12 2011, 10:22
- - skyled   Предположим я преобразую hex в бинарный вид. Как м...   Jan 12 2011, 10:00
|- - zombi   Цитата(skyled @ Jan 12 2011, 16:00) Предп...   Jan 12 2011, 11:01
- - skyled   ЦитатаЗачем искать? Изначально в исходнике размест...   Jan 12 2011, 11:39
|- - zombi   Цитата(skyled @ Jan 12 2011, 17:39) Ну во...   Jan 12 2011, 11:53
|- - demiurg_spb   есть прекрасная тулза уже в составе WinAVR - srec_...   Jan 12 2011, 12:16
|- - skyled   Цитата(zombi @ Jan 12 2011, 17:53) По как...   Jan 12 2011, 12:25
|- - zombi   Цитата(skyled @ Jan 12 2011, 18:25) bin в...   Jan 12 2011, 12:33
- - alexeyv   Насчет Hex-редактора. Если Вы открыли хекс-файл в ...   Jan 13 2011, 00:17
|- - 777777   Цитата(alexeyv @ Jan 13 2011, 06:17) Если...   Jan 13 2011, 04:20
- - skyled   ЦитатаНо я понял, что изменения в бинарнике будет ...   Jan 13 2011, 04:50
- - alexeyv   ЦитатаКак массив ее перетрет, если он по другому а...   Jan 13 2011, 05:05
|- - 777777   Цитата(alexeyv @ Jan 13 2011, 11:05) А Вы...   Jan 13 2011, 05:12
- - alexeyv   ЦитатаНе знаю как насчет любого, но в AVRStudio ес...   Jan 13 2011, 05:40
- - GDI   Что мешает сперва стереть всё, а потом зашить прог...   Jan 13 2011, 06:09
- - skyled   Ну дак так ибудет. Прога с массивом в ее составе л...   Jan 13 2011, 06:45


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

 


RSS Текстовая версия Сейчас: 30th July 2025 - 23:04
Рейтинг@Mail.ru


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