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

 
 
> ошибки в компиляции в EWARM 5.20, Error[Lp011], Error[Lp003]
buba
сообщение Apr 1 2010, 09:10
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 24-07-07
Из: Ташкент
Пользователь №: 29 326



Привет всем!

Работаю с LPC. Пытаюсь выделить сектор или блок для переменной (на неё есть ссылка в неперезаписываемой ROM) в памяти RAM, адрес которой 0x400047e3, выделяю даже несколько десятков байт как массив. Но в ответ от компилятора получаю ошибку:
Error[Lp011]: section placement failed: unable to place sections/blocks with a total estimated minimum size of 0x20 bytes in
<[mem:0x4000-mem:0x40ff]> (total uncommitted space 0xe0)

Пробовал: do not initialize { section DUMMY_SEC };
- не помогает.


Когда же пытаюсь выделить отдельный регион (типа RAM2_region) для моей переменной:
define region RAM2_region = mem:[from 0x40004700 to 0x400047FF];
...
place in RAM2_region { readwrite section DUMMY_SEC };

и при этом объединить основной регион через Merging different areas into one region:
define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to 0x400046FF]
- [from 0x40004800 to __ICFEDIT_region_RAM_end__];

то ругается ошибкой: Error[Lc003]: expected ]


Как правильно выделить память для моей переменной по необходимому мне адресу, чтоб компулятор не ругался?
Уже думаю искать новую версию EWARM. Может у кого-н есть патч к версии 5.20?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
bseyur
сообщение Apr 2 2010, 02:41
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 8-01-07
Из: Томск
Пользователь №: 24 208



Во-первых, это ругается не компилятор, а линкер...
Конкретно вот эта ошибка:
Цитата(buba @ Apr 1 2010, 16:10) *
Error[Lp011]: section placement failed: unable to place sections/blocks with a total estimated minimum size of 0x20 bytes in
<[mem:0x4000-mem:0x40ff]> (total uncommitted space 0xe0)

указывает на то, что область памяти уже чем-то занята.

Для примера. Размещение ячейки CRP по заданному адресу:

define symbol CRPCELL_ADDRESS = 0x000002FC;
......
place at address mem:CRPCELL_ADDRESS { readonly section CODEREADPROT_CELL };
Go to the top of the page
 
+Quote Post
buba
сообщение Apr 2 2010, 04:53
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 24-07-07
Из: Ташкент
Пользователь №: 29 326



Цитата(bseyur @ Apr 2 2010, 07:41) *
указывает на то, что область памяти уже чем-то занята.


Да, так и есть. В этом и трудность. Я хочу жестко присвоить адрес в RAM для моей переменной, несмотря на то что адрес перекрывается остальной совокупностью переменных. Как этого добиться с помощью секторов я пока не знаю.
Возможно приемлемо решение, когда переменным присваивается адрес в памяти по ходу их объявления в коде. Тогда новые переменные будут добавляться в конец области данных RAM. На данный момент компилятор сортирует их в памяти по размеру.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 2 2010, 09:28
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(buba @ Apr 2 2010, 07:53) *
Я хочу жестко присвоить адрес в RAM для моей переменной, несмотря...

О линкере Вам уже рассказали. Степень уродства в таком подходе к делу, Вы по крайней мере на шкуре, должны были понять... Осталось рассказать ЗАЧЕМ?! все это?


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
buba
сообщение Apr 2 2010, 10:41
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 24-07-07
Из: Ташкент
Пользователь №: 29 326



Цитата(zltigo @ Apr 2 2010, 14:28) *
О линкере Вам уже рассказали. Степень уродства в таком подходе к делу, Вы по крайней мере на шкуре, должны были понять... Осталось рассказать ЗАЧЕМ?! все это?


Степень уродства я понимаю. Устройство само по себе готово и стоит уже у заказчика, и платы вернуть проблематично, хотя обновлять прошивку необходимо. А в загрузочном коде (неперезаписываемая область памяти LPC) есть ссылка на переменную по адресу о котором я писал (my fault). Поэтому я хотел забронировать этот адрес, чтобы на его месте не появлялась левая переменная, которая будет пороться при добавлении новых переменных в проекте.

Спасибо bseyur! Я о вашей идее уже думал, но не хотел трогать остальные переменные smile.gif Этот вариант годится, хотя он кривоват.
Go to the top of the page
 
+Quote Post



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

 


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


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