Перейти к содержанию
    

C/asm в ехе

Работаю с C5402 DSK, проэкт состоит из С и ассемблерных файлов. Результат buildа - .out файл загружаемый в DSK по параллельному порту из CCSа (Load program).

Нужно вместо (или дополнительно) .out сделать ехе файл с тем чтобы при его запуске код автоматом загрузился-бы в DSK и начал работу.

Как получить такой ехе файл ?

 

Спасибо

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как получить такой ехе файл?

Написать программу :)

 

А вообще задача нетривиальная. Вот для DSK6711 есть полезный файл-библиотека dsk6x11hpi.dll, в котором есть необходимые функции для управления китом по HPI over LPT (по моему она даже был задокументирована). Для 5402 такой библиотеки, судя по всему, нету.

 

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

 

Последовательность примерно такова. В своей программе придется распарсить COFF-файл программы (*.out), его формат открытый, он есть в техасовской документации. Затем вызывать из DVR-библиотеки функции GTI_INIT_EX, GTI_WRITEMEM_EX (или GTI_WRITEMEM), GTI_RUN_EX (GTI_RUN). Это если драйвера от 2-й версии CCS. Если от 3-й, то после INIT'а потребуется еще GTI_CONNECT.

 

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

 

Ну а вообще может быть существует и способ попроще. Надо на конкретику DSK5402 смотреть. Ну или ипсользовать другой интерфейс, не JTAG over LPT.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Написать программу :)

 

А вообще задача нетривиальная. Вот для DSK6711 есть полезный файл-библиотека dsk6x11hpi.dll, в котором есть необходимые функции для управления китом по HPI over LPT (по моему она даже был задокументирована). Для 5402 такой библиотеки, судя по всему, нету.

 

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

 

Последовательность примерно такова. В своей программе придется распарсить COFF-файл программы (*.out), его формат открытый, он есть в техасовской документации. Затем вызывать из DVR-библиотеки функции GTI_INIT_EX, GTI_WRITEMEM_EX (или GTI_WRITEMEM), GTI_RUN_EX (GTI_RUN). Это если драйвера от 2-й версии CCS. Если от 3-й, то после INIT'а потребуется еще GTI_CONNECT.

 

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

 

Ну а вообще может быть существует и способ попроще. Надо на конкретику DSK5402 смотреть. Ну или ипсользовать другой интерфейс, не JTAG over LPT.

 

Огого, не думал не гадал что это может быть такая проблема :cranky: , был почти уверен что вопрос тривиален и все должно просто решаться... :07:

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

Спасибо, понял.

 

Интересно что еще народ скажет по теме...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если я правельно понял задачу, тебе надо сделать script или ехе которая при вызове автоматически заставляет CCS производит компиляцию, программирует DSP, и его включает. Жалко что тебя заставляют пользоватся C5402. От сюда (supported hardware->supported platforms->link feature) видно что для С55 и новее есть PIL (processor in the loop) возможность из матлаба. Через simulink автоматически вызывается CCS, и, если ты пользуешся стандартным demo board (DSK), DSP програмируется сам. Тогда можно контролировать DSP через матлаб, получается нечто вроде debugger.

 

Но, возможно не все для тебя проигранно - я вхожу в не очень знакомые воды, сам это не пробовал, но есть возможность RTDX, которая поддерживается для твоего DSP если у тебя с матлабом установлен link for Code Composer toolbox.

 

Link for Code Composer Studio provides components that work with and use CCS IDE and TI Real-Time Data Exchange (RTDX):
  • Debug Function — Lets you use objects to create links between CCS IDE and MATLAB. From the command window, you can run applications in CCS IDE, send to and receive data from target memory, and check the processor status, as well as other functions such as starting and stopping applications running on your digital signal processors.
  • Data Manipulation Function — Provides object methods and properties that let you access and manipulate information stored in memory and registers on digital signal processors, or in your Code Composer Studio project. From MATLAB you gather information from you project, work with the information in MATLAB, doing things like converting data types, creating function declarations, or changing values, and return the information to your project — all from the MATLAB command line.
  • Function Call function — Enables you to write scripts in MATLAB that exercise functions from your project on your target processor. From MATLAB, you can generate data, send the data to your target and use a C function in your program to manipulate the data on your hardware or simulator. Afterwards, you return the output to MATLAB so you can analyze the results.
  • Real-Time Data Exchange (RTDX) Component — Provides a communications pathway between MATLAB and digital signal processors installed on your PC. Using objects in Link for Code Composer Studio, you open channels to processors on boards in your computer and send and retrieve data about the processors and executing applications, as well as send data to the processes for use and get data from the applications.
  • Processor-in-the-Loop (PIL) — Provides the ability to evaluate how a candidate algorithm runs on your hardware and compare the performance to a simulation.
  • Real-Time Execution Profiling — Reports how your process runs in real-time on your target hardware at the task level.

С твоим С5402, ты можешь делать все кроме PIL... Я бы копал именно под это.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если я правельно понял задачу, тебе надо сделать script или ехе которая при вызове автоматически заставляет CCS производит компиляцию, программирует DSP, и его включает. Жалко что тебя заставляют пользоватся C5402. От сюда (supported hardware->supported platforms->link feature) видно что для С55 и новее есть PIL (processor in the loop) возможность из матлаба. Через simulink автоматически вызывается CCS, и, если ты пользуешся стандартным demo board (DSK), DSP програмируется сам. Тогда можно контролировать DSP через матлаб, получается нечто вроде debugger.

 

Но, возможно не все для тебя проигранно - я вхожу в не очень знакомые воды, сам это не пробовал, но есть возможность RTDX, которая поддерживается для твоего DSP если у тебя с матлабом установлен link for Code Composer toolbox.

С твоим С5402, ты можешь делать все кроме PIL... Я бы копал именно под это.

 

Да, 5402 это все что есть, другого варианта нет (да и не нужно в принципе - это же демо проэкта). Кстати это меня и так сильно ограничили в желании имплементации полной application проэкта. Там у меня весьма много wavelet decomposition то бишь DWT, ручная реализация которого весьма трудоемка и не тривиальна для новичков типа меня, а TI дает библиотеку IMGLIB в которой готовые, ассемблерно-оптимизированные функции wavelet decompositionа, как раз то что мне нужно. Более того - они дают точную прикидку производительности в cycles. Одна беда: библиотека идет под C55 и старшие ибо интенсивно использует hardware accelerators которых нет в С54, т.е. использует архитектурные прймущества С55. Я запросил TI support (кстати ужасная response delay - 2-3 недели), они подтвердили что библиотека откомпилирована под C55 и широко использует accelerators, посему не будет работать (и компилироваться) в C54x. Это и послужило причиной моего решения разбить всю applcation на 2 части - в МАТЛАБе примерно 70% обработки, оставив на железо только сам filter bank processing. А обмен data между МАТЛАБом и DSK делать через data files. Да, понимаю, чеерз задницу, но это то что есть.

Ну да ладно, отвлеклись от темы.

 

Спасибо за ответ, тоже кое-что проясняет, но мне кажется я не совсем точно дал себя понять. Я имел ввиду в CCS сделать один executable файл из моих С/asm сорсов. При его запуске не будет компиляции а просто загрузка в DSK кода и выполнение. Я так понимаю задача не тривиальна, если вообще выполнима.

В приципе, можно подумать в другую сторону: результат в CCS есть .out файл который и есть загружаемый файл в DSK. Можно подумать насчет написать executable, который брал бы готовый .out файл, грузил его в DSK и запускал (все по LPT). Хотя может то о чем ты говоришь и есть намек на это...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В приципе, можно подумать в другую сторону: результат в CCS есть .out файл который и есть загружаемый файл в DSK. Можно подумать насчет написать executable, который брал бы готовый .out файл, грузил его в DSK и запускал (все по LPT). Хотя может то о чем ты говоришь и есть намек на это...

Давайте уточним. Я так понял, вам надо залить OUT-программу без загрузки среды CCS. Я именно рассуждал про этот вариант.

 

И вот еще идейка пришла... Можно попробовать написать консольный плагин. Почитайте документ

spra659, раздел "4. Console Application Plugin". Я в свое время пробовал писать ActiveX plug-in, для этого мне пришлось собрать SDK из того, что было в комплекте с CCS, плюс разобранный TI-SDKVERS-2.00.00-to-TI-SDKVERS-2.20.00.EXE (который в свое время лежал на сайте TI, но потом исчез), плюс все писать пришлось на VC++ 6.0. В общем опять без хакерства не обошлось, но результат был :)

 

Так что можете покопать в этом направлении, а если с SDK (c:\<CCS>\SDKv3.0\) будут вопросы, обращайтесь.

 

[ADD]

Хотя все-таки CCS запускается и в консольном приложении...

136: // Startup Code Composer
137: app = CCApplication::CreateApp();
138:
139: // Make application visible
140: app.SetVisible(TRUE);

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Давайте уточним. Я так понял, вам надо залить OUT-программу без загрузки среды CCS. Я именно рассуждал про этот вариант.

 

И вот еще идейка пришла... Можно попробовать написать консольный плагин. Почитайте документ

spra659, раздел "4. Console Application Plugin". Я в свое время пробовал писать ActiveX plug-in, для этого мне пришлось собрать SDK из того, что было в комплекте с CCS, плюс разобранный TI-SDKVERS-2.00.00-to-TI-SDKVERS-2.20.00.EXE (который в свое время лежал на сайте TI, но потом исчез), плюс все писать пришлось на VC++ 6.0. В общем опять без хакерства не обошлось, но результат был :)

 

Так что можете покопать в этом направлении, а если с SDK (c:\<CCS>\SDKv3.0\) будут вопросы, обращайтесь.

 

[ADD]

Хотя все-таки CCS запускается и в консольном приложении...

136: // Startup Code Composer
137: app = CCApplication::CreateApp();
138:
139: // Make application visible
140: app.SetVisible(TRUE);

 

 

Спасибо, это уже какой-то намек. Кинул взгядом в этот док (spru659), programmer из меня не очень, (да и релевантного опыта очень мало), но кажется реально это сделать. Мне-то не нужно debugгит-, все что мен нужно так это загрузка .out программы и ее запуск. Вроде судя по документу это должно быть не так уж сложно. У меня жена опытный программер - дам ей разбираться, себе все-таки оставлю преррогативу алгоритмов и имплементации.... :) . Может пока я поконаю имплеемнтацию алгоритма, она сделает автозагрузку/запуск.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...