Pull to refresh

Comments 39

Круто конечно, но АРМ7… кажется перебор. вот бы питончика на контроллеры попроще.
Получается вроде бы как и не малинка, но уже почти…
Интересно как с эффективностью выйдет? Получится ли утилизировать 168Мгц по максимуму, или он будет работать на уровне 16Мгц контроллеров из-за реализации языка?

Да и скрипт будет мигать светодиодом раз в ДВЕ секунды.
В апреле узнаем. Хотя кто-то может и сам сделать плату, исходники вроде бы в январе станут доступны.
Но я все-таки подожду готового продукта)

Да, конечно, раз в две секунды, исправил, спасибо
Не получится утилизировать 168Мгц оптимально. Настольные версии питона медленнее кода на сях в 2 -200 раз. Тут скорее всего будет то же самое. Идея питона не в быстродействии, а в простоте написания кода. Это же своего рода basic сегодняшнего дня.
Не понятен выбор имено Python'а. Тот же Lua куда проще.

Мало того, для eLua уже вон сколько контроллеров есть, в том числе и на ARM7.

Micro Python предлагают за £20, и это «early bird», то есть только для тех, кто по предоплате, а NetDuino можно взять за $29.95 в розницу и за ~$24 оптом. Уверен, китайцы скоро будут клепать за $12 с бесплатной доставкой.
ИМХО, на вкус и цвет… Кому-то python больше нравится.

И, пожалуйста, не путайте ARM7, который является семейством ядер (в рамках спецификаций от ARMv3 до ARMv5) и спецификацию ARMv7, по которой сделаны семейства ядер Cortex-M, Cortex-R и Cortex-A.

eLua работает как на некоторых платах с ARM7, так и на некоторых с Cortex.
Верно, что-то мне подумалось, что тут решили использовать ARM7. Очевидно, что ARM7 Python'а никак не потянуть.

На M4 есть замечательный и очень популярный STM32F4DISCOVERY, аж за $14.58 за штуку.
Так что тут возникает вопрос — зачем проектировать плату, если уже есть плата дешевле, которая при этом наверняка ещё и лучше.

Если кто-то конкретно за Python готов переплатить в 2 с лишним раза это, конечно, его личное дело. С моей точки зрения оба языка сравнимы по возможностям, но Lua более легковесен.
У этих языков разные задачи и существенно разные возможности.
Lua — embedded-язык. Создавался с этой целью, из этого же вытекают его ограничения.
Python — general-purpose язык, с неплохой объектной моделью, серьезными возможностями метапрограмирования и т. п.

Так что тут возникает вопрос — зачем проектировать плату, если уже есть плата дешевле, которая при этом наверняка ещё и лучше.

Данный проект, вероятно, имеет такую не столько из-за железки (которая копеечная), сколько из-за разработки интерпретатора под неё (с соответствующим возможностям железки memory footprint'ом).

Кроме того, эта плата — скорее embedded решение, которое можно применить в качестве компонента своего устройства. А stm32*discovery — это evaluation board, чтобы посмотреть возможности процессора.
Раз уж затронули тему метапрограммирования, то интересно, как вы видите применение этого в программировании контроллера?
Даже при поверхностном изучении Lua можно узнать, что там тоже есть возможность метапрограммирования, начиная от метатаблиц объектов.
UFO just landed and posted this here
Сухие данные:
Фото
Плата
Чип
Процессор
Частота, МГц
Flash, МБ
RAM, КБ
Цена


Micro Python
STM32F405
M4
168
1
192
??? £20+


DISCOVERY
STM32F407VGT6
M4F
168
1
192
50.8 x 17.78 mm
$15


MicroElectronica MINI-M4
STM32F415RG
M4F
168
1
192
50.8 x 17.78 mm
$29



Зачем делать с нуля плату, у которой уже есть аналоги под предлогом возможности запуска урезанного Python, и которая будет дороже аналогов, зачем собирать на это дело £15,000 (да, понимаю, что часть денег уходит на рассылку и производство плат)? Разработка схематики не должна занять много времени у опытного схемотехника, учитывая, что все исходные файлы для железа и софта DISCOVERY выложены (см. gerber files, BOM, schematics, firmware package) в открытом доступе.

Ещё хочу обратить ваше внимание вот на это:

Micro Python will be ported to run on a microcontroller of your choice. The microcontroller must have the capabilities, and you are responsible for set-up costs for the development board and/or software. Get in touch for details. Also includes a Micro Python board.

В чём тогда сакральный смысл проектировать именно плату?
Чтобы отдать all-in-one, наверное. Большинство предпочтет не портирование с пересылкой dev-board/eval-board разработчику и оплату ему софта для разработки, а готовую стандартную плату.

Разработка схематики не должна занять много времени у опытного схемотехника

Здесь скорее опытный программист, а не схемотехник, судя по желанию переписать python для такого footprint'а.

Повторюсь:
Данный проект, вероятно, имеет такую не столько из-за железки (которая копеечная), сколько из-за разработки интерпретатора под неё (с соответствующим возможностям железки memory footprint'ом).


Так что целей может быть и несколько. Challenge, получение заказа на большую партию, чтобы параллельно сделать значительную партию для себя, мотивация написать интерпретатор.

Это краудфандинг. Если люди готовы это профинансировать — то это их личное дело. Эффективность никого не волнует.
Есть еще такая замечательная штука, как 86Duino, она вообще на x86 и с кучей ОЗУ. Или, к примеру, Raspberry Pi. Цены сопоставимые.
Я бы тоже попробовал. Но вам шашечки или ехать?

This is a preliminary release for internal team review.

И так уже год, причём активность заметно спала. Не для embedded систем синтаксис Ruby придумали. Ууда лучше бы слегка упрощённый JS подошёл.
Да, но и простоту написания кода можно совместить с быстродействием. Тот же Васик для МК порой весьма быстро работает, как и программа написанная на ассемблере.
Я так понимаю, что разница между Python и Micro Python как между JavaScript и asm.js
Во первых, ARM7 здесь ни при чём. Только спецификации ARMv6 и ARMv7. ARM7 — это старое ядро, вытесненное Cortex-M.

Здесь ядро — ARM Cortex-M4 + DSP (ST STM32F405). Профили (Cortex-R, Cortex-A и Cortex-M) появились в спецификации ARMv7.

Raspberry Pi — на ARM11 (Broadcom BCM2835, ARM1176JZFS-based SoC). Это ядро относится к спецификации ARMv6.
Using Python decorators, functions can be optionally compiled to native machine code, which takes more memory but runs around 2 times faster than byte code. Such functions still implement the complete Python language.


Memory usage is minimised by storing objects in efficient ways. Integers that fit in 31-bits do not allocate an object on the heap, and so require memory only on the stack
.

There are 4 types of code emitters, selectable per function by function decorators: (compressed) byte code, native code, native code with native types, and inline assembler


Python exceptions are handled using a variant of setjmp/longjmp. This reduces the amount of flash and RAM needed to implement exceptions.


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

Size of int object: 4 bytes, stored on the stack or directly in a tuple/list/dictionary.

Например int в x64 версии питона занимает занчительно больше места:
>>> import sys

>>> sys.getsizeof(5)

24
Причём тут питон? Это платка с арм процессором.
Как при чем? На микроконтроллер сразу залита специальная версия Python, кидаете просто на флешку тесктовый файл с кодом — и вперед. Не надо никаких сред для программирования, как для Arduino.
>>На микроконтроллер сразу залита специальная версия Python

Тю :)
Есть уже готовая штука с питоном на борту jt5.ru/shields/gsm-shield/
В модулях Телит питон прилагается и под пользовательские скрипты тут выделено 1.9 MB
Шилд юзается как вместе с Ардуино, так и по отдельности.

Помимо I/O эта штука еще умеет:
— Синхронизировать время из интернета
— Выходить в интернет, слать/получать СМС (GSM, GPRS)
— Сканировать GSM-диапазон, показывать доступные соты (разных операторов), уровень сигнала и системную инфу по ним.
— Jamming detection (детектор глушения сети)
Это будет удобнее традиционной заливки прошивки, если можно будет подключать саму плату как USB mass storage, чтобы не заниматься сексом с платой, пихая и вынимая MicroSD после каждой правки.
И так можно подключать. Вообще вот режимы USB: USB serial, USB mass storage и USB HID
Так из коробки умеет LPC1343 цепляешь его в USB и он видится как флешка обьемом 64кб, кидаешь туда хекс файл и считай прошил. Ну и один камрад такой же загрузчик написал для STM32F103C8
Даже для AVR такое есть.
Да ладно? массторадж бутлоадер?
да, видел, но не запомнил где, ибо мне не надо
Что-то я погуглил, и теперь жалею, что в закладки не положил…
Про эту фичу я знал, но тогда уж удобнее через JTAG заливать из IDE, нежели собирать прошивку и кидать на «флешку». Я-то про MicroSD говорил: открываешь плату как флешку на компе, дописываешь пару строк, сохраняешь, жмёшь на плате Reset — и всё работает. Чтобы совсем без лишних движений.
Добавил видео, там прямо как вы написали, «без лишних движений»
Есть параллельный проект, Micro Python — интерпретатор для embedded сред (точнее сказать для ARM/A32 с набором Thumb-2, т. е. ARM Cortex-M3 и старше).
Я ничего не понял. 192кб. Питон. А где это все исполняется то? Куда сам питон загружается?
Написано, что бинарник, включающий парсер, компилятор, среду исполнения и сборщик мусора, весит 60 КБ.
Сколько виртуальная машина занимает в ОЗУ — пока не ясно.

Что значит «куда сам питон загружается»? Там же не просто версия под ARM грузится, а используется своя реализация с оптимизацией по памяти. То есть питон уже будет прошит на плате.
Я-то думал, это реализация интерпретатора пайтоновского байткода в железе…
Интересно, можно ли такое сделать на ПЛИС?
А почему нет? Только .pyd-модули работать не будут без дополнительных костылей, типа запроса на вызов нативного кода на хосте.
И вы не одиноки в своём заблуждении… :)
+1, именно этого же и ожидал от поста.
Поменял первое предложение, надеюсь, так более точно
Sign up to leave a comment.

Articles