How to learn register level programming in C ?

Posted by

“Dreams do come true, but first you must dream.” ― TemitOpe Ibrahim

Why one should learn register level programming ?

Recently I posted following in linkedin :

Would you like to learn Assembly ?
*No . Why one should learn machine language when C is there.
Would you like to learn C ?
*No. It’s pretty old programming language and don’t follow OOP.
Would you like to learn C++ ?
* No because I know it from school days/
Would you like to create some Peripheral libraries for MCU in C++?
* Why should I do that if code generating tools are there ?

Congratulations ! You are our configuration Engineer …

Above is true for many embedded professionals working for IoT. I realized this during my hunt for IoT firmware engineers last year. Let me try to clarify all these in reverse order:

One must learn OOP concepts for any software developer career. Embedded/VLSI folks can learn C++.

C++ story starts when you start pushing functions in derived data type i.e. structure and name it class.

So it makes sense to learn C first , otherwise you would be mixing cout() and printf()

Additionally C is , the only high level programming language , nearest to hardware.

Check my article Which programming language I should learn ?

Assembly is must to run C program , check What does a microcontroller do before entering main() ?

Does desktop based C also use assembly ? This was asked by one curious student when I was providing live demo on x64 based debugging .

Yes, everything gets converted to op-code eventually.

How much will be covered in forthcoming STM32 day on 12th Feb ?

STM32 day is divided into two parts :

Live Sessions

This is useful for anyone who has worked in C even with Arduino. It can help someone to qualify embedded based interview.

10am to 11am Embedded C refresher & tips

1: Pointer basics

2: Typedef and Structure

3: Structure Hands-on

11am -1 pm STM32 Overview

1: STM32CUBEIDE Overview

2: STM32 memory map

3: Linker

4: Verification of addresses

5: Debugging concepts

1PM -2PM break() ;

2pm -3:30pm STM32 Register level programming

3:30PM to 3:45PM break();

4pm -5pm ARM Cortex Usecase

Interrupt Handling

Special Session 8PM-9PM (Optional)

How to get better job after Career gap?

Recorded Sessions (90days access)

I randomly took feedback from one student with career break about following content in course. Response was “It’s like an eye opener “

  • Importance of IDE
  • Programming Skills
  • Keywords and Identifiers
  • Preprocessor
  • Integer , Floating Point
  • Storage Class
  • String

Distraction FREE online course

Hello Mr. Hardware !

Registration Link

About Presenter :

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.

Follow on Linkedin

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.