(포스팅 2022.08.01)
안드로이드 보드를 SMT 할때, 이상적인 방법은 바이너리가 구워진 EMMC 메모리를 미리 준비하여 SMT하는 것입니다. 하지만 HW 설계부터 부트로더의 코드까지 세밀하게 컨트롤해야 하는 전문 기업이 아닌 이상, 그정도 준비를 할 여력도 없고 물량대비 효용성이 부족합니다.
작은 회사의 경우, 일단 보드를 만들고 AP칩에서 지원하는 방법으로 부트로더를 다운로드한 다음, 보드를 PC에 연결하여 fastboot로 바이너리를 다운로드하게 됩니다.
본 포스팅에서는 이러한 fastboot가 오동작하여 리커버리 모드로 진입하였을 경우를 설명드리겠습니다.
fastboot를 사용하여 안드로이드 보드에 바이너리를 다운로드하는 중에 아래의 에러가 표시되는 경우가 있습니다. 다운로드 방법은 대부분 fastboot를 연속으로 호출하는 스크립트를 실행합니다. 표시된 이미지처럼 fastboot 중에 FAILED 가 발생하기도 합니다.
다운로드 스크립트가 이런 에러까지 확인하도록 만들어있지 않으면, 에러가 발생하였다고 하더라도 스크립트는 종료되고 보드는 자동 리셋됩니다.
이렇게 다운로드가 정상적으로 완료되지 않은 상태에서 리셋을 하면, 최악에는 부팅이 전혀 안되어 별도의 툴로 메모리를 재설정해야 하는 경우도 있습니다. 보통은 다운로드에 시간이 제일 많이 걸리는 system 영역에서 FAILED 가 주로 발생합니다. 그러한 경우 부팅이 완료되지 않고 리커버리 화면으로 진입하게 됩니다.
지금까지 설명드린 내용을 정리하면,
로 정리됩니다. 이에 대한 해결책은 바이너리를 처음부터 다시 다운로드하는 것입니다. 시간이 좀 더 걸리지만 발생한 문제는 해결되는 것처럼 보입니다.
하지만 가끔, 아무리 다운로드를 받아도 리커버리 모드로 계속 진입하는 경우가 있습니다.
바이너리 전부를 다시 받아도, 리커버리 화면에서 'Wipe data/factory reset'을 실행해도 리커버리 모드로 반복해서 진입하는 경우가 있습니다. 이 경우의 해결 방법을 알려드립니다.
부트로더에서 커맨드를 입력하여 리커버리 모드로 진입 후, 'Wipe data/factory reset' 을 하면 복구됩니다. 코드를 확인하지는 못했습니다만, 부트로더에서 진입하는 경우와 부팅중에 진입하는 경우가 차이가 있습니다.
동일한 모델을 몇천 대 이상 양산하는 경우엔 사소한 에러까지 모두 잡아야 합니다만, 이번처럼 소량의 보드를 생산할 때는 발생하는 문제를 그때그때 해결하기도 합니다.
알려드리고 싶은 것은, 리커버리모드가 부트로더에서 호출되었느냐 부팅중에 호출되었느냐에 따라 미묘한 차이가 있다는 점입니다. 'Wipe data/factory reset' 을 하시려면 되도록 부트로더에서 진입한 리커버리에서 진행하시는 것이 좋겠습니다.
더 필요한 내용이 있으시면 댓글로 문의 주세요.
언제나 감사드립니다.
fastboot 프로그래밍 (0) | 2022.08.19 |
---|---|
안드로이드폰 진동/무음모드 제거 (0) | 2022.07.25 |
안드로이드(AOSP) 소스코드 모델별로 분리 방법 (0) | 2022.06.10 |
드라이버 칩 긴급변경시 SW 작업 (0) | 2022.04.21 |
갤럭시 S7 안드로이드 오토 만들기 작업 (0) | 2022.04.08 |
댓글 영역