Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Embedded Syllabus #27

Open
PranabNandy opened this issue Sep 19, 2023 · 3 comments
Open

Embedded Syllabus #27

PranabNandy opened this issue Sep 19, 2023 · 3 comments
Assignees
Labels
invalid This doesn't seem right wontfix This will not be worked on

Comments

@PranabNandy
Copy link
Owner

PranabNandy commented Sep 19, 2023

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 PranabNandy added bug Something isn't working wontfix This will not be worked on labels Sep 19, 2023
@PranabNandy PranabNandy self-assigned this Sep 19, 2023
@PranabNandy PranabNandy added invalid This doesn't seem right and removed bug Something isn't working labels Sep 19, 2023
@PranabNandy
Copy link
Owner Author

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 )

@PranabNandy
Copy link
Owner Author

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
Copy link
Owner Author

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
invalid This doesn't seem right wontfix This will not be worked on
Projects
None yet
Development

No branches or pull requests

1 participant