Live data from Hacker News

So you want to build an embedded Linux system?

jaycarlson.net

31–40 of 42 posts

Re: So you want to build an embedded Linux system?

#31
post #3

Since an embedded Linux system will likely require use of either Buildroot or Yocto, I'd like to ask the following slightly off-topic question: Which SoM product line would you say has the best vendor support? I'm talking about quality of the BSP (board support package). (A meta-layer, in Yocto terms.) Raspberry Pi has quite a community behind it, so meta-raspberrypi has a number of contributors. (None of which payed…

Avoid nvidia if you can. Their attitude towards anything Open Source has been extremely unsupportive if not outright shitty. Part of company philosophy.

Re: So you want to build an embedded Linux system?

#32
post #20

Question for anyone who has done something similar : how feasible would the hardware part be for someone who has some basic electronic / breadboarding knowledge but no pcb design experience? Besides this excellent article what would be a good resource to learn to do something like this myself?

This is advanced level PCB design. You need to know proper grounding and differential pairs and length matching to accomplish what is listed in this article. These are very difficult topics, but this 2 hour video should give you an idea of what's going on here: https://www.youtube.com/live/ySuUZEjARPY?si=xfpg8XdjtXa1Uixn -------- If this is too much for you, then instead stick to microcontrollers and other sub-100Mhz…

> That's why faster speeds are harder. 900Mhz and slower needs an antenna over 30cm long, so staying below this means every PCB trace is too short to be an effective antenna.

Oh I forgot to mention, the issue is the 5th or 7th harmonic of your digital signals.

So... a 20Mhz digital circuit will realistically have 10ns rise/fall times or aka have ACTUALLY 100Mhz information in your electricity.

Similarly, a 100MHz clock digital circuit will need rise/fall times of 2ns. That's 500Mhz information inside of your signals (2ns == 500MHz).

Following the pattern: 500Mhz digital clock will easily have 2.5Ghz+ information in them to keep those digital signals square. Aka rise / fall times of 0.4ns.

-----------

If you've accidentally built a 2.5 Ghz antenna twice in your circuit, guess what? That 0.4ns rise time square wave is going to start teleporting between your PCB antennas.

Electricity at high frequencies moves in very complex fashions. In ways that beginners cannot comprehend.

We call it crosstalk, EMC and other ways they move around. But it's all antenna theory, EMI fields and the like. I can't say I'm a high wizard of this magic but... Hopefully I've got it close enough for you to understand the issues at play here.

It's best to just slow down to 20MHz where electricity still makes sense.

Re: So you want to build an embedded Linux system?

#34
post #10

Earlier quoted context omitted.

unrelated but curious - what do you think of OSTree-based embedded distros? Any future in it?

I see it as an overly complicated way of trying to apply containerization concepts to a base OS via transactions. It's really hard to use OSTree on new projects or get existing distros like Debian to work with OSTree. I think the update process, while in theory should be better, ends up being a black box of will it/won't it frustration for end users. Finally, OSTree is mainly a Red Hat thing and is built for their ne…

What do you think about using btrfs snapshots instead of ostree similar to openSUSE MicroOS or SLE Micro?

Re: So you want to build an embedded Linux system?

#35
post #20

Question for anyone who has done something similar : how feasible would the hardware part be for someone who has some basic electronic / breadboarding knowledge but no pcb design experience? Besides this excellent article what would be a good resource to learn to do something like this myself?

I found this to be a great resource when I was learning PCB design: https://www.youtube.com/@PhilsLab

I watched all his KiCad videos and tried to build them as I went along. Then you can use a cheap PCB manufacturer like JLCPCB to get them made. It's a lot cheaper than you think (tens of dollars delivered in two weeks for simple stuff). There is a lot of know-how to learn in this field but I found it to be very accessible as a SWE and it all made sense. It just took a long time to pick it all up.

Re: So you want to build an embedded Linux system?

#36

Earlier quoted context omitted.

This is advanced level PCB design. You need to know proper grounding and differential pairs and length matching to accomplish what is listed in this article. These are very difficult topics, but this 2 hour video should give you an idea of what's going on here: https://www.youtube.com/live/ySuUZEjARPY?si=xfpg8XdjtXa1Uixn -------- If this is too much for you, then instead stick to microcontrollers and other sub-100Mhz…

> That's why faster speeds are harder. 900Mhz and slower needs an antenna over 30cm long, so staying below this means every PCB trace is too short to be an effective antenna. Oh I forgot to mention, the issue is the 5th or 7th harmonic of your digital signals. So... a 20Mhz digital circuit will realistically have 10ns rise/fall times or aka have ACTUALLY 100Mhz information in your electricity. Similarly, a 100MHz clo…

This is amazing, thanks for the breakdown. I guess this article makes it seem easier than it is. I will stick to SoM for linux for my projects for now but definitely going to try some stm32g0 and the like custom boards

Re: So you want to build an embedded Linux system?

#37
post #3

Since an embedded Linux system will likely require use of either Buildroot or Yocto, I'd like to ask the following slightly off-topic question: Which SoM product line would you say has the best vendor support? I'm talking about quality of the BSP (board support package). (A meta-layer, in Yocto terms.) Raspberry Pi has quite a community behind it, so meta-raspberrypi has a number of contributors. (None of which payed…

NXP is probably the best "big" vendor for this. The main issue is that their documentation solution/website is awful. I think a smaller vendor like Toradex is more in line with what you're asking for though. I haven't used them myself, but I've heard very good things. First class yocto support is a core part of their offering.

The Toradex's, Phytec's, Boundary Devices, etc... of the world all do a decent job with their BSP's but just know that they pull from NXP's mainline BSP release so there is a lag in time from when NXP makes a new release. Sometimes they'll fork their own libraries which I've seen cause some problems with application level software from NXP.

Re: So you want to build an embedded Linux system?

#38
post #20

Question for anyone who has done something similar : how feasible would the hardware part be for someone who has some basic electronic / breadboarding knowledge but no pcb design experience? Besides this excellent article what would be a good resource to learn to do something like this myself?

If you're looking to build a product using an embedded linux system you're better off just using an off the shelf SOM from an embedded board vendor like Toradex or Phytec (to name 2 - there are dozens out there). There are some quasi standards around compute modules now like SMARC and SODIMM where the vendors build little pcb's that contain the SOC, DRAM, PMIC and optional EMMC and WIFI. Then you just built a carrier board to breakout the IO like USB, UART, HDMI, MIPI DSI/CSI-2, etc.... The design/layout/validation of the SOC/PMIC/DRAM is the hardest part and unless you're shipping in volumes > 100ku annually you're probably better off outsourcing the SOM.

If you're just looking to learn then by all means give it a shot! Jay's article is a great primer in the basics but just know that all of those parts are pretty slow/old by today's standards. That article is 4 years old and even 4 years ago those parts were fairly slow/cheap/low-power/low-pincount relative to the SOT at the time.

Re: So you want to build an embedded Linux system?

#39
post #3

Since an embedded Linux system will likely require use of either Buildroot or Yocto, I'd like to ask the following slightly off-topic question: Which SoM product line would you say has the best vendor support? I'm talking about quality of the BSP (board support package). (A meta-layer, in Yocto terms.) Raspberry Pi has quite a community behind it, so meta-raspberrypi has a number of contributors. (None of which payed…

Yocto is overkill for a hobbyist. It's designed to help big companies build linux distributions for multiple platforms. It works great for companies like NXP that have the resources to devote to it, but it's a f&$cking bear to wrap your hands around if you just want to build linux for a single dev-board.

Buildroot is much smaller/simpler for hobbyists IMO.

NVidia's Jetson lineup is really a double edged (disingenuous IMO) sword. They provide some nice GPU/NPU power for AI stuff and a decent price and is great to play/learn with. However if you want to take a jetson to production you can't. They don't sell the bare SOC's and the modules have limits to how many you can buy. That jetson lineup is probably a 0.05% pimple on their balance sheet...

Re: So you want to build an embedded Linux system?

#40
post #15

Embedded systems question. I have an nVidia Jetson, and I want to expose one of the USB3 ports to the user of the system (e.g. so they can attach a USB drive). However ... the USB3 port of the Jetson is not near the enclosure of the box. Now I'm thinking of using a USB3 cable, but I know from experience that this is not going to give a reliable connection. Any suggestions on how to properly do this? I don't want to m…

Can you check if there is another USB port exposed via a pin header? That is probably the easiest way if it is available. Otherwise, I think your best best is to solder wires onto the same pads used by the existing USB port. I wouldn’t try to desolder the port that is there, that could cause more problems. But if you can find a location on the board to tap into that USB port’s signals, you could solder wires to run a…

I don't think any USB3 ports are exposed on the headers.

But I also have to wonder how that would improve the situation over running a cable between the actual USB3 port and a socket mounted in the enclosure.

Post reply on HN