
Le 16/12/2010 11:17, Jason Liu a écrit :
diff --git a/arch/arm/cpu/armv7/u-boot.lds b/arch/arm/cpu/armv7/u-boot.lds index 5725c30..7b6ab66 100644 --- a/arch/arm/cpu/armv7/u-boot.lds +++ b/arch/arm/cpu/armv7/u-boot.lds @@ -34,6 +34,7 @@ SECTIONS . = ALIGN(4); .text : {
*(.ivt)
NAK. This IVT looks suspiciously like an IPL or header for some bootloader to me. It should not be part of u-boot, but should be built separately then glued to u-boot.bin like is done for NAND bootings. U-boot LDS files for ARM should always start with the reset and exception vectors, i.e. start.o.
arch/arm/cpu/armv7/start.o (.text) *(.text)
}
diff --git a/board/freescale/mx53evk/ivt.S b/board/freescale/mx53evk/ivt.S new file mode 100755 index 0000000..f7a176f --- /dev/null +++ b/board/freescale/mx53evk/ivt.S @@ -0,0 +1,289 @@ +/*
- Copyright (C) 2010 Freescale Semiconductor, Inc.
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2 of
- the License, or (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- .word with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- MA 02111-1307 USA
- */
+#include<config.h>
+.section ".ivt"
+ivt_header: .word 0x402000D1 /* Tag=0xD1, Len=0x0020, Ver=0x40 */ +app_code_jump_v: .word (0xF8006400 + (plugin_start - CONFIG_SYS_TEXT_BASE)) +reserv1: .word 0x0 +dcd_ptr: .word 0x0 +boot_data_ptr: .word (0xF8006400 + (boot_data - CONFIG_SYS_TEXT_BASE)) +self_ptr: .word (0xF8006400 + (ivt_header - CONFIG_SYS_TEXT_BASE)) +app_code_csf: .word 0x0 +reserv2: .word 0x0 +boot_data: .word 0xF8006000 +image_len: .word 2*1024 +plugin: .word 0x1
+/* Second IVT to give entry point into the bootloader copied to DDR */ +ivt2_header: .word 0x402000D1 /*Tag=0xD1, Len=0x0020, Ver=0x40 */ +app2_code_jump_v: .word _start /*Entry point for the bootloader */ +reserv3: .word 0x0 +dcd2_ptr: .word 0x0 +boot_data2_ptr: .word boot_data2 +self_ptr2: .word ivt2_header +app_code_csf2: .word 0x0 +reserv4: .word 0x0 +boot_data2: .word (CONFIG_SYS_TEXT_BASE - 0x400) +image_len2: .word (_end - CONFIG_SYS_TEXT_BASE) +plugin2: .word 0x0
+/* Here starts the plugin code */ +plugin_start:
- /* Save the return address and the function arguments */
The entry point of u-boot should be the reset vector. Obviously this is not a reset vector, and looks more like a hook that some ROM code expects to call as a subroutine. In any case, it should not be the entry code of u-boot.
Please consider refactoring this into two different binaries as NAND boot does.
Amicalement,