|
организовать сегмент во flash, читал-читал - ничего не понял... |
|
|
|
Jan 19 2011, 15:59
|
Участник

Группа: Участник
Сообщений: 56
Регистрация: 29-09-10
Пользователь №: 59 820

|
Прочитал, как хранить данные во fash по определённому адресу с помощью директивы __location. Проблема возникла в том, что по этому адресу размещается только константа, следующая непосредственно за директивой. Остальные же линковщик распихивает по своему разумению. Можно ли и как организовать сегмент в flash по определённому адресу, чтобы в нём лежала группа переменных? Читал-читал - ничего не понял... #pragma location=0x8000 const unsigned char buf[5]={0,0,0,0,0}; - вот эта лежит на 8000 const unsigned char buf1[10]={48,49,50,51,52,53,54,55,56,57}; - а все ниже где-то в другом месте. const unsigned char buf2[8]={0,1,2,3,4,5,6,7};
|
|
|
|
|
 |
Ответов
|
Jan 20 2011, 11:20
|
Участник

Группа: Участник
Сообщений: 56
Регистрация: 29-09-10
Пользователь №: 59 820

|
Цитата(rezident @ Jan 19 2011, 19:23)  Дело в том, что эта прагма действиует только на одно последующее объявление переменной или константы. Чтобы не заморачиваться с кучей строк прагмы и ручным вычислением адресов, объедините свои константы в структуру. А прагма будет действовать на всю структуру? Хотя не очень охота возиться с длинными записями типа "структура.элемент". Удобнее было бы организовать сегмент, указать адрес его размещения и размер (например, 512 байт, чтобы если тереть, так уж всё!), а при объявлении констант указывать, в каком сегменте их разместить. Как-то так. Может, черканёте строчки три, как это сделать? Я чего-то не нашёл примеров. В этом сегменте я буду держать переменные (параметры), которые могут иногда изменяться (настройки там всякие...). Кстати ещё вопросик. Тут один товарисч из scanti сказал, что время непрерывной записи сегмента ограничено. Долгое стояние в этом режиме приводит к развалу начала записываемого сектора, т.к. нельзя долго держать включенным генератор напряжения записи. Я так понимаю, это определяет минимальную частоту MCLK при этой процедуре. Не подскажите, какую величину имеет это время? Он навскидку не смог сказать.
|
|
|
|
Сообщений в этой теме
1921 организовать сегмент во flash Jan 19 2011, 15:59  rezident Цитата(1921 @ Jan 20 2011, 16:20) А прагм... Jan 20 2011, 12:59 1921 Цитата(rezident @ Jan 19 2011, 19:23) Дел... Jan 20 2011, 14:15 MrYuran По-моему, есть ещё #pragma section или что-то навр... Jan 20 2011, 11:41 Сергей Борщ QUOTE (MrYuran @ Jan 20 2011, 13:41) Вот ... Jan 20 2011, 11:51  MrYuran Цитата(Сергей Борщ @ Jan 20 2011, 14:51) ... Jan 20 2011, 12:00   1921 Видите ли, боюсь, но память info меня не устроит. ... Jan 20 2011, 12:55 jorikdima А так:
Кодtypedef struct
{
unsigned char buf... Jan 20 2011, 14:20 1921 Цитата(jorikdima @ Jan 20 2011, 17:20) А ... Jan 20 2011, 14:25 rezident Вот так попробуйте
Кодtypedef struct MyPar_t
{
u... Jan 20 2011, 14:27 1921 будет warning с предупреждением о том, что вы две ... Jan 20 2011, 14:40 rezident А блин! там const лишний. Извиняюсь. Вот так в... Jan 20 2011, 14:42 1921 Цитата(rezident @ Jan 20 2011, 17:42) А б... Jan 20 2011, 14:53  rezident Цитата(1921 @ Jan 20 2011, 19:53) То же с... Jan 20 2011, 14:57   1921 Цитата(rezident @ Jan 20 2011, 17:57) Я п... Jan 20 2011, 15:02    rezident Цитата(1921 @ Jan 20 2011, 20:02) Провери... Jan 20 2011, 15:19     1921 Цитата(rezident @ Jan 20 2011, 18:19) Уст... Jan 20 2011, 15:31 rezident Перечитайте еще раз сообщение №13. Я там пояснил д... Jan 20 2011, 15:35 =DS= В последних версиях компилятора введен специальный... Jan 21 2011, 19:17  1921 Цитата(=DS= @ Jan 21 2011, 22:17) В после... Jan 31 2011, 10:12
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|