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

제가 사용하고 있는 Uboot 1.3.4에서 아래와 같이 커널을 부팅하다가 멈췄습니다. 그래서

코드를 따라가 봤더니... do_bootm_linux ()함수 부분에서.. theKernel (0, machid, bd->bi_boot_params); 에서

멈췄습니다. 도대체 이 함수에서 왜? 멈췄는지 고수님들의 친절한 답변 부탁드립니다. ㅠㅠ

 

 

--------------------------U-BOOT LOG-------------------------------------------------------------

## Booting kernel from Legacy Image at 22000000 ...
Image Name: linux-2.6
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 1498916 Bytes = 1.4 MB
Load Address: 20008000
Entry Point: 20008000
Verifying Checksum ... OK
Loading Kernel Image ... OK
OK

Starting kernel ...

 

 

 

---------------------------------------do_bootm_linux()함수---------------------------------------------------

void do_bootm_linux (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
bootm_headers_t *images)
{
ulong initrd_start, initrd_end;
ulong ep = 0;
bd_t *bd = gd->bd;
char *s;
int machid = bd->bi_arch_number;
void (*theKernel)(int zero, int arch, uint params);
int ret;

#ifdef CONFIG_CMDLINE_TAG
char *commandline = getenv ("bootargs");
#endif

/* find kernel entry point */
if (images->legacy_hdr_valid) {
ep = image_get_ep (&images->legacy_hdr_os_copy);
#if defined(CONFIG_FIT)
} else if (images->fit_uname_os) {
ret = fit_image_get_entry (images->fit_hdr_os,
images->fit_noffset_os, &ep);
if (ret) {
puts ("Can't get entry point property!\n");
goto error;
}
#endif
} else {
puts ("Could not find kernel entry point!\n");
goto error;
}
theKernel = (void (*)(int, int, uint))ep;

s = getenv ("machid");
if (s) {
machid = simple_strtoul (s, NULL, 16);
printf ("Using machid 0x%x from environment\n", machid);
}

ret = boot_get_ramdisk (argc, argv, images, IH_ARCH_ARM,
&initrd_start, &initrd_end);
if (ret)
goto error;

show_boot_progress (15);

debug ("## Transferring control to Linux (at address %08lx) ...\n",
(ulong) theKernel);

#if defined (CONFIG_SETUP_MEMORY_TAGS) || \
defined (CONFIG_CMDLINE_TAG) || \
defined (CONFIG_INITRD_TAG) || \
defined (CONFIG_SERIAL_TAG) || \
defined (CONFIG_REVISION_TAG) || \
defined (CONFIG_LCD) || \
defined (CONFIG_VFD)
setup_start_tag (bd);
#ifdef CONFIG_SERIAL_TAG
setup_serial_tag (&params);
#endif
#ifdef CONFIG_REVISION_TAG
setup_revision_tag (&params);
#endif
#ifdef CONFIG_SETUP_MEMORY_TAGS
setup_memory_tags (bd);
#endif
#ifdef CONFIG_CMDLINE_TAG
setup_commandline_tag (bd, commandline);
#endif
#ifdef CONFIG_INITRD_TAG
if (initrd_start && initrd_end)
setup_initrd_tag (bd, initrd_start, initrd_end);
#endif
#if defined (CONFIG_VFD) || defined (CONFIG_LCD)
setup_videolfb_tag ((gd_t *) gd);
#endif
setup_end_tag (bd);
#endif

/* we assume that the kernel is in place */
printf ("\nStarting kernel ...\n\n");


#ifdef CONFIG_USB_DEVICE
{
extern void udc_disconnect (void);
udc_disconnect ();
}
#endif

cleanup_before_linux ();

theKernel (0, machid, bd->bi_boot_params);


/* does not return */
return;

error:

do_reset (cmdtp, flag, argc, argv);
return;
}


고도리

2012.04.04 22:50:55
*.200.239.234

1. 커널로 부팅 한 것인데 멈춘 것입니다.

2. 여러가지 문제가 있을 수 있습니다.

3. 대부분 kernel과 부트로더 사이의 architecture number 에 문제가 생긴 경우가 가장 많고

4. 시리얼 포트 설정이 잘 못 되어 있는 경우도 있습니다.

5. 정확하게는 여기서부터는 직접 봐야하는 문제입니다.

 

제 디버깅 help는 여기까지입니다...^^

고도리

2012.04.04 22:52:09
*.200.239.234

참, 디버깅은...

 

1. cpu에 따라 틀립니다.

2. 장비가 있으면 훨 편하게 할 수 있습니다.

3. 마지막으로.......kernel의 make menuconfig 옵션에서, kernel hacking -> low level debugging 옵션을 켜서 동작시켜서보면 웬만한 녀석은 보입니다.

 

4. 삼성칩이라면 위의 3번의 경우로 대부분 잡힙니다.

List of Articles
번호 제목 글쓴이 날짜 조회 수sort
6368 Apple TV 온보드 메모리 변경 가능할까요? [1] 당그니 2011-01-20 94754
6367 android pwm backlight 밝기 제어 [4] 김태영 2011-07-28 55322
6366 com.google.android.maps.jar는 어디서 얻는 것인가요??? [2] 천동이 2014-09-02 52348
6365 USB bluetooth dongle on jellybean [4] 신현호 2014-02-21 50341
6364 우분투 리눅스 ip 변경 도중에 "No such process" [5] 이세종 2009-04-01 46375
6363 OpenOCD 0.2.0 [1] 김광준 2009-10-24 45128
6362 [질문]memset, mmap, memcpy에 대해서 질문 있습니다. [5] 이태간 2007-05-22 45088
6361 libpcap 설치 [1] Apostasy 2011-04-12 44267
6360 램디스크 파일 시스템 만들기 [4] sinwho 2015-08-19 43877
6359 USB 포팅관련 질문드립니다. [1] 김승한 2010-01-07 33330
6358 android에 libusb porting 해보신 분?? [2] 꿈의사람 2014-02-13 29617
6357 오드로이드 배터리 패치 문의 [1] 이종문 2010-07-01 29083
6356 ODROID-T 2.2 셧다운 후 부팅이 안됩니다. [2] shkim 2010-10-02 26904
6355 오드로이드 디버깅이 안되네요... [2] 현쓰 2010-02-01 26622
6354 [질문]wince 이미지 다운로드시 에러 [3] 이태간 2008-04-06 26266
6353 slide event에 따른 landscape & portrait mode 전환 [1] 나영찬 2010-03-25 24690
6352 Andorid ALSA에 관해서...2 [1] 꺼북이 2011-05-18 24638
6351 wm1811 드라이버를 찾아요 [9] 김민욱 2016-11-01 18791
6350 이더넷 핀에서 값을 읽어 오고 싶은데요... [2] rubio 2013-07-09 13050
6349 usb host api 가 리눅스단에서도 사용가능한가요? [1] biokk 2014-02-07 11392

사용자 로그인