Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: IAR AVR Блокировка ресурсов из текста программы
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
IJAR
Мне в программе необходимо запретить компилятору использование
части RAM и FLASH. "Рихтуя" соответствующий .xls это легко сделать,
НО хотелось бы это сделать из текста программы.
ТИпа:
#pragma ram_protected=0x1000-0x10FF //понятно что именно такой директивы нет

Возможно ли такое?
Сергей Борщ
Цитата(IJAR @ Sep 22 2008, 12:11) *
#pragma ram_protected=0x1000-0x10FF //понятно что именно такой директивы нет
Объясните подробнее, как эта ваша прагма должна влиять на поведение компилятора?
Код
#pragma ram_protected=0x1000-0x10FF
void test()
{
    uint8_t *pointer = (uint8_t *)0xFFF;
    uint8_t Tmp = *(pointer + 1); // как компилятор отследит такое?
}
Может вам хватит #pragma codeseg, #pragma dataseg, #pragma location?
IgorKossak
Распределением ресурсов по адресам занимается как раз линкер, а не компилятор. Ему и надо давать такие указания, в частности, через .xcl файл.
IJAR
Цитата(Сергей Борщ @ Sep 22 2008, 13:32) *
Объясните подробнее, как эта ваша прагма должна влиять на поведение компилятора?
Код
#pragma ram_protected=0x1000-0x10FF
void test()
{
    uint8_t *pointer = (uint8_t *)0xFFF;
    uint8_t Tmp = *(pointer + 1); // как компилятор отследит такое?
}
Может вам хватит #pragma codeseg, #pragma dataseg, #pragma location?


Хотелось бы сказать линкеру из компилятора:
"Вот в эту область: 0x1000-0x10FF" ты мои переменные не пытайся
положить", но это скорее всего не осуществимо.
Видимо придется в комментариях к проекту записывать о необходимости корректировки
.xls файла
Dog Pawlowa
Цитата(IJAR @ Sep 22 2008, 13:14) *
Видимо придется в комментариях к проекту записывать о необходимости корректировки
.xls файла

Кто эти комментарии читать будет?
Копируйте xls в рабочий директорий и включайте в систему контроля версий.
IJAR
Цитата(Dog Pawlowa @ Sep 22 2008, 14:23) *
Кто эти комментарии читать будет?
Копируйте xls в рабочий директорий и включайте в систему контроля версий.


Видимо придется сделать хедер типа:

__no_init char protected_RAM[50] &(RAMEND-50+1); //защищенная RAM
и что-нибудь под FLASH в том же духе
и включать всю эту байду в свой прект

или, как Вы предлагаете, использовать с .xls




".... и тучи повисли косыми сетями
и кончился месяц под номером 8"
IgorKossak
Цитата(IJAR @ Sep 22 2008, 13:47) *
Видимо придется сделать хедер типа:

__no_init char protected_RAM[50] &(RAMEND-50+1); //защищенная RAM

И, опять же, снабдить программу кучей комментариев о недопустимости обращения к этому массиву.
Не логично создавать ненужный обьект. Тем более, что всё можно сделать автоматически.
Единственный, на мой взгляд, выход в этом случае это указать линкеру список разрешённых диапазонов адресов для переменных (насколько я знаю, диапазон запрещённых адресов указать нельзя).
Да и в чём, собственно, проблема, чтобы держать командный файл линкера в папке с проектом (это я по поводу необходимости каких-то комментариев к проекту)?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.