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

 
 
11 страниц V  « < 2 3 4 5 6 > »   
Reply to this topicStart new topic
> TMS320 - начало пути, Прошу помощи в освоении
Spinch
сообщение Nov 21 2011, 12:31
Сообщение #46





Группа: Новичок
Сообщений: 2
Регистрация: 21-11-11
Пользователь №: 68 432



Ломаю прошивку для TMS320C28xx под Code Composer Studio.
Прошивка мне досталась "в наследство" от ушедшего сотрудника.

Суть проблемы: На данный момент отведено под прошивку только три сектора памяти, а сама прошивка вылезла за пределы. Необходимо подцепить четвёртый сектор. Кто может внятно рассказать где и как это сделать?
Заранее спасибо.
Go to the top of the page
 
+Quote Post
Matic
сообщение Nov 21 2011, 12:39
Сообщение #47


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

Группа: Участник
Сообщений: 155
Регистрация: 30-06-10
Пользователь №: 58 210



Цитата(Spinch @ Nov 21 2011, 15:31) *
Ломаю прошивку для TMS320C28xx под Code Composer Studio.
Прошивка мне досталась "в наследство" от ушедшего сотрудника.

Суть проблемы: На данный момент отведено под прошивку только три сектора памяти, а сама прошивка вылезла за пределы. Необходимо подцепить четвёртый сектор. Кто может внятно рассказать где и как это сделать?
Заранее спасибо.


У Вас исходники есть или нет?
Go to the top of the page
 
+Quote Post
Spinch
сообщение Nov 21 2011, 13:06
Сообщение #48





Группа: Новичок
Сообщений: 2
Регистрация: 21-11-11
Пользователь №: 68 432



Цитата(Matic @ Nov 21 2011, 15:39) *
У Вас исходники есть или нет?


Исходники в полном объёме. Их и дорабатываю. Правда пока не постиг полного дзена приходится консультироваться у гуру sm.gif
Нашел файл f2812.cmd

Вроде интересубщее место тут:
Код
SECTIONS
{

   /* Allocate program areas: */
   .cinit              : > FLASHB      PAGE = 0
   .pinit              : > FLASHB,     PAGE = 0
   .text               : > FLASHC      PAGE = 0
   codestart           : > BEGIN       PAGE = 0
   ramfuncs            : LOAD = FLASHC,
                         RUN = RAML0,
                         LOAD_START(_RamfuncsLoadStart),
                         LOAD_END(_RamfuncsLoadEnd),
                         RUN_START(_RamfuncsRunStart),
                         PAGE = 0

   csmpasswds          : > CSM_PWL     PAGE = 0
   csm_rsvd            : > CSM_RSVD    PAGE = 0


собственно текст ошибки:

Код
<Linking>
>>   error: can't allocate ramfuncs, size 00000360 (page 0) in FLASHC (avail:
            00000331)
>>   error: errors in input - ./Debug/iss.out not built

>> Compilation failure




----------------------------------------------------------------------------------------------
UPD:
Всем спасибо, что выслушали. Внимательное прочтение всоего же сообщения выявило подсказку sm.gif
Вроде всё заработало после переноса ramfuncs в сектор D

Сообщение отредактировал Spinch - Nov 21 2011, 13:07
Go to the top of the page
 
+Quote Post
Andron77
сообщение Dec 14 2011, 07:47
Сообщение #49


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 9-12-11
Из: Новосибирск
Пользователь №: 68 762



Всем доброго времени суток.
Осваиваю TMS320F2808 всего пару недель, есть несколько вопросов по тактам и по реализации точных временных задержек.
ЦСП установлен на планке, заводском контрольном модуле под DIMM100, отладочной плате кто-то приделал ноги, поэтому сделал свою, программирование и отладка в CCS4.1.3 через XDS100V2 USB JTAG, DSP/BIOSа нету.

Тестовая небольшая программка моргает парой светодиодов в разных режимах. В ней реализована обычная программная задержка, прерывания все отключены. Частота кварца 20МГц, SYSCLKOUT проца 10МГц, выход внешнего такта 10/4=2.5МГЦ (точно измерено), то есть все по умолчанию.

В автономке JTAG отключен, общая программа записана во флэш (конвейер отключен), но подпрограмма задержки при инициализации копируется один раз в RAM L0 и там выполняется все время (проверено дизассемблером).
Подпрограмка задержки на С простая.
------------------------------------------------
void delay_loop(Uint32 tmp)
{
do{
tmp--;}
while (tmp>0);
}
-----------------------------------------------
Соответствующий asm дизассемблера, цикл который крутится, от него в основном и зависит длительность задержки
отрабатывает за 7 тактов, то есть по идеи за 0.7мкс на 10_МГц, цикл крутится 428571 раз (расчет 0.3сек)

m1: movb acc,#1 (1 такт)
subl *-sp[2],acc (1 такт)
movl acc,*-sp[2] (1 такт)
sbf m1, NEQ (4 такта)

Но реально измеренная задержка больше расчетной на 30%, 0.4с вместо 0.3с. Почему?
Выходит, что доступ к RAM L0 работает с циклами ожидания? хотя в даташите написано 0-wait?
Либо какая-то команда выполняется больше, чем 1 такт?
Go to the top of the page
 
+Quote Post
jcxz
сообщение Dec 14 2011, 08:21
Сообщение #50


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Вы где эти задержки меряете? На GPIO? Ну тогда это у вас задержка GPIO. Ну не предназначен он для таких временных интервалов.
Если уж пишете о %, то элементарно проверьте на больших величинах задержки. Если ошибка не пропорциональна величине задержки,
а является константой - это явно из-за частоты работы GPIO.
Go to the top of the page
 
+Quote Post
Andron77
сообщение Dec 14 2011, 09:32
Сообщение #51


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 9-12-11
Из: Новосибирск
Пользователь №: 68 762



Так я и измеряю на больших задержках на ножке порта, я в курсе, что порт не сможет отработать микросекунды. Но отработать несколько герц порт явно сможет. sm.gif Вопрос в другом, почему проц не выполняет команды за те такты, что написаны в даташите?
Go to the top of the page
 
+Quote Post
jcxz
сообщение Dec 14 2011, 10:37
Сообщение #52


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



А Вы учитываете сколько времени выполняется условный переход в конце цикла и время на перезагрузку конвеера при срабатывании перехода?
Go to the top of the page
 
+Quote Post
Andron77
сообщение Dec 14 2011, 10:46
Сообщение #53


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 9-12-11
Из: Новосибирск
Пользователь №: 68 762



Конечно учитываю, 4 цикла на условный переход
sbf (метка), NEQ (4 такта)
Конвейер выборки из флэш отключен, если вы про это, но так как программка работает из RAM, может быть так, что конвейер там свой и не отключается? В доках по этому поводу ничего не сказано.
Go to the top of the page
 
+Quote Post
ELEKTROS
сообщение Dec 14 2011, 12:04
Сообщение #54


Местный
***

Группа: Участник
Сообщений: 294
Регистрация: 29-06-11
Пользователь №: 65 952



Здраствуйте, подскажите как с нуля создать проект для TMS 28027 в CCSv4. А то примерами пеользуюсь, а с нуля создать не догоню как. Или совсем простенький проект (только свой) может у кого есть, где пинами дрыгать.
Go to the top of the page
 
+Quote Post
Andron77
сообщение Dec 14 2011, 13:47
Сообщение #55


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 9-12-11
Из: Новосибирск
Пользователь №: 68 762



Ну вот я делал тестовый проект на F2808, загрузка с флэш, запись в RAM пользовательского кода, выход в GPIO. Только нужно поправить cmd-файл распределения памяти под свой ЦСП. Программа пока без прерываний, не разобрался с ними. Примерами не пользуюсь, а вытаскиваю из них нужный код, слишком много там лишнего мусора.
По Piccolo есть интересные материалы для начинающих.
Мой проект в CCS4
Прикрепленный файл  Led.zip ( 131.84 килобайт ) Кол-во скачиваний: 189
Go to the top of the page
 
+Quote Post
ELEKTROS
сообщение Dec 14 2011, 20:04
Сообщение #56


Местный
***

Группа: Участник
Сообщений: 294
Регистрация: 29-06-11
Пользователь №: 65 952



спасибо, но я не увидел функцию настройки генератора. И еще для меня ново увидеть goto (ну да ладно каждый пишит как умеет). Еще нету хидеров или вы всё в *.с файлы всунули?
Go to the top of the page
 
+Quote Post
Andron77
сообщение Dec 15 2011, 02:08
Сообщение #57


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 9-12-11
Из: Новосибирск
Пользователь №: 68 762



Генератор я не настраивал, он работает на установках по умолчанию 10Мгц, половина частоты кварца, без синтезатора.
Кстати в примерах как раз и делается много лишней работы по установке регистров значениями умолчанию. Зачем, если они после сброса и так находятся в этом состоянии.
Файлы заголовков находятся в примерах DSP280x_common\include и DSP280x_headers\include.
К ним нужно прописать путь в настройках CCS4 ( project/properties/C2000 compiler/include options/иконка add), тогда они появятся в директории Includes проекта.
Оператор goto в данном случае делает банальный безусловный переход [SB (метка), UNC] можно и бесконечный for сделать, но в асме все равно будет тот же безусловный переход. Вообщем-то это моя первая программа на Си для контроллеров вообще, до этого на 51-ых и avr обходился ассемблером, так что за некоторую кривость програмки простите.
Вообще заметил, что компилятор не воспринимает некоторые классические конструкции си, нельзя допустим объявлять переменную в цикле, например на такую конструкцию выдает ошибку, for(int i=0;i<10;i++).
Go to the top of the page
 
+Quote Post
ELEKTROS
сообщение Dec 15 2011, 11:52
Сообщение #58


Местный
***

Группа: Участник
Сообщений: 294
Регистрация: 29-06-11
Пользователь №: 65 952



Не компилиться, не находит "DSP280x_Device.h", что странно в свойствах проекта подключена директория с этим файлом и более того если проводником проекта пользоваться то открыть "DSP280x_Device.h" можно.
Go to the top of the page
 
+Quote Post
Andron77
сообщение Dec 15 2011, 13:18
Сообщение #59


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 9-12-11
Из: Новосибирск
Пользователь №: 68 762



Так он и не должен так сразу компилится при копировании всего проекта, так как он рассчитан на F2808. Надо создать новый проект под ваш Piccolo 28027 контроллер и изменить следующее.
1. заменить хидеры в .с, кроме DSP280x_GlobalVariableDefs.c, его заменить своим из примеров, он не менялся.
2. DSP280x_CodeStartBranch.asm, в нем только отключается сторожевой таймер, думаю что его регистры в 28027 аналогичные.
3. DSP280x_Headers_nonBIOS.cmd заменить своим, не менялся
4. F2808.cmd по аналогии, обращая внимание на название областей, изменить свой, так как некоторых областей памяти в Piccolo нет.
Разобрался таки с созданием и копированием таблицы прерываний PIE, кстати вот здесь есть кое-что по русски.
Go to the top of the page
 
+Quote Post
ELEKTROS
сообщение Dec 16 2011, 06:26
Сообщение #60


Местный
***

Группа: Участник
Сообщений: 294
Регистрация: 29-06-11
Пользователь №: 65 952



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

11 страниц V  « < 2 3 4 5 6 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


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


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