From mboxrd@z Thu Jan 1 00:00:00 1970 From: Heiko Schocher Date: Tue, 02 Nov 2010 08:10:02 +0100 Subject: [U-Boot] [RFC] arm926ejs: fix jump to RAM nand_boot In-Reply-To: <4CCFB596.2040904@free.fr> References: <20101031203243.478E9EA47F@gemini.denx.de> <1288547025-16877-1-git-send-email-albert.aribaud@free.fr> <20101031181244.419EDEA47F@gemini.denx.de> <4CCDB78D.506@ahsoftware.de> <20101031190136.64829EA47F@gemini.denx.de> <4CCDBE71.1010805@free.fr> <20101031192243.7AF531522C0@gemini.denx.de> <4CCDC625.3010209@free.fr> <20101031195941.5AB961522C0@gemini.denx.de> <4CCDD02D.2050304@free.fr> <1288560046-6458-1-git-send-email-albert.aribaud@free.fr> <4CCDED8D.0@ahsoftware.de> <4CCDF5FC.4060704@free.fr> <20101101091515.C8BDD1522C0@gemini.denx.de> <4CCEF2E4.5080003@free.fr> <20101101192318.06C231522C0@gemini.denx.de> <4CCFAFE4.3000600@denx.de> <4CCFB596.2040904@free.fr> Message-ID: <4CCFB94A.3090300@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 Hello Albert, Albert ARIBAUD wrote: > Le 02/11/2010 07:29, Heiko Schocher a ?crit : > >> - preloader copies first page of nand (nand_spl code) to >> 0xbb000000 (some cpu internal mem) and jumps to this address >> - nand_spl does lowlevelinit, relocate itself to TEXT_BASE (nand_spl >> code) >> - from there, it copies u-boot code from nand to >> CONFIG_SYS_NAND_U_BOOT_DST >> and jumps to CONFIG_SYS_NAND_U_BOOT_START >> - u-boot run into board_init_f, calculates new relocation address >> and relocates ... >> >> But there is a possibility to prevent one copy, if TEXT_BASE = >> relocation address = CONFIG_SYS_NAND_U_BOOT_DST >> >> In this case nand_spl code copies u-boot from nand to >> CONFIG_SYS_NAND_U_BOOT_DST. As this is equal to the relocation address, >> no need to copy code in relocate_code(). >> >> But as codesize changes (and with it relocation address) this >> is not a perfect solution. >> >> bye, >> Heiko > > Heiko, > > Since SPL is loaded in internal RAM, and since U-BOOT itself is loaded > only in DRAM, why does SPL need to relocate itself? Can it not run > entirely from IRAM and then jump to U-BOOT? Good question. This was the old behaviour. Check this, if we can prevent it. > If SPL needs to relocate, then why does it run only the copy loop but > not the fixups loop? in nand_spl//nand_boot_fsl_nfc.c: void board_init_f (ulong bootflag) { relocate_code (CONFIG_SYS_TEXT_BASE - TOTAL_MALLOC_LEN, NULL, CONFIG_SYS_TEXT_BASE); } -> nand_spl code gets copied where it is compiled for ... no need for fixups. bye, Heiko -- DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany