보드에서 안드로이드를 부팅하는 방법을 연구하던 중, uImage
보드에서 안드로이드를 부팅하려면 MLO(X-loader)와 U-Boot가 필요하다는 사실을 알게 되었습니다.
하지만 이것을 이해하면 IMX53quickstart 보드에서는 Android를 부팅하는 데 MLO가 필요하지 않습니다.
- 그게 어떻게 가능하지? MLO 없이 마더보드는 어떻게 부팅됩니까?
- 이 보드에는 특별한 것이 있나요? 저게 뭐에요?
- 그렇다면 왜 다른 마더보드에는 이 기능이 없습니까?
- 모든 마더보드에 이 기능을 구현할 수 있습니까?
답변1
시스템을 시작하기 위해 "필요한" 것은 특정 메모리 주소에 있는 실행 코드입니다.
커널을 올바른 위치에 놓으면 부팅됩니다(우리가 사용했던 방식입니다. 부트 로더가 없습니다). 요즘에는 거기에 부트로더를 넣습니다. 부트로더는 어디에서 찾을 수 있는지에 대해 하드웨어보다 더 똑똑한(그러나 많지는 않음) 실행 가능한 코드일 뿐입니다.다른실행 가능한 코드.
아주 간단하게 설명하자면, 하드웨어의 전원을 켜면 펌웨어에 있는 프로그램이 실행되기 시작합니다. 이는 하드웨어에 따라 다르지만 PC에서는 BIOS였습니다. 오늘은 EFI일 수도 있습니다. 프로그램은 무엇이든 특정 주소에 있는 블록 장치를 보는 방법을 알고 있습니다. 거기에서 발견된 블록은 RAM에 로드된 다음 실행됩니다. 하드웨어는 그것이 무엇인지에 대해 매우 지능적이지 않기 때문에 프로세서에 대한 올바른 기계 코드라는 것 외에는 구체적인 요구 사항이 없습니다*.
귀하의 경우 유일한 것은필수의출시되는 것은 uImage(커널 이미지)입니다. U-Boot는 uImage를 찾는 방법일 뿐입니다. MLO는 아마도 U-Boot를 찾는 방법일 뿐입니다. 이론적으로 uImage를 올바른 블록에 배치하면 바로 실행됩니다.
* 그런데,벽돌이러한 블록에서 발생하는 모든 작업을 프로세서가 올바르게 실행할 수 없음을 나타냅니다.