PranabNandy / BeagleBone-Black-Platform-Bring-Up

Learn about Bootloader, toolchains, Linux system calls & implement user space application on BeagleBone-Black
GNU General Public License v3.0
4 stars 2 forks source link

Embedded Syllabus #27

Open PranabNandy opened 1 year ago

PranabNandy commented 1 year ago

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)

PranabNandy commented 1 year ago

3 types of Embedded Software Engineer Job roles:

**1. Board Bring Up Engineer (Needs BSP knowledge )

  1. Low Level Driver Developer ( Touch Panel, I2C driver, DMA Driver, USB driver)
  2. Multimedia Driver Developer ( Camera, Audio, Video )**
PranabNandy commented 1 year ago

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.

PranabNandy commented 1 year ago

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