Open PranabNandy opened 1 year ago
**1. Board Bring Up Engineer (Needs BSP knowledge )
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
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)