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

 
 
 
Reply to this topicStart new topic
> CCS и TMS320F2808. Секция кода в RAM, Как создать секцию для быстрого кода?
kons
сообщение Oct 18 2005, 16:15
Сообщение #1


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

Группа: Свой
Сообщений: 106
Регистрация: 28-09-05
Пользователь №: 9 035



Осваиваю F28x вместе с CCS и возникает вполне естестественное желание
поместить основную часть кода (секцию .text) во FLASH, а для функций, которые должны работать быстро, создать отдельную секцию в RAM. Хочется заствить линькер размещать эту секцию во FLASH, и чтобы она на стадии инициализации копировалась в RAM (как .cinit). Есть ли для этого штатные средства?
Go to the top of the page
 
+Quote Post
subver
сообщение Oct 19 2005, 04:44
Сообщение #2


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

Группа: Свой
Сообщений: 185
Регистрация: 4-06-05
Из: Омск
Пользователь №: 5 726



в cmd файл вписать такое (в раздел описания секций):

ramfuncs : LOAD = FLASHD, RUN = RAML0, PAGE = 0,
RUN_START(_ramfuncs_runstart),
LOAD_START(_ramfuncs_loadstart),
LOAD_END(_ramfuncs_loadend)



функцию объявить так:

#pragma CODE_SECTION(FunctionName, "ramfuncs");

void FunctionName()
{
Do_Something();
}


В начале выполнения программы необходимо загрузить секцию в RAM.

memcpy(&ramfuncs_runstart,&ramfuncs_loadstart,&ramfuncs_loadend-&ramfuncs_loadstart);
Go to the top of the page
 
+Quote Post
ZAV55
сообщение Jun 28 2006, 17:05
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 15
Регистрация: 6-04-05
Пользователь №: 3 922



В продолжение вопроса. А кто знает, что делать с библиотечными функциями типа sin() abs() и др., а также что делать с подстановками компилятора типа функций деления или сравнения типа FP$$DIV FP$$CMP и др.?
Математику тоже хочется ускорить копированием в RAM. Переписывание (переопределение) всех функций конечно сработает но очень "дубово" и писать для оптимальности придётся на ассемблере.
Кстати ещё одно продолжение вопроса повышения быстродействия.
Кому-нибудь удалось перепрограммировать такты ожидания при обращении к FLASH RANDWAIT и PAGEWAIT? Очередь FLASH ENPIPE включается без проблем (из ОЗУ как в указаниях) и это добавляет около 20% быстродействия, а вот такты не программируются вообще ??
Go to the top of the page
 
+Quote Post
ZAV55
сообщение Jul 5 2006, 14:46
Сообщение #4


Участник
*

Группа: Новичок
Сообщений: 15
Регистрация: 6-04-05
Пользователь №: 3 922



Дорогой друг, извлеки нужные функции из библиотеки, например
ar2000 -x rts2800_ml.lib fs_div.obj
ar2000 -x rts2800_ml.lib fs_div.obj //может удалять не обязательно?
Подключи модифицированную rts2800_ml.lib и fs_div.obj к проекту.
Добавь в .smd файл указание секции файла с функцией:
ramfuncs : LOAD = FLASHD,
....................................
PAGE = 0
{
fs_div.obj (.text)
.....................................
}
В начале выполнения программы как всегда не забудь загрузить секцию ramfuncs в RAM.
Go to the top of the page
 
+Quote Post

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

 


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


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