I am not exactly sure to what videos you are referring to and also I am not sure about your questions.
Basically, if you need to customize software for specific hardware, than you create something what is called BSP - board support package. Format of BSP is different between software, but it usually containts information like:
- memory configuration,
- pin configuration,
- interface configuration and initialization (e.g. what is width of your MMC interface),
- peripheral chip initialization (e.g Ethernet registers and reset), etc.
Some basic initialization is done in bootloader (often, in bootloader you may only initialize the interfaces and pins which you need to boot up OS) and full initialization is done in Linux (at this stage, memory initialization is already done by bootloader, but OS will initialize all the pins and interfaces which are on the board)
If you like, have a look at commits, you will see what kind of information can be changed:
- uBoot commits:
https://github.com/FEDEVEL/openrex-u...commits/jethro- Linux commits:
https://github.com/FEDEVEL/openrex-l...commits/jethroIf you are using memory modules, they have EEPROM with information about the memory module. It is called SPD
https://en.wikipedia.org/wiki/Serial_presence_detect - information from this EEPROM is used to setup memory controller.