Strong Arm Board에서 linux booting 이 되지 않아서 문의 드립니다.

1) blob-2.0.5-pre2 를 받아서 수정 했고요.
===========================================
myboard.h 를 아래와 같이 설정했습니다.

TEXT_ADDR = 0xC0008000
LOAD_ADDR = 0xC0008000
BSS_ADDR = 0xC0200000

/* boot CPU speed */
#define CPU_SPEED (0x0b) // 221Mhz
//#define CPU_SPEED (0x09) // 191.7MHZ
//#define CPU_SPEED (0x05) // 133Mhz

/* serial port */
#define USE_SERIAL3


/* the base address were BLOB is loaded by the first stage loader */
#define BLOB_ABS_BASE_ADDR (0xc0200400)


#define BLOB_FLASH_BASE (0x00000000)
#define BLOB_FLASH_LEN (64* 1024)
#define PARAM_FLASH_BASE (0x00010000)
#define PARAM_FLASH_LEN (64 * 1024)
#define KERNEL_FLASH_BASE (0x00020000)
#define KERNEL_FLASH_LEN (1 * 1024 * 1024)
#define RAMDISK_FLASH_BASE (0x00120000)
#define RAMDISK_FLASH_LEN (3 * 1024 * 1024)
#define ROOT_FLASH_BASE (0x00420000)
#define ROOT_FLASH_LEN (11 * 1024 * 1024)


/* where do various parts live in RAM */
#define KERNEL_RAM_BASE (0xC0008000)
#define BLOB_RAM_BASE (KERNEL_RAM_BASE + KERNEL_FLASH_LEN)
#define PARAM_RAM_BASE (BLOB_RAM_BASE + BLOB_FLASH_LEN)
#define RAMDISK_RAM_BASE (0xC0500000)

/* the position of the kernel boot parameters */
#define BOOT_PARAMS (0xc0000100)

/* the size (in kbytes) to which the compressed ramdisk expands */
#define RAMDISK_SIZE (8 * 1024)

===================================================================

2) KERNEL에서는
static void __init
fixup_myboard(struct machine_desc *desc, struct param_struct *params,
char **cmdline, struct meminfo *mi)
{

SET_BANK( 0 ,0xC0000000, (32 * 1024 * 1024) );
mi->nr_banks = 1; // memory bank number

ROOT_DEV = MKDEV(RAMDISK_MAJOR,0);
setup_ramdisk(1,0,0,8192);
setup_initrd( __phys_to_virt(0xc0500000) , 3 * 1024 * 1024);
}


static void __init myboard_map_io(void)
{
sa1100_map_io();
iotable_init(myboard_io_desc);

sa1100_register_uart(0, 1); /* ttySA0 = uart1 com port */
sa1100_register_uart(1, 2); /* ttySA1 = uart2 com port */

sa1100_register_uart(2, 3); /* ttySA2 = uart3 com port */
Ser1SDCR0 |=SDCR0_UART;

}


MACHINE_START(MYBOARD, "MYBOARD")
BOOT_MEM(0xc0000000, 0x80000000, 0xf8000000)
BOOT_PARAMS(0xc0000100)
FIXUP(fixup_myboard)
MAPIO(myboard_map_io)
INITIRQ(sa1100_init_irq)
MACHINE_END

=======================================================================

그리고 booting을 하게 되면 uncompress kernel..... done start kernel..

하고는 화면에 출력이 되지 않는군요..

그래서 head-armv.S에서 아래와 같이 __error를 호출해 보았습니다.


bl __error <= test를 위해서..
SYMBOL(start_kernel)


위에서 __error 까지는 출력이 되는걸로 보아서 start_kernel로 간다고
생각되는데 출력이 전혀 되지 않는군요..

start_kernel()에서 printk 함수를 호출하는것을 보아서는 start_kernel
전에 myboard_map_io() 가 호출되어야 할것 같은데... start_kernel전에
호츨하는 곳을 찾을수가 없습니다..

< 질문 >

1) myboard_map_io를 호출하는곳이 어디인지 알고 싶습니다.
2) start_kernel() 함수에서 lock_kernel() 바로 다음에 있는 printk가
호출 되어서 출력되는 terminal을 어디서 설정하는 알고 싶습니다.
제 생각은 myboard_map_io가 호출되면서 serial로 출력 되는것 같은데
알수가 없군요..

3) uncompress kernel... message 다음에 start_kernel에서 뿌려주는 메세지를
받을려면 어디를 어떻게 해야 하는지 알고 싶습니다.
=========================================================================
아침에 start_kernel을 보니 /arch/arm/mach-sa1100/myboard.c에서 선언된

MACHINE_START(...)

BOOT_MEM(...)
BOOT_PARAMS()
FIXUP()
MAPIO()
INITIRQ()

MACHINE_END

부분에서 BOOT_PARAMS(),FIXUP(),MAPIO(),INITIRQ()에 선언된 함수들을
start_kernel() 의 setup_arch() 가 호출하여 처리 하더군요...

그렇다면....setup_arch() 앞에 있는 printk() 함수는 출력을 어디로 할지를
어떻게 정하는건지..........

음.... 이 부분이 알수가 없군요....
답변 부탁 드립니다....^^;

*.kernel option 에서

CONFIG_VT옵션
char에서 serial쪽 옵션은 모두 set 해 놓은 상태이고
speed도 bootloader,minicom 과 같은 115200으로 해놓은 상태 입니다

혹시나 해서 bootloader에서 CPU 속도도 낮추어 보았지만 역시 마찬가지군요
^^;

start_kernel()에서 console_init()를 호출하는데..printk는 그전에 수행되고
있으니.... 음.... 제발 알려주세요..^^;