X-Git-Url: https://git.kernelconcepts.de/?p=karo-tx-uboot.git;a=blobdiff_plain;f=doc%2FREADME.arm-relocation;h=645b3746c8a88fe25f7c9a33cd9b8b17aa7b5a57;hp=2f91d0ac43f73b30829eef46e4f45cb407087a2a;hb=8dc16cf9dd6196d99969d12741df186a61a2f9a3;hpb=2e5167ccad93ca9cfa6a2acfab5e4785418e477e diff --git a/doc/README.arm-relocation b/doc/README.arm-relocation index 2f91d0ac43..645b3746c8 100644 --- a/doc/README.arm-relocation +++ b/doc/README.arm-relocation @@ -34,28 +34,21 @@ At lib level: Board.c code is adapted from ppc code -At config level: - - Undefine CONFIG_SYS_ARM_WITHOUT_RELOC - * WARNING ** WARNING ** WARNING ** WARNING ** WARNING ** WARNING ** WARNING * Boards which are not fixed to support relocation will be REMOVED! -Eventually, CONFIG_SYS_ARM_WITHOUT_RELOC will disappear and boards -which have to migrated to relocation will disappear too. - ----------------------------------------------------------------------------- -For boards which boot from nand_spl, it is possible to save one copy +For boards which boot from spl, it is possible to save one copy if CONFIG_SYS_TEXT_BASE == relocation address! This prevents that uboot code is copied again in relocate_code(). -example for the tx25 board: +example for the tx25 board booting from NAND Flash: a) cpu starts b) it copies the first page in nand to internal ram - (nand_spl_code) + (spl code) c) end executes this code d) this initialize CPU, RAM, ... and copy itself to RAM (this bin must fit in one page, so board_init_f() @@ -86,20 +79,20 @@ TODO ----------------------------------------------------------------------------- -Relocation with NAND_SPL (example for the tx25): +Relocation with SPL (example for the tx25 booting from NAND Flash): - cpu copies the first page from NAND to 0xbb000000 (IMX_NFC_BASE) and start with code execution on this address. -- The First page contains u-boot code from u-boot:nand_spl/nand_boot_fsl_nfc.c - which inits the dram, cpu registers, reloacte itself to CONFIG_SYS_TEXT_BASE and loads +- The First page contains u-boot code from drivers/mtd/nand/mxc_nand_spl.c + which inits the dram, cpu registers, reloacte itself to CONFIG_SPL_TEXT_BASE and loads the "real" u-boot to CONFIG_SYS_NAND_U_BOOT_DST and starts execution @CONFIG_SYS_NAND_U_BOOT_START - This u-boot does no RAM init, nor CPU register setup. Just look where it has to copy and relocate itself to this address. If relocate address = CONFIG_SYS_TEXT_BASE (not the same, as the - CONFIG_SYS_TEXT_BASE from the nand_spl code), then there is no need + CONFIG_SPL_TEXT_BASE from the spl code), then there is no need to copy, just go on with bss clear and jump to board_init_r. ----------------------------------------------------------------------------- @@ -113,13 +106,9 @@ TBC Debugging u-boot in RAM: (example on the qong board) -a) add in config.mk: - -PLATFORM_CPPFLAGS += -DDEBUG - ----------------- -b) start debugger +a) start debugger arm-linux-gdb u-boot @@ -137,7 +126,7 @@ The target architecture is set automatically (currently arm) ----------------- -c) connect to target +b) connect to target target remote bdi10:2001 @@ -148,7 +137,7 @@ Remote debugging using bdi10:2001 ----------------- -d) discard symbol-file +c) discard symbol-file (gdb) symbol-file Discard symbol table from `/home/hs/celf/u-boot/u-boot'? (y or n) y @@ -157,7 +146,7 @@ No symbol file now. ----------------- -e) load new symbol table: +d) load new symbol table: (gdb) add-symbol-file u-boot 0x8ff08000 add symbol table from file "u-boot" at @@ -174,28 +163,31 @@ Program received signal SIGSTOP, Stopped (signal). add-symbol-file u-boot 0x8ff08000 ^^^^^^^^^^ - get this address from u-boot debug printfs - -U-Boot 2010.06-rc2-00009-gf77b8b8-dirty (Jun 22 2010 - 09:43:46) - -U-Boot code: A0000000 -> A0058BAC BSS: -> A0061F10 -CPU: Freescale i.MX31 at 398 MHz -Board: DAVE/DENX Qong -mon: FFFFFFFF gd->monLen: 00061F10 -Top of RAM usable for U-Boot at: 90000000 -LCD panel info: 640 x 480, 16 bit/pix -Reserving 600k for LCD Framebuffer at: 8ff6a000 -Reserving 391k for U-Boot at: 8ff08000 - ^^^^^^^^ -Reserving 1280k for malloc() at: 8fdc8000 -Reserving 24 Bytes for Board Info at: 8fdc7fe8 -Reserving 52 Bytes for Global Data at: 8fdc7fb4 -New Stack Pointer is: 8fdc7fb0 -RAM Configuration: -Bank #0: 80000000 256 MiB -relocation Offset is: eff08000 -mon: 00058BAC gd->monLen: 00061F10 -Now running in RAM - U-Boot at: 8ff08000 - ^^^^^^^^ + get this address from u-boot bdinfo command + or get it from gd->relocaddr in gdb + + => bdinfo +rch_number = XXXXXXXXXX +boot_params = XXXXXXXXXX +DRAM bank = XXXXXXXXXX +-> start = XXXXXXXXXX +-> size = XXXXXXXXXX +ethaddr = XXXXXXXXXX +ip_addr = XXXXXXXXXX +baudrate = XXXXXXXXXX +TLB addr = XXXXXXXXXX +relocaddr = 0x8ff08000 + ^^^^^^^^^^ +reloc off = XXXXXXXXXX +irq_sp = XXXXXXXXXX +sp start = XXXXXXXXXX +FB base = XXXXXXXXXX + +or interrupt execution by any means and re-load the symbols at the location +specified by gd->relocaddr -- this is only valid after board_init_f. + +(gdb) set $s = gd->relocaddr +(gdb) symbol-file +(gdb) add-symbol-file u-boot $s Now you can use gdb as usual :-)