LINUX.ORG.RU

Проект elk развивает компактный движок JavaScript для микроконтроллеров

 ,


0

0

На данный момент доступна версия движка JavaScript elk 2.0.9. Проект нацелен на создание прошивок для платформ с ограниченными ресурсами, таких как ESP32 и Arduino Nano. Сам движок потребляет малое количество ресурсов: 100 Б ОЗУ и 20 КБ флеш-памяти. JS-код выполняется в изолированном от основного кода окружении. Используется интерпретатор, а байткод не генерируется.

>>> Подробности



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

Ответ на: комментарий от pfg

в пиках атмегах что-то есть особеннное с резевированием/отказоустойчивостью ??

Во-первых, речь идет о резервировании устройства, а не внутри устройства.

Во-вторых, да, то, что считается у ЛОРовцев и прочих абдуринщиков недостатком контроллера - его скудный набор и простое ядро - в промке является преимуществом. Контроллер аппаратно не умеют творить херню, в отличие от кортексов. Но это длинная тема и уж точно не для лора.

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

У белоручек всё довольно хорошо

Действительно. 1-wire не влезает в тиньку, приходитмся STM32 брать. И ладно если б это был единственный пример.

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

А можно было на каждый администраторский чих писать на Си, компилировать, загружать

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

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

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

Повторяю: ты пишешь о вещах из параллельной вселенной. Ты контроллер вообще держал в руках? Только честно.

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

приходитмся STM32 брать

А что? В твоём примере реально в итоге более толстый МК взяли только потому, что программист не осилил с питона на си уйти?

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

Занимаюсь именно этим, разрабатываю различную электронику для вагонов и локомотивов на Cortex M7 и на прочей самой современной элементной базе. Многое из разработанного оборудования уже курсирует по всему миру(не только в России). Так же проектировал системы оповещения для промышленных объектах тоже на STM32H7.

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

в мк в прерывании может быть заложен развесистый высокоуровневый программный интерфейс, можно вспомнить работу с HDD времён DOS - команда форматирования диска целиком в BIOS, вызов по прерыванию. Зачем городить велосипед?

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

разрабатываю различную электронику для вагонов и локомотивов на Cortex M7 и на прочей самой современной элементной базе

Конкретнее давай. Табло для объявления остановки? Не интересно. Давай про ответственные узлы.

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

Обычно в микроконтроллере C-код уровня питоноскриптов - он связывает всё то, что зашито в контроллер.

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

Системы жизнеобеспечения, кондей, система диагностики буксовых узлов, система управления генераторной установкой, а так же специализированный ПЛК, где как раз и применяется LUA.

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

В Н7 хорошо то, что туда ОЗУ и ПЗУ добавить можно без особых проблем. А какой вариант Lua нынче во встройке используют?

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

Системы жизнеобеспечения

В вагонах. Это какие? регенерация кислорода в высокогорье?)

кондей

Офигеть!(нет)

система диагностики буксовых узлов

Диагностики. Ну допустим. Надеюсь частотники приводов не на кортексах там?

система управления генераторной установкой

Это что-то размытое. Что конкретно она управляет? Вернее управляет она какой-то другой железкой, не так ли? А на чем та железка?

а так же специализированный ПЛК, где как раз и применяется LUA.

Ты мне лучше сертификат на этот ПЛК покажи. Его в 99% промки не пускают небось.

Если ты разраб, говори конкретнее. Если я, к примеру, когда-нибудь узнаю, что боинги с арбузами стали использовать модули контроля синхронности выпуска закрылков на основе кортексов, вместо специализированных контроллеров от Honeywell, то я нахер на несколько лет перестану пользоваться самолетами…

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

Ну и норкоманы там.

Ну чувак в какой-то конторке по производству вендинговых аппаратов работает, ему можно :))

В духе времени.

В том и проблема)

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

Вопрос не в «нужно» / «не нужно», а в: «вам какое дело кто и что пилит?»

З.Ы. Я бы предпочел forth на МК (зачем мне ECL)

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

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

anonymous
()
Ответ на: комментарий от apt_install_lrzsz

И зачем использовать sh для операций вида «поменять бит в регистре» городить командную оболочку, если это запросто делается на си (если кодер не полный овощ конечно)?

А ты еще попробуй найти кодера не овоща:

  union bitdata {
    struct {
      unsigned int bit1 : 1;
      unsigned int bit2 : 1;
      unsigned int bit3 : 1;
      unsigned int bit4 : 1;
      unsigned int bit5 : 1;
      unsigned int bit6 : 1;
      unsigned int bit7 : 1;
      unsigned int bit8 : 1;
    };
    unsigned char byte;
  } first_byte, second_byte;


    for ( j = 0; j < bytes_count; j++ ) {
      unsigned char t;

      ret = gzread( gz_fd, &t, sizeof( t ) );
      if ( ret != sizeof( t ) ) {
    printf( "Failed to read file %s: %s\n", argv[i], strerror( errno ) );
    gzclose( gz_fd );
    return EXIT_FAILURE;
      }

      first_byte.byte  = t;
      second_byte.byte = ready_bytes[j];

      first_byte.bit1 = first_byte.bit1 == 0 && second_byte.bit1 == 0 ? 0 : 1;
      first_byte.bit2 = first_byte.bit2 == 0 && second_byte.bit2 == 0 ? 0 : 1;
      first_byte.bit3 = first_byte.bit3 == 0 && second_byte.bit3 == 0 ? 0 : 1;
      first_byte.bit4 = first_byte.bit4 == 0 && second_byte.bit4 == 0 ? 0 : 1;
      first_byte.bit5 = first_byte.bit5 == 0 && second_byte.bit5 == 0 ? 0 : 1;
      first_byte.bit6 = first_byte.bit6 == 0 && second_byte.bit6 == 0 ? 0 : 1;
      first_byte.bit7 = first_byte.bit7 == 0 && second_byte.bit7 == 0 ? 0 : 1;
      first_byte.bit8 = first_byte.bit8 == 0 && second_byte.bit8 == 0 ? 0 : 1;

      ready_bytes[j] = first_byte.byte;
    }

Это на проде 10+ лет.

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

«- Вы не любите кошек? Вы, просто, не умеете их готовить ;)» Чего Вам так не хватает в Lua, что есть в JS? Или это на уровне подсознания и детских обид?

anonymous
()
Ответ на: комментарий от PPP328

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

А что эта портянка делает-то? Пишет результат побитового ИЛИ двух байтов в первый байт что-ли? Не вчитывался.

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

Все у всех запускается, я на Arduino Nano каждый релиз тестирую.

На STM8, Cortex-M0/M4F есть серийные девайсы.

shkolnick-kun ★★★★★
()
Ответ на: комментарий от PPP328

Это на проде 10+ лет.

Лол. Тот случай, когда наняли студентов и сделали ХХивП.

shkolnick-kun ★★★★★
()
Ответ на: комментарий от Oberstserj

Если я, к примеру, когда-нибудь узнаю, что боинги с арбузами стали использовать модули контроля синхронности выпуска закрылков на основе кортексов, вместо специализированных контроллеров от Honeywell, то я нахер на несколько лет перестану пользоваться самолетами…

Я больше 15 лет пользуюсь самолётами только как средством доставки небольших грузов под чужую ответственность.

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

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

Куда выше-то? Зачем?

Как зачем — чтобы решать задачи предметной области в терминах из предметной области, конечно же. Без вырывания последних волос на жопе.

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

Когда узнаешь может быть поздно.

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

А так да, ты к сожалению прав. Кругом одни макаки сейчас.

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

Да уже даже не знаю, пугаться, хвататься за голову, троллить?…

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

Как зачем — чтобы решать задачи предметной области в терминах из предметной области, конечно же. Без вырывания последних волос на жопе.

Это прекрасно канеш, но какой ценой?

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

Я больше 15 лет пользуюсь самолётами только как средством доставки небольших грузов под чужую ответственность.

Бедняжка.

А я вот, знаешь, пока с удовольствием тушку свою перевожу на самолетах. И пока есть какая-то уверенность, что посреди полета Рейкьявик - Осло самолет не захочет «обновиться» :) Потому что макак пока еще не подпускают к ответственным узлам. Пока еще…

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

пока метапрог на микроконтроллеры не завезут – они не нужны

anonymous
()
Ответ на: комментарий от vM

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

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

Не. Пиарят свою проприетарщину с двойным лицензированием.

shkolnick-kun ★★★★★
()
Ответ на: комментарий от Oberstserj

Это тот случай когда я просто счастлив бы был ошибаться! Но увы - где не надо - прав…

anonymous
()

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

Есть же lua и миркопитон.

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

хех, резервирование устройства решается на уровне ПО и связи его с резервируемым. аппратная среда тут сильно в стороне.

скудный набор команд <не тождественно> качественному и отлаженному ядру :)

контроллер аппаратно может сотворить херню, только если его так запрограмируют.

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

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

1wire можно програмно сделать на GPIO. помнится даже уарт как-то хитро прикручивался, чтобы гнать байтики через аппаратный буфер. давай исчо пример.

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

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

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

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

он уверен что програмки на аттини лучше будут работать в боингах чем програмки на кортексах.
ну про обновление вообще молчу - понятно откуда ветер в попе свищет :)

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

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

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

а шо в микроконтроллерах такого особенно по сравнению с процессором общего назначения ??
базовый набор команд что для проца общего назначения, что для микроконтроллера будет близок/идентичен - математика, работа с памятью, условные операторы и чтотот там еще….
отличие будет в куче кучей аппаратных модулей специального назначения.​
в микроконтроллере они будут ориентированы на упрощение работы с различными интерфейсами и датчиками, а в процах общего назначения (я так понимаю это в сторону десктопных копмутеров, хотя имхо не верно) будет модули ускоряющие вычисления.
а в принципе своей работы они будут идентичны и принадлежать типу SISD вычислений.

а вот сигнальный процессор уже фундаментально будет отличаться от проца общего назначения ибо будет уже тип SIMD или MISD вычислений. там мыслить надо будет немношк по другому.

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

Я ещё спляшу на ваших могилах.

Что угодно, лишь бы новый язык не учить.

anonymous
()
Ответ на: комментарий от pfg

Я же написал - дополнительная обвязка с очень высокоуровневым интерфейсом, когда программирование на том же Це или даже ассамблере по сути является «клеем» для готовых «кирпичиков» прерываний-значений регистров... Т.е. по сути готовые интерфейсы к куче хардварных устройств.
Это как модем - можно использовать железку с UART, а можно ругаясь писать эмулятор UART на C или радостно использовать для его разработки JS. Вы пвтаетесь доказать, что теперь пиать эмуляторы таких железок сильно проще. С другой стороны народ не понимает, нафига оно надо при готовом железе.

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

Ну там человеку дали задание переписать с перла на си, а то медленно. На перле кто-то додумался байты and-дить побитово. Человек подумал что так и должно быть и сделал И побитово.

Тут вообще джекпот: результат булевой операции приводится к 0/1, main на 2000 строк, битовое И по-битово, чтение из файла по одному байту, про отсутствие интринсиков вообще промолчу - тут можно было по 512 бит разом обрабатывать читая по 4КБ (файлы 20+ метров).

Там еще много всего.

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

хех, резервирование устройства решается на уровне ПО и связи его с резервируемым. аппратная среда тут сильно в стороне.

До свидания!

Oberstserj ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.