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

 
 
> Избавиться от лишней памяти :)
varvar
сообщение Sep 15 2012, 19:39
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 93
Регистрация: 5-01-05
Из: Оулу
Пользователь №: 1 811



Добрый день, господа и товарищи.

По недомыслию попал в дурацкую ситуацию - программа была написана для процессора MSP430F5310 (32k), очень критичная по времени и использует DMA. Та, что есть память, использована меньше чем наполовину.
По размеру платы этот процессор не вошел, вместо него плата сделана под MSP430F5342, у которого 128к ненужной памяти, но зато корпус подходящий.

При компиляции все благополучно рассыпалось - и указатели, коих в программе море, и DMA, где только 16 бит использовалось.

Есть ли возможность сказать ИАРу плюнуть на лишнюю память и не использовать команды 430x вообще?
То ли плохо рыл - но пока ничего не нашел.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
_Артём_
сообщение Sep 15 2012, 20:49
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(varvar @ Sep 15 2012, 22:39) *
При компиляции все благополучно рассыпалось -

Чо, прям распалось на куски?
В чём рассыпание выражается?

Цитата(varvar @ Sep 15 2012, 22:39) *
Есть ли возможность сказать ИАРу плюнуть на лишнюю память

Можно подредактировать скрипт линкера в плане урезания памяти.
Или выбрать msp с меньшим объёмом, но совместимый программно (если есть такой).

Цитата(varvar @ Sep 15 2012, 22:39) *
и не использовать команды 430x вообще?

Как это - "не использовать команды 430x вообще"? А что ему использовать? Команды АВР или АРМ чтоли?
Не понял.
Go to the top of the page
 
+Quote Post
varvar
сообщение Sep 16 2012, 04:38
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 93
Регистрация: 5-01-05
Из: Оулу
Пользователь №: 1 811



Цитата(_Артём_ @ Sep 15 2012, 23:49) *
Чо, прям распалось на куски?
В чём рассыпание выражается?

Практически на куски. Программа улетает непонятно пока (разбираюсь), продолжая выполнять некоторые из обработчиков прерываний.
Если конкретно - это наложение символов на видео. При старте пытаются мелькнуть какие-то артефакты, после чего основная программа перестает работать и, соответсвенно, подгружать видеобуфера (изображение формирует SPI c DMA).


Цитата(_Артём_ @ Sep 15 2012, 23:49) *
Можно подредактировать скрипт линкера в плане урезания памяти.
Или выбрать msp с меньшим объёмом, но совместимый программно (если есть такой).

К сожалению, по функциональности и размеру корпуса больше ничего не прошло. Нужно 48 ножек LLP, 2 SPI, I2C, UART.
Просто урезать память не пройдет - нужно запретить использование команд с расширенной памятью.

Цитата(_Артём_ @ Sep 15 2012, 23:49) *
Как это - "не использовать команды 430x вообще"? А что ему использовать? Команды АВР или АРМ чтоли?
Не понял.

Ограничиться командами 430, не используя 430х (стр.168 SLAU208J), которые уменьшают скорость и приводят к разбуханию кода. Ну и указатели, похоже, становятся не 16 битными.
Судя по описанию процессора - нормальный путь, вот как только ИАР на этот путь наставить. Где-то должна быть галочка sm.gif

дополнено - кажется, путь есть:

Under General Options, select "Generic MSP430 Device" for the target processor (not "Generic MSP430X device").
Under Linker, override the default linker configuration file and use $TOOLKIT_DIR$\CONFIG\lnk430****.xcl for your actual processor instead.
In code, #include the actual target msp430****.h file, not the generic msp430.h.

теперь компилятор ругается на

__data16_write_addr((unsigned short) &DMA1SA,(unsigned long) Vbuff1);

Error[Ta025]: Intrinsic function only available for the 430X core



Получается, MSP430F3410 все-таки использует 430х? Где же все-таки собака порылась?


Сообщение отредактировал varvar - Sep 16 2012, 05:34
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Sep 16 2012, 06:06
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



А там нигде нет выбора модели памяти (tiny/small/huge)?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
varvar
сообщение Sep 16 2012, 06:21
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 93
Регистрация: 5-01-05
Из: Оулу
Пользователь №: 1 811



Цитата(Сергей Борщ @ Sep 16 2012, 09:06) *
А там нигде нет выбора модели памяти (tiny/small/huge)?

Есть Data model, в обоих случаях выбрана Small.

дополнено:

кажется, что-то относящееся к DMA - операции с ним во время прерываний убивают основной цикл. В эррате что-то есть про баги именно в этом процессоре, вроде как не совсем то...

Сообщение отредактировал varvar - Sep 16 2012, 07:26
Go to the top of the page
 
+Quote Post



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

 


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


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