Jump to content

    

Gar_Ri

Участник
  • Content Count

    19
  • Joined

  • Last visited

Community Reputation

0 Обычный

About Gar_Ri

  • Rank
    Участник
  1. Я тоже не особо много информации насчет BERR нашел, поэтому и появились сомнения насчет него. Но я проверял флаг BERR у меня он не выставляется при пропадание прерывания. TIMEOUTIE/TIMEOUT и DROPIE/DROP тоже проверял. Данные флаги не устанавливаются и прерывания по ним не срабатывают.
  2. Я вполне могу допустить, что у меня прерывания могут "налезать" друг на друг. Но разве это или сбой по шине может привести к полному прекращению появления одного из прерывания и при этом ни по какому биту/флагу мы это не сможем определить? А есть какой-нибудь флаг, который показывает что произошел сбой передачи по шине ? Случайно не BERR(Bus Error interrupt) для этого используется ? Возможна передача/прием коротких пакетов, на которые надо быстро реагировать. Но возможно действительно стоит увеличить размер блока немного пожертвовав скоростью реакции. Большая часть загрузки у меня все-таки тратиться на обработку принятых пакетов ( фильтрация и т.п.). Без обработки пакетов загрузка cpu с учетом dsp/bios 10-15% .
  3. Использую DSP/BIOS. Загрузка проца до 60 %. Активно работает USB + один McBSP (CLK до 12Мгц) и два DMA его обслуживает ( один на прием , другой на передачу). Управление передачей данных по McBSP происходит по прерываниям DMA (HALF, FRAME). Прерывания от DMA происходят примерно раз в 100 мкс.
  4. DMA канал постоянно пересылает данные на последовательный порт и в определенный момент перестают генерироваться прерывания по этому каналу. При этом сам канал продолжает передавать данные и прерывания с других DMA каналов работают в штатном режиме. Все биты разрешающие прерывания по данному каналу установлены ( INTM, IER0/1, DMACICR). Флаги статуса (SYNC, HALF, FRAME) расположенные в DMACSR имеют значение 1. В чем может быть причина пропадания прерывания?
  5. Как известно класс CDC содержит два интерфейса, Communication Class Interface и Data Class Interface. Для работы с Data Class Interface ( две конечные точки типа Bulk) на ПК достаточно воспользоваться стандартными функциями чтения/записи в последовательный порт. Как работать со стороны ПК с Communication Class Interface ( default Control endpoint 0 и конечная точка для уведомлений о событиях типа Interrupt IN) при необходимости передачи/прием своих команд/сообщений?
  6. Таким способом уже реализовал. У JFlashARM.exe даже есть специальные команда для установки/ снятия бита защиты (-securechip / -unsecurechip). Но мне не нравится, что в этом случае загружается GUI графическая оболочка этой утилиты. Хотелось бы получить более быстрый и простой способ.
  7. В JFlashARM.exe есть функция secure/unsecure chip. Можно ли с помощью скрипта для J-Link.exe реализовать эти же функции? Если да, то как он будет выглядеть?
  8. 1) AM2D-0505D -70р (120 шт) 2) AM2D-0524DZ -100р (60шт)
  9. да я и не говорил что они не работают, просто они мне не сильно помогают. Они позволяют остановится там где я укажу, но когда я не знаю где точно нужно остановить программу я не представляю как они мне помогут. Вот например, сейчас у меня выполняется одна процедура постоянно. Делает всегда одно и тоже в течении нескольких минут нормально, но в какой-то "прекрасный" момент происходит сбой. А так как использую DSP/BIOS с его многозадачностью, мне довольно сложно отловить после каких именно событий произошел сбой.
  10. при отладке в режиме real-time эти средства не особо помогают
  11. Есть ли возможность имея Jtag и CCS узнать какую последнюю процедуру выполнил проц перед сбоем. А то у меня пока только по LOG_printf() получается определять какие этапы проходит программа, но довольно много времени уходит на поиск ошибки.Может есть в CCS какие-то стандартные средства для выявления таких ошибок.
  12. to SM : Большое спасибо. Все гениальное просто, я действительно размышлял не в том направлении. Только мне кажется строчка -e _c_int00 в hex-генераторным .cmd для модуля не нужна. Мне ведь не надо, чтобы модуль сразу начал выполнялся. Мне надо,чтобы он загрузился в память и ждал своего часа.
  13. т.е. основной смысл работать через фиксированные адреса ? а как передавать параметры процедур между модулем и ядром и обратно, также через какой-то один фиксированный адрес? Ведь, если я правильно понял, таблица переходов представляет собой таблицу адресов процедур без параметров. Вот, например, нам в модуле надо вызвать такую процедуру ядра: proc1(Ptr param1,int param2); как я понял в модуле мы записываем param1 и param2 по конкретному адресу addr_param и вызываем переходную процедуру ядра proc1_1 (расположенную по фиксированному адресу addr_proc). proc1_1 извлекает эти параметры из адреса addr_param и уже потом вызывает proc1(Ptr param1,int param2). Но честно говоря, есть подозрения что я туплю где-то, хотелось бы узнать где. Может я не правильно понимаю что такое таблица переходов. Если можешь скинь пожалуйста как выглядит у тебя эта таблица, и как в модуле ты осуществляешь обращение к процедурам ядра.
  14. Проблема такая. Имеется мое устройство и к нему может подключаться большое число других приборов. Процедура обработки и режимы работы при подключении разных приборов различаются. Соответственно требуется и разные программа для них. Программа у меня делится на общую часть характерную для всех приборов и часть для работы с конкретным прибором. Я хочу общую часть программы загружать из флешки которая на плате, а дополнительную часть программы загружать уже после через USB. Вопрос как прикрутить эту дополнительную часть программы к общей? Защить ее во внутренее озу я смогу, а вот как их правильно написать, чтобы обе части нормально между собой работали. Т.е. вопрос в том как правильно пишуться такие вещи. Пищу в CCS 3.3 под 5509A.
  15. у меня прекрасно грузятся проекты и свыше 64К... Может проблемы в тулзе который ты грузишь.Я как понял ты Thesycon (USBIO) используешь. У них была лайт версия порезанная в своих параметрах( правда не помню в каких), может ты ею пользуешся.