Pull to refresh
120
18
Send message

В целом - смотря какая задача. Изобразить из контроллера флешку, на которой хранится снятые данные - а почему бы и нет? Или некое комбинированное устройство. Или, в порядке извращения, программатор для таких же микросхем.
В любом случае, вряд ли производительность ядра позволит отличить аппаратный эзернет от spi-ного.

Перемаркированный вряд ли, уж больно странные решения и странные косяки. Изготовление в Китае возможно. Но давайте верить в лучшее :)

Написано, что еще в разработке. Или его уже можно пощупать?

Какой еще хитрый бутлоадер? В вг015 бутлоадера вообще нет.

1921вг015 по-жирнее, судя по всему?

Ну да. Плюс встроенная флешка аж на мегабайт есть. И подешевле вроде как. Впрочем, что там с Амуром не знаю, может, у него есть и свои преимущества. Но лично меня вг015 впечатлил больше.

Еще бы про запуск Doom вспомнили :) Хватит с вас и трехмерного шныга.

С usb, если верить еррате, там все плохо. Работает только одна конечная точка, и то нестабильно. Впрочем, возможно, это верно только для старых ревизий, а в новых уже все исправлено. Не знаю.
Сишные библиотеки какие-то есть, но лично по мне они неудобные (но я-то вообще не показатель).
Для криптомодулей - хз, возможно, для военных или какой-нибудь бюрократии важен сам факт их наличия. Вряд ли ведь контроллер делали с нуля специально для продажи всяким радиолюбителям.
Ethernet - не знаю, скорее все же нет. Возможность (и желание) протащить к устройству витую пару все же меньше, чем USB или даже CAN. В любом случае, не стоит требовать слишком многого сразу. Именно этот МК заточен больше под аналоговые схемы, чем под сложные вычисления или обмен.

А можно подробнее? Сейчас пролистал спецификацию на risc-v, не увидел ничего более интересного, чем парсинг того же mcause.

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

Принцип максимизации ошибки это, конечно, хорошо. Плохо, когда ошибку не дают отследить из юзерского кода. Самое простое - могли сделать дефолтный обработчик исключений и объявить его weak. Соответственно, если юзер напишет свою альтернативу - использоваться будет она. И, насколько я понимаю, в stm32 используется именно такой подход. Те же ecall-ы как иначе отслеживать? Это же не ошибка, это именно системный вызов.

Если во времена Ленина выпускались РИСК-5 (ну не на иностранном же языке маркировать!) микросхемы с мегабайтом ЭСППЗУ... А вообще, это скорее последствия отмывки или неудачно выставленного света.

Да меня-то устроит любой вариант (кроме, разумеется, неадекватных), главное было понять с каким обратились вы.

ну да память SRAM и EXMC висят на специальных шинах внутренней и внешней памяти, переферия на паре других шин

Как минимум, на тройке - AHB, APB1, APB2, но это не предел. В какой-нибудь stm32h7 шин еще больше. Это никак не отменяет способность и PADDR и MADDR обращаться куда угодно.

ну в больших компах ДМА это отдельная микросхема.

Я говорил скорее про древние восьмибитки вроде AVR или PIC. Весь обмен с периферией только прямыми командами ядра. То есть оно вполне выполняло обязанности DMA.

Как же вы не поняли, если определили дублирование?

Я понял что написано, я не понял зачем. И соответственно как мне на это реагировать. Вы уточняете правильно ли поняли данную тему? Вы нашли в тексте ошибку и озвучиваете более правильную версию? Вы хотите как-то дополнить написанное?

Вот и посмотрите для тех же gd32 или ch32. Можете сравнить с упомянутым в статье stm32f4.

На самом деле каждое устройство ввода вывода с точки зрения процессора это тоже маленький модуль памяти (регистры это тоже память).

Регистры все-таки памятью не считаются. К ним нельзя обратиться по адресу с помощью lw/sw, только жестко прописать номер в коде инструкции. А вот в AVR они таки отображались на память, по нулевым адресам. Правда, ни разу не видел чтобы этим кто-то пользовался.
А отображение периферии на память так и называется, MMIO, memory-mapped input-output.

так они на разных шинах наверно висят.

Да не похоже. Раз можно поменять местами. Точнее, оба адреса DMA могут коммутироваться на любую шину. Впрочем, про исключение я в статье написал. Камень, в котором разделение PADDR / MADDR все-таки важно.

интересно, кстати, что сам по себе процессор можно рассматривать как модуль ДМА который способен выполнять те же ДМА операции.

Нет. Процессор **может ** играть роль DMA, но это мизерная часть его возможностей. Собственно, есть же куча процессоров, в которых DMA нет, и ничего, живут.

действие данных из регистров ДМА может вообще не иметь ограничения по времени, однажды установленные значения регистров будут воздействовать - управлять модулем ДМА вечно(!)

Ну... да. Как в принципе и любая другая периферия. ШИМ на таймере тоже может генерироваться вечно. Вообще, я не особо понял о чем эти ваши два поста: большая часть сказанного в них так или иначе дублирует описанное мной.

Можно добавить, что блокировку памяти по дефолту включает штатная wch-ная утилита бутлоадера (и это мешает!). И также через бутлоадер эту блокировку можно снять.

То есть PFIC_VTFIDR и PFIC_VTFADDRR никак не связаны? Надо будет проверить, а то, возможно, я в своей статье дезынформировал.

Про Амур не знаю. У меня его нет, соответственно и не интересовался.

Правда, решение от ch32 с их аппаратным стеком, переходящим при острой необходимости в аппаратное сохранение в ОЗУ

Стоп. Я сейчас попытался найти куда же оно сохраняет. Похоже, в ядре V2 на юзерский стек, а V3, V4 - куда-то в недра, такое ощущение что вообще без возможности ручного доступа.

Кто есть, стандартный CSR-регистр mcause? Есть, конечно. Вот пример использования в прерывании: https://github.com/KarakatitsaRISCV/riscv-asm/blob/main/4.interrupt_ch32/src/main_1_unified.S#L211

Information

Rating
404-th
Registered
Activity