Challenges Using systemd on Embedded SystemsPermalink

Kevin Boone:

I’ve found that many systemd components are less effective in an embedded environment than the traditional alternatives. I’ve shown some illustrative examples in this article, but I really don’t think there’s much controversy here: this simply isn’t the environment that systemd was designed for. But it’s getting increasingly difficult to find a mainstream Linux distribution that doesn’t use systemd – even Raspberry Pi distributions use it.

As systemd absorbs more functionality into itself, there’s going to be little motivation to maintain alternatives. After all, if everybody uses systemd, what motivation is there to support anything else? My concern is that we’re moving towards a future where Linux is inconceivable without systemd. That will be a problem for those environments where systemd really doesn’t shine.

Dinit feels like it could be a good option:

Dinit fits in the middle ground between extremely simple supervision suites and the more complex service managers.

It’s the init system used on Chimera Linux, which I’m running on a number of systems, including the WSL2 install that I’m writing this post on. Dinit has been great in my experience, although that’s admittedly also on desktop and server machines. It’s a lot smaller in scope than systemd so it would allow embedded systems to continue to use tools like Chrony and syslog-lite mentioned in the post.

QuickTime as a Tape Archival FormatPermalink

Chris Hanson:

A lot of people think QuickTime is a “video format,” but that’s not really accurate. Video and audio playback are applications atop the QuickTime container format; the container format itself is a means of representing multiple typed tracks of time-based media, each of which may have their own representation in the form of samples interpreted according to their own CODECs.

All of these are represented within a file as atoms which represent well-identified bags of data with arbitrary size and content, making it very easy to write general-purpose tooling and also to extend over time. (The last major extension to the low-level design was in the 1990s, to support 64-bit atom sizes, so it’s quite a stable format already.)

QuickTime, like TrueType before it has proven to be quite a well-designed format. If you’re looking for inspiration for a binary data format these feel like great candidates.

Everybody Codes Programming ChallengesPermalink

Unleash your problem-solving skills by tackling puzzles with code, in any programming language you love. Whether you’re a seasoned developer or just starting out, our platform offers challenges for all levels, allowing you to learn, grow, and have fun along the way!

I’m Emil Kaczyński, and I’m the one behind the madness you’re going to experience here (sorry!). I was just a regular full-stack developer who loved programming. One day, a friend showed me Advent of Code, and I got really into solving programming puzzles! I completed every event from 2015 multiple times, using different programming languages, and then I got curious about what it’s like to create something similar. I hope you’ll have a great time here!

If you’ve taken part in Advent of Code before this will be quite familiar. Emil notes:

Have you heard of Advent of Code? If yes, then you’re ready for Everybody Codes! It’s similar, but with its own twists. Everybody Codes is both easier and harder at the same time, yet friendlier and trickier too!

Blackberry Releases QNX Everywhere Free for Non-Commercial UsePermalink

I can’t seem to find a decent announcement post on the QNX website, so here’s Thom Holwerda writing on OSNews:

Well, it seems the company is trying to reverse course, and has started courting the enthusiast community once again. This time, it’s called QNX Everywhere, and it involves making QNX available for non-commercial use for anyone who wants it. No, it’s not open source, and yes, it requires some hoops to jump through still, but it’s better than nothing. In addition, QNX also put a bunch of open source demos, applications, frameworks, and libraries on GitLab.

Notably there is now a pre-built image for the Raspberry Pi 4 with an accompanying book: Introduction to the QNX RTOS with Raspberry Pi by Elad Lahav. The source of the book is also on GitLab.

Many years ago I used QNX for a project at university. We used its built-in RPC mechanism to coordinate behaviour across multiple machines and wrote a GUI using its built in toolkit. I remember QNX being quite usable, with a familiar and capable GUI. It was also quite compact, having a version that could run from a single floppy disk. The system was quite responsive due to low system requirements and real-time nature.

QNX was also quite straightforward to program for, with a comprehensive suite of C++ libraries for the system. I can certainly recommend playing around with it if you’re interested in learning about alternate operating systems, especially hard real-time ones.

RISC-V Vector Extension OverviewPermalink

Wojciech Muła:

The goal of this text is to provide an overview of RISC-V Vector extension (RVV), and compare — when applicable — with widespread SIMD vector instruction sets: SSE, AVX, AVX-512, ARM Neon and SVE.

The RISC-V architecture defines four basic modes (32-bit, 32-bit for embedded systems, 64-bit, 128-bit) and several extensions. For instance, the support for single precision floating-point numbers is added by the F extension.

The vector extension is quite a huge addition. It adds 302 instructions plus four highly configurable load & store operations. The RVV instructions can be split into three groups:

  • related to masks,
  • integer operations,
  • and floating-point operations.

When a CPU does not support floating-point instructions, it still may provide the integer subset.

RVV introduces 32 vector registers v0, …, v31, a concept of mask (similar to AVX-512), and nine control registers.

Detailed, but not too long overview of the RISC-V vector extensions.