What Actually is Embedded C/C++? Is it different from C/C++?

preview_player
Показать описание
---

What Actually is Embedded C? // There's a lot of misinformation out there about what embedded C actually is, how it is (or isn't) different from C, and I made this video to clear things up. I hope it helps.



***

Welcome! I post videos that help you learn to program and become a more confident software developer. I cover beginner-to-advanced systems topics ranging from network programming, threads, processes, operating systems, embedded systems and others. My goal is to help you get under-the-hood and better understand how computers work and how you can use them to become stronger students and more capable professional developers.

About me: I'm a computer scientist, electrical engineer, researcher, and teacher. I specialize in embedded systems, mobile computing, sensor networks, and the Internet of Things. I teach systems and networking courses at Clemson University, where I also lead the PERSIST research lab.

More about me and what I do:

To Support the Channel:
+ like, subscribe, spread the word

Рекомендации по теме
Комментарии
Автор

I would describe embedded C as 99% of the time reading your documentation and 1% programming :)

ewout
Автор

I would like to see an more in depth video about linkerscripts!

datawolk
Автор

One of my project courses in CS, was actually embedded programming; we programmed chips to be calculators, serve as alarms, and even play music, and the overall structure felt a lot more comforting than regular C. I liked having all the linker files and macros cuz they just made me feel like I was coding in an environment.

erickballesteros
Автор

RIP to the college student who contributed to this article

yournemesis
Автор

Nice explanation! I have only one rule for embedded C/C++ vs others. If I'm dealing with embedded systems, I tend to stay far away from dynamic array allocations. But that may be because of the limited experience I have. The heap is scarce, and every time that I tried (string manipulations and complex math algorithms), I ran into hard faults (even with freeing pointers).

aron
Автор

Nice video. Surprised the Embedded C misinformation is out there. I’ve been using C for embedded systems since … um … the 80s (and that dates me). Back then, we used DOS based cross compilers and had to write our own standard C library and had to create our own header files for the hardware (it was an electrocardiograph based on an Intel 80376, a protected mode only version of the ‘386). We never really considered it a different C language, just regular C with a limited built in library. And we had different ways of writing into the HW registers, sometimes using linker scripts and other times just assigned pointers to physical addresses.

belesiu
Автор

i'd like to see more about linker scripts. so far each time i see ".ld" i just know "that's the black box that joins stuff together" but the more i get into embedded and systems programming the more common they become, so it seems like a good time to understand a bit of that black box lol. Really like your channel. greetings from Argentina

gonzajuarez
Автор

I am an embedded systems engineering student, i like your tutorials, i like your way of explaining, thank you very much mr jacob

lilposte
Автор

Yes, I would like to see some linker scripts videos, Jacob!! :)

cleightthejw
Автор

Hey! Absolutely loved the last part, I had never seen that kind of embedded slang in C, would love to see more!

LogicEu
Автор

Great video as usual, Jacob. When you said "I'm not sure anyone has used borland C in the past you had me laughing my ass off. We still use borland C to learn C in colleges and universities in India to date. It's run in DOSbox. I do see the appeal of using it for educational purposes, as you can see the state of the registers and stuff much easier using the in-built debugging tools.

jamesboby
Автор

Thank you for sharing this, I am an embedded firmware developer, and yes, is a usage of a old C, and not only that, you must be strong at Make and the linkerscript, a whole world on it, diferent architectures. Lot of fun.

mathemabeat
Автор

Aside from linker scripts and defines, there's also the small matter of various libraries that are specific to a particular embedded processor or family of embedded processors.
I bring this up because it seems like neophyte C programmers seem to think that I/O functions like "printf" are a part of the C language (like "WRITE" is a part of the FORTRAN language) rather than a part of a library that can be replaced or omitted entirely depending on need.

lewiscole
Автор

I started following u last month...i watched almost every video in ur channel... u r really doing great job mate👍

vijayk
Автор

Did you know that the first embedded system, the Apollo Guidance Computer, was developed for NASA's Apollo program in the 1960s? It used a custom-built assembly language, but modern embedded systems have come a long way since then! Today, we use Embedded C/C++ to program microcontrollers, enabling devices like IoT gadgets, drones, and even smart appliances. The key difference between regular C/C++ and Embedded C/C++ lies in the system constraints, like memory and processing power, that embedded systems have to work with. This makes writing efficient and optimized code a top priority for Embedded C/C++ developers!

szilagyimiklos
Автор

Please more on linkers.
Say for example, if you were writing an old console game on C, would you be able to write a custom linker to manage the memory mapped resources?

jgcooper
Автор

The syntax of C doesn't change, but rather you need to rethink how you design your code. You're not building an app to execute on an OS, you're creating the firmware to run the entire machine.

salsamancer
Автор

Last time I used "Borland Turbo C" was on top of WinNT 4.0, for cross development for an MS-DOS based platform.
In case you are curious the MS-DOS based platform(s) were Norand/Intermec portable devices, the grand parents of modern tablets.
By that time, 1999, my goto programming tool for desktop development was C++ Builder 3, and some Visual Basic 5 when forced by my co-workers.

jorgeferreira
Автор

4:31 I think I have an old version of DOS Borland Turbo C and Turbo assembler TASM and Turbo Pascal as well. I used to program my old DOS a lot with these high quality software and even made DOS graphic and mouse driven interfaces with them. I still using them in DOSBOX from time to time. I can send them to you if you still need them.

siliconrobot
Автор

Embedded C is when you have switch statements instead of if-elses and the more switch statements you have the more embedded the C is.

doowi