my504 2 7 октября, 2019 Опубликовано 7 октября, 2019 · Жалоба Пикколо, милостивый государь, это обычный МК. Обозначенные мной латентности, например, справедливы для Блекфина в режиме выключенной вложенности прерываний. При включенной чуть больше, но незначительно. Регистров общего назначения там всего 8. В Пикколо нынче освежу память, но 100%, что примерно такой же порядок. В dsPIC33 тоже самое. Радикальное отличие в Шарке. Но там и прерывания устроены по другому. Там даже название другое у этого инструмента. Иногда высовывайте голову из своего болота... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 7 октября, 2019 Опубликовано 7 октября, 2019 · Жалоба 52 минуты назад, my504 сказал: Обозначенные мной латентности, например, справедливы для Блекфина в режиме выключенной вложенности прерываний. При включенной чуть больше, но незначительно. Регистров общего назначения там всего 8. Да ладно? Вы опять это где-то слышали толком ничего не зная? Сильно сомневаюсь что в блэкфине всего 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 сохранение идёт дольше чем вы тут написали. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
my504 2 7 октября, 2019 Опубликовано 7 октября, 2019 · Жалоба 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 По поводу Пикколо. Читаем референсный мануал на С2803х http://www.ti.com/lit/ug/sprui10/sprui10.pdf в части 10.5.2.1 ADC Early Interrupt to CLA Response И удивляемся... Контекст ядра не требует сохранения - это сделано автоматически. По поводу латентности легко найти в этих и аналогичных документах. Количество РОНов с DSP ядром никак не связано. В Шарке (уж куда круче?) РОНов 16 на фикспойнт и 16 на флоат. И совершенно не требуется их пихать в стек в обработчике. В стек пихают регистр состояний ядра и РОНы используемые в обработчике. Для переброса АЦП в ОЗУ требуется не более 1...2 РОНов. Аминь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Дионистор 0 23 апреля, 2020 Опубликовано 23 апреля, 2020 · Жалоба привет всем,подскажите,есть схемка на процессоре блэкфин adsp bf-537 он там работает с внешней ппзу,обязательно ли должна быть прошивка в самом процессоре,или вообще не должна быть если есть внешняя память,заранее спасибо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 52 23 апреля, 2020 Опубликовано 23 апреля, 2020 · Жалоба у блэкфинов нету флэша на борту(в основном), то есть он всегда программу загружает откуда-то снаружи. обычно из последовательного пзу. см Table 8. Booting Modes из даташита. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 23 апреля, 2020 Опубликовано 23 апреля, 2020 · Жалоба Вангую вопрос правильно должен был звучать: "Куда он может загружать эту прошивку - только во внутреннее ОЗУ или может и во внешнее?" В блэкфинах не знаю, но в TI-шных DSP можно интерфейс внешней памяти сконфигурить из таблицы (или скрипта) в заголовке прошивки (читаемом до её загрузки) и грузить прошивку сразу во внешнюю ОЗУ. Так есть и в C55xx и в OMAP-L1xx. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 52 23 апреля, 2020 Опубликовано 23 апреля, 2020 · Жалоба 2 hours ago, jcxz said: В блэкфинах не знаю, но в TI-шных DSP можно интерфейс внешней памяти сконфигурить из таблицы (или скрипта) в заголовке прошивки (читаемом до её загрузки) и грузить прошивку сразу во внешнюю ОЗУ. у блэкфинов так же, ну и есть возможность прямо сразу начать исполняться из асинхронной памяти (внешнего параллельного флэша) без загрузки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Грендайзер 0 18 августа, 2020 Опубликовано 18 августа, 2020 (изменено) · Жалоба Добрый день коллеги. Имею опыт прогаммирования контроллеров (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, но там везде уровень явно выше моего. Изменено 18 августа, 2020 пользователем Грендайзер Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 18 августа, 2020 Опубликовано 18 августа, 2020 · Жалоба 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 Открыли. Посмотрели. 32 или 48 регистров (смотря как считать). О чём я и говорил. ЗЫ: Как обычно - "чукча не читатель, чукча - пейсатель". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 42 18 августа, 2020 Опубликовано 18 августа, 2020 · Жалоба 4 hours ago, Грендайзер said: 1) Философия: в мануалах по stm (и др.) чётко написано, что при включении питания есть некоторый тактовый сигнал, на котором работает ядро ну и т.д. В тексасовских доках ничего так и не нашёл (возможно плохо искал, но просто даже изнаю кода смотреть, документации просто море, и что читать не понятно). Единственное, что понял - сначала стартует ядро ARM (какимто образом) и дальше выводит DSP ядро из ресета(опять таки как - непонятно). Что там происходит и где прочесть то про это? Вот же User Guide - https://www.ti.com/lit/pdf/spruh77 В нем вроде все подробно раписано, хотя сам не вникал ))) Но судя по объему - ~1800 страниц, должно быть подробно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Грендайзер 0 19 августа, 2020 Опубликовано 19 августа, 2020 (изменено) · Жалоба 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, так и того нет 12 hours ago, dimka76 said: Вот же User Guide Так там мануалов до одного места, и все как один по 1000 с лишним страниц. Какой из них читать сразу и не поймёшь... Изменено 19 августа, 2020 пользователем Грендайзер Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 19 августа, 2020 Опубликовано 19 августа, 2020 · Жалоба 6 минут назад, Грендайзер сказал: А что нибудь дишманское с алика (типа такого) подойдёт? Без понятия. Может и подойдёт, но работать будет медленно. Так как XDS100 - это самый простейший эмулятор. Я пользовался "SAU510-USB ISO PLUS" с http://sauris.de 6 минут назад, Грендайзер сказал: А что это значит и зачем они нужны? Нужно для того, чтобы ваш эмулятор мог работать с этим МК. 6 минут назад, Грендайзер сказал: А CCS создаёт только один. Правда там и впрямь дериктивами #ifdef/#ifndef выбирается тип ядра. А про это гдет то... по человечески есть почитать? Без понятия что там создаёт CCS. Я создавал их сам. А почитать - видимо в мануале про компоновщик. 6 минут назад, Грендайзер сказал: А чего там искать? Если я выбираю проект "hello world" то он мне туда только #include <stdio.h> подключает, а если empty, так и того нет Не пользоваться всякими галочко-натыкивателями типа Куба и прочего. А уметь искать и делать самому. Например - заглянуть в папку INCLUDE установленного CCS. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Грендайзер 0 19 августа, 2020 Опубликовано 19 августа, 2020 · Жалоба 19 minutes ago, jcxz said: Я пользовался "SAU510-USB ISO PLUS" с http://sauris.de Не, это я не потяну... 19 minutes ago, jcxz said: Не пользоваться всякими галочко-натыкивателями типа Куба и прочего. Ой всё Я отношусь к поколению, будущее и жизнь которого без галочек и кнопочек - не мыслима!!! Нашёл таки в мануле следующие строки про загрузку: 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, а тот уже ресетит первое и... ну что то там дальше происходит? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 19 августа, 2020 Опубликовано 19 августа, 2020 · Жалоба 13 минут назад, Грендайзер сказал: Правильно ли я понимаю, что всё же первым стартует ядро DSP, которое чё то там шаманит с ARM, а тот уже ресетит первое и... ну что то там дальше происходит? Это предложение про работу ROM-boot. Оно вам надо как оно там в ROM работает? Для Вас важно (имхо) - кто будет работать при старте user-кода. А это будет ARM в L138. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Грендайзер 0 19 августа, 2020 Опубликовано 19 августа, 2020 (изменено) · Жалоба 25 minutes ago, jcxz said: Это предложение про работу... Вот если можно поподробней. Я если честно ничего не понял. На плате имеется кардридер, в который вставляется флешкарта (на ней я так понял установлен некоторый дистрибулив линукса, который будит крутиться на ARM). Так же там есть набор переключателей, который, который определяет откуда будит загружаться ARM (переключатели подключены к пинам BOOT). Но... Вообщем сразу после ресета ведь DSP уже живёт... и я ведь могу его заставить светодиком поморгать а не пытаться там что то с ARM ядром делать? P.S. Касательно фирмы ядер ф. ARM я имел дело лишь с серией cortex-m. И всякие линуксы для ядер ARM9 или там cortex-a для меня вообще тёмный лес. Так что хотя бы с чего то начать то... Изменено 19 августа, 2020 пользователем Грендайзер Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться