반응형
fit image 를 이용하여 부팅중에 에러가 발생하여 내용을 정리한다.
1 이슈사항
부팅중에 다음과 같은 Could not find configuration node
에러가 발생하여 부팅이 넘어가지 않는경우가 발생한다.
MMC read: dev # 0, block # 32768, count 102400 ... 102400 blocks read: OK
## Loading kernel from FIT Image at a0000000 ...
Could not find configuration node
ERROR: can't get kernel image!
위의 증상은 말그대로 fit image 내의 configure 설정이 안되어 있어 넘어가지 않는것이다.
2 디버깅하기
2.1 fit image 내용살펴보기
해당 에러까지 넘어왔다면 uboot 에서 fit image 를 메모리에 로딩까지는 정상적으로 된 상태이다.
(로딩된 fit image 의 내용을 살펴볼 수있다.)
uboot 에 다음의 명령어를 입력한다.
iminfo [LOAD_ADDRESS]
- LOAD_ADDRESS : 실제 fit image 가 로딩된 주소
- 대부분 로그에서도 확인가능하다.
Loading kernel from FIT Image at a0000000 ...
에서 보면,0xa0000000
에 로딩이 완료되었다는 뜻.- 아니면 uboot env 쪽을 확인하여 이미지 로딩주소를 확인한다.
iminfo 명령어를 수행 하면 다음과 같은 이미지의 실제 내용을 볼 수 있다.
## Checking Image at a0000000 ...
FIT image found
FIT description: arm64 kernel, ramdisk and FDT blob
Image 0 (kernel)
Description: ARM64 Kernel
Type: Kernel Image
Compression: gzip compressed
Data Start: 0xa00000d0
Data Size: 15185058 Bytes = 14.5 MiB
Architecture: AArch64
OS: Linux
Load Address: 0x84080000
Entry Point: 0x84080000
Image 1 (initrd)
Description: initrd for arm64
Type: RAMDisk Image
Compression: uncompressed
Data Start: 0xa0e7b620
Data Size: 21968191 Bytes = 21 MiB
Architecture: AArch64
OS: Linux
Load Address: 0x00000000
Entry Point: 0x00000000
Image 2 (ls1012ardb-dtb)
Description: ls1012ardb-dtb
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0xa236ec10
Data Size: 14690 Bytes = 14.3 KiB
Architecture: AArch64
Load Address: 0x90000000
Image 3 (ls1012aqds-dtb)
Description: ls1012aqds-dtb
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0xa2372614
Data Size: 16669 Bytes = 16.3 KiB
Architecture: AArch64
Load Address: 0x90000000
// 생략...
Configuration 0 (ls1012ardb)
Description: config for ls1012ardb
Kernel: kernel
Init Ramdisk: initrd
FDT: ls1012ardb-dtb
Configuration 1 (ls1012aqds)
Description: config for ls1012aqds
Kernel: kernel
Init Ramdisk: initrd
FDT: ls1012aqds-dtb
Configuration 2 (ls1012afrwy)
Description: config for ls1012afrwy
Kernel: kernel
Init Ramdisk: initrd
FDT: ls1012afrwy-dtb
// 생략...
## Checking hash(es) for FIT Image at a0000000 ...
Hash(es) for Image 0 (kernel):
Hash(es) for Image 1 (initrd):
Hash(es) for Image 2 (ls1012ardb-dtb):
// 생략...
- 확인해야할 사항
Default Configuration: 'config@1'
와 같이 default configuration 이 있는지 꼭 확인해보자.- 어떠한 confguration 이 있는지 확인해보자. 위의 예제에서는
ls1012ardb
,ls1012aqds
,ls1012afrwy
.. 등이 configuation 이다. (해당문자열을 bootm 명령어와 함께 주면된다)
3 문제해결
MMC read: dev # 0, block # 32768, count 102400 ... 102400 blocks read: OK
## Loading kernel from FIT Image at a0000000 ...
Could not find configuration node
ERROR: can't get kernel image!
위의 에러 문구와 같이, fit image 의 configuration 을 주지 않아 발생한 오류이므로 configure 를 명시하면된다.
- 지원하는 configuration 은 위에서 설명한것과 같이
iminfo
명령어를 이용하면된다.
지원하는 configuration 을 bootm 명령어에 다음과 같이 주면된다.
bootm $load_addr#<configuration>
- 위의 예제와 같은경우 ...
bootm $load_addr#ls1012aqds
을 설정하면ls1012aqds
설정으로 부팅이된다. - 만약
Default Configuration
이 있는 경우bootm $load_addr
만으로도 부팅이 된다. (아무런 configure 정보를 주지 않으면 default config 로 동작된다.)
...
- 해당 포스팅은 tistory-posting-cli 를 이용해 발행되었습니다.
반응형