From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wolfgang Denk Date: Thu, 18 Sep 2003 13:00:39 +0200 Subject: [U-Boot-Users] Re: [PATCH][CFT] bring ARM memory layout in line with the documented behaviour In-Reply-To: Your message of "Wed, 17 Sep 2003 16:35:00 +0200." Message-ID: <20030918110044.6595DC59E4@atlas.denx.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Dear Anders, in message you wrote: > > here's a fairly lengthy patch against 0.4.8 that brings the memory > layout of all supported ARM CPUs in line with the documentation. > This has the positive side-effect of allowing U-Boot to actually run on > PXA CPUs (the stock PXA implementation didn't set the start-address of > the malloc pool at all!) > > The memory layout now more or less conforms to the standard as defined > in the README (the absolute addresses are board-specific, of course). > > Since the stack and malloc-heap are now located below the U-Boot code, > the TEXT_BASE of the supported ARM boards can be increased accordingly > (for most (but not all) boards, the patch already does this). This is actually the biggest "problem" with the existing ARM code (as inherited from ARMBoot): with the orginal philosophy of PPCBoot, TEXT_BASE should not play ANY role here. The way I would like to soo this implemented, and as it _is_ implemented in PPCBoot (and in U-Boot for PowerPC) is as follows: TEXT_BASE determines the start address in FLASH memory which is used before relocation. The RAM initialization code is, among other things, responsible to determine the size of the RAM, and the relocation address is then calculated DYNAMICALLY dependend on the RAM size found. This allows that boards with different RAM sizes will always provide maximum free RAM under U-Boot. > Memory layout example based on my PXA255 (TEXT_BASE = 0xA07E0000): > > 0xA079FF74 Monitor Stack (growing downwards) > 0xA079FF80 Board Info Data and permanent copy of Global Data > 0xA07A0000 Malloc Arena > 0xA07E0000 RAM copy of Monitor Code > ... optional: Frame Buffer > 0xA07FFFFF [End of RAM] I still see references to _armboot_start, _armboot_end_data, and _armboot_end - which role do these play now? Can we get rid of them? How are they (should they be) set in your memory map above? > Since I only have access to PXA-based HW, I was only able to verify > that U-Boot still *builds* for all supported ARMs; I have to rely on > your help to see if it also *runs* correctly. I think some more code should be changed like the allocation of display memory (see CONFIG_VFD in "lib_arm/board.c") - this should be done like we do for PowerPC, too. Any test results / comments from the other board maintainers? Best regards, Wolfgang Denk -- Software Engineering: Embedded and Realtime Systems, Embedded Linux Phone: (+49)-8142-4596-87 Fax: (+49)-8142-4596-88 Email: wd at denx.de Politics: A strife of interests masquerading as a contest of principles. The conduct of public affairs for private advantage. - Ambrose Bierce