|
|
  |
TMS320 - начало пути, Прошу помощи в освоении |
|
|
|
Jul 24 2012, 10:57
|
Местный
  
Группа: Участник
Сообщений: 211
Регистрация: 27-12-11
Из: Челябинск
Пользователь №: 69 111

|
Цитата(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 24 2012, 10:58
Эскизы прикрепленных изображений
--------------------
"Об уме человека вернее судить по его вопросам, нежели по его ответам" (с)
|
|
|
|
|
Jul 25 2012, 05:26
|
Местный
  
Группа: Участник
Сообщений: 211
Регистрация: 27-12-11
Из: Челябинск
Пользователь №: 69 111

|
Есть такой сайт 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 25 2012, 06:39
Эскизы прикрепленных изображений
--------------------
"Об уме человека вернее судить по его вопросам, нежели по его ответам" (с)
|
|
|
|
|
Jul 26 2012, 03:57
|
Местный
  
Группа: Участник
Сообщений: 211
Регистрация: 27-12-11
Из: Челябинск
Пользователь №: 69 111

|
запустил не без проблем первый примерчик (до этого хотел сам разобраться, но все-таки лучше с примеров начинать - так быстрее)на плате 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, 04:34
--------------------
"Об уме человека вернее судить по его вопросам, нежели по его ответам" (с)
|
|
|
|
|
Jul 26 2012, 07:52
|
Местный
  
Группа: Участник
Сообщений: 211
Регистрация: 27-12-11
Из: Челябинск
Пользователь №: 69 111

|
Смотрю 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, 08:19
Эскизы прикрепленных изображений
--------------------
"Об уме человека вернее судить по его вопросам, нежели по его ответам" (с)
|
|
|
|
|
Jul 26 2012, 10:32
|
Местный
  
Группа: Участник
Сообщений: 211
Регистрация: 27-12-11
Из: Челябинск
Пользователь №: 69 111

|
Цитата(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 26 2012, 10:47
--------------------
"Об уме человека вернее судить по его вопросам, нежели по его ответам" (с)
|
|
|
|
|
Jul 27 2012, 04:24
|
Местный
  
Группа: Участник
Сообщений: 211
Регистрация: 27-12-11
Из: Челябинск
Пользователь №: 69 111

|
Цитата(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, 04:56
--------------------
"Об уме человека вернее судить по его вопросам, нежели по его ответам" (с)
|
|
|
|
|
Aug 1 2012, 09:19
|
Участник

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

|
Подскажите, как заставить работать эмулятор 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 с конфликтами версий.
|
|
|
|
|
Aug 1 2012, 09:47
|

Знающий
   
Группа: Участник
Сообщений: 531
Регистрация: 16-12-09
Пользователь №: 54 291

|
Если используется xds100v2 в виде SAU100-USB - то можем официально поддержать (где-то в течение недели выпустить драйвер), если в этом есть интерес.
--------------------
Sauris GmbH technical support (web site: http://www.sauris.de) XDS100, XDS510 JTAG Emulators for TI DSP & ARM, Flash/EEPROM programming JTAG tools, System-on-Module products.
|
|
|
|
|
Aug 2 2012, 07:02
|
Участник

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

|
Цитата(SM @ Aug 1 2012, 16:40)  где-то лежит на некоем фтп: upload/DSP/TI - Code Composer Studio/CCS3.3-xds100v2/ccs3xds100v2.rar Огромное спасибо! Скачал, CCS 3.3 соединяется с XDS100V2, только при попытке прошить ругается на распределение памяти memory map, похоже ошибка в файле cmd?
|
|
|
|
|
Aug 20 2012, 12:11
|
Группа: Новичок
Сообщений: 9
Регистрация: 20-08-12
Пользователь №: 73 198

|
Здравствуйте. У меня несколько вопросов по плате TMS320C6455 DSK. 1. Можно ли управлять процессором с компьютера по USB, минуя CCS: перезагружать процессор, загружать программу, запускать ее, читать и перезаписывать память (в том числе, DDR)? Ясно, что должно быть можно (CCS это как-то делает), но как? 2. Возможно ли человеку, не знакомому с паяльником, присоединить к этой плате устройства ввода-вывода (либо тачскрин, либо LCD+что-нибудь мыше- или джойстико-образное). Если да, то какие и как? 3. Надо ли готовиться к тому, что придется покупать лицензию на CCS5, когда кончится trial период? Или она поверит, что наличие платы - весомый аргумент для бесплатной лицензии? Если окажется, что придется покупать - работает ли CCS3.3 (которая пришла вместе с платой) под 64-битной Windows 7?
|
|
|
|
|
Aug 20 2012, 14:30
|

Знающий
   
Группа: Участник
Сообщений: 531
Регистрация: 16-12-09
Пользователь №: 54 291

|
Цитата(Mrrl @ Aug 20 2012, 16:11)  Здравствуйте. У меня несколько вопросов по плате TMS320C6455 DSK. 1. Можно ли управлять процессором с компьютера по USB, минуя CCS: перезагружать процессор, загружать программу, запускать ее, читать и перезаписывать память (в том числе, DDR)? Ясно, что должно быть можно (CCS это как-то делает), но как? Можно, если имеется такой софт для эмулятора, через который Вы работаете (например как TCLXDS под наши эмуляторы). Если работаете через "набортный" эмулятор, то, насколько мне известно, такого софта нет. Цитата(Mrrl @ Aug 20 2012, 16:11)  2. Возможно ли человеку, не знакомому с паяльником, присоединить к этой плате устройства ввода-вывода (либо тачскрин, либо LCD+что-нибудь мыше- или джойстико-образное). Если да, то какие и как? Нельзя. Цитата(Mrrl @ Aug 20 2012, 16:11)  3. Надо ли готовиться к тому, что придется покупать лицензию на CCS5, когда кончится trial период? Или она поверит, что наличие платы - весомый аргумент для бесплатной лицензии? Если окажется, что придется покупать - работает ли CCS3.3 (которая пришла вместе с платой) под 64-битной Windows 7? Да, готовиться надо. Но проще и полезнее выкинуть глючную виндовс 7, отдав ее бухгалтерам и игроманам, и забыв как страшный сон, и спокойно работать в старом добром CCS3.3 под XP. Либо открутить часы компа назад, CCS будет думать, что еще триальный период.
--------------------
Sauris GmbH technical support (web site: http://www.sauris.de) XDS100, XDS510 JTAG Emulators for TI DSP & ARM, Flash/EEPROM programming JTAG tools, System-on-Module products.
|
|
|
|
|
Aug 20 2012, 15:20
|
Группа: Новичок
Сообщений: 9
Регистрация: 20-08-12
Пользователь №: 73 198

|
Спасибо, интересно. Хотя язык TCL смущает, я с ним не работал. Наверное, из-под C# общаться с ним будет тяжело. В вашей библиотеке можно читать/записывать бинарные файлы в память напрямую, без промежуточных массивов? Кстати, за полтора года у меня не было ни одного сбоя Windows 7  Но выкинуть ее - тоже вариант. И поставить старую добрую Windows 8 - заодно и трайл период обнулится. А проще мне, наверное, будет купить плату с C6678 - к ней CCS5 идет в приложении, а стоит она примерно столько же, сколько лицензия
|
|
|
|
|
Aug 20 2012, 15:39
|

Знающий
   
Группа: Участник
Сообщений: 531
Регистрация: 16-12-09
Пользователь №: 54 291

|
Цитата(Mrrl @ Aug 20 2012, 19:20)  Спасибо, интересно. Хотя язык TCL смущает, я с ним не работал. Наверное, из-под C# общаться с ним будет тяжело. В вашей библиотеке можно читать/записывать бинарные файлы в память напрямую, без промежуточных массивов? Я совершенно не представляю себе, как с ним из-под C# общаться, и что это за C# имею только слабое теоретическое познание, что это что-то типа явы, только микрософтовское. Однако, если из-под C# можно выполнить другую программу с передачей ей параметров, и получить от нее код возврата, то все сделается без каких либо проблем. На языке TCL можно написать скрипт, который прочитает бинарный файл, приконнектится к плате, и загрузит его туда. И далее, если это физически возможно, то из C# надо будет запустить этот скрипт, который и выполнит задачу. Также в библиотеке имеется готовая функция по загрузке в память процессора COFF-файла (.out, то, что композер делает, когда линкует программу) - она сама написана на TCL, так что ее можно посмотреть, как она устроена.
--------------------
Sauris GmbH technical support (web site: http://www.sauris.de) XDS100, XDS510 JTAG Emulators for TI DSP & ARM, Flash/EEPROM programming JTAG tools, System-on-Module products.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|