기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.

NAND 부팅 관련하여 질문을 드려봅니다.

 

'이솝보드 부팅 환결설정 방법'에 보면 커널을 하려면 커널을 0x6_0000 번지에 사이즈0x20_0000

 

설정하도록 되여 있습니다.

------------------------------------------------------------------------------------------------------------------------------

tftp c0008000 zImage-aESOP6410;nand erase 60000 200000;nand write c0008000 60000 200000

 

setenv bootcmd nand read c0008000 60000 200000;bootm c0008000

-------------------------------------------------------------------------------------------------------------------------------

 

그런데, 부팅하는 내용에서 NAND 파티션을 보면 다음과 같습니다.

------------------------------------------------------------------------------------------------------------------------------

NAND device: Manufacturer ID: 0xec, Chip ID: 0xf1 (Samsung NAND 128MiB 3,3V 8-bit)
Creating 3 MTD partitions on "NAND 128MiB 3,3V 8-bit":
0x00000000-0x00040000 : "Bootloader"
0x00040000-0x00200000 : "Kernel"
0x00200000-0x08000000 : "File System"

------------------------------------------------------------------------------------------------------------------------------

 

커널의 주소가 0x40000 사이즈는 0x1c_0000으로 되여 있습니다.

 

그래서, uboot에서 0x40000 로 수정하여 tftp 다운 및 nand write하고 bootcmd를 수정하면 아래와 같은 에러가 나타납니다.

-----------------------------------------------------------------------------------------------------------------------------------

NAND read: device 0 offset 0x40000, size 0x1c0000
 1835008 bytes read: OK
## Booting image at c0008000 ...
Boot with Image

Starting kernel ...

undefined instruction
pc : [<50008030>]          lr : [<c7e22b10>]
sp : c7fffdc4  ip : 7f005000     fp : c7e608dd
r10: ea000013  r9 : c7e2c97c     r8 : c7e5ffdc
r7 : 98000001  r6 : 00000000     r5 : 50000124  r4 : 00000000
r3 : 50008000  r2 : 50000100     r1 : 00000bb8  r0 : 00000000
Flags: nZCv  IRQs off  FIQs off  Mode SVC_32
Resetting CPU ...

reset...

--------------------------------------------------------------------------------------------------------------------------------------

 

즉, 커널 부팅시 표기 내용과 실질적으로 설정된는 내용이 다른것으로 사료되는데,

 

이는 어떻게 보고 수정해야 하는지 알고 싶습니다.

 

또한, 메모리 사이즈 할당(파티션)을 어디서 설정 해야 하는지 알고 싶습니다.

 

 

밥상위에 밥과 국 그리고 반찬을 올려져 있으면 먹는 것은 알아서 먹자.

언제까지 먹여줘야 되냐.!!

엮인글 :
http://www.aesop.or.kr/index.php?mid=Board_Community_QandA&document_srl=28955&act=trackback&key=e6b

profile

JhoonKim

2010.01.25 20:16:19
*.162.60.197

NAND Flash의 경우 부트로더와 커널의 옵셋은 NAND Flash의 블럭단위로 파티션을 해줘야 합니다.

이솝 보드 초기에 이것을 잘 못해서 부팅할 때 오류가 생기는 일이 생겨서 수정 하였던 것 입니다.

하지만, 커널단에서는 수정이 안되어 있었던 것 같네요. :) (아마 최신 커널로 수정했던 것 같은데...)


U-Boot의 설정은 60000 이 맞습니다. 리눅스 커널단을 다음과 같이 수정해 보시기 바랍니다.


arch/arm/plat-s3c/include/plat/partition.h 파일 (2.6.28 이후 커널 기준)


/* linux/arch/arm/plat-s3c/include/plat/partition.h
 *
 * Copyright (c) 2008 Samsung Electronics
 *
 * Partition information
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
*/

#include <asm/mach/flash.h>

struct mtd_partition s3c_partition_info[] = {
        {
                .name           = "Bootloader",
                .offset         = 0,
                .size           = (384*SZ_1K),
                .mask_flags     = MTD_CAP_ROM,
        },
        {
                .name           = "Kernel",
                .offset         = (384*SZ_1K),
                .size           = (4*SZ_1M) - (384*SZ_1K),
                .mask_flags     = MTD_CAP_ROM,
        },
#if defined(CONFIG_SPLIT_ROOT_FILESYSTEM)
        {
                .name           = "Rootfs",
                .offset         = (4*SZ_1M),
                .size           = (48*SZ_1M),
        },
#endif
        {
                .name           = "File System",
                .offset         = MTDPART_OFS_APPEND,
                .size           = MTDPART_SIZ_FULL,
        }
};

struct s3c_nand_mtd_info s3c_nand_mtd_part_info = {
        .chip_nr = 1,
        .mtd_part_nr = ARRAY_SIZE(s3c_partition_info),
        .partition = s3c_partition_info,
};

struct flash_platform_data s3c_onenand_data = {
        .parts          = s3c_partition_info,
        .nr_parts       = ARRAY_SIZE(s3c_partition_info),
};


2.6.21 커널의 경우 include/ 디렉터리에 partition.h 가 위치해 있습니다. (21이랑 28 이후랑 구조가 좀 틀립니다.)



List of Articles
번호 제목 글쓴이 날짜sort 조회 수
3528 [완료]무선랜!! 도와주세요젭알요 ㅠg054u-a wireless lan 포팅 ifcon... [3] 처음처럼 2010-01-22 867
3527 S5PC100 DDR2 메모리 가능 범위 [1] 블루 2010-01-22 1060
3526 BT1 데이터시트 있으신분 계신가요? [3] 현쓰 2010-01-22 510
3525 Ethernet Driver between u-boot and kernel ? [1] 김병종 2010-01-22 608
3524 aesop6410의 serial port enable [1] 송의석 2010-01-22 532
3523 S3C6410 MFC 동영상 저장 문의 [2] 소돌삼 2010-01-22 1023
3522 difference u-boot와 Kernel version ? [1] 김병종 2010-01-23 501
3521 [질문] Qt 4.3.2에 Firefox올릴려고 하는데요... [3] 당그니 2010-01-23 492
3520 [ODROID] bootloader, kernel, filefs를 다시 올리고 LCD 안켜... file [2] 천상지인 2010-01-23 1703
» NAND 파티션에 대한 질문 [1] 허경 2010-01-25 726
3518 XFree86 4.8.0 compile error file 최영진 2010-01-25 473
3517 안드로이드 메모리 사용량 [1] 회그니 2010-01-25 2132
3516 6410 mDDR 메모리 512MBytes 지원 가능한가요? [1] 블루 2010-01-25 502
3515 toolchain 관련 질문입니다. [2] jacket 2010-01-26 555
3514 s6410 안드로이드 브라우져 홈변경방법!! [1] 처음처럼 2010-01-26 881
3513 안드로이드 Frame Buffer Capture가 안되는 경우가 있어요. 원인이 ... 천년여왕 2010-01-26 1061
3512 wince 6.0에서 sd8686 wifi sdio 4-bit 질문입니다. [2] 이강혁 2010-01-26 903
3511 device driver의 probe이름으로 된 함수의 호출시기가 언제인가요? 이성호 2010-01-26 1122
3510 6410 GPE file system 관련 문의 [1] 최영진 2010-01-27 852
3509 S3C44BOX 디버그 모드 관련 현상 질문입니다. [1] 하하 2010-01-27 692

사용자 로그인