LINUX.ORG.RU
ФорумTalks

Поругайте RP2040

 , ,


0

4

Обнаружил свою новую любовь - чип от Raspberri Pi. Что меня особенно заинтересовало это I/O сопроцессоры, т.е. можно работать с быстрыми протоколами не загружая процессор. Кроме того это 2-ядерный ARM на 133 MHz, 264 kB SRAM. То бишь очень жирный процессор. По сути как Pentium 1, DRAM только докинуть и можно Windows 2000 запускать (ну почти).

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

Ещё большой плюс это существование книги RP2040 Assembly Language Programming (@Assembler, привет), с которой, как я надеюсь, все мои фантазии по программированию на ассемблере будут исполнены.

★★★★★

Хорошая вешь и недорогая

cocucka ★★★★★ ()

133МГц да ещё и ARM это жирный? Это 30 лет назад х86.

Как там обстоит дело со свободностью во всех аспектах? Может ли он полноценно работать на 100% самописной с нуля прошивке, безо всякой скрытой логики?

firkax ★★★ ()

Закупил их штук 10 в рознице в формате RPI PICO когда они были ещё по 500-600 рублей. Не понимаю почему на них не было дефицита. Мне платки практически всем нравятся.

Единственная серьезная притенения лично моя - МК судя по документации не толерантен к 5 вольтовой логике ни в каком виде. В отличии от ненавистного мной STM32.

Ну и небольшая претензия к самой платке - выглядит хлипковато. Текстолит тоненький совсем. Но это особенность чисто RPI PICO. Если тема попрёт, то китайцы там сделают 1001 разновидность платок под все задачи.

Ну и ещё совсем небольшая претензия, полгода назад когда я их последний раз ковырял, SDK был не идеальный. Но вроде разобрался быстро - не особо сложнее ардуины. И проще STM32. Все примерчики собираются через CMake, даже система сборки организована примерно также как я сам для себя сделал с ардуиной на CMake’е, чтобы разрабатывать в нормальной IDE вместо богомерзкой ArduinoIDE.

DawnCaster ★★ ()
Последнее исправление: DawnCaster (всего исправлений: 4)
Ответ на: комментарий от DawnCaster

А просто компилить arm-gcc и заливать через какой-нибудь openocd получится? Без ихних всяких дополнительных прогаммулек.

Legioner ★★★★★ ()
Ответ на: комментарий от Legioner

Там отладчик\программатор надо собирать на другом RPI, либо пускать на одном ядре отладчик на другом собственно свой софт. Работает оно вроде как раз через openocd/gdb.

Ну и хочется какого-то удобства что-ли. Cmake просто уже привычная штука поддерживаемая нормальными IDE. В принципе там все открыто, никто не мешает arm-gcc напрямую вызывать хоть из shell скрипта.

DawnCaster ★★ ()
Последнее исправление: DawnCaster (всего исправлений: 1)
Ответ на: комментарий от DawnCaster

Там отладчик\программатор надо собирать на другом RPI

Это я уже понял, не большая проблема.

либо пускать на одном ядре отладчик на другом собственно свой софт

Прикольно, про такое не читал.

Работает оно вроде как раз через openocd/gdb.

Это хорошо, спасибо.

Legioner ★★★★★ ()
Ответ на: комментарий от firkax

133МГц да ещё и ARM это жирный?

В мире МК - это жирно. Не очень, но жирно.

Как там обстоит дело со свободностью во всех аспектах?

SDK опен-сурсный. Основывается на arm-gcc и работает с кучей его разновидностей. Уже можно найти кучу альтернативных реализаций, в т.ч и для платформы ардуино.

Может ли он полноценно работать на 100% самописной с нуля прошивке, безо всякой скрытой логики?

Боюсь что низкоуровневый загрузчик там всё-равно закрытый. Не уверен, но надо гуглить.

DawnCaster ★★ ()
Ответ на: комментарий от DawnCaster

Я про обычную RPi читал, что у неё есть два ядра, одно для кастомной прошивки, а второе (которое приоритетно всем управляет, в т.ч. стартом первого) - с каким-то закрытым блобом. Тут не та же история?

firkax ★★★ ()
Ответ на: комментарий от firkax

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

DawnCaster ★★ ()
Ответ на: комментарий от undef

О, круто. Мне казалось он таки закрыт, ну ок. Обновлять его всё-равно нельзя, увы.

У меня походу все платки на древнем B0. Не понятно насколько это всё влияет, это ведь просто бутром, а в SDK есть все те-же фиксы…

DawnCaster ★★ ()
Ответ на: комментарий от mv

Дык, если 4-х долларовый RPI PICO у нас сейчас стоит по 700 рулей в рознице, то этот будут продавать за 2-4 тысячи сразу. Дороговато будет.

DawnCaster ★★ ()

В сравнении с STM32 F7 и H7 говно, даже в сравнении с F4. Даже простые F4 вроде F407 спокойно разгоняются до 250 МГц.
И какой в жопу DRAM?! У RP2040 нету FMC контроллера, вообще нету никакого интерфейса внешней RAM. Можно подцепить SRAM или PSRAM по SPI, но отсутствие поддержки маппинга в общее пространство и смешная пропускная способность делают это бесполезной возней.

soslow ()
Последнее исправление: soslow (всего исправлений: 1)
Ответ на: комментарий от soslow

FMC контроллер, маппинг RAM… Вы сравниваете поделку для хобби за 4 бакса какими-то профессиональными проприетарными монстрами за 10-20 баксов. Не надо так.

DawnCaster ★★ ()
Ответ на: комментарий от soslow

В сравнении с STM32 F7 и H7 говно, даже в сравнении с F4. Даже простые F4 вроде F407 спокойно разгоняются до 250 МГц.

А по цене они разве сравнимы? RP2040 стоит 1000 тенге (200 рублей). STM32F4 стоят от 7000 тенге (1400 рублей). Цены из чипидип. Или там цены сильно искажены?

Про DRAM я так, от балды сказал, я в этом ничего не понимаю.

Legioner ★★★★★ ()
Последнее исправление: Legioner (всего исправлений: 1)
Ответ на: комментарий от Legioner

264 kB ОЗУ хватит для большинства задач, как по мне. Прям с запасом ещё будет. Я тут на 2 килобайтах атмеги 328 успешно перебиваюсь как-то… Сделал вот недавно Uart->Ethernet\TCP+UDP конвертер с миллисекундными задержками на нём. Не знаю даже, какие ещё более серьезные задачи можно решать на МК в хобби проектах…

DawnCaster ★★ ()
Ответ на: комментарий от DawnCaster

Простой пример хобби проекта, который требует быстрой SDRAM с FMC и маппингом для DMA - аудио DSP(3-х полосный кроссовер для акустической системы, плюс саб, плюс коррекция), всё на FIR-фильтрах, для 7 каналов аудио 20000+ tap-ов жрет 2+ Мбайт. Еще и без FPU у проца с FIR фильтрами никак.
А еще RP2040 не умеет SAI, только I2S(2 канала вход, 2 выход и всё).
И STM32F730 я брал по рекомендованой цене в 4.5 бакса, конечно сейчас за такие деньги их нигде не осталось, но этот дефицит не вечный.

soslow ()
Последнее исправление: soslow (всего исправлений: 1)
Ответ на: комментарий от soslow

И STM32F730 я брал по рекомендованой цене в 4.5 бакса, конечно сейчас за такие деньги их нигде не осталось, но этот дефицит не вечный.

Ну вот стоимость HDD после тех наводнений в азии так и не опустилась полностью назад. Ценовой сговор производителей DRAM памяти который повлиял даже на стоимость и качество SSD накопителей и привёл к появлению dram-less SATA устройств так и не был толком расследован никак, и цены тоже до тех времен не опустились до изначальных значений.

Цены будут только расти. Привыкайте, капитализм он такой, будут по абсолютно любой причине, реальной и выдуманной, накручивать.

А сам голый камень RP2040 стоил вроде вообще один бакс, уже во время кризиса. С учётом кризиса и наценок наших продаванов - в розницу будет разница в 200 рублей и 1-2 тысячи за камень. На платки ещё больше. Всё-таки это сильно разные ценовые категории как по мне.

аудио DSP(3-х полосный кроссовер для акустической системы, плюс саб, плюс саб, плюс коррекция)

Фигасе у вас хобби проекты. Ну да, тут конечно что-то мощное нужно. Но всё-таки, думаю, ваш случай достаточно редкий.

DawnCaster ★★ ()
Ответ на: комментарий от DawnCaster

Ну вот стоимость HDD после тех наводнений в азии так и не опустилась полностью назад.

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

DawnCaster ★★ ()
Ответ на: комментарий от DawnCaster

USB Audio Class вход, CS4385(8 каналов в одном корпусе) ЦАП на выход. На самом деле очень просто, всё натырено из готовых примеров от ST. FIR фильтр посредством стандартной библиотеки CMSIS DSP. Единственное под SDRAM пришлось дважды переделывать плату и брать 4 слоя, первый раз не завелось.
Для STM32 вообще есть потрясающая штука Audio Weaver, эксклюзивно для ST бесплатная, можно «программировать» невероятно сложные аудио DSP из графического интерфейса, даже примерно не понимая как работают эти алгоритмы, просто вбрасывая элементы, соединяя их мышкой. Да еще и отлаживать не отходя от кассы прямо в GUI.

soslow ()
Последнее исправление: soslow (всего исправлений: 1)
Ответ на: комментарий от soslow

У меня есть идея делать гитарные педальки на STM32 - например параметрический дисторшн с тач-скрином, позволяющий «нарисовать» любую передаточную функцию, но с гребанным дефицитом все стопорнулось.

soslow ()
Последнее исправление: soslow (всего исправлений: 1)
Ответ на: комментарий от soslow

Идея офигенная, да. Я даже завидую вам, у меня идеи возникуют куда проще - чисто на бытовом уровне, когда хочется что-то сделать на микроконтроллере. Где-то на 1 уровень пирамиды Маслоу ниже.

Не знаю даже что посоветовать в нынешней ситуации. Производство налаживать сейчас не вариант точно.

DawnCaster ★★ ()
Ответ на: комментарий от DawnCaster

Производство налаживать сейчас не вариант точно.

Самое время налаживать производство. На разработке лишние 10-15 долларов никак не скажутся (да и в серии не особо). Зато к моменту, когда чипы опять начнут клепать - проект будет готов.

(да и надеяться на сильное удешевление не стоит, цена к первоначальной уже не вернется)

vaddd ★☆ ()
Ответ на: комментарий от DawnCaster

Ну и ещё совсем небольшая претензия, полгода назад когда я их последний раз ковырял, SDK был не идеальный.

примерно также как я сам для себя сделал с ардуиной на CMake’е, чтобы разрабатывать в нормальной IDE вместо богомерзкой ArduinoIDE.

Нафиг все эти кастомные SDK. Берешь platformio, берешь #include <Arduino.h>, профит

https://registry.platformio.org/platforms/platformio/raspberrypi

derlafff ★★★★★ ()
Ответ на: комментарий от derlafff

Я старался по минимуму упоминать ардуину, а то тут некоторые неистово бомбят от одного только названия.

Я использую в своих поделках обычное официальное ядро ардуины. Просто приправляю их своими скриптами CMake для работы в своём IDE (я даже сохраняю стандартную структуру скетчей, чтобы можно было в официальном собрать всегда). PlatformIO не люблю. У меня в моем окружении есть всякие там статические анализаторы кода, через которые я гоняю всё при сборке, и ещё пару кастомных мелочей. Мне мои костыли привычнее.

В плане RPI-PICO я имел ввиду официальный SDK (не ардуиновский) и кастомные SDK сделанные по его образу и подобию. Может сейчас и официальная поддержка ардуины есть для RPI - я хз, полгода их уже не тыкал, времени нет. Может уже и тогда была, а я просто не посмотрел.

DawnCaster ★★ ()
Ответ на: комментарий от DawnCaster

PlatformIO не люблю

Ну это просто странно, platformio не любишь, но по сути именно его изобретаешь :) Включая совместимость с arduino core. Линтеры, language server тоже прикручиваются.

derlafff ★★★★★ ()
Последнее исправление: derlafff (всего исправлений: 1)
Ответ на: комментарий от derlafff

У меня просто для плюсов давным давно сформированные наборы костылей за 20 лет, не люблю из зоны комфорта выходить. Cmake мне привычен, опять-же свой набор костылей для быстрого развертывания на CI\CD и вот это вот всё.

Ну и я не люблю когда сборка таких маленьких проектов зависит от интернета. Я хочу что-бы вот у меня tar.gz с SDK лежит, а вот у меня выкаченная репа с моими исходниками, и что-бы это всё 100% оффлайн собиралось и разрабатывалось а не лезло на каждый пердёж в интернет что-то скачивать и обновлять.

В общем, дело привычки просто. Может когда-нибудь освою VSCode как нечто большее чем простой текстовый редактор использовать. Меня просто коробит сам подход. Какие-то плагины, из каких-то мутных источников, написано всё на JS, сами плагины тоже хрен пойми откуда сторонний JS берут, хрен пойми как там с безопасностью. Я просто блин не могу этого своим старопердунским мозгом понять, какая-то адская херня, не могу понять есть-ли там хоть какой-то единый центр доверия для стороннего кода - плагинов и кода на который они ссылаются. А когда плагины сами чего-то скачивают - так напрямую с гитхаба с каких-то частных реп. И всё это дело без проверок выполняют. В общем мрак.

DawnCaster ★★ ()
Последнее исправление: DawnCaster (всего исправлений: 2)

Зависит от потребностей. Объективно для МК общего назначения он слаб. Но отношение цена/качество непобедимое.

PIO - не без недостатков, но и без реальной альтернативы. Я недавно с ним решил поиграться на примере реального проекта. Результат USB сниффер - https://github.com/ataradov/usb-sniffer-lite . Такого ни на одном существующем МК не сделать.

Никакие SDK нафиг не нужны. Чип примитивный по современным меркам, если с таким не разберешься без SDK, то все плохо.

И в этой примитивности есть свое очарование. Лично мне нравится эта простота. Я его в несколько других проектов заложил.

2 ядра тоже удобно и работать с ними легче, чем с любыми другими многоядерными МК.

Ну и до Pentium 1 ему как пешком до Китая. Просто сравнивать частоту нет вообще никакого смысла.

alexru ★★★★ ()
Последнее исправление: alexru (всего исправлений: 3)
Ответ на: комментарий от alexru

Ну и принципиальная невозможность защиты кода делает этот МК не сильно применимым в закрытых коммерческих проектах.

Этот чип по ощущению сделан для отработки технологии. Такие чипы обычные компании делают, но их никто не выпускает на рынок. RPi решили часть средств на разработку отбить продав его людям.

И у них есть достаточно связей если у них получилось выпустить 3 ревизии в пандемию и недостаток производственных мощностей.

И учитывая успех первого чипа скорее всего будут более пригодные вещи выпускать.

alexru ★★★★ ()
Ответ на: комментарий от alexru

Во, ты в этом, похоже, разбираешься. Буду рад, если ответишь.

Я тоже хочу с USB разобраться. В частности меня интересуют поделки на WebUSB. Судя по даташиту в этом чипе есть поддержка USB 1.1. Но для WebUSB как я понял нужно USB 2.1.

Т.е. с помощью GPIO есть принципиальная возможность сделать USB без каких-то дополнительных хардварных модулей?

Подчеркну, скорость меня не интересует, исключительно поддержка протокола WebUSB.

Legioner ★★★★★ ()
Ответ на: комментарий от Legioner

Цитата из DS: «„RP2040 contains a USB 2.0 controller that can operate as either:....“

Это стандартный USB контроллер, который совместим со всем чем нужно, можно не волноваться на этот счет.

Т.е. с помощью GPIO есть принципиальная возможность сделать USB без каких-то дополнительных хардварных модулей?

Есть, но это полнейший изврат и требует много ресурсов, и если идея в том, что это проще - это не так. Но при желании можно готовые проекты на это найти.

WebUSB - это не протокол, это API для доступа к USB устройствам.

А на счет паяльности - только что пришла своя плата под него, все запаялось и завелось без проблем. Так что при желании можно.

alexru ★★★★ ()
Последнее исправление: alexru (всего исправлений: 1)
Ответ на: комментарий от alexru

Ну я вот что читаю:

RP2040 contains a USB 2.0 controller that can operate as either:

  • a Full Speed device (12 Mbit/s)
  • a host that can communicate with both Low Speed (1.5 Mbit/s) and Full Speed devices. This includes multiple downstream devices connected to a USB hub.

There is an integrated USB 1.1 PHY which interfaces the USB controller with the DP and DM pins of the chip

Я не очень понимаю, что в итоге это всё значит… Но хорошо, раз 2.0.

WebUSB - это не протокол, это API для доступа к USB устройствам.

Насколько я понимаю, это не совсем так: https://web.dev/build-for-webusb/ тут примерное описание. Т.е. WebUSB даёт доступ не к любым USB-устройствам, а только к тем, которые в каком-то там дескрипторе говорят, что они поддерживают WebUSB.

The Binary device Object Store (BOS) is a concept introduced in USB 3.0 but has also been backported to USB 2.0 devices as part of version 2.1. Declaring support for WebUSB starts with including the following Platform Capability Descriptor in the BOS descriptor:

Вот по этому параграфу я решил, что нужно USB 2.1, хотя, видимо, 2.1 это относится к версии стандарта WebUSB, а сам USB нужен 2.0.

Legioner ★★★★★ ()
Последнее исправление: Legioner (всего исправлений: 1)
Ответ на: комментарий от Legioner

Это означает, что PHY не поддерживает High Speed (480 MBps) режим. Не обращай внимание на это.

Опять-же цитата по этой ссылке: «While WebUSB can work with many devices without firmware modifications, additional functionality is enabled by marking the device with specific descriptors indicating support for WebUSB. For example, you can specify a landing page URL that the browser can direct the user to when your device is plugged in.»

Работает с любыми, но если добавить фигни специально для WebUSB, то можно дополнительные плюшки получить.

BOS и прочая муть - это чисто программная вещь, чего в коде напишешь, так и будет.

alexru ★★★★ ()
Ответ на: комментарий от Legioner

Если пренебречь некоторыми ненужными функциями вроде проверки контрольных сумм пакетов, то софтварный usb впихивают даже на avr.

PolarFox ★★★★★ ()
Ответ на: комментарий от PolarFox

Если пренебречь некоторыми ненужными функциями вроде проверки контрольных сумм пакетов, то софтварный usb впихивают даже на avr.

Только LS. Контроллер что по ссылке выше поддерживает LS+FS. И еще device+host.

alexru ★★★★ ()
Ответ на: комментарий от DawnCaster

Ну и я не люблю когда сборка таких маленьких проектов зависит от интернета. Я хочу что-бы вот у меня tar.gz с SDK лежит, а вот у меня выкаченная репа с моими исходниками, и что-бы это всё 100% оффлайн собиралось и разрабатывалось а не лезло на каждый пердёж в интернет что-то скачивать и обновлять.

Ну это оно тоже позволяет.

В общем, дело привычки просто.

не люблю из зоны комфорта выходить

Ясно-понятно

Может когда-нибудь освою VSCode как нечто большее чем простой текстовый редактор использовать. Меня просто коробит сам подход. Какие-то плагины, из каких-то мутных источников, написано всё на JS, сами плагины тоже хрен пойми откуда сторонний JS берут

platformio != vscode. можно использовать хоть vim, хоть что.

derlafff ★★★★★ ()

А в чем сейчас модно кодить под STM32? Ну так, чтобы с плюшками, документцией SDK в IDE, все дела.

sArj ()
Ответ на: комментарий от DawnCaster

Не нашел как смотреть документацию. Показывает только очень поверхностые комментарии к функциям и всё, даже структуры не все описывает. К GPIO нету даже описаний регистров. Можно подключить что-то типа JavaDoc? Это же Эклипс, однако.

sArj ()
Последнее исправление: sArj (всего исправлений: 2)
Ответ на: комментарий от DawnCaster

https://www.newark.com/stmicroelectronics/stm32h750vbt6/mcu-32bit-400mhz-lqfp-100/dp/84AC2908

Внезапно обнаружил H750VBT6 по 14 баксов, всего лишь в 2 раза дороже рекомендованой. 685 штук на складе. H750 монстр на 480 МГц(в разгоне думаю 600), Double FPU, аж 4 штуки SAI, в Full Duplex можно навесить 64 канала аудио. А еще с этими H750 есть платки на Али по гуманным ценам оказывается.

soslow ()
Последнее исправление: soslow (всего исправлений: 1)

Что в нём плохого?

  • Аппаратные спин-блокировки, которые ещё и зарезервированы под их фреймворк. Т.е. реально пользоваться ими нельзя.

  • Странный жирный фреймворк, который пытаеся все решить за меня. Переопределение чуть ли не всей libgcc для «быстрого» выполнения. Я так и не стал переделывать стартап, когда делал порт BuguRTOS, хлопотно это.

  • Мало выводов на корпусе. Для чего-то более-менее серьёзного придется городить внешнюю систему ввода-вывода, прям как в случае esp8266.

  • Глючит отладка в режиме SMP.

  • Нужно шифрование содержимого flash с расшифровкой во время стартапа, а лучше - во время выполнения. Иначе затруднительно проприетарщину писать.

shkolnick-kun ★★★★★ ()
Последнее исправление: shkolnick-kun (всего исправлений: 1)
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)