

ELVEES R&D Center
Участник-
Content Count
50 -
Joined
-
Last visited
Content Type
Profiles
Forums
Calendar
Everything posted by ELVEES R&D Center
-
Нужна помощь по MIPS точнее 1892ВМ10Я
ELVEES R&D Center replied to Digi's topic in MIPS
По итогам совместной проработки обнаружили, что проблема была в пересекающихся адресах секций .bss и .sbss: Вот начало секции .bss: Disassembly of section .bss: 80004028 <testcnt>: 80004028: 00000000 nop А вот – секция sbss: Disassembly of section .sbss: 80004038 <_edata>: 80004038: 00000000 nop Переменные, находящиеся в разных секциях, имели одинаковые адреса. Из-за этого и портились те переменные, которые не ожидались. Само же пересечение секций было вызвано ошибкой в скрипте линковки: .data : { __data_start = . ; /* .eh_frame = .; */ _edata = .; } > sdram_c .bss ADDR (.data) + SIZEOF (.data) (NOLOAD) : { __bss_start = .; . = ALIGN (64 / 8); } > sdram_c Секция же sbss ставится линковщиком сразу после .data, без указания в скрипте линковки. Для решения проблемы оказалось достаточно изменить объявление секции bss: .data : { __data_start = . ; /* .eh_frame = .; */ _edata = .; } > sdram_c .bss (NOLOAD) : { __bss_start = .; . = ALIGN (64 / 8); } > sdram_c -
Нужна помощь по MIPS точнее 1892ВМ10Я
ELVEES R&D Center replied to Digi's topic in MIPS
Ну, как минимум навскидку ничего критичного в коде нет. Так что надо смотреть настройки размещения в памяти. -
Нужна помощь по MIPS точнее 1892ВМ10Я
ELVEES R&D Center replied to Digi's topic in MIPS
Судя по приведенным кускам дизассемблера в конце, тут вопрос не к процессору, а к компоновке программы. Потому что обе записи происходят по адресу (0x8002_0000-10440). По какой-то причине при сборке обоим символам назначаются одинаковые адреса. Процессор лишь исправно выполняет запись по неправильно указанному адресу, что в симуляторе, что на живом чипе :) Я бы сказал, что MAP-файл тут малоинформативен. Можете дать ELF-файл или (лучше) проект целиком? Можно на support@elvees.com. -
Нужна помощь по MIPS точнее 1892ВМ10Я
ELVEES R&D Center replied to Digi's topic in MIPS
1) Значение указателя стека в пределах, но как-то очень уж маленькое. Верхушка стека, выходит, 0x9802_0000, а указатель сдвинут на 0x18 байт. Маловато как-то. Вход в каждую функцию сдвигает указатель стека еще немного вниз относительно верхушки. Если исключение происходит, когда мы находимся в main(), то выглядит нормой, а если хоть немного "глубже" в функциях - то уже нет. Пока выглядит лишним аргументом в пользу некорректного восстановления контекста. Можно поставить точки останова перед сохранением и после восстановления контекста, убедиться, что значение sp не меняется. Ну и надо понять, какое штатное значение указателя стека при штатном входе в функцию, из которой происходит исключение. 2) По логу сборки вроде особо нечего пока сказать. 3) По коду после ERET - штатно он действительно не исполняется. Введён из каких-то соображений, которые сейчас нет смысла уточнять, а навскидку вспомнить не получается. Это скорее всего никак не связано с обсуждаемой проблемой. -
Нужна помощь по MIPS точнее 1892ВМ10Я
ELVEES R&D Center replied to Digi's topic in MIPS
Тут сложный момент. С одной стороны, правильнее сохранять все регистры. С другой стороны, кэш надо сбрасывать сразу при входе в обработчик. Здесь нам на помощь приходит MIPS ABI (application binary interface) - соглашение, по которому регистры k0, k1 используются именно что в обработчиках, а в основной программе не используются. Поэтому мы вроде бы безбоязненно можем "портить" эти регистры. По факту GCC по умолчанию это требование не выполняет и вполне может использовать эти регистры. Чтобы он этого не делал, есть ключ -ffixed. В наших проектах для MCStudio 4 как раз по умолчанию выставлены ключи GCC " -ffixed-k0 -ffixed-k1". Возможно, их по какой-то причине нет в Вашем проекте? Покажете лог сборки на всякий случай? Еще как вариант - может, просто где-то что-то не так с сохранением и восстановлением стека? В какой-то момент он сдвигается за границы допустимого и все портится? Или, совсем уж простое - размер стека физически "вылезает" за границы доступной физически памяти? Чему равно значение sp в момент исключения? Чему равно значение символа _stack и размер стека в настройках проекта? В функции действительно ничего криминального нет. -
Нужна помощь по MIPS точнее 1892ВМ10Я
ELVEES R&D Center replied to Digi's topic in MIPS
1) Включено ли кэширование в Вашем проекте? Если включено - то сбрасывается ли кэш в обработчике прерываний? 2) Вероятно, стоит сразу указывать, какое значение у регистра CP0.EPC при возникновении исключения? Что за код находится по этому адресу? -
Нужна помощь по MIPS точнее 1892ВМ10Я
ELVEES R&D Center replied to Digi's topic in MIPS
Добрый день! Спасибо коллегам, которые помогли решить проблему до нашего участия. Выглядит так, что проблема была действительно связана с выравниванием стека. Мы обновим процедуру сохранения контекста в наших примерах, спасибо за указание на проблему. Предполагаемый обновленный обработчик прилагаем. Там также добавлен сброс кэша, сохранение части регистров CP0 и некоторые другие вещи. Если планируется работать с float/double - нужно также сохранять в обработчике регистры FPU. Пока мы этого не добавили в обработчик, чтобы не перегружать его. Возможно, добавим. Если кому-то интересна причина, почему сейчас такое сохранение контекста в примерах, то даём пояснение: он создавался достаточно давно, когда в наших чипах CPU-ядро не имело сопроцессора FPU. Соответственно, у CPU не было 64-разрядных обращений в память, только 32-разрядные (инструкции LW/SW) - и выравнивания по 32-разрядному слову было достаточно. С появлением FPU появились 64-разрядные обращения (SDC1/LDC1) - появилась необходимость выравнивать стек по границе 64-разрядного слова. Но поскольку примеры в составе IDE демонстрируют узконаправленную работу с конкретным блоком - в примерах этой проблемы не всплывало. Теперь обновим, еще раз спасибо за указание на проблему. hb80000180.s -
Салют-ЭЛ24ПМ2
ELVEES R&D Center replied to sweetpirate's topic in ARM
При запуске U-Boot (начиная с версии v2017.07.0.7) останавливает ядро CPU1 и отключает его домен питания. Предполагается, что U-Вoot загружает приложение используя только одно ядро CPU. Само приложение может включить домен питания и использовать второе ядро. Вы можете доработать U-Вoot так, чтобы он запускал baremetal-приложение на ядре CPU1. Штатно такой возможности нет. Для добавления такой возможности необходимо разработать отдельный драйвер. На данный момент ведётся разработка драйвера Linux для DSP-кластера DELcore-30M. Драйвер позволит запускать задачи на DSP-ядрах и получать результаты в user space. Доступ к регистрам разрешен из ядра Linux (kernel space). Можно реализовать в драйвере мапировние регистров в пользовательское пространство. Такой подход не рекомендуется, т.к. некорректная работа пользовательского приложения может нарушить работоспособность всей системы. -
Салют-ЭЛ24ПМ2
ELVEES R&D Center replied to sweetpirate's topic in ARM
Для этого существует параметр запуска ядра nosmp. Тут возможны два варианта: 1.Можно ограничить использование памяти (SDRAM) с помощью параметра запуска ядра mem=; 2. Можно использовать другой тип памяти (SRAM) для второго ядра. Во втором случае необходимо будет настроить блок NORMPORT микросхемы 1892ВМ14Я в загрузчике U-boot. Для этой цели можно использовать блок Mailbox микросхемы 1892ВМ14Я. Не понятно о каких регистрах идет речь. Описанный Вами режим работы потребует существенной доработки загрузчика U-boot. При разработки baremetal-приложения следует учесть тот факт, что контроллер прерываний (GIC) общий для двух ARM-ядер. -
Отечественный DSP
ELVEES R&D Center replied to another_one's topic in Сигнальные процессоры и их программирование - DSP
Да. В составе демо-версии IDE MCStudio 4 для ОС Linux (CentOS 7). Также toolchain для DSP-ядра ELcore-30M доступен отдельно: ftp://ftp.elvees.com/1892VM14YA/Baremetal/Tools/Linux/eltools_3.6_linux_5519_2017.04.03.tar.gz -
Отечественный DSP
ELVEES R&D Center replied to another_one's topic in Сигнальные процессоры и их программирование - DSP
Добрый день! Рекомендуем ориентироваться на микросхему 1892ВМ15АФ. Информация по ней представлена здесь - http://multicore.ru/index.php?id=1340 Информация по отладочному модулю для нее здесь - http://multicore.ru/index.php?id=1405 Линейка радстойких микросхем в целом представлена здесь - http://multicore.ru/index.php?id=556 В целом по рынку радстойких микросхем у нас очень конкурентоспособные цены. Для уточнения подробностей рекомендуем обратиться в отдел продаж – market@elvees.com. В микросхемах НПЦ «ЭЛВИС» есть и CPU-ядро (в радстойких это MIPS32-совместимое ядро), и высокопроизводительные DSP-ядра. DSP-кластер DELcore-30MH в составе 1892ВМ15АФ не имеет ограничений по доступу к памяти и другим ресурсам микросхемы. Если под «ISA» имеется в виду система команд – то наши ядра описанию соответствуют. Имеющиеся ограничения приведены в документации. Это не так. Существует достаточно много применений, где использован оригинальный код, написанный нашими пользователями самостоятельно. Компилятор Си для DSP-ядер есть. Доступен свободно в составе демо-версий среды разработки на сайте - http://multicore.ru/mc/software/MCStudio3M_Demo_Setup.exe Мы заинтересованы в увеличении количества разработчиков, работающих с нашими микросхемами. Для этого мы максимально документируем наши микросхемы, проводим курсы и семинары, сотрудничаем с университетами и авторами независимых курсов, и стараемся отвечать на все запросы, поступающие в техподдержку. another_one, Вы также можете обратиться на support@elvees.com с более подробным описанием задачи, мы постараемся подсказать, как ее можно решить с применением наших микросхем. -
Салют-ЭЛ24ПМ2
ELVEES R&D Center replied to sweetpirate's topic in ARM
Можно включить в состав ядра файловую систему в виде диска c файловой системой в ОЗУ. Сделать это можно в конфигураторе ядра Linux (make menuconfig). Там же указывается путь до каталога с rootfs. -
Салют-ЭЛ24ПМ2
ELVEES R&D Center replied to sweetpirate's topic in ARM
Нет, утилита mcom_flash_mmc.py не подходит для прошивки NAND-Flash. Инструкция по прошивке NAND-Flash представлена в п.5.3.1. документа "Загрузчик U-Boot для 1892ВМ14Я. Руководство пользователя". Настройку TFTP Вы выполняете правильно. В U-Boot 2017.07.0.14 (из Buildroot v.2.9) возникает ошибка при загрузке через TFTP. Ошибка будет исправлена в следующих выпусках дистрибутива Buildroot. Если Вам требуется загрузка по TFTP, рекомендуем Вам использовать Buildroot v.2.8 и соответствующий загрузчик U-Boot. -
Салют-ЭЛ24ПМ2
ELVEES R&D Center replied to sweetpirate's topic in ARM
mmc0 это микросхема eMMC, установленная на процессорном модуле Салют-ЭЛ24ПМ2. Для этого можно использовать утилиту mcom02_flash_mmc.py из пакета mcom02-flash-tools. Ссылка на github: https://github.com/elvees/mcom02-flash-tools Ссылка на дистрибутив: ftp://ftp.elvees.com/1892VM14YA/linux/Buildroot/v2.9/mcom02-buildroot-v2.9.0-2018-09-21.tar.bz2 . Путь относительно корня архива: Процесс установки данного пакета в Windows описан в п.3 документа «Инструкция по прошивке SPI флеш-памяти модулей на базе 1892ВМ14Я». В ОС Linux пакет Python 2.7 обычно уже установлен. Необходимо выполнить одно из предложенных ниже действий: pip install --upgrade <mcom02_flash_tools> для установки из распакованного архива, где <mcom02_flash_tools> — путь к архиву пакета или директории, содержащей распакованный пакет. pip install --upgrade git+https://github.com/elvees/mcom02-flash-tools.git для установки из репозитория на github. При работе в OC Windows путь установки python/имя пользователя/имя компьютера не должны содержать кириллических символов. После установки пакета необходимо: Прошить на SD-карту образ ftp://ftp.elvees.com/1892VM14YA/linux/Buildroot/v2.9/mcom02-buildroot-sdcard-v2.9.0-2018-09-21.img.gz или аналогичный, если используется дистрибутив Buildroot версии отличной от 2.9. Процесс записи образа на SD-карту в ОС Linux описан в п.6 документа «Дистрибутив ОС GNU/Linux на базе Buildroot для 1892ВМ14Я.Руководство системного программиста». Запись образа SD-карты в ОС Windows можно выполнить с помощью программы Win32DiskImager (https://sourceforge.net/projects/win32diskimager/). Необходимо использовать загрузчик U-boot с версией, соответствующей версии используемого дистрибутива. Выполнить загрузку ОС с SD-карты: Установить джампер XP4 в положение "uSDcard"; Установить переключатели BOOT (SA1) в положение «011» (загрузка из SPI-Flash); Подключить разъем XS13 к ПЭВМ c помощью кабеля MiniUSB-USB; Запустить терминал COM-порта; Подать питание на отладочный модуль; Остановить автозагрузку U-Boot отправкой любого символа в терминал COM-порта; Выполнить команды: env set mmcdev 1 //устанавливаем загрузку и импорт переменных окружения с SD-карты; saveenv //Сохраняем изменения 8. Перезагрузить отладочный модуль. Прошить необходимый образ SD-карты в eMMC (mmc0) c помощью утилиты mcom02_flash_mmc.py. 1. Подключить отладочный модуль к сети; 2. Подать питание на отладочный модуль; 3. Дождаться появления запроса входа в систему в терминале COM-порта; 4.На ПК запустить процесс прошивки eMMC: mcom_flash_mmc.py <bord ip or host name > </dev/ mmcblk0> <path to img> , где <bord ip or host name > - ip-адрес или сетевое имя отладочного модуля; </dev/ mmcblk0> - имя устройства, в которое будет записан образ. В Вашем случае необходимо использовать /dev/ mmcblk0 т.е. eMMC; <path to img> - путь до образа SD-карты, который необходимо прошить в eMMC. 5. Дождаться окончания процесса прошивки (Verifying... ОК). Проверить работоспособность записанного образа: 1. Выполнить перезагрузку отладочного модуля; 2.Остановить автозагрузку U-Boot отправкой любого символа в терминал COM-порта; 3. Выполнить команды: env set mmcdev 0 //устанавливаем загрузку и импорт переменных окружения с eMMC; saveenv //Сохраняем изменения 4. Перезагрузить отладочный модуль; 5.Убедиться в успешном запуске ОС с eMMC. Возникающие вопросы лучше адресовать напрямую на support@elvees.com, чтобы сократить время ответа. -
Процессоры фирмы "Элвис"
ELVEES R&D Center replied to physic's topic in Сигнальные процессоры и их программирование - DSP
Добрый день! Оценка производительности одного DSP-ядра ELcore-30M при реализации КИХ-фильтра приведена в приложенном файле. В микросхеме 1892ВМ15АФ кластер из двух ядер ELcore-30M. Дополнительно хотелось бы отметить, что в составе микросхемы есть блок аппаратных ускорителей функций БПФ и сжатия JPEG. Описание известных ограничений отдельных блоков приведено соответствующих разделах технических описаний. Например, ограничения конвейера DSP-ядра ELcore-30M приведены в разделе 7.7 документа «DSP-КЛАСТЕР DELCORE-30М. АРХИТЕКТУРА. DSP-ЯДРО ELCORE-30М» - http://multicore.ru/mc/data_sheets/Manual_...-30M_031210.pdf Также обращаем ваше внимание на документ «Рекомендации по проектированию принципиальной электрической схемы» и другие общие документы в разделе «Техподдержка->Документация->Цифровые сигнальные процессоры» на нашем сайте. Если ответов от коллег в форуме не будет, можно обратиться за подобной информацией в ЭЛВИС. Подскажем, кто именно применял процессор. FIR_ELCore_30M.pdf -
с микросхемой никаких проблем нет
-
Есть еще вот такие чипы с несколькими DSP и с PCI портом: 1892ВМ7Я
-
В данном случае вопрос был продублирован в техподдержку. Ответ был дан тогда же. Если конкретно - в описанном случае в коэффициенты FIR нужно было писать не "1, 0, 0, 0...", а "16384, 0, 0, 0...".
-
Радиостойкие процессоры.
ELVEES R&D Center replied to Gvozdidir's topic in ARM
Есть библиотека PCAD: ELVEES_LIB_090610.zip Процессор 1892ВМ8Я имеет режимы работы как с 32-, так и с 64-разрядной внешней памятью. Загрузочная ПЗУ может быть и 8-разрядной. Подробнее - в руководстве пользователя на микросхему, в описании порта внешней памяти. Пишите лучше на support. Форум редко смотрим. -
Радиостойкие процессоры.
ELVEES R&D Center replied to Gvozdidir's topic in ARM
Есть отечественные процессоры разработки НПЦ "ЭЛВИС". Два варианта radiation tolerant систем на кристалле: 1) 1892ВМ8Я, 80 МГц, от -60 до +85°С, CPU MIPS32 c FPU 64 бит, 2SIMD DSP 8/16/32 бит 480 MFLOPs (float32) / 1280 MOPS (int16) , 2 канала SpaceWire, 4 MFBSP (SPI\LPORT\GPIO), UART, корпус BGA-416 2) MCT-02R, 100 МГц, от -50 до +80°С, CPU MIPS32 c FPU 64 бит, 17 Мбит СОЗУ, 4 канала SpaceWire, 4 MFBSP, 4 UART, корпус металлокерамический CPGA-416 Каталог НПЦ ЭЛВИС Частота ниже 200 МГц, но для DSP, может, не так критично. Подробности на support@elvees.com -
1892ВМ2Я+флеш
ELVEES R&D Center replied to bms's topic in Все остальные микроконтроллеры
Сообщите, пожалуйста, на support@elvees.com смещение какого регистра указано неверно. По поводу работы команды LB. Старшие 24 бита и не обязаны заполняться именно нулями. Описание работы команды: "Формат: LB rt, offset(base) Описание: Вычисляется исполнительный адрес: 16-битная offset расширяется знаком и складывается с содержимым общего регистра base. Байт памяти, определяемый этим адресом, выбирается, расширяется знаком до 32 бит и загружается в общий регистр rt." То есть, если байт по указанному адресу имеет значение от 0x00 до 0x7F – в регистре будет значение 0x0000_0000-0x0000_007F, а если байт имеет значение от 0x80 до 0xFF – то в регистре будет 0xFFFF_FF80-0xFFFF_FFFF. -
Процессоры фирмы "Элвис"
ELVEES R&D Center replied to physic's topic in Сигнальные процессоры и их программирование - DSP
Все вопросы лучше решать через support@elvees.com - это официальная почта тех.поддержки. Официального форума пока нет, но планируется. 1)Демо-версии MCStudio не поддерживают отладку на «живом» процессоре. Только в симуляторе. 2)MCStudio 2 – это среда, предназначенная для работы с процессорами MC-12 (1892ВМ3Т), MC-24 (1892ВМ2Я), MC-0226 (1892ВМ5Я), MC-24R (1892ВМ8Я). MCStudio 3M – среда, предназначенная для работы с процессорами NVCom-01 и MC-0428 (1892ВМ7Я). MCStudio-ECL – среда, предназначенная для работы с процессорами MC-12 и MC-24. Ее отличительная особенность – она имеет в своем составе компилятор C для DSP-ядра. Но на наш взгляд, этот компилятор создает недостаточно оптимальный код для DSP-ядра, поэтому имеет смысл использовать его в тех приложениях, где ресурсы DSP-ядра не используются на 100%. Среда MCStudio-ECL разработана и поставляется компанией «Интерстрон». Техническая поддержка также осуществляется этой компанией. Хотя мы по возможности тоже стараемся помочь, если возникают вопросы. 3)Есть проекты и без DSP, но чипы пока не поставляются. -
Режим масштабирования может включаться двумя способами. 1) Установкой бита 15 в регистре PDNR. В этом случае все операции, которые могут исполняться с масштабированием, исполняются с масштабированием. Этот способ удобен, когда необходимо выполнять много инструкций с масштабированием. Писать суффикс "s" после инструкции не нужно. 2) Если же нужно выполнить небольшое количество инструкций с масштабированием среди множества инструкций без масштабирования - удобнее использовать команду с суффиксом "s". Важно учитывать, что команды, употребляемые с суффиксом "s", можно использовать только в формате 8 (подробнее о форматах инструкций - в описании системы команд DSP-ядра). То есть, в командах такого вида: LSRL R6,R0,R8 ADDSUBXs R2,R4,R6 R8.L,R16.L Необходимо также при вызове ассемблера подключать файл dsp.cmd, в котором описаны инструкции с суффиксом "s". Это делается в окне MCStudio 2 "Tools->Settings". В пятой строчке таблицы к вызову elcore-elvis-elf-as необходимо приписать параметр "-t dsp.cmd", после чего добавить специально созданный файл dsp.cmd в файл проекта. Во вложении - пример проекта, в котором реализованы оба способа использования инструкций с масштабированием. Если Вам необходимо использовать инструкцию ADDSUBXs в других проектах - скопируйте файл dsp.cmd в папку с Вашим проектом. RiscDsp.rar
-
Процессоры фирмы "Элвис"
ELVEES R&D Center replied to physic's topic in Сигнальные процессоры и их программирование - DSP
Связываться лучше напрямую с support@elvees.com. Переслал ответ Вам по email. Еще одно важное документированное замечание: PCI-контроллер микросхемы 1892ВМ5Я обеспечивает обмен с частотой до 100 МГц (в том числе, 66МГц), однако пятый бит (66MHZ_CAPABLE) в статусном регистре не выставляется. -
Процессоры фирмы "Элвис"
ELVEES R&D Center replied to physic's topic in Сигнальные процессоры и их программирование - DSP
В документации (руководстве пользователя) этот момент был отражен в разделе 4.2 (системное управление): Запись 1 в 31 разряд регистра SDRCON - это инициализация. В данном случае повторная. Чтобы было яснее введем в п. 9.2.6: Работает. Недокументированных особенностей не обнаружено. Но рекомендуем обратить внимание на "документированную": В режиме PCI Master: При записи в фазе передачи данных микросхема ВМ5Я удерживает на выводах nCBE[3:0] высокий уровень. В режиме PCI Slave (при записи в микросхему ВМ5Я): При чтении в фазе передачи данных микросхема ВМ5Я игнорирует состояния сигналов nCBE[3:0] и всегда выполняет запись слова. Запись отдельных байтов не выполняется. Таким образом, в режиме PCI Master можно работать только с PCI-устройствами, игнорирующими состояния сигналов nCBE[3:0] в фазе передачи данных. В режиме PCI Slave можно работать с PCI-устройствами, не использующими байтовых операций.