From zero to main(): Bare metal C

Because initial values for data are added to flash after the .text section, this is what the AT > rom bit does. Since _etext points to the end of the text section, that’s where we expect the initialization values to be found. It would be better if we had a variable explicitly pointing to the address that AT > rom resolves to, but that’s not something you can do AFAIK.