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

 
 
> LPCXpresso, внешняя RAM
_Mikhail_
сообщение Sep 18 2015, 06:24
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 55
Регистрация: 19-04-11
Пользователь №: 64 477



Может кто подскажет, как сказать линковщику, что есть внешняя RAM?
Использую LPCXpresso 7.9.0.
В настройках проекта (MCU setting) добавил соответствующую секцию, но не помогает.
При линковке сообщение, что не хватает внутреннего ОЗУ... Во внешнее линковать и не пытается.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Petka
сообщение Sep 18 2015, 09:52
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



Цитата(_Mikhail_ @ Sep 18 2015, 09:24) *
Может кто подскажет, как сказать линковщику, что есть внешняя RAM?
Использую LPCXpresso 7.9.0.
В настройках проекта (MCU setting) добавил соответствующую секцию, но не помогает.
При линковке сообщение, что не хватает внутреннего ОЗУ... Во внешнее линковать и не пытается.

Гуглить "скрипт линкера".
Go to the top of the page
 
+Quote Post
_Mikhail_
сообщение Sep 18 2015, 10:27
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 55
Регистрация: 19-04-11
Пользователь №: 64 477



Цитата(Petka @ Sep 18 2015, 13:52) *
Гуглить "скрипт линкера".


Да я понимаю, что смотреть надо *.ld файлы. Но там все регионы памяти прописаны (формируются автоматически по настройкам из GUI и их редактировать нет смысла). Кажется должно было бы все работать. Да и описания синтаксиса я не нашел, поэтому не все в них понятно (здесь какой-то свой формат).
И такая проблема не только с внешней памятью. Я работаю с LPC4357, у него несколько банков внутреннего ОЗУ. Есть даже два смежных банка, но по мере заполнения первого, данные не "переползают" во второй. Линковщик просто ругается, что не достаточно места в первом.
На сайте указано, как код, константы, как массив переменных положить в нужный банк ОЗУ при помощи __attribute__ ((section.... Но это все не то.
С LPCXpresso (Eclipse) только начал работать, более привычен Keil. В нем примерно также в GUI указывается распределение памяти и все работает прозрачно для программиста.
А здесь даже не знаю куда ткнуться.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 18 2015, 11:28
Сообщение #4


Гуру
******

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



QUOTE (_Mikhail_ @ Sep 18 2015, 13:27) *
формируются автоматически по настройкам из GUI и их редактировать нет смысла

Дело обстоит с точностью до наоборот - не имеет смысла использовать сгенерированный как попало скрипт. Аккуратно написать свой.
QUOTE
Есть даже два смежных банка, но по мере заполнения первого, данные не "переползают" во второй. Линковщик просто ругается, что не достаточно места в первом.

Ну и опишите его ОДНИМ блоком, а не так, как визард нагенерил.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
_Mikhail_
сообщение Sep 18 2015, 12:03
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 55
Регистрация: 19-04-11
Пользователь №: 64 477



Цитата(zltigo @ Sep 18 2015, 15:28) *
Дело обстоит с точностью до наоборот - не имеет смысла использовать сгенерированный как попало скрипт. Аккуратно написать свой.

Ну и опишите его ОДНИМ блоком, а не так, как визард нагенерил.


Нет. Про внутренние смежные блоки я к примеру сказал. Для первичной инициализации хватает и одной банки. Нужно много внешнего ОЗУ, а оно лежит совсем по другим адресам.

А про скрипты согласен. Я нашел уже нашел способ, как использовать свой. Сначала генерю автоматом для шаблона, а потом снимаю найденную галочку в настройках и можно редактировать скрипт, он перезаписываться не будет.
Теперь думаю, что там надо править...

Цитата(scifi @ Sep 18 2015, 15:27) *
В исходнике приписывать переменные к отдельной секции, а потом размещать её в памяти как захочется.

Это что ко всем переменным __attribute__ ((section... приписывать?!
Нет, ну можно, конечно, для краткости задифайнить.
Тогда проще весь стартовый код перелопатить таким образом.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 18 2015, 12:28
Сообщение #6


Гуру
******

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



QUOTE (_Mikhail_ @ Sep 18 2015, 15:03) *
Это что ко всем переменным __attribute__ ((section... приписывать?!

Должна быть прагма типа:
#pragma arm section ...
Указывает куда, что класть. После нее действуют указания до конца файла или до отменяющей прагмы.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
_Mikhail_
сообщение Sep 18 2015, 13:35
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 55
Регистрация: 19-04-11
Пользователь №: 64 477



Цитата(zltigo @ Sep 18 2015, 16:28) *
Должна быть прагма типа:
#pragma arm section ...
Указывает куда, что класть. После нее действуют указания до конца файла или до отменяющей прагмы.

К сожалению, в GCC такого не нашел (

Буду пока смотреть в сторону скрипта линковки
Go to the top of the page
 
+Quote Post
Petka
сообщение Sep 18 2015, 15:45
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



Цитата(_Mikhail_ @ Sep 18 2015, 16:35) *
К сожалению, в GCC такого не нашел (

Буду пока смотреть в сторону скрипта линковки

Как было сказано выше можно на регионы памяти назначать целиком единицы линковки. К примеру всё из startup.o размещать во внутренней памяти а всё остальное во внешней.
Go to the top of the page
 
+Quote Post



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

 


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


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