CCStudio - ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ

ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ ПО CCStudio

Перевод страницы: http://processors.wiki.ti.com/index.php/CCStudio_FAQ

Содержание

 

1        Часто задаваемые вопросы по интегрированной среде разработки Code Composer Studio

1.1  ПРОДУКТ

1.1.1        Вопрос: Как проверить состояние подписки на CCS или восстановить ее?

1.1.2        Вопрос: Как можно получить последние выпуски обновления (Service Releases)?

1.2  ИНСТАЛЛЯЦИЯ

1.2.1         Вопрос: Я получаю сообщения об ошибках, когда пытаюсь инсталлировать CCS или выпуск обновления CCS. Как установить их правильно?

1.2.2         Вопрос: Поддерживает ли CCS v3.3 Windows 7?

1.3  ОБЩИЕ ВОПРОСЫ ПО ИНТЕГРИРОВАННОЙ СРЕДЕ РАЗРАБОТКИ

1.3.1         Вопрос: Как сконфигурировать редактор CCS, чтобы он мог отображать и обеспечивать отладку файлов с расширением *.xxx, кроме файлов с обычными расширениями .cxx, .cpp, .h?

1.3.2         Вопрос: В CCStudio 3.0 стандартные исходящие вызовы, такие как printf() и puts(), больше не работают с приложением для BIOS. Что случилось?

1.3.3         Вопрос: Есть ли какие-либо опции построения (build options) для проекта на базе DSP C674x?

1.3.4         Вопрос: Можно ли модифицировать вручную .PJT-файл или MAK-файл?

1.3.5         Вопрос: Как можно модифицировать переменные окружения для моей среды построения программного обеспечения перед запуском CCS?

1.3.6         Вопрос: При компиляции проекта компилятор выдает ошибку о том, что он не может найти файл заголовка, который является частью проекта. Почему?

1.3.7         Вопрос: Почему появляется сообщение «build tools not found» (средство построения не найдено) при создании проекта в CCS?

1.3.8         Вопрос: Чем отличается Cycle Accurate Simulator от Device Simulator в CCS?

1.3.9         Вопрос: Что представляет собой режим Run-Free? Чем он отличается от обычного режима Run (F5) при запуске программы с помощью CCS?

1.3.10     Вопрос: Есть ли способ сохранения точек прерывания в CCS после завершения работы системы и их новой загрузки при запуске?

1.3.11     Вопрос: Каким образом вновь активировать CCStudio Monitor после того, как я заблокировал его (2.40+)?

1.3.12     Вопрос: Как избежать отсечения длинных путей поиска файлов в командах включения (include) в CCS?

1.3.13     Вопрос: Какие файлы *.dmp генерируются в CCStudio (2.30+)?

1.3.14     Вопрос: В CCStudio v2.30 произошел сбой, но я не могу найти мини-дамп-файл в поддиректории .\logs, описанной выше. Где он?

1.3.15     Вопрос: Я пользуюсь старым компилятором для компоновки библиотеки, построенной с помощью нового компилятора, и получаю сообщение об ошибке «>> error: illegal relocation type 050002 found in section .debug_something, file filename». В чем дело?

1.3.16     Вопрос: Каково назначение папки *.CS_, которая генерируется в том же каталоге, что и проект, с которым я работаю в CCStudio (v2.40/v3.1+)?

1.3.17     Вопрос: С помощью команды CCscripting BreakpointSetLine() интерфейс прикладного программирования помещает точку прерывания в таблицу точек прерывания, но не показывает файл или исходную строку. Почему?

1.3.18     Вопрос: Я пытаюсь использовать интегрированную поддержку CCStudio IDE для системы MS Visual SourceSafe, но CCStudio не распознает, что в моем проекте контролируется исходный код, хотя я корректно выбрал MS Visual SourceSafe в качестве проводника для CCStudio. Что нужно сделать, чтобы CCStudio определил, что в моем проекте контролируется исходный код?

1.3.19     Вопрос: Каково назначение файла exclude.dat и как он работает?

1.3.20     Вопрос: Каким образом я могу установить ассоциации типов файлов с расширениями, неизвестными встроенному редактору CCStudio?

1.3.21     Вопрос: Каким образом добавить пользовательские шаги построения (например, частичная компоновка) к pjt-файлам библиотеки CCStudio?

1.3.22     Вопрос: Как создать подраздел внутри раздела компоновщика, в котором могут быть размещены выбранные объектные файлы?

1.3.23     Вопрос: Почему появляется сообщение об ошибке «Try to map memory with your target device», когда я формирую свой исходный код?

1.3.24     Вопрос: В чем причина появления сообщения «Invalid Object file» при попытке загрузки моей программы?

1.3.25     Вопрос: Каково содержание файла распределения памяти и как сгенерировать этот файл для своего проекта в CCS?

1.3.26     Вопрос: Как выполнить отладку оверлейных программ в CCStudio ?

1.3.27     Вопрос: Содержимое менеджера компонентов (Component Manager) в CCStudio пропало. Что произошло и как разрешить эту проблему?

1.3.28     Вопрос: Предположим, я загрузил C6000 DSP из флэш-памяти, которая не была запрограммирована. После процесса инициализации возможные некорректные команды будут сохранены в IPRAM, и DSP будет их выполнять. Есть ли способ контроля DSP с помощью JTAG-интерфейса, чтобы можно было загрузить корректную программу и запустить ее выполнение?

1.3.29     Вопрос: Почему плагины анализа в режиме реального времени (RTA) обновляются так медленно?

1.3.30     Вопрос: Почему CCStudio зависает или дает сбой при запуске?

1.3.31     Вопрос: Как определить регистры распределения пользовательской памяти, чтобы они отображались в окне регистров CCStudio 3.3?

1.3.32     Вопрос: Почему RTA-плагины в CCStudio не обновляются, когда задание запущено, а только когда оно остановлено?

1.3.33     Вопрос: Почему инсталляция CCStudio 3.1 больше не выполняется должным образом после того, как я деинсталлировал CCStudio 3.3?

1.3.34     Вопрос: Будет ли работать CCStudio на Microsoft Vista?

1.3.35     Вопрос: Когда я обновил последнюю версию CCS, предыдущая версия была сохранена в папке деинсталляции. Можно ли ее удалить?

1.3.36     Вопрос: Как очистить реестр Windows при обновлении Code Composer Studio до более новой версии?

1.3.37     Вопрос: Не могу найти Руководство по DSP/BIOS в CCS, помогите!

1.3.38     Вопрос: Поддерживает ли CCStudio отладку выхода ELF?

1.3.39     Вопрос: Могу ли я сформировать файл своего проекта вне CCStudio?

1.3.40     Вопрос: Произошел сбой CCS, и появилось сообщение: «Unexpected fatal Error Encountered which may have been caused by a stack overflow, out of memory condition, or access violation. I m going to try save your work before TERMINATING this application.»

1.3.41     Вопрос: Как узнать, какой номер версии выпуска обновления CCStudio 3.3 Service Release инсталлирован?

1.3.42     Вопрос: Как узнать, в каком выпуске обновления (Service Release) решена проблема «x»?

1.3.43     Вопрос: С помощью каких средств CCS можно посмотреть полный список используемых файлов, функций и локальных переменных?

1.3.44     Вопрос: Что делать в случае появления сообщения об ошибке «Load Failed. A section of your program falls into a memory region that is not writable. Check your linker configuration and/or memory map.»?

1.3.45     Вопрос: Что означает появление сообщения «Because this program contains initialised RAM data it may run successfully under Code Composer studio but not as a standalone system. If your flash program requires initialised data in RAM, you will need to write Flash code to initialise Ram memory» и что произошло?

1.3.46     Вопрос: В чем разница между режимами Debug и Release?

1.3.47     Вопрос: Почему я не могу увидеть правильные значения параметров на осях графиков в CCS?

1.3.48     Вопрос: Информация о лицензионном соглашении для конечного пользователя Code Composer Studio.

1.3.49     Вопрос: В чем разница между DSK-версией, оценочной версией и полной версией CCS?

1.3.50     Вопрос: Как выполнить отладку моей программы и использовать точки прерывания в CCS при запуске ее из встроенной флэш-памяти DSP C28x?

1.3.51     Вопрос: При использовании CCS, что произойдет, если изменить настройки системных часов?

1.3.52     Вопрос: Как разрешить проблему при появлении сообщения «Command-line error: cannot open command file C:\Documents 1 fatal error detected in this compilation. Compilation terminated.»?

1.3.53     Вопрос: Когда я пытаюсь построить проект, CCS не может найти stb.lib. Где мне его найти?

1.3.54     Вопрос: Почему hex6x (утилита Hex) выдает предупреждающее сообщение «WARNING: Can't convert RAM-model .cinit with –image»?

1.3.55     Вопрос: Почему мой файл .out в CCS 3.0 имеет больший размер, чем в CCS v2.2x?

1.3.56     Вопрос: Что происходит, когда возникает исключительная ситуация во время обработки исключения (вложенное исключение)?

1.3.57     Вопрос: Есть ли способ в CCS сохранить точки прерывания при завершении работы CCS и их новой загрузки при запуске?

1.3.58     Вопрос: Почему во время пошагового исполнения ассемблерного кода в CCS на каждом шаге программа перескакивает через несколько команд ассемблера?

1.3.59     Вопрос: Как решить проблему задержек очереди буфера команд (IBQ)?

1.3.60     Вопрос: Как использовать инструмент анализа задержек конвейера Pipeline Stall Analyzer?

1.3.61     Вопрос: В чем причина того, что окно Stdout в CCS не открывается при исполнении команды printf в моем проекте?

1.3.62     Вопрос: Почему я получаю сообщения об ошибках времени компоновки при построении проектов на базе BIOS5 в CCS3.3 с помощью файлов tcf и cfg?

1.3.63     Вопрос: У меня постоянно появляется сообщение «CodeWright: cc_app.exe - Application Error». В чем причина?

1.4  GEL

1.4.1         Вопрос: Чем могут помочь GEL-файлы в моей разработке?

1.4.2         Вопрос: Где мне найти информацию о доступных GEL-функциях?

1.4.3         Вопрос: GEL работает в синхронном или асинхронном режиме?

1.4.4         Вопрос: Можно ли объявлять массивы в GEL-файле в CCS?

1.4.5         Вопрос: У меня в CCStudio 2.2x появляется диалоговое окно «Cannot evaluate GEL_OpenWindow() without a valid Control window». В чем причина?

1.4.6         Вопрос: Какие изменения нужно внести в запускающие GEL-файлы для поддержки версий CCStudio, которые поддерживают соединение/разъединение?

1.4.7         Вопрос: Если я сконфигурирую интегрированную среду разработки с помощью выбора пунктов меню Options->Customize->Debug Properties->Target connection actions на «Connect to the target when a control window is opened», могу ли я затем оставить вызовы, которые обеспечивают доступ к адресату, в функции StartUp()?

1.4.8         Вопрос: Могу ли я сделать какой-либо вызов, который выбирает целевое устройство в вызове OnTargetConnect()?

1.4.9         Вопрос: Можно ли использовать команду GEL_MemoryLoad для загрузки hex-файла во флэш-память? Почему GEL_MemoryLoad не распознает .hex-файл?

1.4.10     Вопрос: CCS позволяет мне сохранять память как адресуемый блок (Addressable Unit). Могу ли я использовать GEL-функцию GEL_MemorySave(), чтобы также сохранить память в этом формате?

1.5  ПРОФИЛИРОВАНИЕ

1.5.1         Вопрос: Как мне установить диапазон профилирования (Profile Range), в котором моя начальная точка находится в одной функции, а конечная точка – в другой функции?

1.5.2         Вопрос: Почему столько времени занимает активация всех моих функций для профилирования?

1.5.3         Вопрос: Я получаю сообщение об ошибке, и CCStudio зависает, когда я активирую все свои функции для профилирования. Что происходит?

1.5.4         Вопрос: Похоже, что не работает профилирование для DSP C55x в процессоре OMAP2420. Поддерживается ли профилирование для данного устройства?

1.5.5         Вопрос: Можно ли одновременно использовать профилирование и RTDX в Code Composer Studio v 3.3?

1.5.6         Вопрос: Почему результаты, полученные мною с помощью инструмента профилирования, не соответствуют ожидаемым результатам?

1.5.7         Вопрос: Возможно ли профилирование во флэш-памяти для устройств C28x?

1.5.8         Вопрос: Какие имеются ограничения для использования внешнего счетчика (External Counter), который находится в эмуляторе при профилировании приложений?

1.5.9         Вопрос: В чем разница между тактовым циклом и пакетом исполнения (execution packet)?

1.5.10     Вопрос: Что представляет собой набор инструментов анализа (Analysis Tool Kit)?

1.6  КОМПОНЕНТ Wizard Tool ДЛЯ РАЗРАБОТКИ ПО ТЕХНОЛОГИИ ExpressDSP

1.6.1         Вопрос: Как получить Wizard tool для разработки по технологии Express DSP в CCS->tools? Он включен в состав CCS 3.1, но отсутствует в CCS 3.3. Почему?

2        АППАРАТНЫЕ ЭМУЛЯТОРЫ

 

 

 

Часто задаваемые вопросы по интегрированной среде разработки Code Composer Studio

 

Обсуждаемые ниже часто задаваемые вопросы охватывают проблемы, связанные с интегрированной средой разработки CCS IDE (GUI, отладчик и т.д.). Вопросы, имеющие отношение к:

  • инструментам генерации кода (Code Generation Tools) – см. часто задаваемые вопросы по CGT (CGT FAQ)
  • DSP/BIOS – см. часто задаваемые вопросы по DSP/BIOS (DSP/BIOS FAQ)
  • созданию скриптов – см. часто задаваемые вопросы по созданию скриптов (Scripting FAQ)

 

Замечание: на сайте имеется отдельный список часто задаваемых вопросов по Code Composer Studio v4.

 

Как правило, для конкретных устройств нет отдельных списков часто задаваемых вопросов. Если Вы ищете ответы на вопросы, связанные с интересующим Вас устройством, просмотрите основной список часто задаваемых вопросов по темам.

 

ПРОДУКТ

 

Вопрос: Как проверить состояние подписки на CCS или восстановить ее?

 

Вам следует направить письмо по электронной почте по адресу ccs_subscriptions@list.ti.com и компания TI представит Вам информацию о состоянии подписки и поможет Вам возобновить подписку, если ее срок истек.

 

Вопрос: Как можно получить последние выпуски обновления (Service Releases)?

 

Вы можете получить доступ к выпускам обновления для Code Composer Studio v3.x из справочного меню. Как вариант, Вы можете перейти на страницу консультанта по обновлениям (Update Advisor) здесь.

 

ИНСТАЛЛЯЦИЯ

 

Вопрос: Я получаю сообщения об ошибках, когда пытаюсь инсталлировать CCS или выпуск обновления CCS. Как установить их правильно?

 

Общераспространенные проблемы:

  • Для инсталляции CCS нужны права администратора (за более подробной информацией обращайтесь к примечаниям к выпуску)
  • При выполнении полной инсталляции не осуществляйте установку поверх существующей инсталляции CCS (т.е. не инсталлируйте поверх ранее созданного установочного каталога CCS)

Сбой при новой инсталляции. В процессе инсталляции генерируется журнал регистрации событий. Местоположение этого журнала по умолчанию: C:\TI_InstallLog.txt. В этом журнале регистрируются все ошибки при инсталляции. Чтобы найти нужную запись об ошибке, нужно открыть журнал и просмотреть его. В процессе инсталляции может появиться сообщение об ошибке защиты (InstallShield), каждая из которых имеет определенный код.

  • «Error 1334». Эта ошибка иногда возникает при инсталляции на компьютере под управлением Windows, когда установлен какой-либо язык, отличный от английского. Это не является серьезной проблемой, но вызывает некоторые неудобства. Возможным временным решением является установка в Windows английского языка на время инсталляции CCS (и возврат на нужный язык после завершения инсталляции).
  • «Error 1722. There is a problem with this windows installer package. A program run as a part of the setup did not finish as expected». Причины этой ошибки могут быть различными. Наиболее часто она появляется из-за проблем, связанных с запуском средства инсталляции DSP/BIOS. Одним из способов решения этой проблемы является использование пользовательского средства инсталляции, в котором не предусмотрена установка DSP/BIOS (для того, чтобы впоследствии установить автономную версию DSP/BIOS). Имеются отдельные пользовательские средства инсталляции для полной версии (Full version) и версии бесплатных оценочных инструментов (Free Evaluation Tools version). Свяжитесь со службой технической поддержки для получения дополнительной информации о том, как получить эти пользовательские средства инсталляции.

— Другая причина ошибки может быть связана с некорректными региональными установками. Перед инсталляцией установите регион на США, а язык – на английский: перейдите в меню Start --> Control Panel --> Regional and Language Options. На вкладке Regional Options установите опцию Location на «United States». На вкладке Advanced установите опцию Language for non-Unicode programs на «English (United States)». Эти установки могут быть изменены после инсталляции.

— Эта ошибка может также возникнуть, если Вы пытаетесь инсталлировать CCS в директорию, отличную от C:\CCStudio_v3.3. Попробуйте выполнить инсталляцию вдиректорию по умолчанию. В некоторых случаях это помогает.

  • «Error 1904. Module C:\CCStudio_v3.3\C2000\cgtools\bin\Bti2000.dll failed to register. HRESULT -2147221164». Эта ошибка может возникнуть, когда какие-либо приложения (например, SurfControl) переопределяют путь, по которому загружается ATL.DLL. Решить эту проблему можно, указав явным образом путь C:\Windows\System32\ATL.DLL и C:\CCStudio_v3.3\C2000\cgtools\bin\Bti2000.dll с помощью программы regsvr32.exe.
  • «Error 1935. An error occurred during the installation of assembly 'Syncfusion.Grid.Windows,Version="3.0.1.1",PublicKeyToken="036FE6034C821EA4». Эта ошибка часто возникает в сочетании с сообщением «Internal Error 2908». Как правило, имеются две причины появления этой ошибки.

— Версия средства инсталляции Windows на Вашем компьютере устарела. Вам нужно обновить ее до версии Windows Installer 3.1 или выше.

— Не установлена интегрированная среда .NET. Программное средство CCS должно установить ее автоматически, но иногда лучше установить ее специально перед инсталляцией CCS.

  • «Internal Error 2738». Это сообщение показывает, что система VBScript не зарегистрирована на машине, в которой производится инсталляция. Попытайтесь зарегистрировать файл vbscript.dll (находится в %windir%\system32 в Windows 32-bit) с помощью regsvr32 и снова инсталлировать CCS.
  • «Internal Error 2753 CC_APP.EXE_308F7B0A_0446_46D3_846E_AB968F81FCB3». Это сообщение показывает, что в системе сохранились следы прежней инсталляции и это мешает средству инсталляции Windows Installer установить определенные файлы. Решением может стать ручная очистка записей прежней установки (при условии, что она не использовалась) и попытка новой инсталляции.

Другие рекомендации по решению проблем с появлением ошибок InstallShield можно найти на сайте по адресу: http://www.ehow.com/how_2109053_around-install-shield-errors.html.

При отправке сообщения с просьбой об оказании помощи при инсталляции всегда прикрепляйте к письму файл TI_InstallLog.txt.

 

Сбои при инсталляции выпуска обновления CCS SR (Service Release).

 

При инсталляции CCS SR (при инсталляции Service Release поверх существующей установки CCS) иногда могут возникать сбои. Если основная причина этого не ясна, то одним из объяснений этого может быть то, что некоторые процессы, запущенные при загрузке ПК, вызывают сбои защиты инсталляции (InstallShield). Одним из временных решений, которое может здесь помочь, является запуск средства инсталляции, когда Windows находится в безопасном режиме (чтобы не тратить время на поиск того, какой именно процесс вызвал данную проблему).

Заметим, что инсталляции CCS DSK и FET (Free Evaluation Tools) нельзя обновить с помощью CCS SR. Поэтому если попробовать установить CCS SR поверх CCS FET, то инсталляция CCS SR завершиться неудачно.

 

Вопрос: Поддерживает ли CCS v3.3 Windows 7?

 

CCS v3.3 официально не поддерживается Windows 7. Windows 7 и Vista весьма похожи и CCS v3.3 была протестирована на Vista. Важно то, что CCS v3.3 предназначен для 32-разрядной ОС Windows. Если устанавливать это средство на 64-разрядную ОС, то во время инсталляции появятся сообщения об ошибках (их можно игнорировать). Вам нужно убедиться, что у Вас 64-разрядные драйверы. Мы рекомендуем, чтобы пользователи Windows 7 перешли на CCS v4.

 

ОБЩИЕ ВОПРОСЫ ПО ИНТЕГРИРОВАННОЙ СРЕДЕ РАЗРАБОТКИ

 

Вопрос: Как сконфигурировать редактор CCS, чтобы он мог отображать и обеспечивать отладку файлов с расширением *.xxx, кроме файлов с обычными расширениями .cxx, .cpp, .h?

 

Имеется файл с расширением .ini, который можно модифицировать так, чтобы Вы могли добавлять расширения вида .xxx. В результате чего в CCS появляется возможность их редактировать.

Этот файл называется FileExt.ini и он находится в c:\CCStudio_v3.x\cc\bin\editor.

В этом файле нужно модифицировать строку

text:Header Files (*.h*;*.inc):*.h*;*.inc

таким образом, чтобы она приняла следующий вид:

text:Header Files (*.h*;*.inc;*.xxx):*.h*;*.inc;*.xxx.

Для настройки свойств обработки файлов в CCS можно использовать меню Options > Editor > Language, выбрать расширение .ini с левой стоорны и модифицировать свойства.

Вопрос: В CCStudio 3.0 стандартные исходящие вызовы, такие как printf() и puts(), больше не работают с приложением для BIOS. Что случилось?

 

В инструментах генерации программного обеспечения CCStudio 3.0 для BIOS имеется один недочет – пропущен идентификатор, необходимый для команды стандартного вывода stdout. Чтобы команда stdout работала правильно, нужно просто определить отсутствующий идентификатор – «_C$$EXIT». Это можно сделать в CCStudio, набрав _C$$EXIT в поле, выбрав в меню:

Project->Build Options…->Linker->Advanced->Create Unresolved Ext Symbol (-u).

Данная проблема решена в версии CCStudio 3.1 и выше.

 

Вопрос: Есть ли какие-либо опции построения (build options) для проекта на базе DSP C674x?

 

Да, для процессора C674x имеется опция построения. Это -mv6740. Вы может использовать -mv6740 в командной строке компилятора, хотя эта возможность не предусмотрена в выпадающем меню CCS->Build options.

 

Вопрос: Можно ли модифицировать вручную .PJT-файл или MAK-файл?

 

Файл .PJT может быть модифицирован пользователем, а файл .MAK нет. Файл .MAK содержит контрольные суммы и другую информацию, которая необходима в проекте, чтобы определить взаимосвязи и т.д. В Code Composer Studio пользователь может загрузить проект и, нажав правую кнопку мыши на файле .PJT в менеджере проекта (Project Manager), открыть пункт меню Open for Editing. Это позволит пользователю вручную редактировать файл .PJT.

 

Вопрос: Как можно модифицировать переменные окружения для моей среды построения программного обеспечения перед запуском CCS?

 

Изучите статью «Изменение переменных окружения для BIOS, DVSDK, INSTALL DIR в XP» (Changing BIOS, DVSDK, INSTALL DIR environment variables in XP).

 

Вопрос: При компиляции проекта компилятор выдает ошибку о том, что он не может найти файл заголовка, который является частью проекта. Почему?

 

Это вполне ожидаемое поведение. Средство Code Composer Studio добавляет файл заголовка к проекту, когда оно обнаруживает утверждение #include. Поиск файла заголовка осуществляется в каталоге проекта и, если его там нет, компилятор генерирует ошибку.

 

Вопрос: Почему появляется сообщение «build tools not found» (средство построения не найдено) при создании проекта в CCS?

 

Это происходит, если dll-файл интерфейса инструмента построения не был автоматически зарегистрирован в процессе инсталляции. Пожалуйста, наберите указанную команду в командной строке, предварительно указав вместо X символ, который соответствует используемому DSP компании TI:

C:\WINNT\system32>regsvr32 C:\ti\cX000\cgtools\bin\BtiX000.dll

 

Вопрос: Чем отличается Cycle Accurate Simulator от Device Simulator в CCS?

 

Инструмент Cycle Accurate Simulator способен моделировать периферию Вашей платы и алгоритм ее работы в условиях, максимально близких к реальным.

Device Simulator предназначен для моделирования периферии в идеальных условиях.

 

Вопрос: Что представляет собой режим Run-Free? Чем он отличается от обычного режима Run (F5) при запуске программы с помощью CCS?

 

Средство разработки Code Composer Studio детектирует катастрофическое событие, независимо от того, запущено ли задание или остановлено.

Средство разработки Code Composer Studio, в котором запущено задание в режиме Run-Free

  • не останавливается в каждой точка прерывания;
  • не детектирует каких-либо катастрофических событий в версии CCS 2.1;
  • не отсылает каких-либо данных, связанных с командой printf, в хост-систему.

Катастрофическое событие возникает в следующих случаях:

  1. потеря питания;
  2. потеря физического соединения (отсоединение кабеля);
  3. пауза, вызванная действием активного состояния сигнала Ready.

 

Вопрос: Есть ли способ сохранения точек прерывания в CCS после завершения работы системы и их новой загрузки при запуске?

 

В CCS реализована концепция рабочей области (workspace). Все, что нужно сделать – это сохранить рабочую область после установки точек прерывания с помощью команд меню File -> Workspace -> Save Workspace As.

Чтобы загрузить затем эту рабочую область при запуске нужно выполнить следующие шаги:

  1. щелкните правой кнопкой мыши на иконке CCS на Вашем рабочем столе;
  2. выберете свойства и для вашего задания (Target) наберите путь c:\ti\cc\bin\cc_app.exe c:\test\test.wks, где c:\test\test.wks – путь сохранения Вашей рабочей области.

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

 

Вопрос: Каким образом вновь активировать CCStudio Monitor после того, как я заблокировал его (2.40+)?

 

Есть два способа активации CCStudio Monitor:

  • запустите CCSMonitor.exe из каталога <install_dir>\cc\bin,

или

  • откройте файл CCSMonitor.ini, расположенный в каталоге <install_dir>\cc\bin. Установите значение свойства Enabled, равное 1.

В версии CCStudio 3.1 и выше CCStudio Monitor можно активировать из интегрированной среды разработки, просто щелкнув на опции Help->CCS Monitor.

 

Вопрос: Как избежать отсечения длинных путей поиска файлов в командах включения (include) в CCS?

 

Если в Вашем проекте используются длинные пути поиска файлов, то CCS может обрезать эти пути при загрузке сборочного файла проекта. Поэтому нужно указать в Code Composer Studio, чтобы можно было использовать предварительно заданные пути поиска файла для компилятора с помощью, например, определения пути поиска в переменной окружения C6X_C_DIR в Вашей ОС.

 

Вопрос: Какие файлы *.dmp генерируются в CCStudio (2.30+)?

 

Мини-дамп (*.dmp) – это двоичный файл, который содержит информацию о запущенном процессе. Компания Microsoft предлагает инструменты, которые позволяют создавать и анализировать такие файлы (windbg).

Когда происходит исключительная ситуация (исключение) в cc_app.exe, то ее можно поймать одним из трех способов:

  1. Исключение можно поймать и обработать в коде, сгенерированном блоком исключений (с помощью команды try/catch). После обработки исключения, дамп-файл не генерируется.
  2. Исключение можно поймать с помощью обработчика исключений cc_app, в результате чего создается дамп-файл.
  3. В случае отсутствия обработчика исключений, его можно поймать с помощью программы учета необработанных исключений и создать дамп-файл.

Когда происходит сбой в CCStudio (непредвиденная неисправимая ошибка) и обработчик исключений или другая программа ловит исключение, создается мини-дамп-файл. Эти мини-дамп-файлы полезны для учета проблем, связанных с CCStudio, и могут помочь инженерам в диагностике причин сбоев. Эти файлы создаются в директории <CCStudio Install Directory>\cc\bin\Logs (кроме CCStudio 2.30). Размер мини-дамп-файла составляет около 50 кБ.

 

Вопрос: В CCStudio v2.30 произошел сбой, но я не могу найти мини-дамп-файл в поддиректории .\logs, описанной выше. Где он?

 

Это известная проблема в v2.30, когда мини-дамп-файлы не размещаются в папке .\logs, описанной выше, а размещаются в текущем каталоге во время сбоя. Эта проблема решена в более поздних версиях CCStudio. Лучший способ отыскать мини-дамп-файлы, сгенерированные CCStudio v2.30, это выполнить поиск файлов с расширением *.dmp в корневом установочном каталоге CCStudio.

 

Вопрос: Я пользуюсь старым компилятором для компоновки библиотеки, построенной с помощью нового компилятора, и получаю сообщение об ошибке «>> error: illegal relocation type 050002 found in section .debug_something, file filename». В чем дело?

 

Объектный код библиотеки (или файла) включает отладочную информацию в формате DWARF, которую старый компоновщик распознать не может. DWARF – новый и более совершенный метод кодировки отладочной информации. Отладочная информация читается отладчиком, подобным Code Composer Studio (CCS). Формат отладочной информации изменен в компиляторе CCS 3.X по сравнению с компилятором CCS 2.X. Если у Вас появляется это сообщение, то Вы находитесь на финальной стадии построения с помощью компилятора CCS 2.X, используя библиотеку (или другой модуль объектного кода), построенную с помощью компилятора CCS 3.X.

Далее предполагается, что источником данной проблемы является библиотека. Если у вас проблема с отдельным объектным файлом, то ее решение, по сути, будет таким же, хотя детали могут отличаться. Настройки в случае обработки файла достаточно понятны.

Предполагая, что Вы не имеете возможности обновить компилятор, у Вас есть две возможности. Первая – повторная сборка библиотеки таким образом, чтобы в ней не использовалась отладочная информация в формате DWARF. Второй способ – удалить отладочную информацию из библиотеки.

 

Повторная сборка библиотеки

Этот способ предполагает, что для повторной сборки библиотеки Вы используете компилятор CCS 3.X. Создайте библиотеку таким же образом, как и раньше, но используйте дополнительный ключ для изменения формата отладочной информации. Ключ компилятора --symdebug:none отключает полную отладочную информацию. Ключ --symdebug:coff разрешает отладочную информацию прежнего стиля Stabs (иногда называемого COFF), которую может читать старый компилятор. Заметим, что использование --symdebug:coff может помешать оптимизации.

 

Удаление отладочной информации из библиотеки

Этот способ использует исполнимый модуль из набора инструментов компилятора C5500. Если Вы используете другой набор инструментов, замените «55» на аббревиатуру, соответсвующую Вашему набору инструментов. Например, пользователи компилятора C6000 должны заменить ar55 на ar6x.

Допустим, используемое имя библиотеки примеров: mylib.lib, тогда:

  1. скопируйте библиотеку в пустой каталог.
  2. извлеките все элементы библиотеки: ar55 -x mylib.lib.
  3. удалите отладочную информацию с помощью команды strip55 для каждого объектного файла .obj в каталоге: strip55 *.obj
  4. удалите старую библиотеку : del mylib.lib
  5. повторно постройте библиотеку: ar55 -r mylib.lib *.obj

Заметим, что Вам нужно выполнять эти шаги каждый раз, когда Вы обновляете библиотеку.

 

Вопрос: Каково назначение папки *.CS_, которая генерируется в том же каталоге, что и проект, с которым я работаю в CCStudio (v2.40/v3.1+)?

 

Папка *.CS_ содержит информацию, сохраненную для CodeSense (функции CodeMaestro для редактора CodeWright – автозавершение, ссылка и т.д.), которая генерируется с помощью CCStudio, когда Вы начинаете редактировать исходный файл для соответствующего проекта с помощью CodeWright. CodeWright – это редактор, который входит в состав CCS версий 2.40 и 3.1+ по умолчанию.

 

Вопрос: С помощью команды CCscripting BreakpointSetLine() интерфейс прикладного программирования помещает точку прерывания в таблицу точек прерывания, но не показывает файл или исходную строку. Почему?

 

Если Вы используете метод CCScripting для установки точек прерывания на данной строке исходного файла .c, то следует использовать следующий код (показан пример кода в Jscript):

var rtnCode = ccs.BreakpointSetLine("scom.c", 86);

Однако Вы можете заметить, что хотя точка прерывания действительно установлена и соответствует Вашему скрипту, но ни исходный код, ни красная точка в строке никогда не появляется.

Это часто происходит из-за того, что CCStudio не может найти Ваш исходный файл – он находится вне пути поиска, так как он может быть, к примеру, вне .pjt.

Имеется два способа решения этой проблемы.

(i) В CCStudio перейдите в меню Option -> Customize -> Directories ->, затем добавьте имя каталогов, содержащих исходники, в которых Вы собираетесь установить точки прерывания. Недостатками этого способа является необходимость применения жесткого задания путей поиска в CCStudio и невозможность автоматизации процесса.

(ii) Создайте GEL-файл, который добавляет каталоги в путь поиска CCStudio и вызывает этот GEL-файл из CCScripting.

Вы можете сделать это с помощью следующего скрипт-кода:

ccs.TargetEvalExpression('GEL_LoadGel("./scompath.gel");')
ccs.BreakpointSetLine("scom.c", 86);

И в Вашем файле scompath.gel нужно набрать, к примеру, следующий код:

 

/*-----------------------------------------------------------------*/
/* OnFileLoaded() is called after a program is loaded. */
/* Customize this function to automate actions before a */
/* program is loaded */
/*-----------------------------------------------------------------*/
OnFileLoaded (int nErrorCode, int bSymbolsOnly)
{
        // check for errors in loading program
        if (nErrorCode) {
               GEL_TextOut("An error occurred while loading a file. -%d-\n",,,,, nErrorCode);
        } else {
               GEL_TextOut("File was loaded successfully. -%d-\n",,,,, nErrorCode);
        }
        
        // Check to see if only symbols are loaded
        if (bSymbolsOnly) {
               GEL_TextOut("Only symbols were loaded.\n");
        } else{
               GEL_TextOut("Full load.\n");
        }
        
        // Add my source search paths
        DebugSourceSearchPaths(); 
}
 
hotmenu DebugSourceSearchPaths()
{
        // Source search paths 
        GEL_SrcDirAdd("$(GEL_file_dir)\\..\\..\\src\\scom");
 
        GEL_TextOut("Added dir to path for source-level debug and file, line BPs etc\n");
}
 

Ключевыми моментами здесь являются следующие.

  • Используйте GEL_SrcDirAdd(), чтобы добавить каталоги для отладки на уровне исходного кода. Заметим, что $(GEL_file_dir) – это макропрограмма, доступная в версии CCStudio 3.1 и выше, которая указывает путь текущего вызываемого gel-файла. Ее удобно использовать для создания переносимых gel-файлов, не требующих жестко заданных путей поиска. Если Вы используете более раннюю, чем 3.1, версию CCStudio, то Вам потребуется жестко задавать в коде полный путь каталога.
  • Добавьте в CCStudio к функции вызов, который будет выполняться в нужной точке. В данном примере мы выбрали OnFileLoaded(), так как эта функция вызывается немедленно после загрузки программы.

 

Вопрос: Я пытаюсь использовать интегрированную поддержку CCStudio IDE для системы MS Visual SourceSafe, но CCStudio не распознает, что в моем проекте контролируется исходный код, хотя я корректно выбрал MS Visual SourceSafe в качестве проводника для CCStudio. Что нужно сделать, чтобы CCStudio определил, что в моем проекте контролируется исходный код?

 

Когда в CCStudio возникают проблемы, связанные с распознаванием контроля исходного кода файла, попробуйте выбрать опцию автосоединения (auto-connect) с выбранным по умолчанию проводником контроля исходного кода.

Это можно сделать путем выбора в меню Project->Source Control->Options опции «Attempt connection to default provider» в окне Connect выпадающего набора опций, который показан ниже:

 

 

Вопрос: Каково назначение файла exclude.dat и как он работает?

 

Code Composer использует файл исключения exclude.dat (который находится в папке .\cc\bin), чтобы предотвратить поиск взаимосвязей с определенными файлами. Фактически, это позволяет скрыть эти файлы от просмотра в папке Includes в Project View CCS IDE . В исходном состоянии файл exclude.dat содержит список системных включаемых файлов, которые вряд ли потребуют изменения. Вы можете отредактировать этот файл так, чтобы исключить просмотр других файлов, таких как файлы заголовка, которые никогда не будут изменены, или включить просмотр системных файлов, которые Вам нужно изменить.

 

Вопрос: Каким образом я могу установить ассоциации типов файлов с расширениями, неизвестными встроенному редактору CCStudio?

 

Имеется файл – FileExt.ini, который находится в папке .\cc\bin\editor и позволяет Вам устанавливать ассоциации типов файлов со встроенным редактором CCStudio. Это дает возможность распознавать другие типы файлов и открывать их встроенным текстовым редактором при двойном нажатии кнопкой мыши на файле в Project View. Это также позволит Вам отфильтровывать эти типы файла (используя опцию Types of Files в выпадающем меню), при открытии файла в CCStudio с помощью вкладки File->Open

 

Ниже представлен пример файла FileExt.ini. Заметим, что последние две записи введены пользователем:

text:C/C++ Source files (*.c*):*.c*
text:Asm Source Files (*.a*;*.s*):*.a*;*.s*
text:Header Files (*.h*;*.inc):*.h*;*.inc
text:Memory Map Files (*.map):*.map
text:Linker Command Files (*.cmd;*.lcf;*.lkf):*.cmd;*.lcf;*.lkf
text:General Extension Language Files (*.gel):*.gel
text:Text Files (*.txt;*.log):*.txt;*.log
text:Data Files (*.dat):*.dat
text:Project Files (*.pjt):*.pjt
text:Makefiles (*.mak):*.mak
text:Generated List Files (*.lst):*.lst
text:Configuration Files (*.tcf;*.cdb):*.tcf;*.cdb
text:Configuration Include Files (*.tci):*.tci
text:JScript Files (*.js):*.js
text:My New File Association (*.zzz):*.zzz

 

Ниже показан вид вкладки File->Open

 

 

Вопрос: Каким образом добавить пользовательские шаги построения (например, частичная компоновка) к pjt-файлам библиотеки CCStudio?

 

В CCStudio довольно трудно добавлять сложные шаги построения при создании архива. Это может быть необходимо, если, например, вы желаете сформировать библиотеку, которую Вы предварительно построили с помощью частичной компоновки (partial linking), чтобы создать переносимый объектный файл со скрытыми глобальными идентификаторами. Этот метод часто используется с кодом сторонних поставщиков, который работает на других процессорах, т.е., эти поставщики не хотят менять идентификатор, поэтому используется переключатель компоновщика –h, чтобы скрыть символы и предотвратить конфликт символов в конечных приложениях.

Проблема состоит в том, что трудно добавить такие шаги в pjt-файл CCStudio типа Library (библиотека).

В показанном ниже интерфейсе средств построения нет вкладки компоновщика (Linker). Поэтому и возникают трудности с опробированием шагов построения на базе команды lnk6x.

 

Одним из решений является преобразование проектного (project) типа в исполнимый (executable) тип, т.е. открыть pjt-файл для редактирования и сделать в нем изменения, т.е. поменять с исходного вида:

 
[Project Settings]
ProjectName="fir_ti64"
ProjectDir="C:\my_c_drive_stuff\localwork\perf_audio\rf_v3_21_00_01\referenceframeworks\src\fir_ti\"
ProjectType=Library
CPUFamily=TMS320C64XX
Tool="Archiver"
Tool="Compiler"
Tool="CustomBuilder"
Tool="DspBiosBuilder"
Config="Debug"

 

на

 
[Project Settings]
ProjectName="fir_ti64"
ProjectDir="C:\my_c_drive_stuff\localwork\perf_audio\rf_v3_21_00_01\referenceframeworks\src\fir_ti\"
ProjectType=Executable
CPUFamily=TMS320C64XX
Tool="Compiler"
Tool="CustomBuilder"
Tool="DspBiosBuilder"
Tool="Linker"
Config="Debug"

 

Это позволяет создать вкладку компоновщика (Linker), как показано ниже:

 

Важное значение имеет ключ –r, поэтому мы можем, в дальнейшем, еще раз перекомпоновать код для конечного приложения. Ключ –h скрывает необходимые символы. .\Debug\fir_ti64_plink.obj – выходной частично скомпонованный переносимый объектный файл.

Есть одна оговорка, связанная с данным методом, которая заключается в том, что N входных файлов объединяются в один объектный файл. Это уменьшает степень детализации компоновщика и устраняет неиспользуемые функции, поэтому размер кода может увеличиться по сравнению со стандартными архивами, если не все функции в библиотеке используются данным приложением.

Командный файл компоновщика аналогичен нижеприведенному файлу, который обычно используется для частичной компоновки:

 

/* expose global symbols which the end-application interfaces with */
-g _FIR_TI_IFIR 
-g _FIR_TI_IALG
-g _FIR_TI_init
-g _FIR_TI_exit
 
SECTIONS
{
        /* expose sections which user may wish to manually place */
        .text:algAlloc {}
        .text:algInit {}
        .text:algFree {}
        .text:algActivate {}
        .text:algMoved {}
        .text:algDeactivate {}
        .text:algControl {}
        .text:algNumAlloc {}
 
        .text:exit {}
        .text:init {}
 
        .text:filter {}
 
        .text:myDoMult {}                     
}

 

Финальный шаг пользовательской компоновки может затем быть использован для того, чтобы направить результат в архив, как показано ниже.

 

Это шаг используется CCStudio после этапа частичной компоновки.

 

Важные замечания

 

  • Многие компании, предлагающие программное обеспечение, используют ключ -mo, чтобы поместить все функции в поддиректории (чтобы структурировать размещение функций в компоновщике). В этом случае убедитесь, что Вы не используете ключ -w при частичной компоновке, о которой шла речь выше. В противном случае, Вы будете получать сообщения, подобные приведенному ниже предупреждению:
 
>> warning: creating output section .text:_MYUTIL_TI_doMult without
        SECTIONS specification

 

Это происходит потому, что ключ -r (без -a) не объединяет подразделы в базовый (родительский) раздел. Поэтому .text:_MYUTIL_TI_doMult интерпретируется, как собственный раздел, а не подраздел .text. Поэтому при использовании -w мы получаем предупреждение, что расположение этого раздела не определено в явном виде.

Поэтому в случае частичной компоновки (особенно, при использовании ключа -mo) не применяйте ключ -w.

  • Чтобы сохранить все важные характеристики кодека, поставщики программного обеспечения часто делают сложную конфигурацию командных файлов компоновщика, чтобы сгруппировать вместе разделы кода для минимизации конфликтов в L1P-кэше.

Однако, важно отметить, что Вам следует избегать использование директивы MEMORY в командном файле компоновщика при частичной компоновке – это, в действительности, не влияет на частичную компоновку (там нет размещения –placement), но может иметь серьезные побочные эффекты. Один из таких побочных эффектов возникает, если Вы создаете раздел MEMORY, объем которого превышает 4 МБ. Так как -r (без -a) блокирует трамплины (trampoline) если у Вас имеется код с большим объемом данных, то возникает высокая степень вероятности, что файл не сможет быть скомпонован. Т.е., Вы получите сообщения об ошибках переполнения переадресации, так как файл находится вне досягаемости исходных вызовов (при условии, что Вы не используете удаленные вызовы, которые в данном случает делать не следует!)

  • Таким образом, рекомендуется:

– Не использовать –w при частичной компоновке;

– Не использовать директивы MEMORY в cmd-файле при частичной компоновке. Если Вам необходимы директивы MEMORY при частичной компоновке, убедитесь, что их длина не превышает 4 МБ.

 

Вопрос: Как создать подраздел внутри раздела компоновщика, в котором могут быть размещены выбранные объектные файлы?

 

Во всех версиях CCS с помощью нижеприведенных инструкций командного файла компоновщика (cmd) создается подраздел с именем sect1 в разделе .text. При этом, часть (.text) объектного файла hello.obj будет размещена в подразделе sect1.

Раздел .text будет размещен в памяти SDRAM по адресу 0x80000000, за которым следует sect1. Пользователь может также поместить несколько имен объектных файлов, разделенных запятыми.

 
SDRAM: len=0x80000000 org=0x4000 
 
text:sect1 > SDRAM
{
        hello.obj(.text)
}

 

Вопрос: Почему появляется сообщение об ошибке «Try to map memory with your target device», когда я формирую свой исходный код?

 

Это сообщение обычно появляется, когда Вы пытаетесь загрузить сегмент кода в зарезервированный раздел памяти или когда Вы пытаетесь обратиться по неопределенному адресу памяти.

Это можно избежать, предварительно изучив карту распределения памяти определенного устройства.

 

Вопрос: В чем причина появления сообщения «Invalid Object file» при попытке загрузки моей программы?

 

Компоновщик формирует исполнимый модуль в новом формате COFF компании TI (по умолчанию используется текущая версия COFF2). Некоторые эмуляторы и программы моделирования от TI не воспринимают этот новый формат и могут интерпретировать эти файлы только как поврежденные объекты. Решением может быть компоновка с опцией -v0, что позволяет использовать старый формат COFF. Другим выходом может быть использование последних версий эмуляторов и программ моделирования, которые поддерживают новый формат COFF.

 

Вопрос: Каково содержание файла распределения памяти и как сгенерировать этот файл для своего проекта в CCS?

 

Файл распределения памяти определяет:

  • конфигурацию памяти;
  • размещение входного и выходного раздела;
  • адреса внешних идентификаторов после их перемещения.

Файл распределения памяти для проекта может быть сгенерирован в CCS с помощью опций построения (Build). Чтобы сгенерировать файл распределения памяти в CCS, можно следовать порядку, указанному ниже.

  1. 1.      Перейдите в меню Project --> Build Options.
  2. 2.      В таблице компоновщика в разделе категорий выберете «Basic».
  3. 3.      Определите имя и путь поиска файла в поле Map Filename (-m).

Дополнительную информацию можно найти в руководстве пользователя для конкретного компилятора.

 

Вопрос: Как выполнить отладку оверлейных программ в CCStudio ?

 

См. Debugging Overlays With CCStudio

 

Вопрос: Содержимое менеджера компонентов (Component Manager) в CCStudio пропало. Что произошло и как разрешить эту проблему?

 

Это может быть вызвано тем, что файл ccs_Compdb.ini был поврежден или в него были введены пустые данные. Точная причина этого неизвестна. Каждый раз, когда CCStudio нужно обновить файл ccs_Compdb.ini, он генерирует резервную копию существующего файла с расширением *.bak в той же самой папке. Если копия файла не повреждена (это может произойти, когда дублируется уже поврежденный файл ccs_Compdb.ini), то перезапись поврежденного файла может вернуть среду CCStudio в состояние, когда была создана резервная копия. Файл ccs_Compdb.ini находится в каталоге C:\Program Files\Common Files\Texas Instruments.

 

Вопрос: Предположим, я загрузил C6000 DSP из флэш-памяти, которая не была запрограммирована. После процесса инициализации возможные некорректные команды будут сохранены в IPRAM, и DSP будет их выполнять. Есть ли способ контроля DSP с помощью JTAG-интерфейса, чтобы можно было загрузить корректную программу и запустить ее выполнение?

 

Когда DSP начинает исполнять некорректный код из флэш-памяти, у Вас нет возможности получить контроль над DSP. Вы можете попробовать отказаться от инициализации, чтобы DSP не использовал некорректные данные из флэш-памяти. Эта возможность доступна только на DSP C620x/C670x и C64x. Более подробная информация приведена в главе, посвященной режимам начальной загрузки и конфигурации Руководства по применению периферии DSP TMS320C6000 (TMS320C6000 Peripherals Reference Guide).

 

Вопрос: Почему плагины анализа в режиме реального времени (RTA) обновляются так медленно?

 

Проблема с RTDX и RTA возникает в определенных версиях CCStudio. Обновление RTA происходит весьма медленно, если исполнение приложения начинается до открытия RTA-плагинов. Для решения проблемы можно либо убедиться, что RTA-плагины были открыты до начала исполнения приложения, либо выполнить остановку и продолжить исполнение, если RTA-плагины открыты после исполнения приложения и обновление RTA происходит медленно. Эта проблема разрешена в версии CCStudio 3.3.

 

Вопрос: Почему CCStudio зависает или дает сбой при запуске?

 

Проблемы при запуске CCStudio могут быть связаны с конфликтами в dll-файле CodeWright (cwctls32.dll) в некоторых версиях CCStudio и на определенных компьютерах, в которых используется определенный набор аудио-драйверов. Данная проблема решена в CCStudio 3.3 и CCStudio 3.1 Service Pack 1 с номером сборки 29 и выше.

 

Вопрос: Как определить регистры распределения пользовательской памяти, чтобы они отображались в окне регистров CCStudio 3.3?

 

См. статью «Создание окон регистров распределения пользовательской памяти в CCStudio» (Creating Custom Memory Mapped CCStudio Register Windows).

 

Вопрос: Почему RTA-плагины в CCStudio не обновляются, когда задание запущено, а только когда оно остановлено?

 

Если на используемом PC имеется история прежних инсталляций CCStudio, то данная проблема может быть вызвана информацией, оставшейся в реестре, что вызывает конфликт между COM-объектом и разрешением его библиотеки типов. Для решения этой проблемы, пользователям следовало бы установить более новую версию CCStudio, а затем удалить эту новую версию. К примеру, пользователь устанавливает версии 3.1 и 3.3, а затем удаляет версию 3.3. Проблема в том, что информация о библиотеке типов версии 3.3 все еще находится в реестре, поэтому механизм разрешения библиотеки типов COM-объекта захватывает самую последнюю версию, которой больше не существует. Это может касаться только клиентов, которые не используют библиотеки надстроек SDK. Такими клиентами являются CCScripting и RTA-плагины.

В CCStudio следует убедиться, что в реестре не осталось прежней информации о библиотеке типов CCStudio. Данная проблема будет решена в CCStudio 3.3 SR2+ и CCStudio 3.1 SP1 сборка 31+. А пока можно использовать временное решение – попробовать удалить ненужные данные из реестра. Информация о библиотеке типов CCStudio содержится в папке:

 
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{7037933C-B77F-11D1-B009-0040055C1953}.

 

Можно удалить полный раздел реестра, так как при запуске CCStudio (после удаления ключа) вновь создает этот раздел. Вы можете удалить весь раздел реестра, выполнив команду, которую нужно набрать в командной строке Windows:

 
reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{7037933C-B77F-11D1-B009-0040055C1953}

 

На примере, показанном ниже, видно, что имеются две записи: одна от CCStudio 3.1 (1.29), а другая – от CCStudio 3.3 (1.32). CCStudio 3.3 был удален, но запись в реестре осталась. Удаление каталога 1.32, который указывает на несуществующую версию CCStudio, также позволяет решить данную проблему.

Замечание: Если удалить весь раздел реестра, CCS scripting не будет работать корректно. Пользователь должен один раз вручную запустить CCStudio для того, чтобы вновь создать раздел реестра. Последующие запуски CCStudio с использованием CCStudio Scripting будут выполняться без каких-либо проблем.

 

Вопрос: Почему инсталляция CCStudio 3.1 больше не выполняется должным образом после того, как я деинсталлировал CCStudio 3.3?

 

Частая причина этого заключается в том, что информация о новой библиотеке типов CCStudio 3.3 не была удалена из реестра при деинсталляции CCStudio 3.3.

Нужно убедиться, что в реестре не осталось прежних записей о библиотеке типов CCStudio. Эта проблема будет решена в одной из более поздних версий CCStudio 3.3 Service Releases (SR).

Временным решением может стать удаление следующих элементов реестра о библиотеке типов в CCStudio 3.3:

 
KEY_CLASSES_ROOT\TypeLib\{7037933C-B77F-11D1-B009-0040055C1953}\1.32H
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{7037933C-B77F-11D1-B009-0040055C1953}\1.32

 

Вы можете удалить эти записи, выполнив следующие команды (их следует набрать в командной строке Windows):

 
*reg delete HKEY_CLASSES_ROOT\TypeLib\{7037933C-B77F-11D1-B009-0040055C1953}\1.32
*reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{7037933C-B77F-11D1-B009-0040055C1953}\1.32

 

Вопрос: Будет ли работать CCStudio на Microsoft Vista?

 

См. статью «Запуск CCStudio v3.3 на Windows Vista» (Running CCStudio v3.3 on Windows Vista).

 

Вопрос: Когда я обновил последнюю версию CCS, предыдущая версия была сохранена в папке деинсталляции. Можно ли ее удалить?

 

Когда Code Composer Studio обновляется с помощью консультанта по обновлениям (update advisor), файлы из предыдущей версии сохраняются в директории деинсталляции в папке CCS. Эта информация позволяет Вам деинсталлировать последнее обновление установленного CCS в случае появления ошибки. Эта информация может быть удалена, если Вы не планируете деинсталлировать последнее обновление к CCS.

 

Вопрос: Как очистить реестр Windows при обновлении Code Composer Studio до более новой версии?

 

При обновлении Code Composer Studio до более новой версии, реестр Windows можно не обновлять с целью удаления элементов предыдущей версии.

Если Вы испытываете проблемы при инсталляции поверх предыдущей версии CCS, попробуйте удалить прежние записи реестра перед инсталляцией (заметим, что ошибки в реестре могут помешать корректной загрузке Вашего PC).

Пожалуйста, выполните следующие шаги, чтобы удалить CCS из Вашего компьютера:

  1. Выполните все шаги во вкладке Добавление/Удаление Программ (Add/Remove) в Панели Управления (Control Panel), в результате чего произойдет удаление CCS.
  2. Когда деинсталляция завершится, проверьте, имеется ли кнопка Details слева от кнопки ok. Если кнопка Details присутствует, пожалуйста, нажмите на ней кнопкой мыши и просмотрите оставшиеся каталоги, а затем удалите их с Вашего устройства.
  3. Затем перейдите в regedit. Из regedit перейдите в следующие пункты реестра и удалите значки Go DSP, TI и Texas Instruments (если они все еще присутствуют в реестре).

HKEY_CURRENT_USER -> Software -> Go DSP

HKEY_CURRENT_USER -> Software -> Texas Instruments

HKEY_CURRENT_USER -> Software -> Texas Instruments' RTDX Log File Dumper

HKEY_CURRENT_USER -> Software -> TI

  1. В реестре перейдите в HKEY_LOCAL_MACHINE -> Software. Отсюда удалите значки Go DSP, TI и Texas Instruments (если они существуют).

После выполнения этих действий, перегрузите Ваш компьютер. После удаления всех ссылок на CCS с Вашего компьютера, Вы сможете инсталлировать CCS на чистую машину.

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

 

Вопрос: Не могу найти Руководство по DSP/BIOS в CCS, помогите!

 

Пожалуйста, изучите страницу DSP BIOS FAQ page.

 

Вопрос: Поддерживает ли CCStudio отладку выхода ELF?

 

CCStudio 3.3 поддерживает отладку выхода ARM ELF. Более ранние версии CCStudio имеют ограниченную поддержку отладки, поэтому рекомендуется обновить CCStudio до версии 3.3. Убедитесь, что инсталлирован последний выпуск обновления CCStudio 3.3 Service Release, что гарантирует поддержку этой функции.

 

Вопрос: Могу ли я сформировать файл своего проекта вне CCStudio?

 

Да. CCStudio поставляется с утилитой timake.exe, которая позволяет построить файл Вашего проекта в CCStudio(*.pjt) из командной строки. Построение проекта с помощью утилиты timake имеет тот же эффект, что и при использовании CCStudio (timake использует тот же менеджер проекта и версии инструментов генерации кода (Code Generation Tools) и DSP/BIOS, что и CCStudio, для которого он сконфигурирован).

Чтобы вызвать утилиту timake, нужно выполнить следующие шаги.

  1. Откройте командную строку DOS.
  2. Установите необходимые переменные окружения с помощью запуска командного файла DosRun.bat. Этот командный файл необходимо запустить до использования timake. Если вы инсталлировали Code Composer Studio в папку C:\CCStudio_v3.3, то командный файл будет находиться в C:\CCStudio_v3.3\DosRun.bat.
  3. Запустите утилиту timake.

 

Синтаксис вызова утилиты timake:

>timake.exe PJT -lc | CFG [ -a | -clean ]

 

Необходим первый параметр.

  • PJT – имя файла проекта Code Composer Studio (.pjt).

 

Второй параметр должен быть одним из следующих:

  • lc: список имен всех конфигураций описываемого проекта. Построение не выполняется.
  • CFG: имя конфигурации проекта. Выполняется инкрементное построение определенной конфигурации. Перекомпилируются только те файлы, которые были модифицированы после последнего построения. Более детальную информацию см. в разделе «Построение программ».

 

Когда конфигурация проекта (CFG) установлена в качестве второго параметра, одна из следующих опций может быть установлена в качестве третьего параметра:

  • ·         -a: перестройка всех файлов. По умолчанию выполняется инкрементное построение. Эта опция инициирует перекомпиляцию всех файлов.
  • ·         -clean: удаление всех промежуточных файлов, которые могут остаться при построении.

 

Например:

>timake.exe modem.pjt Debug -a

 

Вопрос: Произошел сбой CCS, и появилось сообщение: «Unexpected fatal Error Encountered which may have been caused by a stack overflow, out of memory condition, or access violation. I m going to try save your work before TERMINATING this application.»

 

Это сообщение об общем сбое, когда в CCS происходит исключительное событие, и оно обрабатывается обработчиком исключений CCS, которое установлено по умолчанию. Исключение может быть вызвано различными причинами, некоторыми из которых могут быть следующие.

  • Один из наиболее распространенных видов фатального отказа редактора вызывается в процессе обработки файлов, которые были отредактированы в среде Linux/Unix. Иногда в редакторе происходит сбой при обработке различных вариантов используемых символов возврата каретки.
  • Исключения могут также возникнуть при использовании CCS версии 3.1 с файлами рабочей области (.WKS), сгенерированными с помощью более ранних версий CCS. Пожалуйста, следите за тем, чтобы использовать рабочую область, созданную только в самой последней версии CCS.
  • Проверьте, отключена ли функция Code Sense в CCS. В более ранних версиях CCS происходят ситуации, когда Code Sense пытается постоянно искать определение функции. В этом случае, попробуйте отключить CodeSense.

Когда происходит такой сбой, CCS генерирует мини-дамп-файл. Этот файл используют для диагностики причин сбоев и его следует прикреплять к письму, направляемому в службу поддержки для анализа проблем, связанных с CCS, вместе с подробными описанием тестовых данных.

 

Вопрос: Как узнать, какой номер версии выпуска обновления CCStudio 3.3 Service Release инсталлирован?

 

Перейдите в меню CCStudio: Help->About и посмотрите номер версии CCStudio на вкладке, показанной ниже:

 

 

На показанной вкладке – номер версии 3.3.77. Используя номер версии, вы можете определить, какой инсталлирован выпуск обновления:

3.3.38.2 = CCStudio 3.3 RTM
3.3.42.1 = Service Release 1
3.3.46.1 = Service Release 2
3.3.49.1 = Service Release 3
3.3.50.2 = Service Release 4
3.3.54.1 = Service Release 5
3.3.57 = Service Release 6
3.3.67 = Service Release 7
3.3.77 = Service Release 8
3.3.79 = Service Release 9
3.3.80.11 = Service Release 10
3.3.81.6.2 = Service Release 11
3.3.82.13 = Service Release 12

 

В нашем примере мы видим, что CCStudio 3.3.77 = Service Release 8.

 

Вопрос: Как узнать, в каком выпуске обновления (Service Release) решена проблема «x»?

 

Изучите страницу CCStudio 3.3 Service Release page, где приведена информация по соответствующей версии для всех выпусков обновления.

 

Вопрос: С помощью каких средств CCS можно посмотреть полный список используемых файлов, функций и локальных переменных?

 

Все взаимосвязанные файлы, функции, глобальные переменные, типы и метки загруженного COFF-файла (*.out) отображает средство Symbol Browser. Такая возможность доступна в CCS с помощью выбора этой опции в пункте меню View (см. рисунок ниже).

Этот инструмент позволяет пользователю увидеть, где в дизассемблированном выходе встречается определенный идентификатор. Пользователь может проанализировать производительность буферной памяти и получить лучшее представление о размещении функции в программе, что позволяет снизить вероятность переполнения памяти или улучшить ее производительность.

Более подробную информацию можно найти в системе справочной информации: CCS-> Help в пункте «Debugging Windows and Analysis tools».

 

Вопрос: Что делать в случае появления сообщения об ошибке «Load Failed. A section of your program falls into a memory region that is not writable. Check your linker configuration and/or memory map.»?

 

Данное сообщение означает, что Вы пытаетесь загрузить секцию кода в область памяти, недоступную для записи данных. Если Вы используете симулятор (Simulator), то, пожалуйста, перейдите в Options -> Memory map, отмените установку «Enable memory mapping» и нажмите на кнопку мыши. В результате, вся память преобразуется в однородную оперативную память. Теперь загрузите файл .out и выполните его. Причина появления этого сообщения об ошибке заключается в том, что когда Вы загружаете секции из файла .out в память целевого устройства (в данном случае память симулятора), если память не доступна по адресу, определяемому Вами в командном файле компоновщика, то Вы не сможете загрузить файл .out.

Более подробную информацию о командном файле компоновщика можно найти в Руководстве пользователя по ассемблеру для TMS320C55x (SPRU280).

 

Вопрос: Что означает появление сообщения «Because this program contains initialised RAM data it may run successfully under Code Composer studio but not as a standalone system. If your flash program requires initialised data in RAM, you will need to write Flash code to initialise Ram memory» и что произошло?

 

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

Это сообщение появляется каждый раз, когда Вы программируете флэш-память, если ваше приложение имеет код в RAM, чтобы напомнить Вам о том, что размещение кода приложения в RAM мешает Вашему приложению работать в качестве автономной системы. Поэтому Вам нужно модифицировать CMD-файл.

Пожалуйста, изучите указание по применению SPRA958H (включает в себя также примеры по применению), чтобы понять, как запускать приложение из внутренней флэш-памяти DSP.

 

Вопрос: В чем разница между режимами Debug и Release?

 

CCS создает два набора опций построения, называемых конфигурациями: одна называется конфигурацией отладки (Debug), а другая конфигурацией выпуска (Release) (оптимизированная конфигурация).

Конфигурация отладки – это неоптимизированная конфигурация построения и она поддерживает символьную отладочную информацию. Конфигурация выпуска (оптимизированная) вызывает оптимизатор с помощью опции -o3 и блокирует символьную отладку на уровне исходного кода при исключении опции –g (которая блокирует оптимизацию, чтобы разрешить отладку). Во многих случаях Вы можете также добавить опцию –g к конфигурации выпуска, так как это облегчает возможность оценки производительности оптимизированного кода.

В версии CCS3.3, опции компилятора -gp,-gt и –gw заменены новой опцией --symdebug:dwarf или –g.

При переходе из режима отладки в режим выпуска, добавьте путь для файлов заголовка в меню: Project -> Build Options -> Compiler -> Preprocessor -> Include Search Path. Когда вы переходите из режима отладки в режим выпуска, путь поиска файлов заголовка меняется.

Для того, чтобы найти более подробную информацию об этом, Вы можете перейти в контекстную помощь CCS: CCS Help -> Contents -> Code Generation Tools Build Options -> Compiler Options -> Preprocessor.

 

Вопрос: Почему я не могу увидеть правильные значения параметров на осях графиков в CCS?

 

Довольно часто на осях графиков в CCS появляются значения, которые отличаются от ожидаемых. Например, вместо 4096 можно увидеть .739719e-42.

Это можно избежать, если правильно установить параметры в диалоговом окне свойств графика, показанном ниже.

1. Можно заметить, что параметр Q-value равен 0. Это объясняется тем, что Q-value выражает дробное представление целочисленного значения, которое формируется путем размещения десятичного интервала внутри двоичного представления целого числа. Это увеличивает точность. Для преобразования целочисленного значения в значение, определяемого параметром Q-Value, используется формула:

 

New_integer_value = integer/2^Q-Value

 

2. Поменяйте шкалу с логарифмической на линейную, если она не нужна.

3. Пожалуйста, проследите за тем, чтобы были установлен тот тип DSP-данных, который нужно отобразить на графике.

Замечание: Если у вас версия CCS SR7 или ниже, то рекомендуется провести обновление CCS и инструментов генерации кода до последней версии.

Вопрос: Информация о лицензионном соглашении для конечного пользователя Code Composer Studio.

 

Обычно, предоставляется лицензия для однопользовательского хост-компьютера. Пользователь может не быть способным инсталлировать лицензионную версию на сетевой сервер или использовать лицензионную копию одновременно на более, чем одном хост-компьютере. Кроме того, если этот пакет содержит несколько версий лицензинных копий, пользователи могут использовать лишь одну версию лицензионной копии на одном хост-компьютере. Пользователи могут инсталлировать лицензионную копию на дополнительные однопользовательские хост-компьютеры, гарантируя, что ни при каких условиях он не будет использоваться более одной копии лицензированных материалов. По существу, это означает, что если у пользователя есть ноутбук и настольный компьютер, то он может инсталлировать копию на оба устройства, но одновременно пользоваться только одним из них.

Заметим, что соглашение связано заключается с физическим лицом, чье имя известно.

Лицензионное соглашение доступно по ссылке: http://focus.ti.com/lit/ml/sprz273/sprz273.pdf.

 

Вопрос: В чем разница между DSK-версией, оценочной версией и полной версией CCS?

 

Пакет Code Composer Studio доступен в следующих типах версий:

  • DSK-версия (DSP Starter Kit) CCS – часто связана с оценочной платой.
  • Бесплатная оценочная версия – бесплатно загружаемая с сайта версия.
  • Полная версия CCS – доступна за плату.

 

DSK-версия CCS

  • Каждый стартовый набор (DSP Starter Kit) поставляется с DSK-версией CCS.
  • Этот тип версии CCS может работать только с сопутствующими аппаратными средствами DSK. Данная версия жестко закодирована и не может быть изменена.
  • DSK-версию CCS нельзя обновить, так как она включает в себя одноразовую лицензию, которая отличается от лицензии с ежегодной подпиской.
  • Данная версия не поддерживает симулятор.

 

Бесплатная оценочная версия

  • Бесплатная оценочная версия доступна на сайте TI.
  • Эта версия имеет все функции полной версии.
  • Ее можно использовать с внешним эмулятором.
  • Она имеет 120-дневный срок действия и не может быть обновлена.

 

Полная версия CCS

  • Полную версию CCS можно приобрести у местного дилера TI.
  • Для полной версии также доступны патчи пакета обновления.
  • Возможность обновления зависит от лицензионного периода (или договора продажи)
  • После успешной регистрации пользователи CCS могут загрузить обновление с помощью Update Advisor через пункт меню CCS help ->Update Advisor.

 

Вопрос: Как выполнить отладку моей программы и использовать точки прерывания в CCS при запуске ее из встроенной флэш-памяти DSP C28x?

 

Загрузите программу во флэш-память, используя один из инструментов программирования флэш-памяти, и вызовете программный пакет Code Composer Studio. Загрузите проект, который сгенерировал COFF-файл. Теперь загрузите символы с помощью выбора в меню Code Composer Studio: File --> Load Symbols --> Load Symbols Only и выберете тот же COFF-файл (.out), который Вы использовали для программирования флэш-памяти. При запуске программы из встроенной флэш-памяти, Вам нужно будет использовать аппаратные точки прерывания. При отладке кода во флэш-памяти процессоров 28x Вы ограничены двумя аппаратными точками прерывания. CCS может автоматически установить определенные точки прерывания, которые будут использовать обе доступные точки прерывания, пока Вы не отключите определенные опции. Более подробную информацию можно найти в данной статье.

 

Вопрос: При использовании CCS, что произойдет, если изменить настройки системных часов?

 

Если изменить настройку системных часов, то лицензия CCS нарушится. Прекращение лицензии происходит для следующих версий CCS:

  1. Бесплатной оценочной версии CCS;
  2. Версии CCS, поставляемой с оценочным модулем.

Эта проблема не возникает, если используется:

  • Полная версия CCS;
  • Версия CCS, поставляемая со стартовым набором (DSK).

 

Меры предосторожности: когда вы используете бесплатную оценочную версию CCS, версию CCS, поставляемую с оценочным модулем, не следует настаивать системные часы.

 

Вопрос: Как разрешить проблему при появлении сообщения «Command-line error: cannot open command file C:\Documents 1 fatal error detected in this compilation. Compilation terminated.»?

 

Проверьте установку переменной окружения TEMP (нужно перейти в: My computer -> нажать правую кнопку мыши -> Properties -> Advanced -> Environment variables). Если папка переменных окружения установлена на «C:\Documents and settings\admin\temp», то для переменной TEMP установите «C:\windows\temp» и сообщение об ошибке должно исчезнуть.

Если такие сообщения все же появляются, то попробуйте деинсталлировать и вновь полностью инсталлировать CCS. Это должно разрешить проблему.

 

Вопрос: Когда я пытаюсь построить проект, CCS не может найти stb.lib. Где мне его найти?

 

Stb.lib – это часть программного средства Software Test Bench. Вам нужно инсталлировать также и его, если вы используете библиотеку FFT.

 

Вопрос: Почему hex6x (утилита Hex) выдает предупреждающее сообщение «WARNING: Can't convert RAM-model .cinit with –image»?

 

ISA: C6000, все версии CCS. Когда загрузчик связан с помощью опции -cr, он использует данные в разделе .cinit, чтобы автоматически инициализировать все глобальные переменные. Раздел .cinit маркирован флагом COPY, который означает, что в файле .out присутствуют данные автоинициализации, но они не занимают какого-либо пространства в области памяти, определенной директивой компоновщика MEMORY.

В карте распределения памяти пользователь обнаружит, что раздел .cinit перекрыт некоторыми другими разделами, которые в действительности занимают пространство памяти. Так как раздел .cinit маркирован атрибутом COPY и перекрывает другие разделы, утилита hex не включает их при запуске с опцией –image. Пользователю в данном случае, возможно, следует скомпоновать свой код с опцией –c.

 

Вопрос: Почему мой файл .out в CCS 3.0 имеет больший размер, чем в CCS v2.2x?

 

Вы можете заметить увеличение размера объектных файлов, поскольку по умолчанию форматом отладки для инструментов генерации кода, которые поставляются вместе с CCS 3.0, является DWARF, объем кода которого больше, чем кода в формате отладки, используемого в предыдущей версии (STABS). Увеличение размера объектного файла не обязательно отражает увеличение размера кода приложения, так как DWARF-данные не загружаются в целевую память.

 

Вопрос: Что происходит, когда возникает исключительная ситуация во время обработки исключения (вложенное исключение)?

 

Когда центральный процессор начинает выполнять программу обслуживания исключения, устанавливается бит EXC в регистре TSR, который указывает на то, что исключение обрабатывается. Если распознается новое исключение во время установки этого бита, то используется вектор сброса (reset vector), когда происходи переадресация исполнения программы для обслуживания второго исключения. В этом случае, регистры NTSR и NRP остаются неизменными. Регистр TSR копируется в ITSR, а текущий PC копируется в IRP. Регистр TSR устанавливается в значение по умолчанию при обработке исключения, а бит NMIE в регистре IER в этом случае сбрасывается, предупреждая любые дальнейшие внешние исключения.

Регистры NTSR, ITSR, IRP и NRP можно проверить в загрузочном коде пользователей для того, чтобы определить, инициирован ли сброс сигналом на выводе сброса или он вызван вложенным исключением. Информация об исключениях для C64x+ содержится в SPRU732.

 

Вопрос: Есть ли способ в CCS сохранить точки прерывания при завершении работы CCS и их новой загрузки при запуске?

 

В настоящее время такая возможность реализована в CCS с помощью концепции рабочей области (workspace). Все, что нужно сделать – это сохранить рабочую область после установки точек прерывания с помощью команд меню File -> Workspace -> Save Workspace As.

Чтобы загрузить затем эту рабочую область при запуске, нужно выполнить следующие шаги:

  1. Щелкните правой кнопкой мыши на иконке CCS на Вашем рабочем столе;
  2. Выберете свойства и для вашего задания (Target) наберите путь c:\ti\cc\bin\cc_app.exe c:\test\test.wks, где c:\test\test.wks – путь сохранения Вашей рабочей области.

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

 

Вопрос: Почему во время пошагового исполнения ассемблерного кода в CCS на каждом шаге программа перескакивает через несколько команд ассемблера?

 

Если в CCS не открыт исходный файл на C и пользователь загрузил идентификаторы, Вы можете заметить, что во время пошагового исполнения кода CCS выполняет несколько команд ассемблера за одну шаговую команду. Это объясняется тем, что CCS выполняет программу по шагам в режиме исходного кода на C, где в некоторых случаях каждая строка кода на C может соответствовать нескольким командам ассемблера. Чтобы корректно отображалось пошаговое выполнение кода, нужно выбрать смешанный режим (Mixed Mode).

 

Вопрос: Как решить проблему задержек очереди буфера команд (IBQ)?

 

Задержки очереди буфера команд (IBQ stalls) возникают из-за конвейера вызова команд и большей частью связаны с нарушением работы компьютера. Они могут быть связаны с выполнением команд BLOCKREPEAT, BRANCH и CALL. В прикладном отчете для DSP TMS320C55x SPRA865 показано, как решить проблему, связанную с задержками очереди буфера команд и разместить адрес целевого устройства (начальный адрес канала) на 32-разрядной границе с помощью введения команд nop (нет операции) перед началом канала. Чтобы оптимизировать ассемблерный код и уменьшить возможность замедления конвейера, программист DSP должен определить, в каком месте происходят задержки, каковы их причины и как их исключить, если это возможно.

 

Вопрос: Как использовать инструмент анализа задержек конвейера Pipeline Stall Analyzer?

 

В конвейерном DSP из-за наличия потока команд в конвейере, многие внутренние регистры и состояния модифицируются до того, как заканчивается выполнение команды. Так как конвейер имеет определенную глубину (ряд сьадий) в определенный момент времени (тактовый цикл), в конвейере обрабатываются многие команды, которые влияют на состояние процессора. Иногда трудно понять, какое состояние процессора подвержено влиянию команды и когда точно команда входит и выходит из конвейера.

Кроме того, в компьютере с защитой конвейера аппаратным путем вводятся циклы NOP (задержки), чтобы обеспечить синхронизацию алгоритма. Важно точно планировать исполнения команд, чтобы избегать задержек и обеспечивать выполнение программ, запущенных на процессоре, за меньшее число циклов. Поэтому, во время сеанса моделирования весьма полезно наглядно представлять поток команд на каждой стадии конвейера и отображать возможные конфликты ресурсов для упрощения оптимизации кода. В интегрированной среде Code Composer Studio предусмотрен такой инструмент – Pipeline Stall Analyzer.Pipeline Stall Analyzer позволяет Вам контролировать:

  • Стадии конвейера, а также вход и выход команд на каждой стадии;
  • Задержки, в том числе:
  1. команды, которые входят в задержку;
  2. конфликтующие ресурсы, если они существуют
  • Статистику различных типов задержек.
  • Очередь буфера команд (IBQ).

Чтобы вызвать Pipeline Stall Analyzer, нужно перейти в меню CCS, выбрав: CCS menu->Tools->Pipeline Stall Analyzer. Убедитесь, что в меню отладки (Debug) отключена опция «Flush Pipeline on Halt». Средство анализа Pipeline Stall Analyzer предназначено для того, чтобы помочь программистам DSP TMS320C55x эффективно оптимизировать критичные участки своего кода. Более подробная информация о средстве анализа Pipeline Stall Analyzer содержится в контекстной помощи (help) CCS.

 

Вопрос: В чем причина того, что окно Stdout в CCS не открывается при исполнении команды printf в моем проекте?

 

Причиной может быть недостаток области динамической памяти (heap) в целевом устройстве. По умолчанию, команда printf() вызывает malloc(). Если не сконфигурирована область динамической памяти или в этой области не осталось пространства, то запуск printf завершится сбоем (на самом деле, эта команда возвращает отрицательное число). В результате, вывода не будет, в частности, окно Stdout в CCS автоматически не откроется.

Одним из возможных путей выхода из подобной ситуации является не включение элемента \n в строку.

Более подробная информация приведена в статье об использовании команды printf Tips_for_using_printf#How_to_use_printf_in_a_project.

 

Вопрос: Почему я получаю сообщения об ошибках времени компоновки при построении проектов на базе BIOS5 в CCS3.3 с помощью файлов tcf и cfg?

 

Скрипты tconf (*.tcf) представлены в устаревшим формате конфигурации содержимого, который используется в BIOS5. В потоке построения BIOS5 скрипты *.tcf проверяются с помощью устаревшего средства tconf. В более поздних версиях скрипты tconf были заменены конфигурационными RTSC-скриптами (*.cfg), которые являются более универсальными и могут использоваться для любого RTSC-контента, например, BIOS6 и Codec Engine. Заметим, что если Вы планируете использовать BIOS5, Вам нужно использовать скрипты tconf. Компания XDCtools поставляет инструмент, который называется configure, который можно использовать для проверки скриптов *.tcf и *.cfg. В данном случае, в вашем проекте имеются как tcf-, так и cfg-файлы. Чтобы обеспечить построение проекта, нужно вызвать только инструмент configure. После исполнения tconf и configuro Вы увидите ошибки компоновщика.

Эту проблему можно легко разрешить, исключая файл tcf из Вашего построения – щелкните правой кнопкой мыши на файле tcf, а затем выберете «File Specific Options...». Щелкните кнопок мыши на ярлыке General, а затем установите флажок «Exclude file from build». Это предотвратит запуск средства tconf. Однако инструмент configure станет проверять как cfg-, так и tcf-файлы, и Вы сможете успешно построить Ваше приложение.

 

Вопрос: У меня постоянно появляется сообщение «CodeWright: cc_app.exe - Application Error». В чем причина?

 

CodeWright – это редактор, встроенный в CCS. Причины появления этого сообщения могут быть различными, но есть несколько временных решений этой проблемы.

  • Отключите CodeSense. Известно, что функция CodeSense в редакторе CodeWright может вызывать проблемы. Вы можете отключить ее с помощью одной из следующих опций:

- Отключите через свойства редактора: Option->Editor->Languages->Codesense.

- Переименуйте файл <INSTALL DIR>\cc\bin\cwsense.dll (например, в файл cwsense.bak)

  • Удалите папку .CS_ в каталоге проекта. Папка .CS_ используется функцией CodeSense для хранения некоторых кэшированных данных. Его содержимое может быть повреждено и может вызывать проблемы.
  • Известно, что антивирус Касперского конфликтует с функциями CodeWright и его отключение или удаление позволяет разрешить конфликт.

 

GEL

 

Вопрос: Чем могут помочь GEL-файлы в моей разработке?

 

Есть несколько преимуществ GEL-файлов.

  • Они могут помочь Вам весьма быстро начать разработку кода благодаря выполнению фундаментальных задач, подобных конфигурированию PLL и EMIF (Не забудьте в конечном итоге переместить эти функции в Ваш начальный загрузчик).
  • Они могут установить карту распределения памяти CCS, в которой определено, по каким адресам памяти эмулятор может считывать/записывать данные. Это улучшает стабильность работы системы.
  • Они помогают автоматизировать задания для ускорения процесса отладки. Например, при загрузке кода Вам нужно убедиться, что кэш-память аннулирована. GEL-файл может выполнить это задание при помощи сброса устройства при перегрузке или записи соответствующей информации в регистры аннулирования кэш-памяти.

 

Вопрос: Где мне найти информацию о доступных GEL-функциях?

 

Для того, чтобы найти описание всех доступных GEL-функций, нужно в CCS перейти в Help->Contents. Это наилучший источник информации об использовании GEL-функций.

 

Вопрос: GEL работает в синхронном или асинхронном режиме?

 

Все клиентские действия через GEL синхронны. Имеются определенные встроенные GEL-функции, которые демонстрируют асинхронное поведение.

В указании по применениюSPRAA74 в приложении A приведен список встроенных GEL-функций и их свойства.

 

Вопрос: Можно ли объявлять массивы в GEL-файле в CCS?

 

Нет, Вы не можете объявлять массивы в GEL-файле, поскольку GEL не поддерживает массивы.

 

Вопрос: У меня в CCStudio 2.2x появляется диалоговое окно «Cannot evaluate GEL_OpenWindow() without a valid Control window». В чем причина?

 

У Вас может быть GEL-файл вида:

 
/*
 * The StartUp() function is called every time you start
 * Code Composer. You can customize this function to
 * initialize wait states in the EMIF or to perform 
 * other initialization.
 */
StartUp()
{
        GEL_OpenWindow("My EVM Board",0,15);
 
        clear_memory_map();
        GEL_Reset();
        init_emif();
 
        // misc user stuff to initialize peripherals etc
 
        GEL_TextOut("\nMy EVM GEL file loaded\n","My EVM Board");
        GEL_TextOut("\nStartup completed\n");
}

 

Вы ожидаете, что GEL_OpenWindow() сформирует выходное окно, которое будет использовано для вывода определенных сообщений о состояниях «My EVM Board».

Однако это может не работать. В некоторых версиях CCStudio может появиться диалоговое окно, вид которого приведен ниже:

 

 

Причина состоит в том, что StartUp() запускается до того, как откроется любое окно управления. Поэтому функция GEL_OpenWindow() не работает.

В CCStudio часто используется в StartUp() также функция GEL_TextOut() к стандартной функции выходного окна. Такие вызовы не дают ошибки, но не всегда выводят на печать то сообщение, которое вы хотите получить.

Способами устранения этого типа ошибки являются:

  • Удаление вызовов фукций GEL_TextOut или GEL_OpenWindow из StartUp().
  • Размещение вызовов GEL_TextOut или GEL_OpenWindow в функции горячего меню (hotmenu). Они вызываются по требованию пользователя сразу после того, как завершится StartUp().
  • Размещение вызовов GEL_TextOut или GEL_OpenWindow в функции внешнего вызова, такой как OnPreFileLoaded(), которая вызывается, когда выбрано «Load Program».
  • Размещение большого цикла задержки в Вашем StartUp() до вызова GEL_OpenWindow. В последнем случае, однако, могут возникнуть проблемы с синхронизацией. Кроме того, CCStudio обнаружит, что Ваш GEL-файл не синхронизирован и возникнут соответствующие диалоговые окна.

 

Вопрос: Какие изменения нужно внести в запускающие GEL-файлы для поддержки версий CCStudio, которые поддерживают соединение/разъединение?

 

При запуске CCStudio GEL-файлы начального запуска, которые были определены в программе настройки CCStudio, будут загружаться в главную память и любые действия, определенные в функции StartUp(), будут выполнены (если они определены). Часто стадии инициализации выполняются в вызове StartUp(), чтобы помочь автоматизировать этот процесс. Однако в версиях CCStudio, которые поддерживают соединение/разъединение, эти GEL-файлы могут не работать корректно, так как CCStudio начинает разъединение с целевым устройством, поэтому макрокоманды в функции StartUp(), которые пытаются обратиться к целевому устройству, завершаться сбоем. Новая встроенная GEL-функция обратного вызова, называемая OnTargetConnect(), предназначена для основной инициализации целевого устройства, что позволяет установить его в исходное состояние. Эта функция будет вызвана CCStudio после соединения с устройством. Любые стадии инициализации, в которых не осуществляется доступ к целевому устройству, могут быть проигнорированы в функции StartUp().

Более подробную информацию можно найти в указании по применениюSPRAA74.

 

Вопрос: Если я сконфигурирую интегрированную среду разработки с помощью выбора пунктов меню Options->Customize->Debug Properties->Target connection actions на «Connect to the target when a control window is opened», могу ли я затем оставить вызовы, которые обеспечивают доступ к адресату, в функции StartUp()?

 

Нет. Даже если Вы сконфигурируете CCStudio для автоматического соединения с адресатом, когда открываете окно управления, он все равно перед тем автоматически вызовет функцию StartUp(), затем попытается соединиться с адресатом. Функция OnTargetConnect() должна быть все равно использована для автоматизации инициализации адресата.

 

Вопрос: Могу ли я сделать какой-либо вызов, который выбирает целевое устройство в вызове OnTargetConnect()?

 

Не для версий CCStudio старше 3.1. Не рекомендуются вызовы каких-либо встроенных GEL-функций, которые обеспечивают доступ к адресату (например, GEL_Reset(), GEL_MemoryFill() и др.). Вызовы пользовательских GEL-функций в данном случае работают нормально. Причина, по которой встроенные GEL-вызовы, которые обеспечивают доступ к целевому устройству не рекомендуется использовать (за исключением самой функции OnTargetConnect()), заключается в том, что некоторые встроенные вызовы потенциально могут нарушать процесс соединения/разъединения в CCStudio. Если встроенные GEL-вызовы, которые обеспечивают доступ к целевому устройству, нужны для дополнительной инициализации, рекомендуется, чтобы они вызывались (вручную, например, с помощью меню горячих функций GEL) после того, как установится соединение с целевым устройством и выполнение функции OnTargetConnect() завершится.

Примеры некоторых вызовов OnTargetConnect():

 

// This example will run with no problems
OnTargetConnect()
{
        *0x8000 = 1;           // simple write to a memory location (ok)
        MyCustomGELFunc();     // no issues calling custom gel functions
}
 
// This will have problems
OnTargetConnect()
{
        GEL_RefreshWindows(); // this is a built-in GEL callback!
}

 

Для версий 3.1 и выше это ограничение было преодолено. Функция OnTargetConnect() теперь вызывается только после успешного завершения полной фазы соединения. Таким образом, любой вызов доступа в адресату может быть теперь сделан в OnTargetConnect(). Вместо функции OnTargetConnect(), сейчас используется недокументированная функция обратного вызова OnTargetInit().

 

Вопрос: Можно ли использовать команду GEL_MemoryLoad для загрузки hex-файла во флэш-память? Почему GEL_MemoryLoad не распознает .hex-файл?

 

Имеется возможность использовать функцию GEL_MemoryLoad() для загрузки hex-файла во флэш-память. Функция GEL_MemoryLoad() используется для загрузки блока целевой памяти во внешнюю флэш-память. Пользователь может использовать GEL_MemoryLoad() для загрузки блока целевой памяти из определенного файла. Если в имени файла присутствует расширение *.out, то используется формат COFF; в противном случае, отладчик Code Composer Studio использует информацию заголовка в файле для определения формата файла. GEL-функция GEL_MemoryLoad может только распознавать и загружать файл .out и файлы данных, которые содержат системный код в заголовке. Hex-файл содержит информацию заголовка, которую ожидает GEL_MemoryLoad. После генерации файла .hex с помощью утилиты HEX используйте утилиту программирования флэш-памяти для записи hex-образа во флэш-память. Flashburn – это новая функция программатора флэш-памяти для программирования всех устройств флэш-памяти, доступных на плате по определенным логическим адресам.

 

Вопрос: CCS позволяет мне сохранять память как адресуемый блок (Addressable Unit). Могу ли я использовать GEL-функцию GEL_MemorySave(), чтобы также сохранить память в этом формате?

 

Эта опция действительно поддерживается, но она недокументированна (по состоянию на май 2008 года)

Согласно документации по GEL, io_format – целое число, которое представляет формат, в котором будут записаны слова памяти в определенный выходной файл. Выход по умолчанию равен 1 (шестнадцатеричный). Допускаются следующие варианты этого параметра:

1       *.dat Hexadecimal
2       *.dat Integer
3       *.dat Long
4       *.dat Float
5       *.out COFF

Однако, если Вы определяете io_format, равным 6, то память сохраняется, как адресуемый блок (Addressable Unit).

Чтобы сохранить данные памяти в этом формате с помощью CCS 3.3, нужно перейти в меню: File -> Data -> Save и выбрать «Addressable Unit (*.dat)» в диалоговом окне Save as.

 

ПРОФИЛИРОВАНИЕ

 

Вопрос: Как мне установить диапазон профилирования (Profile Range), в котором моя начальная точка находится в одной функции, а конечная точка – в другой функции?

 

Это нельзя сделать. Программа-профилировщик в CCStudio определяет диапазон, как линейный блок последовательных команд (и не как поток исполнения) со стартовым адресом, не превышающим конечный адрес. Кроме того, диапазон не может пересекать границы функций. Чтобы выполнить такое профилирование, пользователь должен вручную установить точки прерывания в начальной и конечной точках профилирования и проконтролировать Profile Clock.

 

Вопрос: Почему столько времени занимает активация всех моих функций для профилирования?

 

Теперь активация функций/каналов/диапазонов для профилирования требует заранее вычислить диапазоны профилирования и расставить все точки прерывания. Это улучшает характеристики профилирования с точки зрения быстродействия. Недостатком такого метода является то, что для приложений, использующих много функций/каналов/диапазонов, активация всех этих функций/каналов/диапазонов требует довольно много времени, так как необходимо выполнить расчет всех точек прерывания. Обычно это происходит, когда пользователь выбирает опцию активации всех функций (Enable all Functions) для крупного приложения.

 

Вопрос: Я получаю сообщение об ошибке, и CCStudio зависает, когда я активирую все свои функции для профилирования. Что происходит?

 

В ранних версиях CCStudio есть ограничение на число доступных программных (SW) точек прерывания. В настоящее время это ограничение равно 10K. Достаточно крупное приложение может иметь большое число ветвлений, поэтому число точек прерывания, нужное для активации профилирования всех функций, может превысить это предельное значение. Это вызывает непредсказуемое поведение CCStudio (зависание, постоянные сообщения об ошибках и т.д.). В версиях CCStudio 3.1 и выше были сделаны следующие усовершенствования:

  • Увеличено предельное число программных точек прерывания
  • Введено предупреждение пользователя о достижении предельного числа точек прерывания
  • Реализовано прекращение попыток добавления диапазонов при полном использовании предельного числа точек прерывания

 

Вопрос: Похоже, что не работает профилирование для DSP C55x в процессоре

OMAP2420. Поддерживается ли профилирование для данного устройства?

 

Профилирование DSP C55x процессора OMAP2420 в ранних версиях Code Composer Studio может не работать корректно при инсталляции Code Composer Studio в конфигурации по умолчанию. В результате, попытка использовать Profile Clock или другие продвинутые инструменты профилирования может не дать ожидаемых результатов.

Чтобы временно решить эту проблему и разрешить профилирование, нужно выполнить следующие шаги.

  • Перейдите в директорию, в которую был инсталлирован Code Composer Studio
  • В этой директории откройте папку cc/bin
  • Найдите файл cTools2000.dll. Переименуйте каким-либо образом этот файл (например, в cTools2000.dll.bak).

Когда CCS запустится, Вы получите сообщение о том, что AET нельзя инициализировать. Это сообщение можно проигнорировать. Теперь Вы можете просмотреть Profile Clock, чтобы определить число тактов, выполненных целевым устройством, и использовать профилировщик CCStudio обычным способом.

При использовании Code Composer Studio версии 2.4:

  • Перейдите в каталог, в который был инсталлирован Code Composer Studio
  • В этом каталоге откройте папку cc/bin/aet_config
  • Найдите файл 5500.xml. переименуйте каким-либо образом этот файл (например, в 5500.xml.bak).

Теперь Вы можете с помощью Profile Clock определить число тактов, выполненных целевым устройством, и использовать профилировщик CCStudio обычным образом.

 

Вопрос: Можно ли одновременно использовать профилирование и RTDX в Code Composer Studio v 3.3?

 

На реальных DSP Вы не может использовать одновременно профилирование и RTDX. В этом случае Code Composer Studio будет выдавать сообщение о конфликте ресурсов. Однако можно использовать как профилирование, так и RTDX в режиме симулятора (т.е., без соединения с целевой платой).

 

Вопрос: Почему результаты, полученные мною с помощью инструмента профилирования, не соответствуют ожидаемым результатам?

 

Имеются ограничения по использованию средства профилирования с аппаратными средствами; эти ограничения и связанная с этим информация задокументированы в меню Help CCS. Перейдите в меню Help и выберете вкладку поиска (Search). Найдите ключевое слово «Profile Clock» и изучите следующие темы в появившемся окне:

  • Ограничения аппаратного профилирования (Hardware Profiling Limitations)
  • Точность профилирования c помощью Profile Clock (Profile Clock Accuracy)
  • Важные замечания по профилированию (Important Notes on Profiling)

 

Вопрос: Возможно ли профилирование во флэш-памяти для устройств C28x?

 

Профилирование во флэш-памяти возможно, но возникает ряд ограничений, по сравнению с ОЗУ, поскольку профилировщику нужно будет использовать ресурсы анализа для вычислений, а также для поддержки аппаратных точек прерывания.

В процессорах C28x в данное время у Вас имеются два доступных ресурса для анализа. Одни ресурс может быть использован, как аппаратная точка прерывания, точка наблюдения или счетчик. Другой ресурс можно использовать только как аппаратную точку прерывания или точку наблюдения. Для того, чтобы выполнить профилирование, Вам нужно использовать счетчик анализа, который использует один из Ваших ресурсов, поэтому Вы можете установить только одну аппаратную точку. Для того, чтобы, например, пройти по шагам исходный код во флэш-памяти, вам нужны две аппаратные точки прерывания, поэтому Вы не сможете одновременно проходить исходный код по шагам и выполнять профилирование.

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

 

Вопрос: Какие имеются ограничения для использования внешнего счетчика (External Counter), который находится в эмуляторе при профилировании приложений?

 

Внешний счетчик, содержащийся в большинстве эмуляторов, может быть использован для подсчета числа срабатываний внутреннего счетчика с помощью счета сигналов на выводе EMU, которые стробируются, когда счетчик достигает своего максимального значения. Этот внешний счетчик позволяет эффективно увеличить разрешение внутреннего счетчика на дополнительные 16 бит (для эмулятора на базе XDS510) или 32 бита (для эмулятора на базе XDS560).

Ограничение использование этого счетчика таки способом зависит от используемого эмулятора. В таблице ниже приведено несколько возможных опций:

Эмулятор

Максимальная скорость счета

TI XDS560

~50 МГц

TI XDS510

(в зависимости от частоты тактового сигнала)

Spectrum Digital USB510

80 МГц

Spectrum Digital XDS510PP Plus

80 МГц

 

Если мы профилируем циклы, то максимальная скорость центрального процессора зависит от разрядности внутреннего счетчика. Если разрядность внутреннего счетчика равна 5 бит, то мы будем получать сигналы завершения счета каждый 32 цикла. На 200-МГц процессоре эффективная частота обновления счетчика равна 6,25 МГц. Если внутренний счетчик имеет разрядность 16 бит, то эффективная частота обновления счетчика будет равна 3 кГц.

 

Вопрос: В чем разница между тактовым циклом и пакетом исполнения (execution packet)?

 

С помощью «тактового сигнала», как средства измерения (Profiler-> Clock Setup->Count) Вы можете получить реальное число тактов, необходимых для выполнения Вашего участка кода. С помощью Execution Packet, Вы получаете количество пакетов исполнения, которое выполняется в этом участке кода.

Корректно, когда за один тактовый цикл выполняется один пакет исполнения. Но помимо исполнения пакета процессор должен вызывать команды, что является причиной разницы в величинах, показанных профилировщиком. Статистика, представленная с помощью средства измерения «тактовый сигнал», будет больше, чем статистика, показанная средством измерения «пакет исполнения»,

Разрешение кэширования позволит уменьшить эту разницу.

 

Вопрос: Что представляет собой набор инструментов анализа (Analysis Tool Kit)?

 

Пакет инструментов анализа Analysis Tool Kit (ATK), который представляет собой средство покрытия кода и профилирования, позволяет Вам анализировать надежность и эффективность встраиваемых приложений цифровой обработки сигнала. Он помогает Вам при разработке корректного и эффективного прикладного программного обеспечения. Инструмент покрытия кода и профилирования обеспечивает визуализацию строк исходного кода. С помощью этой информации Вы можете создавать тесты для проверки необходимого покрытия Вашего кода. Инструмент покрытия кода и профилирования поддерживается всеми симуляторами C5500 и C6000 в Code Composer Studio версии 3.1 и выше.

Более подробную информацию можно найти в Руководстве пользователя набора средств анализа для Code Composer Studio (Analysis Toolkit for Code Composer Studio User's Guide) SPRU623d.

 

КОМПОНЕНТ Wizard Tool ДЛЯ РАЗРАБОТКИ ПО ТЕХНОЛОГИИ ExpressDSP

 

Вопрос: Как получить Wizard tool для разработки по технологии Express DSP в CCS->tools? Он включен в состав CCS 3.1, но отсутствует в CCS 3.3. Почему?

 

Компонент стандарта разработки алгоритмов XDAIS инструмента Wizard tool был плагином в CCS v3, который был разработан сторонней организацией. В XDAIS 5.00 этот инструмент исключен.

XDAIS 4.00 содержит этот инструмент, однако разработчики алгоритмов вынуждены использовать для реализации интерфейсов XDM версию XDAIS 5.00 и выше, чтобы упростить интеграцию в среду разработки верхнего уровня. Заметим, что последние версии XDAIS (также имеющиеся в CCS Eclipse) включают в себя XDM GenAlg Wizard, а также средство QualiTI для проверки на соответствия XDAIS.

Примеры алгоритмов, отвечающих требованиям XDAIS, приведены в каталоге $(XDAIS_INSTALL_DIR)/examples, а также в статье XDAIS sample algorithm.

 

АППАРАТНЫЕ ЭМУЛЯТОРЫ

 

Дополнительную информацию по аппаратным эмуляторам можно найти по ссылкам, приведенным ниже: