Kernel XIP Instructions For OMAP

From eLinux.org
Jump to: navigation, search

This page describes how to configure the kernel, write the kernel to an appropriate area of flash memory, and boot it, using a CELF CE-Linux kernel (linux version 2.4.20) on an OMAP innovator board. These instructions are somewhat old now, but they have general information which may still be useful for using Kernel XIP on some boards.


Atsushi Settsu of Mitsubishi Electric Corp. wrote the following:

This is a procedure to set up kernel with Kernel-XIP when we try on Innovator OMAP.

The software used for this test was the CELinux-040126 kernel.

CELinux-040304. 1. Configure the kernel.

  • General setup->Kernel Execute-In-Place from ROM =y
  • General setup->Kernel .text physical address = 60400

Attached is the .config file used: Media:XIP.config

2. Create the kernel.

  • $ make clean; make dep; make xipImage;

If you execute above, a kernel with Kernel-XIP is made as vmlinux.rr in arch/arm/boot/ .

3. Write the kernel to OMAP Flash by BootLoader(rrload).

  1) Erase kernel area.
   "E. Erase [comp] from Flash.." ->
      "3. Erase [Kernel]" ->
          "Are you sure?" = "y"
  2) Load kernel(vmlinux.rr to be made at 2.) to memory.
  "1. Load [comp] from I/O port..." ->
     "3. Load [Kernel]"
  3) Write kernel to flash.
  "2. Store RAM [comp] to Flash..." ->
     "3. Store [Kernel]"

This completes the setup.

4. Boot the kernel Use

"4. Boot Kernel/filesystem (boot_auto)"

When this option is selected in the BootLoader, the BootLoader jumps to 0x60400 of physical address in OMAP Flash, and the kernel with Kernel-XIP is booted.

The console output is as follows:

+-------------------------------------+
|           Welcome to the            |
|         DSPLinux Bootloader         |
|                                     |
|     rrload v4.8 by RidgeRun, Inc    |
|     rev D by MontaVista Software    |
|     platform: OMAP1510_INNOVATOR    |
+-------------------------------------+

MAIN MENU
---------
  1. Load [comp] from I/O port...
  2. Store RAM [comp] to Flash...
  3. View/Edit Params...
  4. Boot Kernel/filesystem (boot_auto)
  5. CmdLine Mode
  6. Dump memory

  r. Run Default Boot Cmd
  E. Erase [comp] from Flash...

  Which? 4
Jumping to 0x00060400
Linux version 2.4.20-celf1 (settsu@tux) (gcc %P!<%8%g%s 3.2.1 20020930 (MontaViT
CPU: Arm925Tsid(wt) [54029252] revision 2 (ARMv4T)                              
CPU: D write-back cache                                                         
CPU: I cache: 16384 bytes, associativity 2, 16 byte lines, 512 sets             
CPU: D cache: 8192 bytes, associativity 2, 16 byte lines, 256 sets              
Machine: TI-Innovator/OMAP1510                                                  
On node 0 totalpages: 8192                                                      
zone(0): 8192 pages.                                                            
zone(1): 0 pages.                                                               
zone(2): 0 pages.                                                               
Kernel command line: mem=32M console=ttyS0,115200n8 noinitrd root=/dev/nfs ip=bp
Console: colour dummy device 80x30                                              
Calibrating delay loop... 83.76 BogoMIPS                                        
Use CONFIG_INSTANT_ON_LPJ=418816 for Instant On.                                
Memory: 32MB = 32MB total                                                       
Memory: 32088KB available (1405K code, 274K data, 59K init)                     
Dentry cache hash table entries: 4096 (order: 3, 32768 bytes)                   
Inode cache hash table entries: 2048 (order: 2, 16384 bytes)                    
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)                      
Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes)                    
Page-cache hash table entries: 8192 (order: 3, 32768 bytes)                     
POSIX conformance testing by UNIFIX                                             
Initializing the Linux Driver Model...                                          
Linux NET4.0 for Linux 2.4                                                      
Based upon Swansea University Computer Society NET3.039                         
Initializing RT netlink socket                                                  
Innovator FPGA Rev 2.0 Board Rev 16                                             
Power Management for the OMAP1510 is initialized pm_idle 0xd807ad00             
OMAP1510 Innovator Dynamic Power Management                                     
Starting kswapd                                                                 
Disabling the Out Of Memory Killer                                              
pty: 256 Unix98 ptys configured                                                 
Serial driver version 5.05c (2001-07-08) with no serial options enabled         
ttyS00 at 0xfffb0000 (irq = 46) is a OMAP UART                                  
ttyS01 at 0xfffb0800 (irq = 47) is a OMAP UART                                  
ttyS02 at 0xfffb9800 (irq = 15) is a OMAP UART                                  
TI Innovator/OMAP1510 keypad driver.                                           
innovator_ps2: Innovator PS/2 keyboard/mouse driver v1.0                        
smc9194.c:v0.15 12/15/00 by Erik Stahlman (erik@vt.edu)                         
eth0: SMC91C94/91C96 (rev 9) at 0xe8000300 IRQ:93 INTF:TP MEM:6144b ADDR: 00:0b0
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize           
nvrd: NVRD size in bytes must be specified                                      
PPP generic driver version 2.4.2                                                
PPP Deflate Compression module registered                                       
DSPLinux FB (c) 2001 RidgeRun, Inc.                                             
Console: switching to colour frame buffer device 30x40                          
mice: PS/2 mouse device common for all mice                                     
NET4: Linux TCP/IP 1.0 for NET4.0                                               
IP Protocols: ICMP, UDP, TCP                                                    
IP: routing cache hash table of 512 buckets, 4Kbytes                            
TCP: Hash tables configured (established 2048 bind 4096)                        
Sending BOOTP requests . OK                                                     
IP-Config: Got BOOTP answer from 192.168.128.2, my address is 192.168.128.34    
IP-Config: Complete:                                                            
      device=eth0, addr=192.168.128.34, mask=255.255.255.0, gw=192.168.128.1,   
     host=192.168.128.34, domain=isl.melco.co.jp, nis-domain=(none),            
     bootserver=192.168.128.2, rootserver=192.168.128.2, rootpath=/opt/mvlcee/ds
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.                             
NetWinder Floating Point Emulator V0.95 (c) 1998-1999 Rebel.com                 
Looking up port of RPC 100003/2 on 192.168.128.2                                
Looking up port of RPC 100005/1 on 192.168.128.2                                
VFS: Mounted root (nfs filesystem).                                             
INIT: version 2.78 booting                                                      
Activating swap...                                                              
Checking all file systems...                                                    
Parallelizing fsck version 1.22 (22-Jun-2001)                                   
Mounting local filesystems...                                                   
nothing was mounted                                                             
Cleaning: /etc/network/ifstate.                                                 
Setting up IP spoofing protection: rp_filter.                                   
Disable TCP/IP Explicit Congestion Notification: done.                          
Configuring network interfaces: done.                                           
Starting portmap daemon: portmap.                                               
Cleaning: /tmp /var/lock /var/run.                                              
INIT: Entering runlevel: 3                                                      
Starting system log daemon: syslogd klogd.                                      
Starting internet superserver: inetd.                                           

192.168.128.34 login: