PranabNandy/BeagleBone-Black-Platform-Bring-Up

Embedded Syllabus

PranabNandy opened this issue · 3 comments

1. Embedded C, ARM Assembly

2. MCU ( Ardunio Uno, STM32F4XXX )

3. OS Concept

4. One CPUSS architecture ( ARM or RISC-V) [ As you are doing all the stuff for the cpu computation only ]

5. One Firmware (ATF)

6. Debugger ( On-board STM32 debugger, JTAG debugger ) [ Here debugging approach is importent ]

7. Linux Kernel development side ( Bottom Halves, Interrupt Handling, Process Sync, mm, rootfs side)

8. Linux Device Driver development side [ Here development approach needs the understanding of the HW for which we are wring the driver ]

9. On-chip peripherals protocol SPI,I2C, UART, CAN

10. Bootloader like UEFI, uboot

11. RTOS

12 Single Board computer experiments (BeagleBone -Black, RasberryPi)

3 types of Embedded Software Engineer Job roles:

1. Board Bring Up Engineer (Needs BSP knowledge )
2. Low Level Driver Developer ( Touch Panel, I2C driver, DMA Driver, USB driver)
3. Multimedia Driver Developer ( Camera, Audio, Video )

Step 1) Get computer systems understanding

Resource: Computer Systems : Application programmers perspective(book) is all you will need for this.

Step 2) Get understanding of how Operating Systems work (Process, Management, File Management, Memory management)

Resource:Operating System Concepts (book) by Galvin and others

Step 3) i) Get really good at C programming. (Function, Pointers, Arrays, Structures, Bit-wise operations should be your best friends)

Resource: C in Depth by Srivastava and The C Programming Language by K & R

ii) Get good at Embedded C

Step 4) Linux Programming

Resource: Linux Programming interface(book)

Step 5) Embedded Linux and porting (Get a reference platform(raspberry pi or beaglebone black) and start experimenting what you have learnt.

Resource: Embedded Linux Primer(book). Also both RPi and BBB have excellent documentation, support and forums.

Step 6) Pick a sensor interface it with your reference platform.

Resource: Sensor Datasheet, google, stackoverflow and forums.

Step 7) Learn about interfaces and drivers (Video, audio, I2C, SPI etc)

Resource: Some sensor datasheet have good explanation of the interfaces, google, stackoverflow and forums. For Device Drivers, LDD (book) and Essentials Linux Device Drivers(book).

Step 8) If you are able to reach here, well you will be a pretty darn good Embedded System Developer.

Programming Language: Embedded C, CAPL script
MCU/MPU : Easily work with processor based on ARM Cortex M4-M7 32,16 and 8 bit architecture
Communication Protocol : UART, SPI, I2C , CAN
MCU Perpheral: GPIO, Timer, ADC, DMA, Interrupt
Code Development IDEs: STM32CUBEIDE/MX, Keil, Code Composer Studio, Ardunio
Testing Tools: CANoe, CANalyzer
Software Management: JIRA, Git, GitHub