H文件里面的所有参数都是在Oem_panel.c里面的int init_panel_data函数调用的。接下来跟踪一下代码。Oem_panel.c位于bootable\bootloader\lk\target目录下。
Aboot.c:void aboot_init函数解析:
void aboot_init(const struct app_descriptor *app)
{
unsigned reboot_mode = 0;
/* Initialise wdog to catch early lk crashes */
#if WDOG_SUPPORT
msm_wdog_init();
#endif
/* Setup page size information for nv storage */
if (target_is_emmc_boot())
//检测是emmc还是flash存储,并设置页面大小,一般是2048
{
page_size = mmc_page_size();
page_mask = page_size - 1;
mmc_blocksize = mmc_get_device_blocksize();
mmc_blocksize_mask = mmc_blocksize - 1;
}
else
{
page_size = flash_page_size();
page_mask = page_size - 1;
}
ASSERT((MEMBASE + MEMSIZE) > MEMBASE);
//断言,如果内存基地址+内存大小小于内存基地址,则直接终止错误
read_device_info(&device);
//从devinfo分区表read data到device结构体
read_allow_oem_unlock(&device);
//devinfo分区里记录了unlock状态,从device中读取此信息
/* Display splash screen if enabled */