I think you’re aware of this already but for everyone else:
There’s different kinds of embedded. What traditionally was referred to as embedded is microcontrollers (e.g., 32-bit ARM Cortex M devices like the STM32 or an NXP IMX106x chip ). A configuration for a Cortex-M7 chip (that some may consider on the high end of traditional embedded) is a 600MHz clock, 1MB of RAM, and 4MB of flash memory. These run either bare metal or a real time operating system but don’t have an MMU.
These days the definition is sometimes expanded to include devices that run full fledged OSes like Linux (embedded Linux) on devices like the RPI with much more memory than an MCU.
To answer the original posters question a bit: get used to C and C++ and not using malloc() / new(), which includes a lot of the standard library.
I don’t think that is exactly accurate. But you know, like close enough, describes all my work. Just pointing out that something like an industrial system running win ce on PowerPC or x86 has been within the definition of embedded for a long time. Embedded Java was/is a thing. Both extremely non-central examples, but what’s new is how cheap the hardware is, embedded has always included more sophisticated OS’ and more than micros.
I'm still a noob but it seems like there's also a distinction between bare metal embedded and RTOS, which is higher level. I think STMs are more commonly run bare metal but esp32s use a version of FreeRTOS.
+1 for this. On my system, an ARM cortex-M7, there’s RAM at address 0. In order to catch null pointer dereferences I ended up activating the MPU to make the first couple hundred bytes inaccessible (non-readable, non-writable).
MPU stuff is on my to-do list to get read up on. I have had a decent amount of stack overflows, the aforementioned example (which was on an M7), and other stuff that it might help with. It's something I don't necessarily want to rely on it in production, but it could help for debug.
Perhaps they’re conflating how you can’t use “const” as a compile time constant (e.g., you can’t declare the size of an array with a “const” variable). If so, C23 solves this by finally getting the constexpr keyword from c++
Agreed. As an embedded software engineer new to the field I’ve seen senior engineers with over ten years of experience complain when division by a compile time constant (even by a power of two) is used in code instead of multiplication or bit shifting on our cortex-m7 mcu running at 600MHz
I was just at one of their offices in San Francisco. They have free breakfast, lunch, and dinner with choices from well over 10 whole restaurants exclusively on their campus. They have (paid) laundry service where they can just drop off their clothes and get them back later. No more Facebook barbers, however. There were people of all different backgrounds: black, white, Hispanic, Indian, etc.
They have all these amenities on top of their huge paychecks (high cost of living in San Francisco notwithstanding). Do you really think they’d give all that up in service of helping their lessers? Maybe some would, but how much of this extravagant lifestyle would they give up? Even those who identify as liberal, how much would they give up?
"So the scientists compared the ratings of the top hundred male and top hundred female players from Germany. And they found that the men indeed outperformed the women. However that difference can be almost entirely explained by statistics. Because the larger the population, the wider the range of measured scores—the bell curve has a longer tail. And because many more men play than women, the best male players are extreme outliers on that bell curve. As more women play, a few should also reach those extremes, right out there with the men. To which one might be tempted to say: Checkmate."
FWIW you can go to settings on GitHub and select what you get emails about. There may even be a digest option such that you get one email per day with all the stuff you would’ve received individual emails about IIRC.
There’s different kinds of embedded. What traditionally was referred to as embedded is microcontrollers (e.g., 32-bit ARM Cortex M devices like the STM32 or an NXP IMX106x chip ). A configuration for a Cortex-M7 chip (that some may consider on the high end of traditional embedded) is a 600MHz clock, 1MB of RAM, and 4MB of flash memory. These run either bare metal or a real time operating system but don’t have an MMU.
These days the definition is sometimes expanded to include devices that run full fledged OSes like Linux (embedded Linux) on devices like the RPI with much more memory than an MCU.
To answer the original posters question a bit: get used to C and C++ and not using malloc() / new(), which includes a lot of the standard library.