Как стать автором
Обновить

Комментарии 40

Да, текстовый редактор - не сильная сторона Keil. Непонятный для меня феномен, кстати. IDE живая, постоянно апдейтится, но gui заморожен намертво.

почему же намертво, они в какой-то момент убрали обязательную пустую строку в конце файла, а иначе warning)) сделали таки усилие

Круто вы сразу обобщили всех программистов МК, как тех, кто в "нормальное" программирование никак не умеет.

Вот это сейчас обидно было (с)

да всё уже. я теперь один из нас)

Уже к этому моменту память на моем BluePill начала трещать по швам, приходилось делать преждевременную оптимизацию, чтобы проект хотя бы собирался.

STM32F103C8T6 прекрасно работает со 128 кБ флеш-памяти. По сути это и есть CBT6, только перемаркированный под младшую модель.

известная фича.
только в проде так делать не надо все же.
и на клонов китайских тоже не надо надеяться.

скорее отбракованный по каким-то причинам или, возможно, проверить 64кБ Flash памяти сильно дешевле чем 128 кБ. вот и маркируют как младшую модель.

Напоминаю про божественный ChibiOS - который RTOS+HAL с фокусом на stm32

Сделать на STM клиента RNDIS не представляет собой какой-либо задачи.
Примеры RNDIS полностью готовые идут с STM почти под все оси.
Вот, например, как он делается на Azure RTOS - https://habr.com/ru/post/582742/
И он там еще одновременно с Mass Storage и Virtual COM работает.

Но вот хост RNDIS это совсем другой уровень. И пока его никто осилить не может.
А вот хост бывает очень нужен, когда требуется подключить мобильные модемы к устройству.

Добрый вечер. Вероятно, было бы правильнее сказать, что не сложно на контроллере запустить уже готовую цепочку RNDIS+стек+ПО. Однако, как упомянутый выше автор, не могу согласиться, что сделать цепочку было просто. Замечу, что на момент написания (2015 год) альтернатив ещё не было (в том числе Azure RTOS USBX). И сейчас альтернатив почти нет (Azure, либо Azure+USBX+CubeMX, либо работы отдельных авторов на github-е: Lexatagan, oleg84, nicokorn, JonasHeim). Поэтому считаю, что даже на сегодняшний день наблюдается значительный недостаток выбора. Буду Вам признателен, если Вы подробнее поясните на счёт "идут с STM почти под все оси". В составе каких пакетов?
По поводу подключения мобильных модемов, этого, действительно, не сделано. На текущий момент наиболее "тонкий" usb-хост с поддержкой RNDIS - это уже одноплатный ПК под управлением развитой ОС. Вероятно, производители МК решили, что отношение востребованность/затраты чересчур низкое для разработки, а необходимую долю рынка уже схватили такие известные производители, как SIMCom.

CubeIDE оказалась самой готовой к работе из всех.

Хм. Для вас показателем готовности к работе является "нажал F7 и светодиодик замигал"? А как-же тогда ваше вступление "о настоящем программисте"? Cube может быть удобен для "попробовать", но он:

  • ужасно тормозной

  • по сути такой-же древний как и keil c iar-ом.

Я для своих поделок пользуюсь vscode + gcc + openocd. К ним замечательно прикручиваются и логи, и визуальная отладка через swd.

Как-то пробовал связку jlink_gdb_server + gdb + qtcreator, отлично работающую как в windows, так и в linux. Пикантности добавлял тот факт, что Cortex-M0 запускался на ресурсах программируемой логики.

К нему при этом, можно еще и удаленно по tcp подключаться :) Т.е. к целевому МК подключается условная "малина" по swd, а к ней по сети с рабочего места. И отладка, как будто МК подключен напрямую (ну по медленнее конечно).

Да, это, бесспорно, очень удобно! Особенно, в упомянутом случае, когда место разработчика ПЛИС и место разработчика ПО находятся в удалении друг от друга. Справедливости ради, этим удобством также обладает openocd, поскольку реализует gdbserver.

Колоссально!
Я не совсем понял, пролистал все еще раз и все равно не совсем понял:
мы берм USB-сетевуху а ля китай, втыкаем в пилюлю в usb как раба и получаем в сети еще один хост который, получает по DHCP IP-адрес и начинает прикидываться веб-сервером с блекджеком и монтажницами?
Еще интересует момент, насколько сложно теоретически забабахать всеуровневый IP-стек? Ну то есть вешаем на GPIO траснформаторы из сетевухи и поехали реализовывать все уровни...
На FPGA это довольно старый баян, а вот на пилюле....
Еще вопрос, ща народ активно топит за RISC-V, если только собираешься залезть на взрослые контроллеры, может стоит пропустить STM32 и сразу перескочить на RISC-V? тем более что есть уже от гигадевайса девборда с ними, и не оч дорого...

На gpio не выйдет, ни у одного stm32, насколько я помню, нет реализации физического уровня на чипе (у некоторых других компаний есть), следовательно, нужно поставить внешнюю микросхему PHY (например, какую нибудь ksz8081), и подключиться к ней по MII/RMII к MAC, который в контроллере уже, если такая переферия вообще есть в камне. И вот потом уже трансформатор, да.

Если нету MII, то всё грустно, для ethernet придется ставить что то навроде w5500, а там большой скорости не видать, явно не 100Мб

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

Если для себя, то без большой разницы, с чего начинать. Если вы не пользуетесь хорошо проработанной ОС или хотя бы HAL с поддержкой разных производителей, где почти всё работает из коробки, то разница между ST и каким-нибудь NXP с точки зрения старта разработки для вас будет не меньше, чем между ARM и RISC-V. Периферия разная, подходы к работе с ней разные, к документации разные — всё едино садиться и неделю изучать, чего там наворочено, хотя формально вы вроде бы с одного Cortex-M3 на другой Cortex-M3 переходите.

Поэтому если хочется новизны, в учебных целях можно брать RISC-V и играться с ним, общие навыки наработаются такие же, как на любом Cortex'е.

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

Сейчас если новый проект, то я предпочту взять CH32 на ARM или RISC-V. Они банально доступнее.

У меня последний проект вообще на PIC10F200 был, и пользовался бурным успехом, а следующий намечается на ATtiny13A. А через один — скорее всего, на одном из клонов STM32F103C8T6, но и эта замена там уже с очевидностью будет не самым занятным кульбитом.

Потому что выбор камня определяется не тем, за что народ топит. И даже не личными предпочтениями.

Нет, чтобы подключить USB-сетевуху нужна вот такая технология - https://habr.com/ru/post/676120/

Ждать что-то конкурентное на RISC-V для малых встраиваемых систем я думаю надо не раньше чем лет через 5.

Тогда кончатся гарантируемые сроки поставок большинства начатых малых SoC на ARM-ах, которые успели раскрутить до кризиса.

А сейчас я бы ориентировался на ARM-Cortex M85

Ждать что-то конкурентное на RISC-V для малых встраиваемых систем я думаю надо не раньше чем лет через 5.
Esp не нравится?

Следующим открытием для автора, очевидно, будет какой-нибудь esp8266 с WiFi и кучей библиотек в разных средах.

Я бы посоветовал создавать проекты для микронтроллеров с помощью CMake, т.е. без привязки к какой-то определенной IDE или редактору. Отладка - OpenOCD. В VSCode, Eclipse всё это прекрасно работает, есть всякие удобные плагины. Может напишу как-нибудь небольшой туториал по связке CMake + VSCode + OpenOCD, так как я сам себе настроил.

VSCode как редактор удобный. Отладчик там, который плагином, мне не понравился.

Я использую jlink для подключения по swd, а для отладки Ozone. Запускается прямо из vscode. Отличный отладчик, очень удобно. Ну и все остальные преимущества jlink - RTT, SystemView, при необходимости прошивка флешек по spi и прочее. Вместо openocd использую или прошивку из Ozone или при помощи драйвера jlink (их утилита консольная умеет работать в "пакетном режиме", с параметрами из командной строки).

У такого подхода, когда вместо комбайна IDE используется связка из нескольких инструментов, есть свой большой плюс - любой инструмент можно заменить. Не нравится vscode? Можно хоть vi использовать. Нужна другая версия компилятора? Без проблем. Для многих платформ есть toolchain со сборкой через makefile. Соответственно для того, чтобы попрограммировать под esp32, nfr52, avr или что-то ещё, не нужно менять удобную и привычную среду написания кода.

какой смысл переходить с десктопа на мк? Там платят на 20-30% ниже, и ответственности куда больше(зависит конечно от области)

Не всё в этом мире измеряется деньгами, коллега.

Пробовали подключить к linux машине? У меня почему-то на линуксе определяется как usb-com преобразователь. Пробовал подключить f4discovery с прошивкой от fetistova определился как rndis, но ip не получил.

у меня на ubuntu запускается. смотрите, что у вас в dmesg

...

Из библиотек есть ещё stm32plus - с претензией, но слегка подзаброшенная.

Не удивлюсь, если скоро на хабре появится статья о том, как в коллективе электронщиков появился программист, который, раздувая щеки, рассказывал про контроль версий и структуру проекта, а сам не понимал, как землю развести по схеме)))

А если серьёзно, то конечно требования к прошивке МК сильно возрасли за последние десять - пятнадцать лет. И теперь целесообразно разделять работу над проектом на софт и хард.

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

Кмк решение почти как с версионированием кода копированием проекта. Лучше это делать в notion/obsidian.

А подскажите, я с этой платой вообще не знаком, а есть ли возможность эмуляции вайфай флешки (устройство прикидывается флешкой, по факту же представляет доступ к первому диску)?

Недавно был тут материал про есп32 в такой роли, но скорость там никакая. Да и автору не нужно было mtp или что то более современное. А у меня глупый телевизор lg, который умеет читать файлы с флешки, но не умеет больше ничего.

Пробовал сделать на своем одноплатнике, но именно флешкой прикидываться не получилось.

я так понял, вы хотите "пробросить" в телевизор сетевой диск. Готовых проектов под это наверное фиг найдешь, проще купить приставку на андроиде наверное. андроид будет заходить по сети к вам на комп и "показывать мультики".

А вам надо самому сделать или можно просто купить? Если второе — продаются sd-карты с wifi, но скорость доступа у них тоже обычно не очень большая. Альтернативно — в зависимости от поколения телевизора LG может быть хак с добавлением поддержки usb сетевых карт, в таком случае он будет нормально работать по сети сам.

Автор пишет

"Меня ждал сюрприз, когда поехала кодировка немногочисленных комментариев в коде. Оказалось, что все файлы были в CR1251."

foreach($file in get-ChildItem *.c -Recurse) { (Get-Content -Path $file) | Set-Content -Encoding UTF8 -Path $file}

Я не понимаю где и как запускать этот скрипт. И что скрипт сделает с файлом, который уже в UTF8? (грамотное поведение - не трогать) При попытке запустить код ожидаемо получил
bash: syntax error near unexpected token `$file'

Вот рабочее решение. Помогает перевести файлы проекта Microchip Studio/Atmel Studio в UTF8.

Устанавливаем
https://github.com/nijel/enca
Заходим в папку с исходкиками
cd ПутьКПапкеСИсходниками

Запустим скрипт перевода всего, что в русских кодировках (russian: KOI8-R CP1251 ISO-8859-5 IBM866 maccyr) в UTF-8.
find ./ -name ".c" -o -name ".h" -type f | while read file; do enca -L ru -x UTF-8 $file; done;

foreach($file in get-ChildItem *.c -Recurse) { (Get-Content -Path $file) | Set-Content -Encoding UTF8 -Path $file}

Это синтаксис powershell в винде. Вполне ожидаемо, что bash такое не оценил.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории