Pull to refresh
15
0
Игорь@Smoke666

User

Send message

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

А подскажите куда по графическим языкам глянуть?

Типовую VMLua не кручу, потому что мне на фиг не надо программировать контроллер из под виртуалки, не решаются так мои системные задачи и ПЛК для АСУ ТП так не делаются. Мне нужно программировать только бизнес-логику. Что бы править ее без перекомпиляции ядра и пускать в нее прикладных инженеров. А корутину пользую потому что так проще решить задачу - мне нужна явная передача управления из цикла скрипта обратно в процесс RTOS, с сохранением контекста скрипта, и явный возврат обратно в скрипт. И статью я собственно писал именно по это, что вот какая классная штука Lua, можно приспособить как ПЛК в маленьких реалтайм системах на раз-два.

Все, я понял вашу мысль. Вы абсолютно правы, но у меня специфическая штука, у меня нет главного стейта и основного стека:) У меня есть только стейт корутины, и корутина делает уступку только хосту. Т.е. по сути у меня нет корутины:) Я использую ее механизм для передачи управления между хостом и прикладной функций Lua, которая у меня бесконечный цикл и никогда не завершается. Можно было сделать и без коруитны, но поскольку у меня на Lua по сути написана итерация прикладного алгоритма (или функция выходных значений от входных если в терминах релейки), мне удобно через resume\yield передавать входные переменные и забирать выходные. Плюс явная уступка хосту дает мне возможность контроля над временем итерации прикладного алгоритма. И собственно в статье я про это и пишу, про использование механизма корутины, и в этом случае не нужно отдельного стейта, все живет в основном.

Если имеется ввиду внешний флэш, то да, есть такой вариант, но в любом случае основное ограничение в системе RAM. Флэша больше чем виртуальный памяти Lua машины не нужно.

Нет, я не использую файловую систему вообще. Я гружу байт код в выделенный сектор флеша и при старте система пытается запустить байт-код от туда. Файловая система может быть оправдана чисто с инструментальной точки зрения, usb mass-storage к примеру. Но вот у меня девайс по CAN скрипт получает, зачем там файловая система?

Для корутин не нужно отдельного стейта. Если она одна, то ее можно размешать в основной стейт без проблем.

Ну расширение расширениями, а доступ к памяти это уже не про ядро, а про архитектуру самого чипа. Физическим флэшем рулит не ядро, а контроллер флэш видимо. И пока адреса попадают в кэшируемую область там все на системной частоте. Т.е. шина контроллер фелш/ядро - высокоскоростная и 32-х битная. А вот дальше оно тормозиться. Но spi флэши не то что бы моя компетенция, не знаю какая там может быть производительность в принципе. В случае с WCH лишь могу предположить, что там все завязано на тех. процессы и наработки на младших 48Mhz ядер, с которых WCH и начинали. Раскатали какие-то готовые решения и тех. процессы. Жду релизов этого года от WCH, там как минимум двухъядерный H417 и неожиданно V305CC в 48-ногом корпусе с памятью как 64-х ногих братьев. Т.е. что принципиально новое они по памяти походу сделали. Но ждем-с...

Ну и это не однобитный доступ. По документам WCH на младшие ядра, 20МГц это не скорость физического SPI, это скорость внутренней шины. Что там у них на физической шине науке не известно.

Смотрите, давайте очень грубо прикинем. Я в реальном проекте туда перекинул инициализацию периферии. 12кб кода на -O3 оптимизации живет без кэша. Ну ок, имеем 12*1024 байта. Пусть грубо это поток команд из 3072 шт. что для такой оптимизации может быть близко к правде. Ну реально, какая на фиг разница какая там частота, это же все равно мегагерцы, миллионы операций в секунду:) Даже если оно не 20 микросекунд стартовать будет, а 200, как это увидеть?:) Поэтому моя стратегия, кидать туда инициализацию, которая обычно линейная и выполняется один раз при старте, но места может занимать прилично. А системный код циклический, там замедление будет скорее всего уже ощутимо.

Спасибо, может перепишу когда уляжется все в голове. Сабж мой личный ад последней пары дней, написал с терапевтической целю:)

RVF расширение выбрать и все работает. Но я то про логику IDE. От визарда IDE я ожидаю что мне настроят проект под выбранное ядро:) IDE то не сторонняя, а своя. Вот и все.

В IDE это выглядит в духе конструктора "собери сам". Не очень понятно кто такой RVXW.

Ну да, сам дурак, слишком долго жил в мире розовых пони и CubeIDE:) Счас проверил как перетаскивал проект на Geehy F405, таки да, в примерах под Eclipse у них FPU выключен. Просто раз WCH запилили свой IDE на Eclipse, то логично хотя бы в примере, который называется FPU, врубить этот самый FPU в настройках проекта:)

Еще незнаю, особенность это IDE для WCH или чего то еще, то если в проект для CH32V2 притянуть библиотеку math.h, то в проект линкуется вся библиотека целиком, а не только используемые функции. С ходу плюс примерно 15 кб флеша. Со string так же.

Рискну предположить что это про GCC. Я все проекты MoutRiver собираю на оптимизации -Оs. Начинал с портирования рабочего проекта с ST32F103R. Без оптимизации вообще не лезет в CH32V203R (FreeRTOS + CanOpenNode). Прям катастрофический. C оптимизацией примерно тоже самое по размеру что и STM-й код (собранный на -O2) и разница где-то 15-20КБ. Глянул на текущие .lst файлы, вроде как ничего лишнего из библиотек нет ни на V203, ни на V307.

У нас разные представления об экосистемах:)

Речь идет о примерах от WCH? Так-то никто не запрещает указать архитектуру -march=rv32imafc_zicsr и пользоваться FPU в свое удовольствие

Я пишу про работу из под IDE. Обычно, если производитель дает примеры под тот же чистый Eclipse, не говоры уже про IAR и Keil, в настройках проекта делается вся конфигурация. Тут, для CH32V3XX даже в примере с названием FPU, собственно FPU не настроен. Из встроенного в MoutRiver генератора проектов под CH32V3 тоже не включается FPU. Так что я исключительно про экосистему WCH.

Так вроде BT не то что бы опен-сурс, видимо дело в лицензировании, поэтому и закрыто все А вот почему не дают доступ к RF непонятно, но какая-то логика в этом определенно есть.

TMOS же менеджер стека, единое с ним целое. А вот на кой черт они 4 RTOS выложили без примеров интеграции с Ble...

Согласен полностью. А еще мы не знаем на чем сумрачный Китайский гений летает в космос и делает едрены бомбы:)

Вроде как (не уверен) у Fudan в целом все свое. Может еще кто есть, кто просто не распространён в РФ или не хочет приходить.

Думается в поставках сами производители не отказывают, но и двигать продукцию в РФ не рвутся (включая клонов STM). Вот только кто из российских дистрибов в одно лицо потянет раскрутить новый бренд, затаврить склад номенклатурой, плат отладочных притащить? C STM клонами по крайне мерее можно хоть как-то спрогнозировать спрос.

Ну деньги то сами себя не заработают:) Совместимые корпуса, знакомая периферия, низкая цена - норм стратегия по выходу на рынок. Кому Китайцы глобально нафиг сдалиcь лет 5 назад, когда F103 был меньше бакса? А в пандемию, половина рынка услышала от STM - несите ваши деньги и поставим вас в очередь на производство через пару лет, а вторая увидела F103 по 15USD:) Инженерная школа опять же таки сама себя не создаст. Что бы делать прям свое, без оглядки на предыдущие наработки и старших товарищей, надо и рынок сбыта иметь как у STM и бюджеты разработки сопоставимые. Посмотрим на следующие генерации. А пока да, плачем и жуем кактус:)

О, нет. Я просто посмотреть че вообще такое BLE запустил, так сказать для расширения кругозора:) Поскольку я других стеков ble не видел, мне сложно судить о корявости решения от wch. Если чисто о впечатлениях, они стек перетащили откуда-то сбоку. Он идет в составе операционки TMOS единой библиотекой на asm. В TMOS можно вкидывать callback на свои прикладные задачи. TMOS вытеснять задачи не умеет, так что не рассчитал время прикладного процесса, сломал стек:) Отсюда моя вторя ссылка на проект под RT-Thread. Как я нашел инфу на китайском сапорте, CH581 и прочие мелкие ядра, были экспериментом по закинуть к ble чутка периферии. А CH32V208 это эксперимент по накинуть на эксперимент с мелкими ядрами нормальную машину. И по моим ощущениям они сами не очень понимают что у них получилось:) Как итог, V208 сырой прям жесть. Весь SDK натянут с CH581 и прочих чахлых машинок, они мне не интересны, не смотрел туда. Но судя по китайском саппорту, у себя на родине они вполне популярный продукт.

Спасибо за замечание. Поправил.

1. Можно послушать лекции с жутким акцентом https://m.youtube.com/watch?v=6NE61BdSvqA На том же канале еще 3 части. Вот код к этим видосикам на оф. аккаунте WCH на Git. https://github.com/openwch/ch32_training_documentation/tree/main/04_remote_control_car

Это вообще единственное что официально есть про CH32V208:)

2 .Самое интересное что я накопал вот https://codeload.github.com/treideme/reaction-trainer/zip/refs/heads/master По проекту у чувака есть немного инфы на его стайте, искать надо, не помню уже. Найти можно. Там суть в чем, чувак запустил на CH32V208 RT-Thread, а в ее потоке запустили TMOS со стеком Ble.

1

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity

Specialization

Бэкенд разработчик, Инженер встраиваемых систем
Ведущий
From 200,000 ₽
C#
C++
Английский язык
Git
.NET
Visual Studio
C
Многопоточность
Программирование микроконтроллеров
Windows Forms