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

vik0

Свой
  • Постов

    381
  • Зарегистрирован

Сообщения, опубликованные vik0


  1. Это USB 2.0 JTAG, которым можно свои платы отлаживать вместо того

    ADZS-USB-ICE, который был за $1200, но для всех процессоров AD,

    а этот только для BF

    Добавлю что этот (дешевый) не поддерживает BTC и statistical profiling

    Понятно также, что на корпусе сэкономили. Корпус как раз и стоит $1000 ))

    :biggrin:

    Не понятно только где POD? Наверное, здесь же на плате

    Ну да, вверху видны запаянные штыри.

  2. А нет ли в природе более строгого документа, где всё это описано?

    Так там же эти регистры и описываются: C/C++ run-time model and environmnt. Начиная со стр. 1-343 в pdf версии мануала.

    Если кратко, то:

    • dedicated: p6, p7, l0-l3
    • call preserved: p3-p5, r4-r7
    • scratch: p0-p2, r0-r3, lb0-lb1, lc0-lc1, lt0-lt1, astat, a0, a1, i0-i3, b0-b3, m0-m3

    В функцию первые три аргумента передаются в r0-r2, последующие на стеке, начиная с fp+0x14.

    Возвращаемые значения: r0, если <=32 бит, r0:r1 если >32 и <=64 бит. Если больше 64-х бит - на стеке и указатель на них в p0.

     

    PS. Решили таки изобрести велосипед, и написать свой fir на ассемблере? ;)

  3. Как у вас буфера в sdram-е размещены?

    Очень похоже на то, что у вас все буфера свалены в один (внутренний) банк sdram.

    Разнесите буфера так, чтобы к одному банку шли обращения только от одного источника/приемника.

  4. Ребята, почитал вас и удивился...

    Интринсики, Си... всё это хорошо... Но ведь тут вы лезете в DSP - область, в которой С всегда испльзуется только что бы быстро получить какой-то результат. Конечный результат всегда достигается в ассемблере. Это вам не МК, не приложение с GUI, и не ползовательская программа под Windows или любой другой операционкой на PC или MAC. Поэтому вопросы: "как заставить Си всё делать правильно",- звучат странно. В любом случае, это выйдет во много раз дольше, чем, оптимизация кода. Поэтому, делайте прямые ассемблерные вствки в критичных местах, и будет вам счастье.

    Простите, вы вообще с blackfin-ами работали? Это ведь не "чистый" dsp. На нем, помимо собственно dsp алгоритмов может крутится еще много чего (тоже самое GUI, к примеру).

    Из личного опыта - на 537-м (тот же самый, что и у топикстартера) крутятся достаточно ресурсоемкие вычислительные алгоритмы плюс RTOS, TCP/IP стек (100 MBit ethernet), CANOpen slave и "недо"-GUI (на PAL видеовыход :07: + PS/2 клава). Все написано на С++. В пике процессор занят на 75-80%.

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

    Присоединяюсь к просьбе.

    Инициализацию на C для bf - это, как говорится, нужно увидеть :) . Да и пересылку (??? SPORT->DMA->SDRAM???) интересно глянуть :biggrin: .

    ??? Может я не правильно понял, но чем вам не нравится инициализация фина на С (разве что вы имеете ввиду initcode...Хотя даже там можно использовать С.. В 54х серии к примеру ;) )? И какие проблемы с оргнизацией пересылки SPORT->DMA->SDRAM на С? Поясните свою мысль, пожалуйста.

    Логичнее писать на C main()+хидеры :) , а вызываемые процедуры на asm.

    Очень спорное утверждение.

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

    Угу. Мечтаю увидеть реализацию на asm-е TCP/IP стека под 537-й.

    В техасовских DSP (2000, 5000, 6000 ) фильтры реализованы - все на ассемблере. А из C - вызываются стандартные функции. У вас должно быть то же самое.

    Есть, они, есть. Индусские, но работоспособные. И достаточно оптимальные.

    Ну да. Тут естественно имелось ввиду то, что asm код быстрее и меньше по объёму, чем сишный.

    Нет, это понятно. Но в ПЯТЬ раз? :wacko:

  6. Да ничего не мешает.

    Просто если в bla-bla-bla необходимо разместить много переменных, указывать для каждой из них секцию в явном виде... Некрасиво. IMHO.

  7. С помощью supplemental interrupt

    Ядро B:

    ...
    *pSICB_IWR1 |= 0x4000; // разрешаем пробуждение по supp-int0
    ssync();
    idle();  // спим... пока не получим supp-int0
    *pSICB_SYSCR = 0x0800; // ack прерыванию
    ssync();
    // и работаем дальше
    ...

    Ядро A:

    ...
    *pSICB_SYSCR |= 0x0080; // будим второе ядро
    ssync();
    ...

  8. Я не хочу менять default_section. Я хотел бы следующее

    ...

    Это возможно в принципе?

    Понятно. Хелп на default_section вы решили не читать :)

    Этот код:

    #pragma default_section(DATA, "first")
    variable1;
    variable2;
    ...
    #pragma default_section(DATA, "second")
    second1;
    second2;
    ...
    #pragma default_section(DATA)

    делает именно то, что вы хотели

  9. Может существует другой способ, при котором секция или что-то еще указывается один раз в одном месте?

    Речь ведь про VDSP, да?

    Посмотрите в help-е по поводу #pragma default_section(...) (ну или как-то так - мануала на VDSP под рукой нет, по памяти точно не помню)

  10. Картинка в SDRAM полностью. Берутся кадры из Flash, затем все кешируются в SDRAM. Потом перекидываются в ТВ (ну аля несжатый ролик)

    А нельзя сохранять ваши картинки во flash уже в формате yuv?

    ps. кстати, у 54х финов преобразование rgb<->yuv аппаратное :rolleyes:

  11. Задача: hазработка видеорегистратора high resolution с нуля.

    разршение сенсора 4000x4000 pixels, от 150 до 250 кадров в секунду.

    :wacko: 32Gbit/s.... (если принять 8 бит на пиксель)

    Интересует все - от вопросов

    - где купить (достать) в России такие датчики?

    (в магазинах Москвы и Питера их нет).

    А вы вообще в природе подобные датчики видели? Максимум что я встречал - 1280х1024 @ 500fps (lupa1300-2 от Cypress).

    Kinor без объектива и регистратора (память) стоит 11000 баксов.

    ...

    Поэтому придется делать самим.

    Вы серьезно думаете что самостоятельная разработка вам обойдется дешевле?

  12. Нету у меня такого. Там только file properties в котором кратко сведены те файлы что используются

    post-39233-1255003288_thumb.png

    нету там ничего, касающегося оптимизции. по-мойму это в pcf-е прописано но он полу-бинарный

    Release/bla-bla.doj :bla-bla.cpp .......

    @echo ".\bla-bla.cpp"

    $(VDSP)/ccblkfn.exe -c .\bla-bla.cpp -c++ -file-attr .... -O -Ov100 -ipa -g -structs-do-not-overlap no-multiline -double-size-32 ... -o .\Release\bla-bla.doj -MM

  13. 1. Есть ли способы это пролечить?

    Затыкается на всех файлах проекта? У меня было что компилятор (именно 6-й update) замирал при использовании adi_acquire_lock/adi_release_lock. Вылечилось с помощью #pragma optimize_off

    2. Можно ли файлы проджекта билдить отдельно с разными настройками оптимизации? если да, то как?

    ПКМ на файле в project window -> File options... -> Build with file specific settings

    Ну и меняете то, что хотите

    в каком файле проекта смотрятся ключи компилятора/ассемблера и линкера которые были установлены в середе VDSP ? (расширение файла ?)

    <имя_проекта>.mak в корневом каталоге проекта

  14. в планах - полностью перейти на платфому "Eclipse"

    Откуда информация?

    Например чего стоит "gmake-378: *** No rule to make target", который меня сильно доставал, пока не догадался делать затычки из пустых хедеров вместо изменённых по имени.

    Проще удалить зависимость из файла <имя_проекта>.mak

  15. В начале лета заказывали в Радаре.

    Качество - отличное.

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

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