ELVEES R&D Center
-
Постов
50 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные ELVEES R&D Center
-
-
Ну, как минимум навскидку ничего критичного в коде нет. Так что надо смотреть настройки размещения в памяти.
-
Судя по приведенным кускам дизассемблера в конце, тут вопрос не к процессору, а к компоновке программы. Потому что обе записи происходят по адресу (0x8002_0000-10440). По какой-то причине при сборке обоим символам назначаются одинаковые адреса. Процессор лишь исправно выполняет запись по неправильно указанному адресу, что в симуляторе, что на живом чипе :)
Я бы сказал, что MAP-файл тут малоинформативен. Можете дать ELF-файл или (лучше) проект целиком? Можно на [email protected].
-
1) Значение указателя стека в пределах, но как-то очень уж маленькое. Верхушка стека, выходит, 0x9802_0000, а указатель сдвинут на 0x18 байт. Маловато как-то. Вход в каждую функцию сдвигает указатель стека еще немного вниз относительно верхушки. Если исключение происходит, когда мы находимся в main(), то выглядит нормой, а если хоть немного "глубже" в функциях - то уже нет. Пока выглядит лишним аргументом в пользу некорректного восстановления контекста. Можно поставить точки останова перед сохранением и после восстановления контекста, убедиться, что значение sp не меняется. Ну и надо понять, какое штатное значение указателя стека при штатном входе в функцию, из которой происходит исключение.
2) По логу сборки вроде особо нечего пока сказать.
3) По коду после ERET - штатно он действительно не исполняется. Введён из каких-то соображений, которые сейчас нет смысла уточнять, а навскидку вспомнить не получается. Это скорее всего никак не связано с обсуждаемой проблемой.
-
Опубликовано · Изменено пользователем ELVEES R&D Center · Пожаловаться
Тут сложный момент. С одной стороны, правильнее сохранять все регистры. С другой стороны, кэш надо сбрасывать сразу при входе в обработчик.
Здесь нам на помощь приходит MIPS ABI (application binary interface) - соглашение, по которому регистры k0, k1 используются именно что в обработчиках, а в основной программе не используются. Поэтому мы вроде бы безбоязненно можем "портить" эти регистры. По факту GCC по умолчанию это требование не выполняет и вполне может использовать эти регистры. Чтобы он этого не делал, есть ключ -ffixed. В наших проектах для MCStudio 4 как раз по умолчанию выставлены ключи GCC " -ffixed-k0 -ffixed-k1". Возможно, их по какой-то причине нет в Вашем проекте? Покажете лог сборки на всякий случай?
Еще как вариант - может, просто где-то что-то не так с сохранением и восстановлением стека? В какой-то момент он сдвигается за границы допустимого и все портится? Или, совсем уж простое - размер стека физически "вылезает" за границы доступной физически памяти? Чему равно значение sp в момент исключения? Чему равно значение символа _stack и размер стека в настройках проекта?
В функции действительно ничего криминального нет.
-
1) Включено ли кэширование в Вашем проекте? Если включено - то сбрасывается ли кэш в обработчике прерываний?
2) Вероятно, стоит сразу указывать, какое значение у регистра CP0.EPC при возникновении исключения? Что за код находится по этому адресу?
-
Добрый день!
Спасибо коллегам, которые помогли решить проблему до нашего участия. Выглядит так, что проблема была действительно связана с выравниванием стека. Мы обновим процедуру сохранения контекста в наших примерах, спасибо за указание на проблему.
Предполагаемый обновленный обработчик прилагаем. Там также добавлен сброс кэша, сохранение части регистров CP0 и некоторые другие вещи. Если планируется работать с float/double - нужно также сохранять в обработчике регистры FPU. Пока мы этого не добавили в обработчик, чтобы не перегружать его. Возможно, добавим.
Если кому-то интересна причина, почему сейчас такое сохранение контекста в примерах, то даём пояснение: он создавался достаточно давно, когда в наших чипах CPU-ядро не имело сопроцессора FPU. Соответственно, у CPU не было 64-разрядных обращений в память, только 32-разрядные (инструкции LW/SW) - и выравнивания по 32-разрядному слову было достаточно. С появлением FPU появились 64-разрядные обращения (SDC1/LDC1) - появилась необходимость выравнивать стек по границе 64-разрядного слова. Но поскольку примеры в составе IDE демонстрируют узконаправленную работу с конкретным блоком - в примерах этой проблемы не всплывало. Теперь обновим, еще раз спасибо за указание на проблему.
-
On 1/11/2019 at 2:25 PM, sweetpirate said:
Первый момент: в руководстве написано, что существуют 2 варианта использования приложений: с возвратом и без возврата в u-boot. При выполнении примеров возврата в u-boot не происходит(тк приложение уходит в бесконечный цикл), т.е. возврат в u-boot происходит только после завершения работы baremetal приложения? И только тогда можно запустить Linux?
При запуске U-Boot (начиная с версии v2017.07.0.7) останавливает ядро CPU1 и отключает его домен питания.
Предполагается, что U-Вoot загружает приложение используя только одно ядро CPU.
Само приложение может включить домен питания и использовать второе ядро.Вы можете доработать U-Вoot так, чтобы он запускал baremetal-приложение на ядре CPU1.
On 1/11/2019 at 2:25 PM, sweetpirate said:И второе, существует ли возможность запуска на исполнение baremetal приложений из под Linux-a. (В этом случае Linux будет запущен на CPU0, CPU1 для исполнения baremetal и управления DSP). Т.е. во время работы Linux-a при выполнении определенных условий имеется необходимость загружать различные baremetal-приложения.
Штатно такой возможности нет.
Для добавления такой возможности необходимо разработать отдельный драйвер.На данный момент ведётся разработка драйвера Linux для DSP-кластера DELcore-30M.
Драйвер позволит запускать задачи на DSP-ядрах и получать результаты в user space.
On 1/11/2019 at 2:25 PM, sweetpirate said:И еще вопрос, можно ли получить, при разработке ПО, доступ к регистрам CPU и DSP из под Linux?
Доступ к регистрам разрешен из ядра Linux (kernel space).
Можно реализовать в драйвере мапировние регистров в пользовательское пространство.Такой подход не рекомендуется, т.к. некорректная работа пользовательского приложения может нарушить работоспособность всей системы.
-
On 12/17/2018 at 10:26 AM, sweetpirate said:
Каким образом можно запустить Linux на одном arm-ядре?
Для этого существует параметр запуска ядра nosmp.
On 12/17/2018 at 10:26 AM, sweetpirate said:Возможно ли назначить различные модули ОЗУ для каждого ядра?
Например, первый модуль ОЗУ используется для Linux, который запущен на 0 ядре.
И, следовательно, второй модуль выделен для baremetal приложений, которые работают на втором ядре?
Тут возможны два варианта:
1.Можно ограничить использование памяти (SDRAM) с помощью параметра запуска ядра mem=;
2. Можно использовать другой тип памяти (SRAM) для второго ядра.
Во втором случае необходимо будет настроить блок NORMPORT микросхемы 1892ВМ14Я в загрузчике U-boot.
On 12/17/2018 at 10:26 AM, sweetpirate said:И как, в таком случае, возможен обмен данными между Linux и baremetal приложением?
Для этой цели можно использовать блок Mailbox микросхемы 1892ВМ14Я.
On 12/17/2018 at 10:26 AM, sweetpirate said:И имеется ли доступ к виртуальным регистрам arm ядер из Linux-a?
Не понятно о каких регистрах идет речь.
Описанный Вами режим работы потребует существенной доработки загрузчика U-boot.
При разработки baremetal-приложения следует учесть тот факт, что контроллер прерываний (GIC) общий для двух ARM-ядер.
-
10 minutes ago, Grizzly said:
А под Linux имеется компилятор?
Да.
В составе демо-версии 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
-
Добрый день!
Quoteесть ли у нас отечественная снк с DSP
Quoteсамое главное - радстойких , можно в составе снк
Рекомендуем ориентироваться на микросхему 1892ВМ15АФ. Информация по ней представлена здесь - http://multicore.ru/index.php?id=1340
Информация по отладочному модулю для нее здесь - http://multicore.ru/index.php?id=1405
Линейка радстойких микросхем в целом представлена здесь - http://multicore.ru/index.php?id=556
Quoteпотому как отечественный радстойкий DSP будет золотым
В целом по рынку радстойких микросхем у нас очень конкурентоспособные цены. Для уточнения подробностей рекомендуем обратиться в отдел продаж – market@elvees.com.
Quoteнасколько я знаю это не dsp, это мипсовские процессоры
В микросхемах НПЦ «ЭЛВИС» есть и CPU-ядро (в радстойких это MIPS32-совместимое ядро), и высокопроизводительные DSP-ядра.Quoteтам есть ускорители (лет 5 назад очень глючные, то есть сильно не соответствовали объявленной ISA), с ограниченным доступом к памяти, периферии и т.п.
DSP-кластер DELcore-30MH в составе 1892ВМ15АФ не имеет ограничений по доступу к памяти и другим ресурсам микросхемы.
Если под «ISA» имеется в виду система команд – то наши ядра описанию соответствуют. Имеющиеся ограничения приведены в документации.
Quoteпрограммисты, которые с ними разбирались, говорили, что можно было брать только куски кода из поставляемых Элвисом библиотек и из них что-то собирать
Это не так. Существует достаточно много применений, где использован оригинальный код, написанный нашими пользователями самостоятельно.
Quoteкомпилера, ес-сно не было, по моему и нет - GCC только для МИПС.
Компилятор Си для DSP-ядер есть. Доступен свободно в составе демо-версий среды разработки на сайте - http://multicore.ru/mc/software/MCStudio3M_Demo_Setup.exeQuoteможет это специально сделано так, чтобы код для этих ДСП покупали у Элвиса, а не сами писали
Мы заинтересованы в увеличении количества разработчиков, работающих с нашими микросхемами. Для этого мы максимально документируем наши микросхемы, проводим курсы и семинары, сотрудничаем с университетами и авторами независимых курсов, и стараемся отвечать на все запросы, поступающие в техподдержку.
another_one, Вы также можете обратиться на support@elvees.com с более подробным описанием задачи, мы постараемся подсказать, как ее можно решить с применением наших микросхем.
-
20 hours ago, sweetpirate said:
Вопрос: возможно ли вместе с ядром ОС загрузить и файловую систему по TFTP, чтобы имелась возможность перепрошить модуль eMMC?
Можно включить в состав ядра файловую систему в виде диска c файловой системой в ОЗУ.
Сделать это можно в конфигураторе ядра Linux (make menuconfig).
Там же указывается путь до каталога с rootfs.
-
43 minutes ago, sweetpirate said:
Скажите, алгоритм для прошивки NAND Flash идентичный?
Нет, утилита mcom_flash_mmc.py не подходит для прошивки NAND-Flash.
Инструкция по прошивке NAND-Flash представлена в п.5.3.1. документа "Загрузчик U-Boot для 1892ВМ14Я. Руководство пользователя".
47 minutes ago, sweetpirate said:Задал параметры запуска Linux setenv bootargs 'console=ttyS0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rwrootwait'
Установил команду загрузки setenv bootcmd 'tftpboot; bootz ${loadaddr} - ${fdtcontroladdr}'
На хостмашине (Windows 10) запустил TFTP server (TftpServ.exe) выбрал папку к образу SD карты (к разделу Boot).
Запустил сервер.
Плата виснет и требует рестарта.
Настройку TFTP Вы выполняете правильно.
В U-Boot 2017.07.0.14 (из Buildroot v.2.9) возникает ошибка при загрузке через TFTP.
Ошибка будет исправлена в следующих выпусках дистрибутива Buildroot.
Если Вам требуется загрузка по TFTP, рекомендуем Вам использовать Buildroot v.2.8 и соответствующий загрузчик U-Boot.
-
Опубликовано · Изменено пользователем ELVEES R&D Center · Пожаловаться
QuoteИнтересует вопрос, как можно загрузить Linux/Buildroot во внутреннюю память ПЗУ mmc0?
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.
Возникающие вопросы лучше адресовать напрямую на [email protected], чтобы сократить время ответа.
-
Здравствуйте уважаемые!
Кто-нить применял 1892ВМ15АФ от Элвиса?
Интересует производительность на примере цифровых КИХ фильтров.
И подводные камни.
Спасибо.
Добрый день!
Оценка производительности одного 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
Также обращаем ваше внимание на документ «Рекомендации по проектированию принципиальной электрической схемы» и другие общие документы в разделе «Техподдержка->Документация->Цифровые сигнальные процессоры» на нашем сайте.
Если ответов от коллег в форуме не будет, можно обратиться за подобной информацией в ЭЛВИС.
Подскажем, кто именно применял процессор.
-
с микросхемой никаких проблем нет
-
Есть еще вот такие чипы с несколькими DSP и с PCI портом: 1892ВМ7Я
-
В данном случае вопрос был продублирован в техподдержку. Ответ был дан тогда же.
Если конкретно - в описанном случае в коэффициенты FIR нужно было писать не "1, 0, 0, 0...", а "16384, 0, 0, 0...".
-
Вот я и рисую пока библиотеку Altium под 1892ВМ8Я (к стати может она у Вас есть уже готовая?), но мне не нравится 64 разрядная шина данных, придется много элементов памяти городить, а у нас за каждый мВатт на счету.
Есть библиотека PCAD: ELVEES_LIB_090610.zip
Процессор 1892ВМ8Я имеет режимы работы как с 32-, так и с 64-разрядной внешней памятью. Загрузочная ПЗУ может быть и 8-разрядной. Подробнее - в руководстве пользователя на микросхему, в описании порта внешней памяти.
Пишите лучше на support. Форум редко смотрим.
-
Есть отечественные процессоры разработки НПЦ "ЭЛВИС".
Два варианта 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, может, не так критично.
Подробности на [email protected]
-
Опубликовано · Изменено пользователем ELVEES R&D Center · Пожаловаться
Проц адекватен... если не учитывать недоработанную документацию в части неправильных смещений регистров (пока обнаружено только 1), особенность работы команды lb на внешнюю память (старшие 24 разряда почему то заполняютя далеко не нулями), ну и по мелочам - глюки далеко недешевых отладочных средств, итд...P.S.: А куда смотрят модераторы? Это вообще то DSP а не микроконтроллер. :laughing:
Сообщите, пожалуйста, на [email protected] смещение какого регистра указано неверно.
По поводу работы команды LB. Старшие 24 бита и не обязаны заполняться именно нулями. Описание работы команды:
"Формат: LB rt, offset(base)
Описание: Вычисляется исполнительный адрес: 16-битная offset расширяется знаком и складывается с содержимым общего регистра base. Байт памяти, определяемый этим адресом, выбирается, расширяется знаком до 32 бит и загружается в общий регистр rt."
То есть, если байт по указанному адресу имеет значение от 0x00 до 0x7F – в регистре будет значение 0x0000_0000-0x0000_007F, а если байт имеет значение от 0x80 до 0xFF – то в регистре будет 0xFFFF_FF80-0xFFFF_FFFF.
-
Есть ли официальный форум поддержки.. или всё разрешать тут?
Просто возникло несколько вопросов:
*какие ограничения у демо версии MCStudio?
*чем отличаются MCStudio2 , MCStudio3(о которой сказано только на этом форуме) и MCStudio-ECL?
*остались ли у Вас СнК без DSP? только RISC..
Все вопросы лучше решать через [email protected] - это официальная почта тех.поддержки. Официального форума пока нет, но планируется.
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, но чипы пока не поставляются.
-
Да вы правы, как то я и забыл про установку PC, изначально он же установлен в 0x000 и при первом запуске все было нормально.
Тогда такой вопрос. Очень интересует команда ADDSUBX, а именно ее приминение с масштабированием т.е. ADDSUBXs. Но при такой записи компилятор ругается. В документации написанно, что включение режима масштабирования осуществляется установкой в «1» бита 15 (Esc) регистра PDNR. После принудельной установки бита 15 масштабирования все равно не происходит. Может подскажите, а?
Режим масштабирования может включаться двумя способами.
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 в папку с Вашим проектом.
-
ELVEES R&D Center, можете оставить контактную информацию? Мой e-mail есть в профиле.
Пробовал свазаться с вами, но ответа не получил. Отправка личных сообщений у меня запрещена в профиле.
Связываться лучше напрямую с [email protected]. Переслал ответ Вам по email.
Работает. Недокументированных особенностей не обнаружено.Но рекомендуем обратить внимание на "документированную":
Еще одно важное документированное замечание:
PCI-контроллер микросхемы 1892ВМ5Я обеспечивает обмен с частотой до 100 МГц (в том числе, 66МГц), однако пятый бит (66MHZ_CAPABLE) в статусном регистре не выставляется.
-
Еще проконсультируемся с разработчиками кристалла, и, конечно, отразим в документации.
В документации (руководстве пользователя) этот момент был отражен в разделе 4.2 (системное управление):
Отключение внутренней тактовой частоты выполняется следующим образом:• программа CPU должна выполняться из кэш программ или из внутренней
памяти CRAM;
• SPORT, UART, DMA должны быть в неактивном состоянии;
• перевести DSP в режим STOP;
• записать 1 в 31 разряд регистра SDRCON (поле RFR не должно быть
изменено). По данной операции SDRAM деактивизируется (выполняется команда PRECHARGE);
...
Запись 1 в 31 разряд регистра SDRCON - это инициализация. В данном случае
повторная.
Чтобы было яснее введем в п. 9.2.6:
Следует отметить, что повторная инициализация (не отключая питаниямикросхемы) памяти типа SDRAM (запись 1 в 31 разряд регистра SDRCON)
приводит к ее деактивизации и отключению регенерации (см. п. 4.2). Для того,
чтобы после повторной инициализация опять включить регенерацию, необходимо
произвести запись всех единиц по адресу 182F_1018 (установка сигнала CKE в
единичное состояние и включение регенерации) (см. п. 4.2).
В связи с этим, возник вопрос - работает ли контроллер PCI в ВМ5Я на частоте 66 МГц, или тут тоже есть недокументированные особенности?Работает. Недокументированных особенностей не обнаружено.
Но рекомендуем обратить внимание на "документированную":
В режиме PCI Master:
При записи в фазе передачи данных микросхема ВМ5Я удерживает на выводах nCBE[3:0] высокий уровень.
В режиме PCI Slave (при записи в микросхему ВМ5Я):
При чтении в фазе передачи данных микросхема ВМ5Я игнорирует состояния сигналов nCBE[3:0] и всегда выполняет запись слова. Запись отдельных байтов не выполняется.
Таким образом, в режиме PCI Master можно работать только с PCI-устройствами, игнорирующими состояния сигналов nCBE[3:0] в фазе передачи данных. В режиме PCI Slave можно работать с PCI-устройствами, не использующими байтовых операций.
Нужна помощь по MIPS точнее 1892ВМ10Я
в MIPS
Опубликовано · Пожаловаться
По итогам совместной проработки обнаружили, что проблема была в пересекающихся адресах секций .bss и .sbss:
Вот начало секции .bss:
А вот – секция sbss:
Переменные, находящиеся в разных секциях, имели одинаковые адреса. Из-за этого и портились те переменные, которые не ожидались.
Само же пересечение секций было вызвано ошибкой в скрипте линковки:
Секция же sbss ставится линковщиком сразу после .data, без указания в скрипте линковки.
Для решения проблемы оказалось достаточно изменить объявление секции bss: