Message ID | CAGsJ_4y3Snvf-2DLSrpU5+zmytkARtNxJN_nPdiOngd+BK-aDA@mail.gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 08/28/2012 01:08 AM, Barry Song wrote: > 2012/8/28 Barry Song <21cnbao@gmail.com>: >> 2012/8/21 Arnd Bergmann <arnd@arndb.de>: >>> On Tuesday 21 August 2012, Barry Song wrote: >>>> then i add these to Kconfig.debug as it is a common way >>>> >>>> config DEBUG_PRIMA2_UART1 >>>> bool "Kernel low-level debugging on DaVinci DA8XX using UART1" >>>> depends on ARCH_PRIMA2 >>>> help >>>> Say Y here if you want the debug print routines to direct >>>> their output to UART1 serial port on SiRFprimaII devices. >>>> >>>> config DEBUG_MARCO_UART1 >>>> bool "Kernel low-level debugging on DaVinci DA8XX using UART2" >>>> depends on ARCH_MARCO >>>> help >>>> Say Y here if you want the debug print routines to direct >>>> their output to UART1 serial port on SiRFmarco devices. >>>> >>>> and these in mach-prima2/include/mach/uart.h >>>> >>>> #ifdef CONFIG_DEBUG_PRIMA2_UART1 >>>> #define SIRFSOC_UART1_PA_BASE 0xb0060000 >>>> #elif defined(CONFIG_DEBUG_MARCO_UART1) >>>> #define SIRFSOC_UART1_PA_BASE 0xcc060000 >>>> #endif >>>> >>>> the above codes seem still ugly ? >>>> >>> >>> No, that's fine, about as a good as it gets with today's kernel >>> capabilities. Just fix the description to have the correct >>> SoC name instead of "DaVinci DA8XX" ;-) >> >> except the DEBUG_LL uart base address, i missed the zreladdr-y. for >> primaii, it is 0x00008000, for marco, it is 0x40008000 as marco's >> memory space begins from 0x4000000. >> i would to have AUTO_ZRELADDR for the whole SiRF series. >> but for uImage load address difference in uImage header, which blocks >> multiple SoCs from using same uImage, is "KERNEL_NOLOAD" uImage type >> the current generic solution? > > also add Stephen Warren. > > i have two verified ways to resolve this problem: > > 1. use "kernel noload", build uImage by: > > make uImage UIMAGE_TYPE=kernel_noload > and add the following patch in kernel: Very recent U-Boot have a bootz command, which acts just like bootm, but allows use of a raw zImage or the kernel, rather than a uImage-wrapped-zImage. This was implemented by Marek Vasut.
2012/8/28 Stephen Warren <swarren@wwwdotorg.org>: > On 08/28/2012 01:08 AM, Barry Song wrote: >> 2012/8/28 Barry Song <21cnbao@gmail.com>: >>> 2012/8/21 Arnd Bergmann <arnd@arndb.de>: >>>> On Tuesday 21 August 2012, Barry Song wrote: >>>>> then i add these to Kconfig.debug as it is a common way >>>>> >>>>> config DEBUG_PRIMA2_UART1 >>>>> bool "Kernel low-level debugging on DaVinci DA8XX using UART1" >>>>> depends on ARCH_PRIMA2 >>>>> help >>>>> Say Y here if you want the debug print routines to direct >>>>> their output to UART1 serial port on SiRFprimaII devices. >>>>> >>>>> config DEBUG_MARCO_UART1 >>>>> bool "Kernel low-level debugging on DaVinci DA8XX using UART2" >>>>> depends on ARCH_MARCO >>>>> help >>>>> Say Y here if you want the debug print routines to direct >>>>> their output to UART1 serial port on SiRFmarco devices. >>>>> >>>>> and these in mach-prima2/include/mach/uart.h >>>>> >>>>> #ifdef CONFIG_DEBUG_PRIMA2_UART1 >>>>> #define SIRFSOC_UART1_PA_BASE 0xb0060000 >>>>> #elif defined(CONFIG_DEBUG_MARCO_UART1) >>>>> #define SIRFSOC_UART1_PA_BASE 0xcc060000 >>>>> #endif >>>>> >>>>> the above codes seem still ugly ? >>>>> >>>> >>>> No, that's fine, about as a good as it gets with today's kernel >>>> capabilities. Just fix the description to have the correct >>>> SoC name instead of "DaVinci DA8XX" ;-) >>> >>> except the DEBUG_LL uart base address, i missed the zreladdr-y. for >>> primaii, it is 0x00008000, for marco, it is 0x40008000 as marco's >>> memory space begins from 0x4000000. >>> i would to have AUTO_ZRELADDR for the whole SiRF series. >>> but for uImage load address difference in uImage header, which blocks >>> multiple SoCs from using same uImage, is "KERNEL_NOLOAD" uImage type >>> the current generic solution? >> >> also add Stephen Warren. >> >> i have two verified ways to resolve this problem: >> >> 1. use "kernel noload", build uImage by: >> >> make uImage UIMAGE_TYPE=kernel_noload >> and add the following patch in kernel: > > Very recent U-Boot have a bootz command, which acts just like bootm, but > allows use of a raw zImage or the kernel, rather than a > uImage-wrapped-zImage. This was implemented by Marek Vasut. Thanks, Stephen. i guess xianglong will try bootz on SiRFmarco and try to move from uImage to raw zImage. Based on your past "kernel_noload" support patch, we actually can compile an uImage by: make uImage UIMAGE_TYPE=kernel_noload UIMAGE_ENTRYADDR=0x0 and it gets a cross-SoCs uImage which doesn't care about zreladdr-y in Makefile.boot. actually it just jumps to (loaded uImage dram address + 0x40). anyway, we don't need to modify mach-prima2/Makefile.boot for marco any more. do people think we have a chance to delete mach-xxx/Makefile.boot for some platforms if zreladdr-y and related address don't make many senses again? -barry
diff --git a/arch/arm/mach-prima2/Makefile.boot b/arch/arm/mach-prima2/Makefile.boot index 53c5225..059bcd7 100644 --- a/arch/arm/mach-prima2/Makefile.boot +++ b/arch/arm/mach-prima2/Makefile.boot @@ -1,12 +1,4 @@ -zreladdr-y += 0x00008000 -params_phys-y := 0x00000100 -initrd_phys-y := 0x00800000 #we use kernel_noload uImage and AUTO_ZRELADDR +zreladdr-y += 0x0 2. don't use kernel's uImage target, mkimage uImage out of kernel by giving mkimage the "-a 0x40008000" and keep kernel unchanged. anyway, i think arm SoC needs a generic way to handle this kind of problem. if we move to 1, i think almost all ARM SoCs don't need Makefile.boot again.