Forum Discussion
Altera_Forum
Honored Contributor
13 years agoHi all,
WOW, what a curve ball! Once again i have "bolded" the important parts. So it turns out that from uClinux 3.1 kernel to uClinux 3.7 kernel, among the many changes implemented, i found that there is no longer a hidden nios2.h file that has the ram memory address hardcoded in it. It turns out that the RAM in the custom board i am working with is set starting at address 0x00000000, which happened to coincide with this hardcoded address (or maybe the engineer who designed the board knew what he was doing...). This board was designed around uClinux 2.6.. kernel which did not even use devicetree at all so my guess is that it is good practice to set RAM at this address. To make things more interesting, on the uclinux 3.1 kernel that i was working with, changing this hardcoded address in nios2.h to match any changes in SOPC builder to the location of RAM does affect the booting process so if by any chance ram gets moved from address 0x00000000 then the system will not boot. This happened to me as i tried to automatically regenerate base addresses in SOPC builder after adding some modules and did not lock RAM's address. Finally, once i moved to uClinux 3.7 kernel, my system would not boot because this hardcoded base address of RAM is nowhere to be found by the system unlike in the previous version. i then had to revisit the ".dts" file and had to create a custom xml file to describe the location of ram that was missing. Hope this helps somebody out there as i wished this info had been out there for me. Thanks to all that at least attempted to provide help.