Our main topic is “Desktop C Vs Embedded C” .
When we say Desktop , It means any Desktop OS say Linux or Windows or MacOS. So OS abstracts the hardware detail. Application written on top of OS will be on Virtual Memory and it doesn’t require any hardware detail.
This is the reason , We can write & display a “Hello World” program in minutes. An application developer need not to know about hardware detail and assembly language dealing with that .
On the other hand , Embedded C is used closely with Assembly language of particular hardware platform . You may notice assembly in startup code of any Embedded program including bootloader .
Apart from that one has to select data types smartly to write an optimized and reliable Embedded software. For example , unsigned int is 16 bit in 8-bit MCUs but 32 bit in 32-bit MCUs . Embedded C user has to take care of various registers and device memory map in firmware development.
Opinion of Industry folks matters
Here are few interesting comments from my two year old post in linkedin.
Qasim Iqbal shared his experience of Embedded C flavor for data science.
C Questions with Embedded C mindset
Let me try to give few examples here
Q1: What should be output of following ? You may answer in comment box.
Q2: Do you think logical operation (>>) in Desktop C do same task at lower level for both signed & unsigned numbers? If yes, how it maintain sign bit ?
Q3: What should be most optimized data type using standard C keywords for 0 to 200 range ?
Q4: Is it possible to know address of global variables without executing the program ?
Here is my opinion in that post
I will recommend to go through WiKi link for further detail.
About Author :
Sanjay Adhikari : A Computer Engineering graduate who got stuck in Microcomputer
•More than 25 years intensive experience in designing, developing and supporting various embedded designs in Telecom access networks.
*Implementation of embedded technical support, Hiring & Mentoring of embedded engineers.
•Over 10 yrs experience in handling an embedded-system support team as a Team Lead.
•Expertise in Design and Development of Linux Device drivers and Bare Board Device Drivers for various telecom/networking devices. Technical knowledge of interfaces like DDR, PCIe, SerDes, Ethernet, I2C etc
•Hands-on experience in Board Support Packages (BSPs) for PowerPC, ARM SoCs from Freescale.
•Enabled Trans-national(Cisco, Alcatel-Lucent, Juniper etc ) and Indian (TATA, C-DOT, DRDO) clients to implement Freescale Networking SOCs.
•Supported all Major Networking (Cisco, Juniper, Aricent) clients in hardware and software troubleshooting on custom hardware. Help customers in porting Freescale device drivers to customer specific Operating Systems such as IOS , JUNOS, FreeBSD etc.
•Provided training to design engineers in using Freescale’s CodeWarrior and Linux BSP.
•Conducted training and demonstration of Freescale technologies in various public events such as Freescale Technology Forum, Design with Freescale etc.