
In message 43C82439.6030102@comcast.net you wrote:
Thanks for the quick response. There are some Blackfin related questions on the old list, but the attempt made a couple of years ago to submit the patches was rejected for a lot of reasons. I was not involved at that time. I am attempting to determine if this ENV_IS_EMBEDDED approach is also going to be rejected so I can find another way. It is
Yes. Please don't invent new stuff without need. The existing code is ugly (being a mess of #ifdef's), but serves a purpose (minimal code footprint because all these things get computed at compile time) and covers all existing configurations so far.
The source of my confusion is that ENV_IS_EMBEDDED is defined as follows in environment.h #if (CFG_ENV_ADDR >= CFG_MONITOR_BASE) && \ (CFG_ENV_ADDR+CFG_ENV_SIZE) <= (CFG_MONITOR_BASE+CFG_MONITOR_LEN) #define ENV_IS_EMBEDDED 1 #endif Isn't CFG_MONITOR_BASE the address where u-boot resides for execution?
No. It's the start address of the image in flash. As mentioned before, this has *nothing* to do with execution.
It is defined that way on the Blackfin code because CFG_MONITOR_BASE is defined as TEXT_BASE and TEXT_BASE is defined as 0x07FC0000. The flash memory is located at CFG_FLASH_BASE (defined as 0x20000000) and CFG_ENV_ADDR is 0x20004000. U-boot is loaded into flash at 0x20000000,
Ummm... then 0x07FC0000 must be a RAM address, right? Then your definition of CFG_MONITOR_BASE is broken. You should have CFG_MONITOR_BASE = 0x20000000.
so the environment data does reside in flash even though the ENV_IS_EMBEDDED test fails. The code gets around this by just defining
Misconfiguration.
it directly. So is CFG_MONITOR_BASE incorrectly defined and it should be a flash address?? BTW the u-boot code is not compiled PIC, so the
Yes.
execution address must matc the link address.
...or you must relocate it.
Best regards,
Wolfgang Denk