beaRTS 0 13 июля, 2012 Опубликовано 13 июля, 2012 (изменено) · Жалоба Все ближе подступает момент, когда мне предстоит пройти к следующему этапу разработки: написанию кода под TMS320F28235. Я делаю цифровой радиоприемник: задача сделать цифровой детектор АМ сигналов, чтоб определять их амплитуду, дополнительные параметры (РГМ, СГМ, частоты двух тональных сигналов в огибающей, а также частоту несущей (с меньшей конечно же точностью) ), плюс функции управления АРУ (через ЦАП), индикатором, температурным датчиком, DDS (гетеродинами в радиотракте), протоколами общения с писюком.. примерно так... в какую сторону плыть, что использовать? expressDSP c DSP/BIOS или что? .. говорят, тут на форуме DSP/BIOS устарел (почему???) ,есть какой-то SYS/Bios (вроде ось улучшенная от TI) ? или все писать классически, с функцией main{}, в которой бесконечный цикл, свичи, прерываемые прерываниями и т.д... или устанавливать Линукс (и как тогда в этой области быть, куда плыть - в ней вообще профан).... как, что, куда???? просто хочется идти в ногу со временем ,т.к. надо бы завершить этот проект, да ,к сожалению, уходить в другое место работать... А так как молодой, то многие предприятия еще и "фыркаются"... вот и хочется что-то современное использовать. Помогите, подскажите =) Писал программки либо на ассемблере, но в основном на С обычные: с майн, прерываниями, бесконечными циклами. Все области мне сейчас не под силу обхватить, чтоб самому принять решение. Вот прошу помощи у корифеев! Изменено 13 июля, 2012 пользователем beaRTS Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
shamrel 0 14 июля, 2012 Опубликовано 14 июля, 2012 · Жалоба Месяц назад был перед таким же распутьем. Линукс отвергли почти сразу, стоило лишь получить консультацию у специалиста. main(){} c бесконечным циклом при наличии большого количетва задач -- тот еще геморой: по сути писать свой планировщик задачь. Подумав, порисовав графы, решили не изобретать велосипед -- использовать DSP/BIOS. Сейчас потихоньку разбираемся. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
beaRTS 0 17 июля, 2012 Опубликовано 17 июля, 2012 · Жалоба Месяц назад был перед таким же распутьем. Линукс отвергли почти сразу, стоило лишь получить консультацию у специалиста. main(){} c бесконечным циклом при наличии большого количетва задач -- тот еще геморой: по сути писать свой планировщик задачь. Подумав, порисовав графы, решили не изобретать велосипед -- использовать DSP/BIOS. Сейчас потихоньку разбираемся. Спасибо! Ну, я Линукс устанавливать сразу не хотел, т.к. рано еще (сначала на комп его установлю, покручу..), да и плату под него переделывать не хочу (надо же определенный объем памяти как минимум обеспечить). С main{} да - геммор, но видел большие проги, написанные именно так (в силу древности). и вот я тоже прихожу к выводу, что стоит DSP/BIOS крутить. Будем крутить вместе =).... а SYS/bios отметается, т.к. он вроде как расширенная версия dsp/bios с возможностью портирования его на MSP'шки. Подумав, порисовав графы Графы рисовали за тем, чтобы наглядно отобразить все число состояний, в которых может быть процессор при работе, типа, алгоритм так визуализировали ??? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
shamrel 0 17 июля, 2012 Опубликовано 17 июля, 2012 · Жалоба Графы рисовали за тем, чтобы наглядно отобразить все число состояний, в которых может быть процессор при работе, типа, алгоритм так визуализировали ??? Именно! Графы наглядно иллюстрируют состояния системы и условия перехода из одного в другое. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
beaRTS 0 3 сентября, 2012 Опубликовано 3 сентября, 2012 (изменено) · Жалоба Именно! Графы наглядно иллюстрируют состояния системы и условия перехода из одного в другое. можете поделиться как у Вас с DSP/Bios обстоят дела? продвинулись в понимании? А кто-нибудь в состоянии подсказать про uSTL? во всем форуме нашел только одно упоминание ссылка на uSTL на Электрониксе . Естественно, гуглю, читаю (только начал), Но может кто-то использовал в своих embedded-проектах в связке с С++? Поделитесь опытом, мыслями. И, вообще, о стиле программирования на С++ при ограниченных ресурсах, как по вышеприведенной ссылке. Изменено 4 сентября, 2012 пользователем beaRTS Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prst 0 13 ноября, 2012 Опубликовано 13 ноября, 2012 · Жалоба на этот проц портированного линукса нету, можете не париться ;) Поправьте меня если вы его гдето видели, с удовольствием изучу этот вопрос.(желательно в приват, я в этой ветке не часто в последнее время) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
beaRTS 0 22 ноября, 2012 Опубликовано 22 ноября, 2012 (изменено) · Жалоба Двигаюсь дальше в изучении. Накатал прогу на С++ (объект - виртауальный АЦП создал, это неважно пока) . Итак, Приведу пример того, какие части программы соотносятся с какой секцией памяти (первый прикрепленный рисунок). Вопрос №1: Странно, почему после переноса массива из глобальной области видимости в локальную (2ой прикрепленный рисунок) сборка проекта происходит нормально, хотя 5387 превышает размер выделенный под .stack в 28335_RAM_lnk.cmd (стандартный файл TI) ???? MEMORY { PAGE 0 : <..> PAGE 1 : <..> RAMM1 : origin = 0x000400, length = 0x000400 /* on-chip RAM block M1 */ <..> } SECTIONS { <..> .stack : > RAMM1, PAGE = 1 <..> } файл прикрепляю, правда ,в другом формате (*.cmd не грузится на форум) Немного поэкспериментировал. Ставим размер массива = 100000 => при сборке получаем ошибку: ”>> INTERNAL ERROR: Space required for local variables exceeds maximum in _main” . размер массива = 32763 => та же ошибка; размер массива = 32762 => сборка завершена успешно 32762 = 0х7FFA в 28335_RAM_lnk.cmd нет области такого размера. Вопрос №2: почему компилятор/линкощик при сборке не ругаются, даже если мы имеем переменных (массив в моем случае) на 32762 ячеек памяти ??? И откуда брать это значение максимального количества локальных переменных "in _main"(с) ?? начал я с середины описывать проблему, поэтому кому интересно откуда ноги растут, какие источники прошуршал и что делал - прикрепляю pdf 28335_RAM_lnk.txt the_whole_story_with_this_example.pdf Изменено 23 ноября, 2012 пользователем beaRTS Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
beaRTS 0 23 ноября, 2012 Опубликовано 23 ноября, 2012 (изменено) · Жалоба Какой должен быть формат *dat файла, который подгружают в месте присоединения к программе точки останова (breakPoint), чтобы считывать сэмплы из файла и отлаживать таким образом алгоритм.... ???? У меня такие требования к файлу: в нем хранится 5387 float’овых сэмплов входного сигнала для алгоритма. эти сэмплы в десятичном представлении. Знаю, что в этих файлах - первая строка-заголовок вводит некие настройки: 1 число - магическое = 1651 2 число - формат : hexadecimal, =1 integer, =2 long, =3 float. = 4 Хотя, по-моему, hexadecimal - это не формат , а система счисления, какого лешего разработчики TI внесли его в настройки!!??? тогда бы уж писали про десятичную, двоичную систему.... 3 число - как я понял начальный адрес блока памяти в memory map процессора, который надо записать в dat-файл на компьютер. 4 число - количество сэмплов в блоке.. много непонятного у этих Техасцев ((( . ссылка на источник я использую такой файл: 1651 4 0 1 0 0.025199203 0.013311899 -0.039400969 0.008759023 Они во всех примерах не заморачиваются и используют 16ичную систему. Например, C:\CCStudio_v3.3\tutorial\dsk2812\modem\pseudo.dat , C:\CCStudio_v3.3\tutorial\dsk2812\sinewave\sine.dat : 1651 1 0 1 0 0x0000 0x000f 0x001e 0x002d 0x003a 0x0046 Просто я не вижу свой сигнал в Graph tool (буфер, к которому прикрепляю dat-файл , я отстраиваю в виде графика в Graph tool), точнее вижу, но не то (первая картинка из вложения), второй рисунок - сигнал который я загружаю при помощи dat - файла. помогитееее!!! Изменено 23 ноября, 2012 пользователем beaRTS Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
beaRTS 0 24 ноября, 2012 Опубликовано 24 ноября, 2012 (изменено) · Жалоба Поэкспериментировал сейчас на работке с *.dat файлами, что делают техасцы. Что было сделано: взял из какого-то примера sine.dat, подключил к своему проекту, поизучал Graph tool, с помощью которой можно строить графики сигналов Code Composer'е. Все это зафиксировал в отчете. и Пришел к выводу, что коряво они, америкосы, реализовали file i/o при помощи dat-файлов. Корявость проявляется в указании какой тип данных мы используем. Писал выше вот это: 2 число в первой строке dat-файла- формат : hexadecimal =1 integer =2 long =3 float = 4 зачем они приделали hexadecimal ?? зачем народ путать?.. так бы и написали, что мы поддерживаем ТИПЫ ДАННЫХ integer =2, long =3 и float = 4 , но они должны быть все в ШЕСТНАДЦАТИРИЧНОЙ СИСТЕМЕ СЧИСЛЕНИЯ (это пока догадка - ответ на предыдущее мое сообщение, т.к. не проверял). Чтобы это проверить нужно писать прогу по конвертированию систем счисления. А может у кого-то уже есть эта прога?? поделитесь!!! писать лень!!! опять велосипед сочинять =(( .. или может, это можно просто как-нибудь сделать в Excel, Matlab или блоки быстренько накидать в Simulink'е ???? P.S. прикрепляю свой отчет по работе с этими *.dat файлами, выводом графиков в CCS. (отчет неполный, т.к. сырой, т.к. не до конца доделал сам проект) зачем они приделали hexadecimal ?? ну это то понятно - ведь в процессор должны писать 0 и 1... но как-то забыли америкосы толково объяснить, вот и запутался я, к тому же не нашел толковой информации... work_with_dat_files_graph_tool_in_code_composer_Studio.pdf Изменено 24 ноября, 2012 пользователем beaRTS Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
beaRTS 0 25 ноября, 2012 Опубликовано 25 ноября, 2012 (изменено) · Жалоба Какой должен быть формат *dat файла Знаю, что в этих файлах - первая строка-заголовок вводит некие настройки: 1 число - магическое = 1651 2 число - формат : hexadecimal, =1 integer, =2 long, =3 float. = 4 Хотя, по-моему, hexadecimal - это не формат , а система счисления, какого лешего разработчики TI внесли его в настройки!!??? тогда бы уж писали про десятичную, двоичную систему.... 3 число - как я понял начальный адрес блока памяти в memory map процессора, который надо записать в dat-файл на компьютер. 4 число - количество сэмплов в блоке.. почти верно. вот правильный вариант. наткнулся в книге Kuo S.M., Lee B.H. Real Time Digital Signal Processing 1.5.3 Experiment 1C± File Input and Output ... но все равно скупое описание.... Изменено 25 ноября, 2012 пользователем beaRTS Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
beaRTS 0 26 ноября, 2012 Опубликовано 26 ноября, 2012 · Жалоба ..нужно писать прогу по конвертированию систем счисления. А может у кого-то уже есть эта прога?? поделитесь!!! вот здесь решил проблему . прикрепляю правильный/конечный вариант скрипта ну и всех сопутствующих файлов convert_float2Hex.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
beaRTS 0 27 ноября, 2012 Опубликовано 27 ноября, 2012 · Жалоба Люди добрые, внимательные, мудрые - какие тут еще есть - ну помогите, пожалуйста, молодому, невнимательному, торопящемуся и т.д..... ну не могу врубиться чего не хватает. В сообщении #9 прилагал документик "work_with_dat_files_graph_tool_in_code_composer_Studio.pdf " , в котором разобрался как подгружать из CCS файл с отсчетами целых чисел в hex'е. Синус видел, в общем... Пытаюсь тоже самое сделать, но подложив целевому Процессору файл из вещественных сэмплов в hex'е. Как я из матлабовского single в десятичной системе счисления получил hex можете глянуть либо в прикрепленном документе (все ссылки там кликабельны), либо вот здесь , но в файле еще картинки по моей проблеме. может быть, выложить Вам сам проект со всеми исходниками?? мне ж не жалко !!!!!!!!!!!!!!.... Хочу победить эту муть. War_with_debugging_algorithm_in_CCS.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
beaRTS 0 27 ноября, 2012 Опубликовано 27 ноября, 2012 (изменено) · Жалоба в продолжении проблемы: Товарищи, вот что обнаружил !!!! (см рисунок) вопрос ПОЧЕМУ code composer берет только лишь младшие 16 бит каждого сэмпла из *.data файла и пишет в нужный нам массив, а старшие попросту отбрасывает .... ????? Изменено 27 ноября, 2012 пользователем beaRTS Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
beaRTS 0 28 ноября, 2012 Опубликовано 28 ноября, 2012 · Жалоба :1111493779: Ликую!! победил я :smile3009: Code Composer =) . Правда, костыльное :laughing: решение, но все-таки сделал. работает! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
beaRTS 0 30 ноября, 2012 Опубликовано 30 ноября, 2012 · Жалоба чтобы тема с *.dat файлами была закончена, дам статьи (писал для себя), написанные в хронологическом порядке наступления озарений в этой области. Изучаем Code Composer Studio: работа с Graph tool, загрузка *.dat файла данных в процессор в точке останова затем было сделано: Конвертируем вещественные данные (float, single (MatLab)) из десятичной системы счисления в hex , но в ходе экспериментов понял, что нужна еще доработка, которая вылилась вот в эту статью: “Костыльное” решение для Code Composer Studio по конвертации float из десятичной системы счисления в hex но и тут без косячка не обошлось, нашлась одна проблемка, которая родила следующую картину мира: Code Composer Studio - Единственно правильная загрузка *.dat фала в TMS320F28335 В общем, кому интересно - читайте в приведенной последовательности. Надеюсь мои опусы помогут молодым, как и я, быстрее стартануть, тем самым повышая конкурентоспособность наших инжеНегров в глобальной системе =) Ветка не закончена. вопросов у меня куча, думаю писать тут. или не тут? Модераторы, как лучше: отдельная ветка на каждый вопрос связанный с TMS320F28335 или продолжать и тут все задавать???? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться