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

Пикколо, милостивый государь, это обычный МК. 

Обозначенные мной латентности, например, справедливы для Блекфина в режиме выключенной вложенности прерываний. При включенной чуть больше, но незначительно. Регистров общего назначения там всего 8.

В Пикколо нынче освежу память, но 100%, что примерно такой же порядок. 

В dsPIC33 тоже самое. 

Радикальное отличие в Шарке. Но там и прерывания устроены по другому. Там даже название другое у этого инструмента. 

Иногда высовывайте голову из своего болота... 

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


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

52 минуты назад, my504 сказал:

Обозначенные мной латентности, например, справедливы для Блекфина в режиме выключенной вложенности прерываний. При включенной чуть больше, но незначительно. Регистров общего назначения там всего 8.

Да ладно? Вы опять это где-то слышали толком ничего не зная?  :biggrin:

Сильно сомневаюсь что в блэкфине всего 8 регистров. С таким количеством в сигнальной обработке делать нечего. А это всё-таки DSP.

Для того чтобы хоть немного поднять Ваш уровень осведомлённости с уровня плинтуса, приведу пролог ISR для ядра C55x Тексаса (из рабочего проекта):

Спойлер

_ISRcodec:
          BSET      XF
          MOV       #CTL_MODE_CONT, port(#idleCTL)
          PSH       mmap(ST3_55)
          PSH       mmap(BRC1)
          PSH       mmap(BRS1)
          PSH       mmap(RSA1L)
          PSH       mmap(RSA1H)
          PSH       mmap(REA1L)
          PSH       mmap(REA1H)
          PSH       mmap(BRC0)
          PSH       mmap(RSA0L)
          PSH       mmap(RSA0H)
          PSH       mmap(REA0L)
          PSH       mmap(REA0H)
          PSH       mmap(CSR)
          PSH       mmap(RPTC)
          PSHBOTH   XDP
          PSH       mmap(BSA01)
          PSH       mmap(BSAC)
          PSH       mmap(BK03)
          PSH       mmap(BKC)
          AMOV      #DATAcodec, XDP
          PSHBOTH   AC0
        ||BSET      AR1LC
          PSHBOTH   AC1
        ||BCLR      SATA
          AND       #~st1rx0clr & 65535, mmap(ST1_55)
          PSHBOTH   AC2
          PSHBOTH   AC3
          PSHBOTH   XAR0
        ||MOV       XDP, XAR0
          PSHBOTH   XAR1
        ||MOV       XDP, XAR1
          PSHBOTH   XAR2
        ||MOV       XDP, XAR2
          AND       #~st2rx0clr & 65535, mmap(ST2_55)
          PSHBOTH   XAR3
        ||MOV       XDP, XAR3
          PSHBOTH   XAR4
        ||MOV       XDP, XAR4
          PSHBOTH   XAR5
        ||MOV       XDP, XAR5
          PSHBOTH   XAR6
        ||MOV       XDP, XAR6
          PSHBOTH   XCDP
        ||MOV       XDP, XCDP
          PSH       T0, T1
        ||BSET      SXMD
          PSH       T2, T3
        ||BSET      ARMS
          PSH       mmap(AC0G)
          PSH       mmap(AC1G)
          PSH       mmap(AC2G)
          PSH       mmap(AC3G)

 

Посчитайте количество регистров. И сколько времени занимает их сохранение. И это ещё сохранение здесь идёт в 2 стека параллельно!

Да и при входе в ISR, нужно не только регистры сохранить, нужно ещё кучу всяких битов режима сохранить/установить_в_нужное_сост./восстановить (в C55x так), что видно из этого пролога.

Блэкфин как я понимаю - по уровню соответствует C55x, так что регистров там должно быть не меньше. Так что если вы не писали на нём ничего - не нужно здесь пустых домыслов писать.

В ядре C64x например регистров ещё больше. Хотя конечно не все нужно сохранять в обычном ISR написанном на си, но всё-же - больше чем в ARM например. А даже в ARM сохранение идёт дольше чем вы тут написали.

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


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

3 hours ago, jcxz said:

Сильно сомневаюсь что в блэкфине всего 8 регистров.

А не надо сомневаться. Надо просто открыть даташит в самом начале. 4 страница. Ядро.

https://www.analog.com/media/en/technical-documentation/data-sheets/adsp-bf700_bf701_bf702_bf703_bf704_bf705_bf706_bf707.pdf

:biggrin:

По поводу Пикколо. Читаем референсный мануал на С2803х http://www.ti.com/lit/ug/sprui10/sprui10.pdf в части 10.5.2.1 ADC Early Interrupt to CLA Response

И удивляемся... :blum: Контекст ядра не требует сохранения - это сделано автоматически.

По поводу латентности легко найти в этих и аналогичных документах.

Количество РОНов с DSP ядром никак не связано. В Шарке (уж куда круче?) РОНов 16 на фикспойнт и 16 на флоат. И совершенно не требуется их пихать в стек в обработчике. В стек пихают регистр состояний ядра и РОНы используемые в обработчике. Для переброса АЦП в ОЗУ требуется не более 1...2 РОНов. :bye:

Аминь.

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


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

привет всем,подскажите,есть схемка на процессоре блэкфин  adsp bf-537 он там работает с внешней ппзу,обязательно ли должна быть прошивка в самом процессоре,или вообще не должна быть если есть внешняя память,заранее спасибо

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


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

у блэкфинов нету флэша на борту(в основном), то есть он всегда программу загружает откуда-то снаружи. обычно из последовательного пзу.

см Table 8. Booting Modes из даташита.

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


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

Вангую вопрос правильно должен был звучать: "Куда он может загружать эту прошивку - только во внутреннее ОЗУ или может и во внешнее?"   :wink:

В блэкфинах не знаю, но в TI-шных DSP можно интерфейс внешней памяти сконфигурить из таблицы (или скрипта) в заголовке прошивки (читаемом до её загрузки) и грузить прошивку сразу во внешнюю ОЗУ.

Так есть и в C55xx и в OMAP-L1xx.

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


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

2 hours ago, jcxz said:

В блэкфинах не знаю, но в TI-шных DSP можно интерфейс внешней памяти сконфигурить из таблицы (или скрипта) в заголовке прошивки (читаемом до её загрузки) и грузить прошивку сразу во внешнюю ОЗУ.

у блэкфинов так же, ну и есть возможность прямо сразу начать исполняться из асинхронной памяти (внешнего параллельного флэша) без загрузки.

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


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

Добрый день коллеги. Имею опыт прогаммирования контроллеров (stm, atmel(RIP)), и всегда хотелось поковыряться с dsp. И вот не давно разжился платой omap-l138 experimenter kit. И всё... Чего с ней делать, вообще не пойму. Ситуация усугубляется тем, что штуковина мягко говоря уже не новая, и вся литература по ней (и самое главное по софту) сильно устарела. Установил CCS9.3. И тут опять - ничего не аонятно от слова ВООБЩЕ! Вообщем промялся несколько дней и решил таки обратиться с следующими вопросами (може и глуповатыми, но с такими штуками я вообще незнаком):

1) Философия: в мануалах по stm (и др.) чётко написано, что при включении питания есть некоторый тактовый сигнал, на котором работает ядро ну и т.д. В тексасовских доках ничего так и не нашёл (возможно плохо искал, но просто даже изнаю кода смотреть, документации просто море, и что читать не понятно). Единственное, что понял - сначала стартует ядро ARM (какимто образом) и дальше выводит DSP ядро из ресета(опять таки как - непонятно). Что там происходит и где прочесть то про это?

2) Где то прочитал, что в плате реализован отладчик XDS100v1, но в установленном CCS есть лишь XDS100v2. Они как то совместимы? И ещё, я так понял, что с помощью XDS100v1 установленного на плате я смогу запрограммировать лишь DSP а ARM нет. Правильно?

3) Создание проекта для OMAP - ну тут вообще трэш! Чего этому CCS надо я вообще никак не воткну. Пытался подгрузить проекты, те что шли на одной из карт памяти из комплекта платы... Но эта сволочь (ССS) ругается на то что не видит функции и пр. в подключённых файлах, а когда полез в settings начал что то там про компилятор бухтеть. Одним словом как создать проект (ну хотя б светодиодиком то поморгать), я не понял. Но догадываюсь, что суть в следующем:

а) Создаём проект, указываем целевой крисалл и загрузчик.

б) В проект нужно как то подключить .gel файл(ы) - они собственно настраивают pll и ещё что то.

в) В проект нужно как то подключить .cmd файл - это типа скрипта линковщика.

4) При созданиии проекта не никаких инклюдов. Т.е. файл с адресами регистро нужно самому писать?

Если кто то поможет пролить на это дело свет буду очень признателен!

P.S.

На форуме вроде как полно всего про OMAP, но там везде уровень явно выше моего.

Изменено пользователем Грендайзер

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


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

4 часа назад, Грендайзер сказал:

1) Философия: в мануалах по stm (и др.) чётко написано, что при включении питания есть некоторый тактовый сигнал, на котором работает ядро ну и т.д. В тексасовских доках ничего так и не нашёл (возможно плохо искал, но просто даже изнаю кода смотреть, документации просто море, и что читать не понятно). Единственное, что понял - сначала стартует ядро ARM (какимто образом) и дальше выводит DSP ядро из ресета(опять таки как - непонятно). Что там происходит и где прочесть то про это?

Всё там есть. С L138 не работал, но там должно быть всё аналогично L137. Для L137 описание сброса - sprs563.pdf. Ищите аналогичный для L138. Только в L137 первым стартует DSP, а в L138 - ARM.

Далее - стартовавшее ядро должно запустить второе ядро, возможно как-то проинициализировав необходимую ему память.

Цитата

2) Где то прочитал, что в плате реализован отладчик XDS100v1, но в установленном CCS есть лишь XDS100v2. Они как то совместимы? И ещё, я так понял, что с помощью XDS100v1 установленного на плате я смогу запрограммировать лишь DSP а ARM нет. Правильно?

Что значит "запрограммировать"?

Эмулятором вы загружаете прошивку в ОЗУ. Прошивка может состоять из двух частей: для ARM + для DSP. Грузятся одновременно.

Отлаживать тоже можно оба ядра одновременно. Хотя XDS100 я не пользовался - лучше использовать что-то по-серьёзней.

Цитата

б) В проект нужно как то подключить .gel файл(ы) - они собственно настраивают pll и ещё что то.

.gel-файлы ничего не настраивают. Это конфигурационные файлы эмулятора.

Цитата

в) В проект нужно как то подключить .cmd файл - это типа скрипта линковщика.

Два. Для каждого ядра - свой.

Цитата

4) При созданиии проекта не никаких инклюдов. Т.е. файл с адресами регистро нужно самому писать?

Есть они там. Ищите лучше. Хотя можно и свои написать.

07.10.2019 в 14:05, my504 сказал:

А не надо сомневаться. Надо просто открыть даташит в самом начале. 4 страница. Ядро.

https://www.analog.com/media/en/technical-documentation/data-sheets/adsp-bf700_bf701_bf702_bf703_bf704_bf705_bf706_bf707.pdf

:biggrin:

Открыли. Посмотрели. 32 или 48 регистров (смотря как считать). О чём я и говорил.

ЗЫ: Как обычно - "чукча не читатель, чукча - пейсатель".  :unknw:

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


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

4 hours ago, Грендайзер said:

1) Философия: в мануалах по stm (и др.) чётко написано, что при включении питания есть некоторый тактовый сигнал, на котором работает ядро ну и т.д. В тексасовских доках ничего так и не нашёл (возможно плохо искал, но просто даже изнаю кода смотреть, документации просто море, и что читать не понятно). Единственное, что понял - сначала стартует ядро ARM (какимто образом) и дальше выводит DSP ядро из ресета(опять таки как - непонятно). Что там происходит и где прочесть то про это?

Вот же User Guide - https://www.ti.com/lit/pdf/spruh77

В нем вроде все подробно раписано, хотя сам не вникал ))) Но судя по объему - ~1800 страниц, должно быть подробно.

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


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

12 hours ago, jcxz said:

Хотя XDS100 я не пользовался - лучше использовать что-то по-серьёзней.

А что нибудь дишманское с алика (типа такого) подойдёт?

12 hours ago, jcxz said:

.gel-файлы ничего не настраивают. Это конфигурационные файлы эмулятора.

А что это значит и зачем они нужны? И главное, в папке где установлен CCS есть папка expkitomapl138 а в ней 3 файла: EXPKITOMAPL138_ARM.gel, EXPKITOMAPL138_DSP.gel, OMAPL1x_debug.gel. Ну первый 2 понятно, а последний? И как их CCS то подсунуть?

12 hours ago, jcxz said:

Два. Для каждого ядра - свой.

А CCS создаёт только один. Правда там и впрямь дериктивами #ifdef/#ifndef выбирается тип ядра. А про это гдет то... по человечески есть почитать?

12 hours ago, jcxz said:

Есть они там. Ищите лучше.

А чего там искать? Если я выбираю проект "hello world" то он мне туда только #include <stdio.h> подключает, а если empty, так и того нет :unknw:

12 hours ago, dimka76 said:

Вот же User Guide

Так там мануалов до одного места, и все как один по 1000 с лишним страниц. Какой из них читать сразу и не поймёшь...

Изменено пользователем Грендайзер

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


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

6 минут назад, Грендайзер сказал:

А что нибудь дишманское с алика (типа такого) подойдёт?

Без понятия. Может и подойдёт, но работать будет медленно. Так как XDS100 - это самый простейший эмулятор. Я пользовался "SAU510-USB ISO PLUS" с http://sauris.de

6 минут назад, Грендайзер сказал:

А что это значит и зачем они нужны?

Нужно для того, чтобы ваш эмулятор мог работать с этим МК.

6 минут назад, Грендайзер сказал:

А CCS создаёт только один. Правда там и впрямь дериктивами #ifdef/#ifndef выбирается тип ядра. А про это гдет то... по человечески есть почитать?

Без понятия что там создаёт CCS. Я создавал их сам. А почитать - видимо в мануале про компоновщик.

6 минут назад, Грендайзер сказал:

А чего там искать? Если я выбираю проект "hello world" то он мне туда только #include <stdio.h> подключает, а если empty, так и того нет :unknw:

Не пользоваться всякими галочко-натыкивателями типа Куба и прочего. А уметь искать и делать самому. Например - заглянуть в папку INCLUDE установленного CCS.

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


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

19 minutes ago, jcxz said:

Я пользовался "SAU510-USB ISO PLUS" с http://sauris.de

Не, это я не потяну...

19 minutes ago, jcxz said:

Не пользоваться всякими галочко-натыкивателями типа Куба и прочего.

Ой всё:biggrin: Я отношусь к поколению, будущее и жизнь которого без галочек и кнопочек - не мыслима!!!:bye:

Нашёл таки в мануле следующие строки про загрузку:

Following deassertion of device reset, the DSP intializes the ARM296 so that it can execute the ARM
ROM bootloader. Upon successful wake up, the ARM places the DSP in a reset and clock gated
(SwRstDisable) state that is controlled by the LPSC and the SYSCFG modules.

Правильно ли я понимаю, что всё же первым стартует ядро DSP, которое чё то там шаманит с ARM, а тот уже ресетит первое и... ну что то там дальше происходит?

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


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

13 минут назад, Грендайзер сказал:

Правильно ли я понимаю, что всё же первым стартует ядро DSP, которое чё то там шаманит с ARM, а тот уже ресетит первое и... ну что то там дальше происходит?

Это предложение про работу ROM-boot. Оно вам надо как оно там в ROM работает? Для Вас важно (имхо) - кто будет работать при старте user-кода. А это будет ARM в L138.

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


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

25 minutes ago, jcxz said:

Это предложение про работу...

Вот если можно поподробней. Я если честно ничего не понял. На плате имеется кардридер, в который вставляется флешкарта (на ней я так понял установлен некоторый дистрибулив линукса, который будит крутиться на ARM). Так же там есть набор переключателей, который, который определяет откуда будит загружаться ARM (переключатели подключены к пинам BOOT). Но... Вообщем сразу после ресета ведь DSP уже живёт... и я ведь могу его заставить светодиком поморгать а не пытаться там что то с ARM ядром делать?

P.S. Касательно фирмы ядер ф. ARM я имел дело лишь с серией cortex-m. И всякие линуксы для ядер ARM9 или там cortex-a для меня вообще тёмный лес. Так что хотя бы с чего то начать то...

Изменено пользователем Грендайзер

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


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

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

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

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

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

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

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

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

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

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