This post is related to tackle newbie questions about board level initialization on the beaglebone. I have already posted my questions on another ongoing thread but I've requested the admin to remove them since I believe having a seperate thread might be of more value for me and other people using or planning to buy a beaglebone.
So here are my questions:
- The manual talks about 'Public ROM' code all the time. I believe it is proprietry code hard burned into some non volatile memory which is always invoked on startup. If it is indeed TI code which is invisible to the user, what does the word 'public' mean here?
- The manual talks about the 'ROM reset vector'. Is it different from the reset vector for the entire system? What I mean is, when ARM is resetted, it does a number of things and then later jumps to either 0x0000'0000 or to 0xFFFF'0000 depending on whether 'high vectors' having been configured or not (ARM Architecture Reference Manual). If I am correct until here, then how does this information relate to TI's 'ROM reset vector' being at address 0x20000? Is this ROM internal to the SoC (although outside the A8 core)? So it basically means that TI has designed the SoC in such a way that this internal ROM appears to the MPU as if it is at 0x0000'0000 (referred to, at times using the word 'remapping'), isn't it?
- Now as per the AM335X_starterware_booting_and_flashing guide, the beaglebone has no settings to configure the boot modes (correct me if I am wrong here). So the micro SD card that is shipped with the bone is the primary boot device (as per the SRM) and it already contains the second stage bootloader isn't it?
- I believe the very basic bootloader is in the ROM (which is TI proprietry) and it already configures the various important peripherals including the microSD card driver and hence whatever binary files are placed in the SD Memory card is then read by this ROM bootloader right?
- What exactly does the TI PSP contain? As far as I have understood, it contains the second stage and the 3rd stage bootloaders (u-boot) and the Linux kernel? But I cannot seem to find the link to download it. Could you please point me to a link from where I could download it?
- Besides the TI PSP, I could instead use Angstrom or Android as the OS on the board right? But in that case, I would need to then configure u-boot manually and using this I can then switch over to one of these OSes I believe. Is it correct?
- Where can I find u-boot that has been ported to the beaglebone?
- Can I write my own second stage bootloader (initialization routine) instead of using u-boot, like just for the sake of study?
- If I can, then can I load my initialization routine into the SD Card and assume that the ARM on the am3359 will start fetching the code from here assuming it is 0x0000'0000?
- I cannot seem to find a clear enough memory map which tells how the memory is being played around. For instance, on the SAM7S boards from Atmel it clearly tells that 'initially the ROM is located at linked address and also at 0x0. Later one can configure RAM to be at 0x0. At any given time both the ROM and the RAM (assuming they have been initialized) can be accessed using its linked address'. Where can I find such information for the AM335x?
I hope I have been specific enough with my questions. Keen to hear from you soon.