bogdanov83 0 8 ноября, 2010 Опубликовано 8 ноября, 2010 · Жалоба Добрый день. Может кто поделить знаниями. Есть ли в копиляторе от Keil дериктива задания адресса в памяти для данных. Задача вот в чем: у меня данные храняться во флеш. Часть из этих данных может меняться, т. е. перепрошиваеться при помощи IAP, а перед прошикой надо очистить сектор, задаваемый номером. Так вот вопрос: как разнести по отдельным секторам данные, которые константы и данные, которые перепрошиваються. И если это актуально использую кристал LPC2368. Заранее благодарен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nixon 4 8 ноября, 2010 Опубликовано 8 ноября, 2010 · Жалоба Это для отдельной переменной long CRP __attribute__ ((at(0x1FC))) = 0x87654321; В общем же случае лучше работать через скаттер-файл. Создать необходимые секции и там размещать переменные long DATA __attribute__ ((section ("ROM3"))) = 0x123; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bogdanov83 0 8 ноября, 2010 Опубликовано 8 ноября, 2010 · Жалоба u32 CRP __attribute__ ((at(0x1FC))) = 0x87654321; А можно растоковать что здесь написано? :smile3046: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nixon 4 8 ноября, 2010 Опубликовано 8 ноября, 2010 · Жалоба Определяется переменная CRP и размещается по адресу 0x1FC. Во втором примере определяется переменная DATA и размещается в секции ROM3. Секцию ROM3 определяете в скаттер-файле или графически в настройках проекта. Читайте help к keil'у. К компилятору и линкеру. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bogdanov83 0 8 ноября, 2010 Опубликовано 8 ноября, 2010 · Жалоба Спасибо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 8 ноября, 2010 Опубликовано 8 ноября, 2010 · Жалоба Другой вариант: не париться с линкером, а работать с этими данными при помощи указателей. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 143 8 ноября, 2010 Опубликовано 8 ноября, 2010 · Жалоба Другой вариант: не париться с линкером, а работать с этими данными при помощи указателей.Шикарный совет. И париться с учетом размеров данных в уме - чтобы одна переменная частично или полностью случайно не оказалать на месте другой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nixon 4 8 ноября, 2010 Опубликовано 8 ноября, 2010 · Жалоба Несомненно, принцип работы с указателями будет более переносим, но удобства он не добавляет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bogdanov83 0 22 ноября, 2010 Опубликовано 22 ноября, 2010 · Жалоба Может быть кто нибудь поделиться примерами для разных способов? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 23 ноября, 2010 Опубликовано 23 ноября, 2010 · Жалоба Шикарный совет. И париться с учетом размеров данных в уме - чтобы одна переменная частично или полностью случайно не оказалать на месте другой. А что, с помощью __attribute__ ((at())) невозможно разместить переменные в перекрывающихся областях? Проверил сам - нельзя! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
psL 0 25 ноября, 2010 Опубликовано 25 ноября, 2010 · Жалоба Может быть кто нибудь поделиться примерами для разных способов? Например здесь: http://electronix.ru/forum/index.php?showt...=77956&st=0 А что, с помощью __attribute__ ((at())) невозможно разместить переменные в перекрывающихся областях? А что такое "перекрывающиеся области"? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 25 ноября, 2010 Опубликовано 25 ноября, 2010 · Жалоба А что такое "перекрывающиеся области"? Имел в виду то, о чем говорил Сергей Борщ Например uint64_t LL __attribute__ ((at(0x20001000)) uint32_t L __attribute__ ((at(0x20001004)) Компилятор выдаст ошибку. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться