Jump to content

    

DA830 (OMAP-L137) скорость работы stdio функций fwrite() fread() под CCSv5

Всем доброго дня.

 

Есть небольшой отладочный проект на Си под DSP ядро этого процессора, смысл которого в чтении\записи NAND флеши, подключенной к нему на плате.

Смысл простой - подключается JTAG, из под CCS грузится приложение во внутреннюю память DSP, запускается, и из под CIO консольки отладчика вводом текстовых команд производится чтение флеши.

 

Передача содержимого идёт встроенными функциями stdio fwrite() или fread() через JTAG XDS100v2.

 

Так вот - скорость передачи при этом получается небольшая, около 3 килобайт в секунду, видимо из-за большого оверхеда отладчика.

А при больших объёмах флеши нанд это очень и очень медленно.

 

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

Share this post


Link to post
Share on other sites

используйте другой интерфейс. USB или Ethernet, даже UART

Share this post


Link to post
Share on other sites

Дело в том, что я ограничен ресурсами - только внутренняя память процессора, это около 300 килобайт RAM.

Можно ли уложиться в этот объём, подняв стек USB MSD Host или Ethernet?

 

Да, самое простое решение - делать обмен через UART.

 

Но придётся написать небольшую програмку для хоста.

Стандартные терминальные программы, насколько я знаю, не могут обмениваться бинарными данными?

Share this post


Link to post
Share on other sites
Стандартные терминальные программы, насколько я знаю, не могут обмениваться бинарными данными?

о как! а как же обмен по протоколу x/y/zmodem?

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

Share this post


Link to post
Share on other sites
Дело в том, что я ограничен ресурсами - только внутренняя память процессора, это около 300 килобайт RAM.

Можно ли уложиться в этот объём, подняв стек USB MSD Host или Ethernet?

Открою Вам секрет: есть целая куча контроллеров имеющих всего неск. кБ RAM, в которых прекрасно живут и Ethernet и USB.

А у Вас ЦЕЛЫХ 300кБ! :)

Share this post


Link to post
Share on other sites
Открою Вам секрет: есть целая куча контроллеров имеющих всего неск. кБ RAM, в которых прекрасно живут и Ethernet и USB.

Ну, несколько килобайт понятие растяжимое. Поднимал на SAM3U USB MSD Device, 50 килобайт заняло влёт, вместе с файловой системой.

Хост побольше весить будет. Но в 300 должен влезть, вероятно.

 

Пока что у меня только небольшая программа весит около 50 килобайт, со стеком и кучей по 8 КБ.

Сишная либа в основном тяжёлая, не сравнить с мелкими контроллерами.

 

Ладно, займусь написанием своей консольки под UART, с поддержкой передачи файлов.

Share this post


Link to post
Share on other sites
ембеддед проет

Ну, несколько килобайт понятие растяжимое. Поднимал на SAM3U USB MSD Device, 50 килобайт заняло влёт, вместе с файловой системой.

Хост побольше весить будет. Но в 300 должен влезть, вероятно.

Зачем Вам файловая система и тем более хост для обмена командами/данными с хостом?????

Достаточно один эндпоинт реализовать и всё.

 

Вот передо мной мой проектик на LPC1768:

EMAC + TCP-стек + DNS-клиент + SMTP-клиент + POP3-клиент + SNTP-клиент + некоторый свой сокетный клиент + развитая работа с внутренней флешью + задача работающая с беспроводным nRF24L01+

+ развитый отладочный вывод + пр.

И всё это влазит в ОЗУ==64K код+данные (для простоты отладки я код линкую в ОЗУ - так быстрее отлаживаться можно).

И это ещё без оптимизации! (так как компиляция для отладки). И ещё не вся ОЗУ израсходована.

 

Пока что у меня только небольшая программа весит около 50 килобайт, со стеком и кучей по 8 КБ.

Сишная либа в основном тяжёлая, не сравнить с мелкими контроллерами.

Стек 8кБ????? 8-O

Зачем такой огромный? Что Вы в нём храните???

А куча в ембеддед-проектах вообще не нужна. Даже вредна.

И причём тут тяжёлая либа? Из либы в конечный образ линкуются только используемые части.

Да и не какая она не тяжёлая. Писал я на L137 - USB-стек занимал всего неск. кБ.

 

PS: Да, ещё совет - что же Вы хотите скорости JTAG-интерфейса и выбрали самый дешёвый и тормозной JTAG?

Возьмите хотя-бы SAU510. Для вашего L137 XDS100v2 - это несерьёзно.

Share this post


Link to post
Share on other sites

Добавлю сюда свои пять копеек:

 

1) CIO - это то, что Вы используете. Оно работает так - заполняется буфер. Затем процессор останавливается по точке останова (скрытой, но она там есть, на символе C$$IO$$ или C$$IOE$$ в функции writemsg в модуле trgmsg.с из ран-тайм либы). Затем CCS вычитывает содержимое буфера через эмулятор и средства доступа к памяти процессора. Затем запускает код на выполнение дальше. Это самое тормозное, что можно придумать. Учитывая еще и самый тормозной эмулятор, 3 КБ/с очень даже неплохо. А вообще CIO придуман для того, чтобы логи писать простенькие... Ускорить, наверное, можно - размер буфера CIO равен 32*BUFSIZ (из stdio.h), то есть, пересобрать RTL с новым bufsiz, побольше... Ну и поменять подобие эмулятора на эмулятор (хотя бы, на 510-й).

 

2) RTDX - это следующий способ общения через JTAG. Там уже идет обмен по специальному каналу, без останова процессора. Скорость зависит от эмулятора и процессора - примерно 250 кбит/с на TMS320VC5510 получается на ура. На 6000-ках побыстрее. С 100-м эмулятором, правда, этого не сделать, только 510-й или 560. Ну и надо писать клиента на PC, то есть, голым CCS не обойтись.

 

3) HS-RTDX. Это уже прерогатива 560-х эмулятором. Обмен там идет по специально выделенным проводам, EMU0....EMUxx (их там может быть много, а не только EMU0/1). И скорости уже такие, что можно реалтайм видео поток прокачать. Но - только XDS560.

Share this post


Link to post
Share on other sites

Спасибо за информацию. Интересно.

 

XDS100 выбрал, потому что доступный и дешёвый.

Покупать 510 или тем более 560 за 50 тысяч рублей почему то желания нет :)

Если бы подешевле найти...

Share this post


Link to post
Share on other sites
Покупать 510 или тем более 560 за 50 тысяч рублей почему то желания нет :)

Если бы подешевле найти...

Ищите и расскАжете если найдёте где ;)

Официальный на sauris.de там и цены. Мы раньше покупали по 645$

Может ещё можно какую отладочную плату поискать со встроенным 510-м и поюзать оттуда. Не знаю.

Если работаете для конторы, то для неё это не деньги. Будете пытаться экономить на пуговицах - потеряете гораздо больше на времени разработки.

 

А вообще - я ещё в начале посоветовал - используйте любой другой канал, не JTAG. Если возможно.

Share this post


Link to post
Share on other sites
А вообще - я ещё в начале посоветовал - используйте любой другой канал, не JTAG. Если возможно.

Так и делаю. Спасибо!

Share this post


Link to post
Share on other sites

Позвольте поинтересоваться: проект "для себя" или работа?

Share this post


Link to post
Share on other sites
Официальный на sauris.de там и цены. Мы раньше покупали по 645$

Там же есть теперь и версия "Lite", без гальваноразвязки, со всеми теми же фичами, но не развязанная. А что касается развязанного, то будет подорожание, где-то, наверное, к осени, он, в связи с выходом Lite версии, переходит на USB SuperSpeed (в стадии разработки) с сильным повышением скорости, а "V.2" по этой причине будет снят с пр-ва (но не с поддержки, разумеется).

Edited by SAURIS GmbH

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this