> Now I wanted to learn the "hard" part, mainly RAM initialization and PCI enumeration.
Hard part, indeed, I should say. RAM init = MRC (INTEL IP), PCIe enumeration, also IP, also part of FSP (there are open source alternatives to PCIe enumeration). To really learn these, you should either have/obtain source code, either to do reverse engineering.
None of these are easy. Maybe, upon getting HW, you should a bit explore algorithms inside FSP using JTAG debugger (solely for the learning experiences/purposes). Just a thought.