Training in Hardware: FPGA/RTL/PCI(e)/Foundations (and FireSim as plus)
Project detail
I would like to learn more about Hardware to prepare myself to work with the development of device drivers for more complex hardware. I need someone with knowledge and/or work experience of either projecting hardware — especially within the PCI/PCIe realm — or developing device drivers for this kind of hardware.
1) The hardware basics: Interrupts, DMA, DRAM/SRAM(&caching), multicore & multithreading, etc – under the hoods (I know what they are, I need to understand how they work and how they interact with each other – i.e. how cpu is selected to process an interrupt). Schematics – basic notions for reading schematics, hardware documentation, etc.
2) RTL: key concepts and definitions. How and what to study about them. Where to find information. Brief introduction.
3) FPGAs: key concepts and definitions. How they are projected, simulated, tested and documented. Main sources of information.
4) PCI/PCIe: key concepts and general protocol flow. Main sources of information.
I also have a “plus topic” that I will be willing to pay more if you have enough experience/knowledge to approach.
PLUS TOPIC: FireSim simulator. Key concepts and definitions. Practical workshop on how to set it up, develop build and run simulations with a simple PCIe hardware running Linux on Chisel FPGAs. Developing a simple Linux kernel driver for the simulated hardware.
I am expecting an initial short “crash training” of a few hours, maybe some written materials at the first moment. This is to prepare me to study it on my own.
I’m picturing it in a format where each topic would have approximately two milestones: (1) a teaching session – a Google Meet call with a presentation of its content in no longer than 2-3 hours, including some reading suggestions, video suggestions, etc for after the session and some practice tasks; and (2) another call to review the contents of the previous one, review the practice tasks, answer questions and discuss some practical examples.
(PS: but this is just a suggestion, you can propose another format if you think it’s better)
After the learning sessions, please add some extra milestones for periodic sessions where I would read some more texts, do some more practice tasks, etc, send them to you and review it again, in shorter sessions, and bring questions for you.
Please include in your proposal:
1) Your available hours and timezone
2) Your experience and/or knowledge in the field
3) Start your proposal with the expression “Bus: ” followed by the name of the most recent bus type mentioned in the project details (so I can know you have read and understood the project)