Andron77
Dec 14 2011, 09:32
Так я и измеряю на больших задержках на ножке порта, я в курсе, что порт не сможет отработать микросекунды. Но отработать несколько герц порт явно сможет.

Вопрос в другом, почему проц не выполняет команды за те такты, что написаны в даташите?
А Вы учитываете сколько времени выполняется условный переход в конце цикла и время на перезагрузку конвеера при срабатывании перехода?
Andron77
Dec 14 2011, 10:46
Конечно учитываю, 4 цикла на условный переход
sbf (метка), NEQ (4 такта)
Конвейер выборки из флэш отключен, если вы про это, но так как программка работает из RAM, может быть так, что конвейер там свой и не отключается? В доках по этому поводу ничего не сказано.
ELEKTROS
Dec 14 2011, 12:04
Здраствуйте, подскажите как с нуля создать проект для TMS 28027 в CCSv4. А то примерами пеользуюсь, а с нуля создать не догоню как. Или совсем простенький проект (только свой) может у кого есть, где пинами дрыгать.
Andron77
Dec 14 2011, 13:47
Ну вот я делал тестовый проект на F2808, загрузка с флэш, запись в RAM пользовательского кода, выход в GPIO. Только нужно поправить cmd-файл распределения памяти под свой ЦСП. Программа пока без прерываний, не разобрался с ними. Примерами не пользуюсь, а вытаскиваю из них нужный код, слишком много там лишнего мусора.
По Piccolo есть интересные
материалы для начинающих.Мой проект в CCS4
Нажмите для просмотра прикрепленного файла
ELEKTROS
Dec 14 2011, 20:04
спасибо, но я не увидел функцию настройки генератора. И еще для меня ново увидеть goto (ну да ладно каждый пишит как умеет). Еще нету хидеров или вы всё в *.с файлы всунули?
Andron77
Dec 15 2011, 02:08
Генератор я не настраивал, он работает на установках по умолчанию 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++).
ELEKTROS
Dec 15 2011, 11:52
Не компилиться, не находит "DSP280x_Device.h", что странно в свойствах проекта подключена директория с этим файлом и более того если проводником проекта пользоваться то открыть "DSP280x_Device.h" можно.
Andron77
Dec 15 2011, 13:18
Так он и не должен так сразу компилится при копировании всего проекта, так как он рассчитан на F2808. Надо создать новый проект под ваш Piccolo 28027 контроллер и изменить следующее.
1. заменить хидеры в .с, кроме DSP280x_GlobalVariableDefs.c, его заменить своим из примеров, он не менялся.
2. DSP280x_CodeStartBranch.asm, в нем только отключается сторожевой таймер, думаю что его регистры в 28027 аналогичные.
3. DSP280x_Headers_nonBIOS.cmd заменить своим, не менялся
4. F2808.cmd по аналогии, обращая внимание на название областей, изменить свой, так как некоторых областей памяти в Piccolo нет.
Разобрался таки с созданием и копированием таблицы прерываний PIE, кстати вот
здесь есть кое-что по русски.
ELEKTROS
Dec 16 2011, 06:26
Какая разница, компилиться должен и ваш, только его не зашить в F28027 нормально, тут дело в другом в чём то.
Andron77
Dec 16 2011, 06:41
А должен ли? Если в свойствах CCS выбрана модель 28027, а cmd файл в проекте под 2808?
ELEKTROS
Dec 16 2011, 07:06
Чёто затупил, точно

О чудо, заработал после прочтения: DSP2802x_HeaderFiles_Quickstart_Readme. Хотя не всё однозначно понятно.
Andron77
Dec 16 2011, 10:31
Ну так пишите, что непонятно, будем вместе разбираться.
Написал второй тестовый проект, делает тоже самое, но полностью через обработчик прерываний таймера Т0. На сей раз задержки соответствуют расчетным, оно и понятно, таймер все-таки.
Но есть пара вопросов в основном по Си, в файле DSP280x_Default_Isr.c пустой выход из всех неиспользуемых обработчиков прерываний сделал через return, это обязательно или можно оставить функции пустые?
И второй вопрос, в подпрограмме таймера T0 объявил переменные (файл Led2.c) как static, соответственно эти переменные не видны в функции main(), как бы их так объявить, чтобы ими можно было пользоваться вне подпрограммы прерываний?
Нажмите для просмотра прикрепленного файла
ELEKTROS
Dec 16 2011, 11:08
оставляй пустые, return обычно когда функция какого то типа, чтобы возвращала какоето значение. Вообщем стандартными хидерами удобно пользоваться достаточно. По второму вопросу только на ум приходят переменную глобальной сделать. Ну или в шарпе давно писал прожку какуюто там через класс как то делал, но еще какойто служебное слово писал что то типа privat, но не уверен что тут так можно хотя по идее можно завести указатель на эту переменную, но опять же глобальный указатель и через него из любого места программы ссылаться на static, но всё приходит к одно му, что то должно быть глобальным.
кстати меня досих пор терзает вопрос, там всего три таймера, как модуль захвата и модуль PWM работают с этими таймерами или у них свои таймеры есть?
ELEKTROS
Dec 19 2011, 07:31
Кстати незнаете где взять схему платы МК19, МК20 которые делает НПП ВЕКТОР на базе C28xx?
Andron77
Dec 29 2011, 10:19
Подскажите, как и чем через XDS100V2 прочитать прошивку из F2808 , с учетом того, что она не зашифрована. В CCS4 такой функции не нашел.
SAURIS GmbH
Dec 30 2011, 08:51
Цитата(Andron77 @ Dec 29 2011, 14:19)

В CCS4 такой функции не нашел.
Ищите лучше, где-то там есть запись куска памяти (любой, ОЗУ, флеши .. ) в файл.
ELEKTROS
Dec 30 2011, 15:03
Насколько стабилен встроенный тактовый генератор, от температуры также плывёт?
Добрый день. Всех с Новым 2012 годом.
Проблема: вышел из строя DSP TMS320F241FNA, (100% пробит I/O PA3).
Примечание: на плате всего 3 таких DSP (плата от промышленного устройства, кот. необх. запустить),
каждый DSP снабжен разъемом JTAG 2х7, (в каждом разъеме стоит перемычка TRST-GND).
С DSP ранее сталкиваться не приходилось, только PLC и AVR
(я электронщик с большим стажем, занимаюсь ремонтом промышленного
оборудования, и многое мне знакомо).
Вопрос: хочу прикупить данный DSP (после праздников), а так же TMS320-JTAG (для прошивки).
Скачал с сайта Ti CCS_V4.0 с ограничением по размеру кода, а так же SDFlash_v165 с патчем sdf241
(юзать буду что-то одно: мне нужно только слить и перезалить в новый проц прошивку).
Кто может расписать по шагам неоходимые действия (в конце концов разберусь и сам,
но хочется без лишнего гемора)?
Дополнение и возможные траблы:
1. Проц реально греется (горячее, чем два других), возможно с него не получится слить.
2. Большинство I/O всех процов соединены паралельно (возможно и прошивки у них одни),
проверю (есть ли функция "compare").
3. Если прошивка с защитой, то есть ли, в этом случае, возможность клонирования?
Заренее, спасибо.
ELEKTROS
Jan 5 2012, 14:58
особо не задавался этим, но на TMS320F2407А не получилось ничего слить нормально даже без защиты блоков памяти.
Andron77
Jan 10 2012, 08:02
На вход порта TMS320F2808 случайно попало 5в, вместо 3.3в, в результате контроллер греется так, что срабатывает защита у стабилизатора двойного питания, естественно проц не откликается, только замена.
Цитата(CDD @ Jan 5 2012, 14:32)

Добрый день. Всех с Новым 2012 годом.
Проблема: вышел из строя DSP TMS320F241FNA, (100% пробит I/O PA3).
Примечание: на плате всего 3 таких DSP (плата от промышленного устройства, кот. необх. запустить),
каждый DSP снабжен разъемом JTAG 2х7, (в каждом разъеме стоит перемычка TRST-GND).
С DSP ранее сталкиваться не приходилось, только PLC и AVR
(я электронщик с большим стажем, занимаюсь ремонтом промышленного
оборудования, и многое мне знакомо).
Вопрос: хочу прикупить данный DSP (после праздников), а так же TMS320-JTAG (для прошивки).
Скачал с сайта Ti CCS_V4.0 с ограничением по размеру кода, а так же SDFlash_v165 с патчем sdf241
(юзать буду что-то одно: мне нужно только слить и перезалить в новый проц прошивку).
Кто может расписать по шагам неоходимые действия (в конце концов разберусь и сам,
но хочется без лишнего гемора)?
Дополнение и возможные траблы:
1. Проц реально греется (горячее, чем два других), возможно с него не получится слить.
2. Большинство I/O всех процов соединены паралельно (возможно и прошивки у них одни),
проверю (есть ли функция "compare").
3. Если прошивка с защитой, то есть ли, в этом случае, возможность клонирования?
Заренее, спасибо.
лучше было взять xds100usb в терраэлектронике, - по цене примерно то же но проблем с ним нет.
Можно ещё посмотреть в биосе конфигурацию порта LPT - EPP там итд.
ELEKTROS
Feb 20 2012, 07:06
Скажите модуль ePWM в 28027 и 28335 одинаковый, при беглом обзоре такой уж разницы и не обнаружил?
Chip4ik
Feb 22 2012, 04:55
Здравствуйте, я работаю на TMS320C24XX занимаюсь системами управления электродвигателями переменного тока, но они снятые с производства. Какой проц из новых моделей можноприменить в моём случае. Интересует быстродействующий шим и ацп, входы минимум под 2 датчика скорости. Пока склоняюсь к Piccolo или 28x Delfino™ Floating-point Series
ELEKTROS
Feb 22 2012, 05:43
Piccolo с двумя захватами посмотрите, или если асинхронник то QEP модуль чтобы был, это если вопрос цены важен производительность у них до 80MIPS (везде где видель её равняют с тактовой частотой у этих DSC). Ну а если цена особо не важна (рублей 400-800 разницы) применяёте Delfino, у него 12 ШИМ выходов(с различными решимами работы), 6 захватов, два QEP (ни разу не использовал, так как занимаюсь ВИРД, а не ассинхронниками), а вообще изучите Delfino, на Piccolo без труда перейти можно, а вот наоборот чуть подучить еще прийдётся.,
На ti.com зайдите посмотрите там достаточно подробная табличка с характеристиками что у каждого DSC есть.
Можете посмотреть в сторону STM32F еще, если вопрос цены всётаки важен, там модуль аппаратного управления ассинхронником есть.
bullit
Mar 26 2012, 11:50
TMS320F28335
А что делать с выводами (Входы, апорники...) АЦП, при этом сам ацп не задействован? И нужно ли туда подавать питание?
Может всё на землю посадить?
Клок АЦП естественно отключен! В доках ничего не нашел!
1000 извенений! Нашел страница 82 описаловки на кристал. Только не понятно зачем туда питание заводить. Возможно чтоб небыло утечек...
beaRTS
Jul 20 2012, 09:20
Объясните, пожалуйста.
Принес я на работу свою отладочную плату c TMS320C6455. Был с собой установочный диск с CCS и дровами. Начал установку CCS, как вывалилась ошибка (первый вложенный рисунок). ошибка говорит, что CCS уже был установлен (Предыстория: на работе пользую отладочную платку eZdsp TMS320F28335, когда учился ее крутить, тогда и установил CCS для нее). Решил не переустанавливать, как предлагалось в том диалоговом окне, т.к. уже установленный CCS более новой версии...
Оставалось установить дрова для платы. После их установки появились ярлычки "6455 DSK CCStudio v3.3" и "6455 EVM CCStudio v3.3". Захожу по первому ярлыку, а он меня грузит еще проблемой (второй рисунок во вложении).
Там посылают меня на ... переуказание используемого драйвера. Захожу в "Setup CCStudio v3.3", который раньше использовался для конфигурирования eZdsp TMS320F28335, там уже вижу такую картину (третий рисунок во вложении)
вопрос: вроде ж само все стало автоматически (как я понял после установки драйверов), так почему не запускается CCS? и как побороть?
естественно у меня не один CCS с полными правами и полной лицензией, а два CCS (бесплатных, но как-то обрезанных), идущих в комплекте с двумя разными DSK. Они не могу существовать одновременно на одном компе ???
Делаю все, как, например, в пособии
Connecting Code Composer Studio to a TMS320C2000 Device со стр.3 пункты 1-6.
SAURIS GmbH
Jul 20 2012, 15:38
Я так думаю, что был указан одинаковый путь для установки как и для той, так и для этой версии. В результате ярлыки то разные, а вот одно переписало другое.
beaRTS
Jul 20 2012, 17:31
Цитата(SAURIS GmbH @ Jul 20 2012, 18:38)

Я так думаю, что был указан одинаковый путь для установки как и для той, так и для этой версии.
дык, я устанавливал только драйверы (после установки драйверов для платы C6000 появилсиь дополнительные ярлыки "6455 DSK CCStudio v3.3" и т.д.) .. так что CCS для С6000 я не устанавливал.
или Вы как раз-таки говорите про драйверы ?
SAURIS GmbH
Jul 20 2012, 17:38
упс. сорри.
У Вас вот что получилось. Вы поставили дрова для неподдерживаемого семейства в ограниченную версию композера, которая бесплатно шла с отладкой, но с другой. Два варианта - или установить другой ограниченный композер целиком в другую директорию, или поставить полный композер, а в него потом нужные дрова (но они там уже скорее всего изначально будут).
beaRTS
Jul 20 2012, 17:42
Цитата(SAURIS GmbH @ Jul 20 2012, 20:38)

упс. сорри.
У Вас вот что получилось. Вы поставили дрова для неподдерживаемого семейства в ограниченную версию композера, которая бесплатно шла с отладкой. Два варианта - или установить другой ограниченный композер целиком в другую директорию, или поставить полный композер, а в него потом нужные дрова (но они там уже скорее всего изначально будут).
огромное спасибо!!! а то сегодня весь день убил на поиски решения.
более приемлемый для меня вариант - установить второй композер), т.к. полный - это накладно по денюжке (в плане лицензии)
beaRTS
Jul 21 2012, 05:49
Цитата(beaRTS @ Jul 20 2012, 20:42)

более приемлемый для меня вариант - установить второй композер),
итог такой, setup не дает установить поверх установленного композера еще один, но для другой платы, т.е. setup даже не запускается , где б я мог изменить папку установки, чтоб две версии (под разные платы имею в виду) композера не конфликтовали... как то непродумано у них данная ситуация. либо у меня руки кривые =), но имхо все должно быть интуитивное понятно, чтоб пользователи любили продукты компании (Apple же не зря любят - говорят, сам не знаю)...
решил один удалить, другой поставить
Как я полагаю, это все из-за того, что в комплекте с отладочными платами хоть и идет бесплатный композер, но он так хитро
вы..... думанно обрезан, что не позволяет модифицировать настройки композера, задаваемые при в ходе в программу по ярлыку "Setup CCStudio v3.3", т.е. нельзя установить дрова под другую плату (проц), не относящиеся к данной версии композера.. =( вот такая печалька, друзья.
SAURIS GmbH
Jul 21 2012, 06:38
Ну во первых изменить папку сетап 3.3 композера всегда дает, значит пропустили где, или запускали сетап не композера, а какой-то другой сетап (пакета программ платы наверное), который из-под себя его запускает. Поищите на диске, где именно находится сетап самого композера. У меня их для тестов понаставлено штук так целая куча.
А во вторых, все же, что не дает поставить полный? Он не требует никакого "лечения", никаких регистраций, в отличие от 4 и 5, ставь и пользуй.
beaRTS
Jul 21 2012, 06:54
Цитата(SAURIS GmbH @ Jul 21 2012, 09:38)

А во вторых, все же, что не дает поставить полный? Он не требует никакого "лечения", никаких регистраций, в отличие от 4 и 5, ставь и пользуй.
я значит криво понял.. Ставлю же на рабочий комп: а мы используем только лицензионное ПО. И как понял, эти композеры, что в комплекте с платами идут, можно ставить без зазрения совести (без всяких виртуалок). А думал, что ставить полный CCS v3.3 - табу... Как то так.
На полный разве нет лицензии? т.е. я могу с торррента скачать и установить спокойно, и потом ни кто по голове не настучит, типа IT-службы. ?????
SAURIS GmbH
Jul 21 2012, 07:06
На полный лицензия на самом деле есть (на бумаге), он покупается. Но в нем нет никакой защиты от запуска, никаких кодов, файлов лицензий и т.п. А настучат или нет это не ко мне.
beaRTS
Jul 21 2012, 07:10
Цитата(SAURIS GmbH @ Jul 21 2012, 10:06)

На полный лицензия на самом деле есть (на бумаге), он покупается.
не хочу никого подставлять на работе.. сейчас еще головой об стену побьюсь, помучаюсь...
тема еще не закрыта, так что не забывайте, пожалуйста =) .
получилось запустить "6455 DSK CCStudio v3.3" только после второй переустановки.. вроде все нормально. буду dsp/bios изучать. спасибо за помощь
beaRTS
Jul 23 2012, 09:13
Цитата(beaRTS @ Jul 20 2012, 12:20)

Объясните, пожалуйста.
вопрос: вроде ж само все стало автоматически (как я понял после установки драйверов), так почему не запускается CCS? и как побороть?
естественно у меня не один CCS с полными правами и полной лицензией, а два CCS (бесплатных, но как-то обрезанных), идущих в комплекте с двумя разными DSK. Они не могу существовать одновременно на одном компе ???
Звонил добрый человек из
СкантиРУС. мило побеседовали. Он дал однозначный ответ, что со всеми отладочными платами идет обрезанный, кастрированный композер и, если имеешь несколько отладочных плат, то нет возможности установить одновременно на комп два "кастрата" =) как-то так). так что смело удаляйте прошлый композер и ставьте нужный, а потом понадобилась другая плата, удаляйте установленный и ставьте композер для другой платы.
SAURIS GmbH
Jul 23 2012, 09:27
странно это, я точно как-то поставил два композера - для 6711 DSK и для 6416 DSK на разные пути. Хотя не помню, как именно.
beaRTS
Jul 24 2012, 09:58
Цитата(SAURIS GmbH @ Jul 23 2012, 13:27)

странно это, я точно как-то поставил два композера - для 6711 DSK и для 6416 DSK на разные пути. Хотя не помню, как именно.
Он при запуске установщика сразу делает проверку на наличие уже установленного композера (после двойного клика по сетапу), и не позволяет выбирать, соответственно, папку. Если что-то уже было - то установки вообще не будет.
опять огорчают танцы с бубном вокруг композера..
Нажимаю кнопочку File->New->DSP/Bios configuration а он мне выводит окно с названием ScriptPane, которое ругается так : "Unable to create BIOS Config Server" .. нажимаешь единственную кнопку ОК и вылазит следующее диалоговое New DSP/Bios Configuration (
первое вложение) - только там пусто в окошках все (наверно, так не должно быть). Как полагаю, в папке с Биосом надо покопаться найти какой-то файл (не забываем, что я чайник=) ) и исправить ситуацию, но все тщетно. Лезу сюда: C:\CCStudio_v3.3\bios_5_31_02\packages\ti\platforms\dsk6455\ нет ничего, да и в C:\CCStudio_v3.3\bios_5_31_02\packages вообще нет ничего!!!
Полез тогда в Hepl-> about -> Component Manager. ну а там все пусто (такого ж не должно быть?? какая-нибудь да тулза должна быть установлена..)
(картинка во втором вложении) А должно быть вот так (третье вложение), как
в этом документеКак? из-за чего все это? неужто такой сильно обрезанный диск попался...
SAURIS GmbH
Jul 24 2012, 10:10
ну DSP/BIOS то можно отдельно скачать и установить.
beaRTS
Jul 24 2012, 10:57
Цитата(SAURIS GmbH @ Jul 24 2012, 14:10)

ну DSP/BIOS то можно отдельно скачать и установить.
этим и занимаюсь... просто возмущен от обилия косяков, на которые тратится психо-кинетическая (или как ее там) энергия.
Как все видят, я кручу верчу Техас (а они меня), а так как от самовара не далеко ушел))) , то будет много вопросов.. Надеюсь кому-то из молодежи мои потуги и ваша помощь помогут
Цитата(beaRTS @ Jul 24 2012, 13:58)

Полез тогда в Hepl-> about -> Component Manager. ну а там все пусто (такого ж не должно быть?? какая-нибудь да тулза должна быть установлена..) (картинка во втором вложении)
Был с моей стороны косячок: надо было установить галочку в Component MAnager-> View -> All CCS Installations и появляется все что и ожидалось
Как бы то ни было переустановил DSP/BIOS и это тоже дало результат: по адресу C:\CCStudio_v3.3\bios_5_41_10_36\packages\ti\platforms\dsk6455\ в папке под мою плату лежит уже Platform.tci !
Еще необходимо перезапустить композер, войти в компонент манагер раскрыть список Target Content'а(DSP/BIOS) и расскрыть подсписок с названием семейства вашего камня и установить галочку (см рисунок)
Цитата(beaRTS @ Jul 24 2012, 13:58)

Нажимаю кнопочку File->New->DSP/Bios configuration
и теперь получаю что-то более правдивое (смотри
второе вложение)
beaRTS
Jul 25 2012, 05:26
Есть такой сайт
C6000 Embedded Design Workshop Using BIOS . Наткнулся там на понятную презентацию, которая по первой сильно поможет начинающим в понимании DSP/BIOS
PPT Slides Rev 6.50 (.zip). Поэтому качайте, смотрите. Куча презентаций. в Основном про Sys/BIOS (но походу это нынче мейнстрим). но есть и про DSP/BIOS: название BIOS_13a_Intro_to_DSPBIOS. смотрим. Нашел ответы на некоторые мелкие свои вопросы.
Так же только что хотел задать вопрос: чем отличаются Sys/BIOS и DSP/BIOS, почему две версии, для чего? что изучать, что ставить и т.д... ну и тут же нашел в скачанных презентациях. Ответ находится в BIOS_03_BIOS_Basics (смотри вложение)
beaRTS
Jul 26 2012, 03:57
запустил не без проблем первый примерчик (до этого хотел сам разобраться, но все-таки лучше с примеров начинать - так быстрее)на плате TMS320C6455 DSK.
Проблема была следующей: начинаю грузить .out файл File->Load Program из папки дебаг, так CCS выдает ошибку " Does not match the target endianness, not loaded. Check build options, or use the setup program" . А на плате у меня (думаю, что и у большинства плат с навороченными камнями) стоит dip-switch (smd-переключатель), на одну ногу которого заведена опциональная функция установки формата big endian и little endian. Поэтому переведя выключатель в противоположное состояние, повторил попытку заливки программы и все получилось.
либо, как вариант, в Build Options -> Compiler -> Advanced в графе Endianness поменять формат и попробовать снова загрузить - может, получится. не пробовал.
beaRTS
Jul 26 2012, 07:52
Смотрю 2 конфигурационных файла DSP/BIOS из разных примеров.
Вопрос: что такое KNL_swi, PRD_swi? Просто вот понятно, например, что такое PRD_blinkLED0 - это поток, относящийся к периодически выполняемым, и функция его выполнения называется _blinkLED0() (если С-функция,но в С-файле будет просто blinkLED0() ) (The leading underscore is required because blinkLED0() is a C function. Functions written in assembly do not need the underscore. ). Понятно, что мы его создали, он нам нужен, т.к. будем в нем мигать светодиодом.. А для чего существуют KNL_swi (полагаю kernel-swi), PRD_swi (periodic-swi) непонятно?!
Картинка во вложении.
Приведу код
Код
/*H***************************************************************************
*
* $Archive:: /boards/dsk6455_v2/examples/ledprd/ledprd.c $
* $Revision:: 2 $
* $Date:: 6/27/06 9:29a $
* $Author:: Shilpab $
*
*
*H***************************************************************************/
/*
* ======== ledprd.c ========
*
* This example blinks LED #0 at a rate of about 2.5 times per second using
* the LED module of the the DSK6455A Board Support Library. The example
* also reads the state of DIP switch #3 and lights LED #3 if the switch
* is depressed or turns it off if the switch is not depressed.
*
* When the program is run, DSP/BIOS initializes itself and calls the main( )
* function. Main( ) initializes the BSL then exits and returns control back
* to DSP/BIOS. The real work is done inside blinkLED0( ) which is a DSP/BIOS
* periodic thread that is run every 200ms.
*
* A second thread named blinkLED1( ) is also included that blinks LED #1
* asynchronously with blinkLED0( ) to demonstrate DSP/BIOS multitasking.
* It is not enabled by default but can be added by creating a new periodic
* thread entry for it in the DSP/BIOS scheduler.
*
* Please see the DSK6455 help file in the docs\hlp directory for more detailed
* information.
*/
/*
* DSP/BIOS is configured using the DSP/BIOS configuration tool. Settings
* for this example are stored in a configuration file called ledprd.cdb. At
* compile time, Code Composer will auto-generate DSP/BIOS related files
* based on these settings. A header file called ledprdcfg.h contains the
* results of the autogeneration and must be included for proper operation.
* The name of the file is taken from ledprd.cdb and adding cfg.h.
*/
#include "ledprdcfg.h"
#include "dsk6455.h"
#include "dsk6455_led.h"
#include "dsk6455_dip.h"
/*
* blinkLED0( ) - Blink LED #0 and set LED #3 based on the state of DIP switch
* #3. If the switch is down, the LED is turned on. If the
* switch is up, the LED is turned off.
*
* blinkLED0 is a periodic thread that is called every 200ms
* from the DSP/BIOS scheduler. It is configured in the
* DSP/BIOS configuration file ( ledprd.cdb ) under Scheduling
* --> PRD --> PRD_blinkLED0. Right click PRD_blinkLED0 and
* select Properties to view its settings.
*/
void blinkLED0( )
{
/* Toggle LED #0 */
DSK6455_LED_toggle( 0 );
/* Check DIP switch #3 and light LED #3 accordingly, 0 = switch pressed */
if ( DSK6455_DIP_get( 3 ) == 0 )
/* Switch pressed, turn LED #3 on */
DSK6455_LED_on( 3 );
else
/* Switch pressed, turn LED #3 off */
DSK6455_LED_off( 3 );
}
/*
* main( ) - Initialize BSL then drop into DSP/BIOS idle loop
*/
void main( )
{
/* Initialize the board support library, must be first BSL call */
DSK6455_init( );
/* Initialize the LED and DIP switch modules of the BSL */
DSK6455_LED_init( );
DSK6455_DIP_init( );
}
beaRTS
Jul 26 2012, 10:32
Цитата(beaRTS @ Jul 26 2012, 10:52)

. Вопрос: что такое KNL_swi, PRD_swi?
Попробую сам же и поразмышлять...
Начинает складываться общая картинка об DSP/BIOS. А складывается она на фоне параллельного изучения freeRTOS. во freeRTOS мы все файлы ядра добавляем ручками в папку нашего проекта, ручками же правим какие задачи будут включаться в сконфигурированное ядро (например, по-моему, в файле FreeRTOSconf.h, где в дефайнах выставляем 0ки или 1чки)
С DSP/BIOS дела обстоят, видимо, по-иному.
Поправьте меня если неправ!. В DSP/BIOS среда разработки за нас сделает всю эту черную работу, а нам же остается в конфигурационной тулзе, да еще и с графическим интерфейсом (альтернатива - Tconf скрипты), настроить нужные задачи. Вот и все. и К тому же среда разработки сама пропишет нужные пути к файлам и библиотекам ядра, чтоб была возможность его скомпилировать, т.е. нет необходимости лазить по папкам и собирать в папку своего проекта все разрозненные файлы ядра..
Это было лирическое отступление.
Теперь к обозначенному вопросу. (Рассматриваем стандартный пример под названием "ledprd"). НА картинке выше, где было изображение открытой конфигурационной тулзы в Software Interrupt Manager'е был модуль например KNL_swi, за который отвечает некая функция "KNL_run();"... Итак, нашел в файле ledprdcfg.h62 (или YourNamecfg.h62)
Код
.global null
.global _IDL_loop
.global IDL_F_loop
.global _KNL_run //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.global IDL_F_stub
.global IDL_F_calibrate
.global IDL_F_busy
что объявление _KNL_run , видимо глобальное (поправьте если что), хотя ".global" - вроде бы, секция памяти какая-то на ассемблере.... тогда полез искать это имя уже за пределы папки проекта (до этого пытался искать Тотал командером в папке проекта). ЗА пределами (в папке с биосом) нашел файл knl.h:
Код
#ifdef _BIOSROM_
extern Void (*KNL_enterPtr)(Void);
extern Void (*KNL_exitPtr)(Void);
extern Void (*KNL_ipostPtr)(KNL_JobHandle job);
extern Void (*KNL_postPtr)(KNL_JobHandle job);
extern Void (*KNL_readyPtr)(KNL_Handle task);
extern Void (*KNL_runPtr)(Arg mode_arg); //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
extern Void (*KNL_switchPtr)(Ptr *oldsp, Ptr *newsp);
#define KNL_enterJ() (KNL_enterPtr)()
#define KNL_exitJ() (KNL_exitPtr)()
#define KNL_ipostJ(job) (KNL_ipostPtr)(job)
#define KNL_postJ(job) (KNL_postPtr)(job)
#define KNL_readyJ(task) (KNL_readyPtr)(task)
#define KNL_runJ(mode) (KNL_runPtr)(mode)
#define KNL_switchJ(oldsp, newsp) (KNL_switchPtr)(oldsp, newsp)
#else
#define KNL_enterJ() KNL_enter()
#define KNL_exitJ() KNL_exit()
#define KNL_ipostJ(job) KNL_ipost(job)
#define KNL_postJ(job) KNL_post(job)
#define KNL_readyJ(task) KNL_ready(task)
#define KNL_runJ(mode) KNL_run(mode) //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#define KNL_switchJ(oldsp, newsp) KNL_switch(oldsp, newsp)
#endif
#ifdef __cplusplus
}
#endif /* extern "C" */
#endif /*KNL_*/
осталось осмыслить для полного понимания... Вроде, теперь мы знаем, что KNL_run(mode) соответствует внешне определенной функции, возвращающей указатель, а именно: extern Void (*KNL_runPtr)(Arg mode_arg);
beaRTS
Jul 27 2012, 04:24
Цитата(beaRTS @ Jul 26 2012, 10:52)

Смотрю 2 конфигурационных файла DSP/BIOS из разных примеров. Вопрос: что такое KNL_swi, PRD_swi?
Нашел ответ. KNL_swi, PRD_swi - Это стандартные встроенные объекты (вроде, так называются) ядра. А _KNL_run и PRD_F_swi - стандартные функции (где-то =) и не понятно где определенные, теперь хоть ясно чем они занимаются) В spru303b.pdf "TMS320C6000 DSP/BIOS User’s Guide" в разделе 1.3.3 " Operation Names" об них и говорится.
Кроме того, в моем примере (ledprd) светодиодом мигают в потоке PRD_blinkLED0 (см. periodic function manager
в картинке). Ссылаясь на spru303b.pdf раздел 1.3.3: "PRD_F_swi. Run by the highest priority SWI object, PRD_swi, to run the PRD functions.",
делаем вывод: чтобы запустить нами созданные периодические функции (в periodic function manager'е), нам необходим вспомогательный встроенный объект (создаваемый, скорее всего, нами) под названием PRD_swi (и только таким названием!), который создается в "SWI - Software Interrupt Manager'е" (с приоритетом выше наибольшего: в моем примере у объекта PRD_swi на 1 больше приоритет,чем у KNL_swi) и который использует стандартную функцию ядра PRD_F_swi. А эта функция уже, имея наибольший приоритет, уже используется для запуска PRD -функций из PRD - Periodic Function Manager.
Вот! Сие понимание у меня сложилось. Так ли?И теперь стало понятно почему в другом примере (его конфигурационный файл led.tcf в левой части открытого композера на картинке, которая все мусолится здесь) в конфигурационном файле "led.tcf" отсутствует объект PRD_swi - т.к. в этом примере мигают периодически не при помощи второго PRD-потока, а в main'е:
Код
void main( )
{
/* Initialize the board support library, must be first BSL call */
DSK6455_init( );
/* Initialize the LED and DIP switch modules of the BSL */
DSK6455_LED_init( );
DSK6455_DIP_init( );
while( 1 )
{
/* Toggle LED #0 */
DSK6455_LED_toggle( 0 );
/* Check DIP switch #3 and light LED #3 accordingly, 0 = switch pressed */
if ( DSK6455_DIP_get( 3 ) == 0 )
/* Switch pressed, turn LED #3 on */
DSK6455_LED_on( 3 );
else
/* Switch not pressed, turn LED #3 off */
DSK6455_LED_off( 3 );
/* Spin in a software delay loop for about 200ms */
DSK6455_waitusec( 200000 );
}
}
beaRTS
Jul 27 2012, 05:28
Напоследок, еще выдержка из юзер гайд, чтоб стало до конца все понятно:
"_KNL_run. Run by the lowest priority SWI object, KNL_swi, to run the
task scheduler if it is enabled. This is a C function called KNL_run. An
underscore is used as a prefix because the function is called from
assembly code.
"
так что объект KNL_swi в SWI - Software Interrupt Manager, как я понимаю, должен быть всегда!.
Andron77
Aug 1 2012, 09:19
Подскажите, как заставить работать эмулятор XDS100v2 в CCS 3.3 SR12, последний доступный апдейт установлен. Читал, что официально XDS100v2 не поддерживается в CCS 3.3, только XDS100v1, но вроде бы в последнем релизе SR12 неофициально внедрена поддержка XDS100v2. Поиском нашел, что нужно переписать какой-то xml-файл и jioserdesusb.dll из CCS 4 в CCS3.3.
Сам работаю с CCS4 без DSP/BIOS с F2808, а прошлые старые проекты были написаны до меня в CCS3.3 с DSP\BIOS и импортируются в CCS 4 с конфликтами версий.
где-то лежит на некоем фтп:
upload/DSP/TI - Code Composer Studio/CCS3.3-xds100v2/ccs3xds100v2.rar
(могут перенести в pub/туда_же)
SAURIS GmbH
Aug 1 2012, 09:47
Если используется xds100v2 в виде SAU100-USB - то можем официально поддержать (где-то в течение недели выпустить драйвер), если в этом есть интерес.