PATCH

PATCH模块可用于修补现有的LCPU ROM数据/代码。 每个PATCH条目都可以替换ROM空间中的4个字节数据(地址需要为4字节对齐)。SIFLI芯片组在LCPU中具有ROM代码,其中包含BLE堆栈,操作系统和其他有用的功能。 如果这些代码有错误,则使用PATCH来修复它们。 当LCPU睡觉时,那些补丁设置需要保存到AON(始终打开)内存,并在LCPU从睡眠中唤醒时再次应用这些补丁。

使用PATCH

以下代码将保存和应用补丁。


/*Power on or wake up*/
struct patch_entry_desc g_lcpu_patch_list[]= { 
    { 0x0000DC14, 0xB91CF110 },
	{ 0x0000DEA4, 0xB8F2F110 } 
};
HAL_PATCH_install((struct patch_entry_desc *)g_lcpu_patch_list(sizeof(g_lcpu_patch_list))/sizeof(struct patch_entry_desc));

..
/*before sleep, g_lcpu_patch_list should in AON memory section*/
uint32_t cer;
HAL_PATCH_save(g_lcpu_patch_list, g_lcpu_patch_list(sizeof(g_lcpu_patch_list))/sizeof(struct patch_entry_desc), &cer);

..

API参考

bf0_hal_patch.h