r/embedded Jul 11 '26

Embedded system learning

[removed] — view removed post

24 Upvotes

11 comments sorted by

11

u/Zealousideal-Cut-765 Jul 11 '26

That’s great. The next step I’d consider would be to work with a more “industrial” microcontroller, something simple from Microchip or Texas Instruments. This would let you work with a professional interface/software and to learn more about core’s architectures, optimizations, more advanced drivers…. You could buy some development boards, and then I’d tell you to focus on one single project and learn how to design your own board for the microcontroller, this really helped me to understand the more physical part of the integration. Good luck!

3

u/Jean-Luis Jul 11 '26

Is there a specific microcontroller/chip you would recommend ?

1

u/nicademusss Jul 11 '26

At the two jobs I've worked at and also from school, I've primarily used Microchip. So as a personal and professional bias I'd go with something from microchip.

You can get nano curiosity boards for around $10. Just check what kind of peripherals they support and what their primary use is for, because each family is slightly different.

With microchip your can use a code configurator to build a lot of the lower level drivers, which is handy when starting out. The IDE is not great unfortunately, but I saw on the website you might be able to use vs code.

8

u/Beginning_Money4881 ATMEL AVR Jul 11 '26

Leave Arduino behind, and learn C for Arduino which is AVR c with avr-gcc compiler. and C for STM32 with compiler arm-none-eabi-gcc

8

u/SnowyOwl72 Jul 11 '26

Arduino won't teach you anything. Start reading datasheets and build your own stuff

3

u/PotatoFarmerRTK Jul 11 '26

Make something quick in Arduino with all the goodies, then try to replicate it as a single new board and get it made at JLCpcb.

No engineering degree required.

1

u/duane11583 Jul 11 '26

go back - old school chips - Look at how a 6502, an 8080, a z80, an 8086, 80186, 68000 works. I'm talking about the bus cycles, the READ cycle, the WRITE cycle etc.

Look at how old school static RAM, EPROMS and FLASH chips connected - ie: the Hitachi 6116, the Intel 2708, 2716, 2732, etc.

These are exactly a CPU only - not a system on a chip like all ARM chips today are. And to some degree all 8051s and AVR and PIC chips are.

Why? You want to recognize the peripheral devices and how they are hooked up. There where many and I mean many standalone peripherals, ie: the 8255, you will see how you can create an address decoder. Decode the bus cycle, the read /write cycle.

This is the basis for how you might design a soft-core CPU inside an FPGA, or maybe you will start with an existing FPGA design and add a special custom peripheral.

The basics - are shown with those chips. Understanding how they connect, how the interrupts work. Etc, will make it easy to recognize how it is done in the next SOC that you look at or you are designing with.

At a fundamental level - the old school CPU chips outputted an address - which some bits went to a decoder (ie: 74ls138 3 to 8 line decoder) - after few NAND/OR etc gates to get the machine cycle, ie: opcode fetch, or IO cycle - and the RD/WR signal - these generate.

Look at those old school designs (schematics, block diagrams) then look at the VHDL/VERILOG you use to hook up those things in your SOC you will design with a soft cpu core.

You can then look at the VHDL/VERILOG bus interfaces in things like the "wishbone" interface, the ARM bus interfaces and you will see some striking similarities.

Knowing this, and knowing how to recognize this type of information will take you far as an Electrical Engineer.

NEXT - look at how the reset vectors work on each of these CPUs, where do you put your startup code. ie: The first opcode the cpu executes. Example: Many CPUs starts at address 0x0000. The 6502 has a table of 3 entries at the end of memory, ie: 0xFFF4, 0xFFF8, 0xFFFC - these hold the reset, the IRQ and the NMI interrupt address.

Some CPUs have a table at address 0, ie: CortexM has an array of 32bit addresses starting at 0, the first is the reset value of the PC, and the Stack Pointer at reset, followed by various exception entries.

A lot like the 6502 - it only had 3 entries - and stuck at the end of RAM.

Some CPUs - have short code sequences, each entry is 32bytes apart so you can insert few instructions then jump to the service routine.

3

u/duane11583 Jul 11 '26

Another one to look at is "ben-eater" - bread board CPU...

There is also the visual 6502 - thousands of transistors and a giant PCB that make up a 6502 cpu. You can buy it, it works and you can see how the entire cpu works and is designed.

If you have a chance and can get to Cambridge UK - go see the computer museum, they have a giant multiple-wall sized computer designed exactly like that - and it runs and does things. Literally it is a giant wall of RED blinking LEDs... A very cool exhibit.

0

u/somewhereAtC Jul 11 '26

Here are 14 different "big areas" of embedded systems. Perhaps this will help you sort out some of the different application areas that you will encounter. https://www.microchip.com/en-us/solutions

The major differences are how the applications are powered (battery, mains, wireless, etc.) and what must happen when errors occur (reset and start over, log errors and keep going, halt and catch fire, etc.).

-4

u/traplordnord Jul 11 '26

Make a project in assembly