ConvertPointerとは?
BIOS/UEFIおよびembedded firmware学習者向けにConvertPointerを説明するクイックノート。
ConvertPointerは、memory map、runtime mapping、OS handoff周辺で使われるUEFI memory managementの概念である。
なぜ重要か
- firmwareからOSへ制御が移るときのmemory ownershipを説明する。
- ExitBootServices()、runtime mapping、memory type問題のdebugに役立つ。
- UEFI memory mapを読むときに役立つ。
実例
例:GetMemoryMap()後にmemory mapが変わるとExitBootServices()が失敗する。その場合、新しいmemory mapを取得し直し、新しいkeyを使う。
クイックチェックリスト
覚えておくポイント
ConvertPointerは、firmwareからOSへ制御を渡すときのmemory ownershipに関係する。
自分ならこう読む
ConvertPointer は、単独の用語として暗記するよりも、firmware の流れの中に置くと理解しやすいです。誰が作り、誰が読み、値が間違ったときにどの症状として出るのかを意識すると、学習用のメモがそのまま debug のチェックポイントになります。
実務で出てくる場面
firmware の memory bug は、原因の場所と症状が出る場所が離れていることがあります。ConvertPointer では、ownership、lifetime、memory type、そして ExitBootServices() 前に OS へ一貫した memory map が渡っているかを確認します。
実際のデバッグで見るポイント
ConvertPointer は定義だけで覚えるより、具体的な flow に結びつけた方が使えます。誰が作るのか、誰が読むのか、RAM/NVRAM/flash/protocol のどこに存在するのか、間違ったときにユーザーにはどんな症状として見えるのかを確認します。
最初は少し遠回りに見えますが、BIOS/firmware を debug するときには、この見方が実際の手がかりになります。
関連ノート
- SetVirtualAddressMapとは?
- Memory Map Keyとは?
- EfiRuntimeServicesDataとは?
- EfiBootServicesDataとは?
- EFI_MEMORY_TYPEとは?
公開参考資料
- UEFI Specification 2.11 - Boot Services / Memory
- UEFI Specification 2.11 - Runtime Services
- EDK II MdePkg UefiSpec.h
この記事は役に立ちましたか?
ファームウェア、BIOS/UEFI、組み込みシステムを学んでいる人に共有できます。
Biến note thành bài viết hoàn chỉnh
Notes là nơi ghi nhanh khái niệm.