238 karma · joined May 26, 2014
Standard usb serial ports show up as ttyACM#, whereas nonstandard ports that require a driver like ftdi show up as ttyUSB#. Modems tend to be standard usb devices, so ModemManager by default scans all serial ports as if they were modems. This involves sending some AT commands to them to try and identify them.
Software implementations of serial devices tend to follow the standard, so they show up as ttyACM#.
Yes, this OS is written in Rust. However, since it has a well-defined ABI, and all services are defined to use `#[repr(C)]`, and the interface is simple primitive enums, it's designed with C-like language support in mind. The hardest part in C is getting an equivalent to `#[repr(C, align(4096))]` which, last time I checked, only let you do alignments up to 64 or so without resorting to linker tricks.
> This mechanism seems ripe for squatting attacks
There are only a few services with well-known names, and they start up before things like the scheduler are running. Most things go through the nameserver service which supports things like attestation, finite-client limits, and signature checking.
> Just use standard ELF.
Sure, there's a loader available that lets you run standard ELF files: https://github.com/betrusted-io/xous-core/tree/main/apps/app...
The bootloader uses the MiniELF format because we can make assertations about things like the order of sections and about merging multiple segments, while also stripping non-loadable sections. It would be possible to just bundle all the ELF images for all programs together, but if you're generating the loader image you might as well shrink the image a bit.
> What?? No! sbrk() is a terrible interface.
Then you can call `MapMemory(NULL, NULL, [size], RWX)`: https://docs.rs/xous/latest/xous/syscall/fn.map_memory.html
Messages are either one-way (Send or Scalar), or are two-way (BlockingScalar, Lend, or MutableLend). For two-way messages, the calling process inherits the quantum of the sending process, so the only penalty is the cost of two context switches.
> Interprocess communication by memory remapping instead of copying
This is true for Send, Lend, and MutableLend, but for Scalar or BlockingScalar you get 5xusize values instead, which is used for things like `msleep` or `uptime`.
You would have to stop access to other threads that might have access to the page about to be unmapped, but Rust guarantees that if you have a mutable reference, you're the only one with access to the page.
This was apparently fixed in version 590 of the driver which was released only recently: https://forums.developer.nvidia.com/t/fd-leak-with-explicit-...
The fix is:
mkdir -p ~/.config/pipewire/pipewire.conf.d && echo "context.properties = {default.clock.min-quantum = 1024}" | tee ~/.config/pipewire/pipewire.conf.d/pipewire.conf
Basically, just force the quantum to be higher. Often it defaults to 64, which is around 1ms.You can feed it the output from Kicad, and if you include the ipc netlist it’ll even generate models. Great for doing a check before manufacturing, especially if the viewer matches what you see in Kicad.
Unfortunately I’ve never gotten it to run in wine.
The other thing I’m missing is my 3D Gerber viewer called ZofZPCB. I’ve not gotten either it or Altium to even start.
They even work with phones!
I've got a personal policy: No websites that have an infinite scroll. That means no new Reddit, mobile Reddit, Facebook, Instagram, or similar. This also means I can't use food delivery services, since those tend to be infinite as well.
If they're paginated that's fine, even if they're infinitely so. Infinite scrolling is just a very good touchstone as to the quality and addictiveness of a site, and I'll avoid anything that has it.
For this reason I get my news through RSS and like using Discord -- both have finite ends (even if there may be a lot of content in bursts.)
Here’s a discussion about it: https://www.eevblog.com/forum/rf-microwave/looking-for-a-rec...
That one was fun to write.
The only way I've found to reliably check out a git repository over an unreliable link is to check it out somewhere reliable and `rsync` the .git directory over.
Buses can be loud, but they're transient.