[uClinux-dev] MCF5272 + kernel 2.6 + XIP

Greg Ungerer gerg at snapgear.com
Mon Jun 16 00:50:19 EDT 2008


Hi Jean-Francois,

NICOLAS Jean-François wrote:
> I have to make run openvpn on on my custom board based on a MCF5272C3 
> having only 4MB RAM. But there is not enough RAM to launch openvpn when 
> I execute kernel from RAM with a RAM ROMfs.
> 
> So I'm trying to execute kernel (2.6) from ROM with ROM mtd partion.
> 
> The first issue I have encountered is about the generation of the 
> image.bin : due to the memory mapping, my first address in FLASH is 
> 0xffc00000, so objcopy generates a image.bin of 4GB. To solve this 
> problem I modified the vmlinux.lds.S by adding :
> 
> #define DATA_ADDRESS    AT (ADDR(.text) + SIZEOF(.text))
> #define INIT_ADDRESS    AT (ADDR(.text) + SIZEOF(.text) + SIZEOF(.data))
> #define    BSS_ADDRESS    AT (ADDR(.text) + SIZEOF(.text) + 
> SIZEOF(.data) + SIZEOF(.init))
> ...
> .data DATA_ADDR : DATA_ADDRESS {
> ...
> .init : INIT_ADDRESS {
> ...
> .bss : BSS_ADDRESS {
> ...
> 
> Now, the image.bin size seems corrects :
> 
> freescale-coldfire-4.2/bin/m68k-uclinux-objdump -h linux/linux
> 
> linux/linux:     file format elf32-m68k
> 
> Sections:
> Idx Name          Size      VMA       LMA       File off  Algn
>   0 .text         000d10fc  ffc10000  ffc10000  00002000  2**2
>                   CONTENTS, ALLOC, LOAD, READONLY, CODE
>   1 .data         0000cc00  00000400  ffce10fc  000d4400  2**2
>                   CONTENTS, ALLOC, LOAD, DATA
>   2 .init         0000c000  0000d000  ffcedcfc  000e1000  2**2
>                   CONTENTS, ALLOC, LOAD, CODE
>   3 .bss          0000d994  00019000  ffcf9cfc  000ed000  2**4
>                   ALLOC
>   4 .comment      000030e8  00000000  00000000  000ed000  2**0
>                   CONTENTS, READONLY
> 
> 
> I'm surprised because there is no specific startup code for kernels that 
> run from ROM like head-rom.S (to copy data segment to RAM, ...). Is that 
> normal ?

I haven't actually tried a boot direct from flash for any 2.6
ColdFire targets. Although the "design" of the startup should
allow for it without too much trouble.

The idea is that the FPLATFORM_SETUP macro can do all the extra
work required for a FLASH startup - while still using the rest of
the standard starup code in arch/m68knommu/platform/coldfire/head.S.

It will need to init DRAM, setup any relevant chips selects,
set any relevant GPIO states, maybe init a PLL, and copy the
RAM section to DRAM. (Look at an example of extra setup for
the 5249 in include/asm-m68knommu/m5249sim.h)


> I have even tried to boot this kernel without success (no traces) and I 
> have absolutely no idea how to debug that.

On real hardware use the BDM. Or get the serial port setup
early and output to that from within the head code.


> So someone has already to tried to execute 2.6-kernel from ROM on this 
> kind of platforms ? Or have you an other idea to make run a VPN ?

Regards
Greg



------------------------------------------------------------------------
Greg Ungerer  --  Chief Software Dude       EMAIL:     gerg at snapgear.com
Secure Computing Corporation                PHONE:       +61 7 3435 2888
825 Stanley St,                             FAX:         +61 7 3891 3630
Woolloongabba, QLD, 4102, Australia         WEB: http://www.SnapGear.com


More information about the uClinux-dev mailing list