this post was submitted on 11 Jun 2024
648 points (98.2% liked)

Technology

59357 readers
5794 users here now

This is a most excellent place for technology news and articles.


Our Rules


  1. Follow the lemmy.world rules.
  2. Only tech related content.
  3. Be excellent to each another!
  4. Mod approved content bots can post up to 10 articles per day.
  5. Threads asking for personal tech support may be deleted.
  6. Politics threads may be removed.
  7. No memes allowed as posts, OK to post as comments.
  8. Only approved bots from the list below, to ask if your bot can be added please contact us.
  9. Check for duplicates before posting, duplicates may be removed

Approved Bots


founded 1 year ago
MODERATORS
 

It was nice knowing Raspberry Pi while they lasted. Going to suck losing something that has changed the homegrown embedded system hobby forever.

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 2 points 5 months ago (1 children)

Only a fraction of it is RTCs. What is in the Pi overlays folder is from everything. Not even all the DT I2C RTCs. There is loads of ADCs, DACs, IO extenders, all sorts.

It's really annoying you can't do DT on x86 Linux. It's a bit of a gap in the platform. It would make Linux ARM based developer's lives easier.

[–] [email protected] 1 points 5 months ago (1 children)

ADCs, DACs, IO extenders

These should all work without kernel drivers. For example, here's a user space python library for ADS1*15 ADCs, or Nuvoton MS51 IO Expanders. Unless you need very specific timing or require the kernel to know about it, you shouldn't need a kernel driver.

[–] [email protected] 1 points 5 months ago

You can of course write drivers for them, but then it's you own abstraction not the standard Linux abstraction. (You can hack something up with IIO for that stuff, but it's not pretty). There is CUSE (part of FUSE) you can do some character devices with.

Existing drivers in Python are messy to use if you our not developer in Python.

The nice thing about in kernel is:

  • it's done for you already
  • the interface is standard and will work with anything that uses that class of device
  • it's langauge agnostic.

The Linux kernel does hardware abstraction. It's not a microkernel. There is limited support for proper userspace drivers.

If you doing some application specific app, that will only work with those chips, use do it in userspace. But to make a normal system for normal use, you want things in kernel like normal.