18
Sumafu
6y

Next month I'm starting my master studies in embedded systems. Currently I have not any knowledge in this topic (made my bachelor in an other part of IT). Any tips or tricks?
Currently I'm starting learning C++ 😅

Comments
  • 0
    Currently I'm working as developer for desktop and fullstack web. So I haven’t any experience of embedded software engineering.
  • 1
  • 8
    There are basically two classes of embedded systems. The big ones, which are basically like PCs, typically with an ARM Cortex-A and Linux. You program it like any Linux.

    And then there's the world of real embedded, with Cortex-M or lower. Either with a small RTOS or no OS at all. Here, C++ is possible, but not widespread because C is just better, and some assembly.

    You can read chip datasheets, hardware schematics for interfacing that stuff, deal with interrupts, I/O, memory maps and all kinds of low level stuff. In short, you need to know how a computer actually works under all the million layers of abstraction.

    But you get back to the real thing and have the kind of fun that evaporated in the PC world somewhere in the early 90s.
  • 1
    Null pointer isn't your friend
  • 2
    @Fast-Nop It will be the second, the real embedded world
  • 2
    @Ferr Currently I code mainly in Delphi, so the null pointer is my daily friend 😅

    @Fast-Nop this sounds actually like the stuff I want to know since years. If the university had wrote this in the description, the decision would have been very much easier
  • 4
    @Sumafu OK, then I'd suggest that at a later stage, you'd buy some eval board, available at below $20. One of my favourites is the H405 by Olimex, with schematics available. Or whatever your uni department suggests.

    There's also the Arduino ecosystem, and it's great for non-embedded people to put something together, or for quick and dirty prototyping. However, it won't give you credibility as embedded developer. It won't teach you much about embedded because it abstracts everything away. A bit like using Wix for web design.

    Usually, the "hello world" of embedded is to make an LED blink. :-)

    It will also be helpful to have at least basic knowledge of electrical engineering: voltage, current, resistors, capacitors, coils, diodes, transistors. And remember, switches are bitches.
  • 1
    Ada. You should use Ada for real embedded systems programming... 😁
  • 1
    Read up about uart and I'd suggest going into C instead of C++. Also interupts.
  • 2
  • 4
    @ceee lol, these folks know way more than I do.

    To add to @Fast-Nop's thing about Arduino - you can use plain old embedded C/C++ with Arduino boards (they're just regular boards after all) and a really good way to learn is rewriting the Arduino libraries yourself, or adding extra features like AVR port manipulation.

    Random: LLVM will allow you to make your own languages and embedded is a nice platform to target because these systems are much simpler.

    You can run languages like Lisp, Lua, and restricted Python on some of the boards, fun to use. Heck try making your own Lisp in embedded C, it's a really cool project.

    There are many fun things you can do with a cheapo FPGA board (especially if it's one of those with embedded hard ARM cores).

    Cypress PSoC boards are excellent for MCU and limited programmable analog and digital use.

    Read up on basic electronics (good book by Agrawal and Lang). Also computer architecture (I suggest Comp. Org. and Design by Hennessey & Patterson)
  • 0
    I recommend getting started with a simple low-end microcontroller. It's easier to get to know the hardware when there's not as much hardware to deal with. An AVR or an MSP430 would be a good choice. They're quite comfortable to program in assembly, too ;).

    Once you know the architecture and how to use most of the peripherals, you can move onto a more complex system like a Cortex-M. There are a lot more configuration options, there's DMA, etc, but you should be able to transfer your knowledge from the more basic platforms.
  • 1
    @Fast-Nop We are learning Arduino, Raspberry pie, onion in our bachelors these all stuff is so interesting!
Add Comment