Live data from Hacker News

Run Erlang/Elixir on Microcontrollers and Embedded Linux

grisp.org

41–50 of 55 posts

Re: Run Erlang/Elixir on Microcontrollers and Embedded Linux

#41
post #35
post #25

Earlier quoted context omitted.

Beam only promises soft realtime. When switching processes, runnable high priority tasks will be chosen before runnable normal or low priority tasks, and within each queue all (runnable) tasks run before a task runs again. But beam isn't really preemptive; a normal or low priority task that is running when a high priority task becomes runable won't be paused; the normal task will continue until it hits its reduction…

I spoke with Peer (the creator of Grisp) about this at Elixirconf earlier in the year, and I'm not an expert here so I hope I don't misrepresent his comments: Grisp puts enough controls on the runtime that soft-realtime becomes hard-realtime for all intents and purposes, outside of problems that also cause errors in hard-realtime systems. (Also, thanks Peer for being tremendously patient with a new embedded developer…

I did the same workshop some years ago with him also, very nice and patient guy, I can recommend attending if anyone is curious how microelectronics actually work :}

Re: Run Erlang/Elixir on Microcontrollers and Embedded Linux

#42
post #38
post #5

> MCU-class footprint (fits in 16 MB RAM) That is absolutely not an MCU class footprint. Anything with an "M" when talking about memory isn't really an MCU. For evidence I cite the ST page on all their micros: https://www.st.com/en/microcontrollers-microprocessors/stm32... Only the very very high performance ones are >1MB of RAM.

Espressif calls the ESP32 an MCU, and at least 1/3 of ESP32 models have >1MiB of onboard PS ("pseudo-static") RAM (i.e. DRAM with its own refresh circuit.) At least 20 of the ESP32 models do have 16MiB. (And I would argue that the ESP32 is an MCU even in this configuration — mostly because it satisfies ultra-low-power-on-idle requirements that most people expect for "pick up, use, put down, holds a charge until you p…

Even ESP32, the quintessential "punches above its weight" MCU, only packs 520KB of RAM by default. At the time of its release, that was a shitton of RAM for an MCU to have!

If you ship MCUs with 16MB of RAM routinely, you're either working with graphics or are actually insane.

Re: Run Erlang/Elixir on Microcontrollers and Embedded Linux

#43
post #38

Earlier quoted context omitted.

Espressif calls the ESP32 an MCU, and at least 1/3 of ESP32 models have >1MiB of onboard PS ("pseudo-static") RAM (i.e. DRAM with its own refresh circuit.) At least 20 of the ESP32 models do have 16MiB. (And I would argue that the ESP32 is an MCU even in this configuration — mostly because it satisfies ultra-low-power-on-idle requirements that most people expect for "pick up, use, put down, holds a charge until you p…

Even ESP32, the quintessential "punches above its weight" MCU, only packs 520KB of RAM by default. At the time of its release, that was a shitton of RAM for an MCU to have! If you ship MCUs with 16MB of RAM routinely, you're either working with graphics or are actually insane.

The MCU I'm currently working with has 12KB of RAM and it feels luxurious.

Re: Run Erlang/Elixir on Microcontrollers and Embedded Linux

#44
post #38
post #5

> MCU-class footprint (fits in 16 MB RAM) That is absolutely not an MCU class footprint. Anything with an "M" when talking about memory isn't really an MCU. For evidence I cite the ST page on all their micros: https://www.st.com/en/microcontrollers-microprocessors/stm32... Only the very very high performance ones are >1MB of RAM.

Espressif calls the ESP32 an MCU, and at least 1/3 of ESP32 models have >1MiB of onboard PS ("pseudo-static") RAM (i.e. DRAM with its own refresh circuit.) At least 20 of the ESP32 models do have 16MiB. (And I would argue that the ESP32 is an MCU even in this configuration — mostly because it satisfies ultra-low-power-on-idle requirements that most people expect for "pick up, use, put down, holds a charge until you p…

Espressif's ESP32 line uses an MCU IC, either sold by itself (https://www.espressif.com/sites/default/files/documentation/...) or with flash memory and RAM ICs, all packaged together in a system-in-package footprint. (e.g. https://www.espressif.com/sites/default/files/documentation/...) There are various options for which flash and RAM ICs are packaged together, but the ESP32 die itself is very much an MCU and has only has 520 KB of SRAM.

A managed switch is very computy heavy, and does usually run a microprocessor with a full RTOS, if not Linux itself, which probably costs in the mult-dollar range. It's also not something most people have at home, outside of the switch built into their router. Everything elese you mentioned usually runs on microcontrollers with under 1 MiB of RAM. For example, Infineon's CYUSB306X series ASICs for webcams come in two RAM sizes: 256 KiB or 512 KiB, despite handling gigabits per second of data, and having an MCU at all isn't even necessary. (https://www.latticesemi.com/usb3#_CDED461DE15245C78A2973D4A4...) The Pinecil's Bouffalo BL706 MCU has 123 KiB of RAM, despite being a low-volume product where design time matters more than component cost. (https://wiki.pine64.org/wiki/Pinecil, https://en.bouffalolab.com/product/?type=detail&id=8) Microwave ovens are so high volume that they often don't even use packaged microcontrollers, mounting the die directly on the PCB, with an epoxy blob protecting it, and there's no way any would splurge on megabytes of SRAM. The most advanced microwave oven I've seen was from the 90's and definitely didn't splurge on an microprocessor. (https://www.youtube.com/watch?v=UiS27feX8o0)

A slow MCU with external memory could run anything, like booting into linux on an AVR (https://www.avrfreaks.net/s/topic/a5C3l000000BrFREA0/t392375) but it's going to be extremely slow and not practical for any commercial product, which if produced in any volume will have as little RAM as possible.

Re: Run Erlang/Elixir on Microcontrollers and Embedded Linux

#45

would be possible to get my 90's computers and run erlang/elixir for a crypto node... or some version of it??

The page says their implementation requires 16 MB of RAM, so a late 90's computer could run it, but even mid-90's computers, like early Pentium models, often came with less RAM than that. If it shipped with Windows 98 or later, it should have 16 MB.

Re: Run Erlang/Elixir on Microcontrollers and Embedded Linux

#46
post #38
post #5

> MCU-class footprint (fits in 16 MB RAM) That is absolutely not an MCU class footprint. Anything with an "M" when talking about memory isn't really an MCU. For evidence I cite the ST page on all their micros: https://www.st.com/en/microcontrollers-microprocessors/stm32... Only the very very high performance ones are >1MB of RAM.

Espressif calls the ESP32 an MCU, and at least 1/3 of ESP32 models have >1MiB of onboard PS ("pseudo-static") RAM (i.e. DRAM with its own refresh circuit.) At least 20 of the ESP32 models do have 16MiB. (And I would argue that the ESP32 is an MCU even in this configuration — mostly because it satisfies ultra-low-power-on-idle requirements that most people expect for "pick up, use, put down, holds a charge until you p…

ESP32's are on the high end of FLASH and RAM counts. You are pointing out that there is variance. The kind sof 2-8$ MCUs I've used generally have 512k-2Mb[it] onboard flash and The Sub ST is actually moving away from the 2Mb MCUs, and instead offering ~1Mb with Octospi. I believe the intent is to use offboard flash if you want more. (e.g. the newer H7 variants)

Re: Run Erlang/Elixir on Microcontrollers and Embedded Linux

#47
post #32

Earlier quoted context omitted.

I am the same but for elixir, the beam is awesome & I always wonder why it still hasn't caught on with all the success stories. The actor model just makes programming feel so simple

For me its the complete opposite of simple. I am a fan of BEAM and OTP but im a horrible programmer. I have constant fear of having picked the wrong restart strategy in a supervisor. Or about ghost processes or whatever. I have no mentors and learn everything myself. I have no way of actually checking whether my implementations are good. With my skills id manage to make an Elixir system brittle because its not clear…

> With my skills id manage to make an Elixir system brittle because its not clear to me what happens at all times.

What's so cool about BEAM is you can connect a repl and debug the program as it's running. It's probably the best possible system for discovering what's happening as things are happening.

Re: Run Erlang/Elixir on Microcontrollers and Embedded Linux

#48
post #43

Earlier quoted context omitted.

Even ESP32, the quintessential "punches above its weight" MCU, only packs 520KB of RAM by default. At the time of its release, that was a shitton of RAM for an MCU to have! If you ship MCUs with 16MB of RAM routinely, you're either working with graphics or are actually insane.

The MCU I'm currently working with has 12KB of RAM and it feels luxurious.

Ah, the cultural shock of going from 8 bit cores with 512 bytes to an actual modern chip.

Re: Run Erlang/Elixir on Microcontrollers and Embedded Linux

#49
post #3

I'm interested in the claimed real-time capabilities, but it's hard to find anything about them written there. Still, I like the hardware integration.

Real-time is some of the most misused jargon in modern history.

In general, most JIT or VM can't even claim guaranteed latency. People that mix these concepts betray their ignorance while seeming intelligent.

FreeRTOS is small and feasible.

VxWorks if your budget is unconstrained.

LinuxRT kernel (used in LinuxCNC) with external context clocking, and or FPGA memory DMA overlap module (zynq SoC etc.)

Real-time is a specialized underpaid area, and most people have too abstract of an understanding of hardware to tackle metastability problems. =3

Re: Run Erlang/Elixir on Microcontrollers and Embedded Linux

#50

Earlier quoted context omitted.

Also curious what MCUs you're working with to give you this impression? RP2040 is 264k, RP2350 is 520k. I use NXP's rt1060 and rt1170 for work, and they have 1M and 2M respectively, still quite far away from 16M and those are quite beefy running at 500MHz - 1GHz.

While I generally agree with you, the RT106x line does support external SDRAM as well. I've got an MIMXRT1060-EVKB sitting here on my desk that has 32MB of SDRAM alongside the on-die 1MB of SRAM.

Those specs are $50 for compute module - a very non-trivial cost.
Post reply on HN