- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
从lis上看是否宏编译到了
学习一个新的平台,总被复杂的调用关系,一大堆的宏所困扰.以MTK为例.在一个版本中集中了非常多的功能,又有不同的芯片功能,程序显得繁复.这种情况对于一个初学者来说就显得很复杂.有无从下手的感觉.
刚开始时,我也觉得代码不好看.后面发现了一个有用的文件lis.这个文件和bin文件都在build目录下.这个文件指出了交叉引用关系.实际上这是一个ADS固有的功能,对所有以ADS编译的平台都是一样的.以开机初始化为例.
#if defined(KAL_ON_NUCLEUS)
void Application_Initialize (void *first_available_memory)
#elif defined(KAL_ON_THREADX)
void tx_application_define(void *first_unused_memory)
#endif
{
__rt_lib_init(0, 0);
#ifdef __MULTI_BOOT__
_boot_mode = *(volatile kal_uint16 *)BOOT_CONFIG_ADDR;
#ifndef L1_NOT_PRESENT
L1D_SetInitMode(_boot_mode);
#endif
#endif
systemIntialization();
#ifdef MTK_PCM
nvrm_init();
#endif
HWDInitialization();
#ifdef _NAND_FLASH_BOOTING_
NFB_InitThirdROM();
NFB_LoadingSecondaryMAUI();
#endif
Drv_Init_Phase2();
systemInitializeResource();
stack_check_msgid_range();
mainp();
#ifdef _MAUI_SOFTWARE_LA_
#endif
#ifdef __PRODUCTION_RELEASE__
#ifdef __MULTI_BOOT__
if ( system_boot_mode!=FACTORY_BOOT )
#endif
WDT_Enable(KAL_TRUE);
#endif
}
这个程序中很多的宏.哪个有个,哪个没有看不出.除非接合mak文件来查看.这也容易出错.在lis文件中就有比较简单的说明.
init.obj(i.Application_Initialize) refers to lib_init.o(.text) for __rt_lib_init
init.obj(i.Application_Initialize) refers to m12100.obj(i.L1D_SetInitMode) for L1D_SetInitMode
init.obj(i.Application_Initialize) refers to intrCtrl.obj(i.initINTR) for initINTR
init.obj(i.Application_Initialize) refers to isrentry.obj(i.IRQ_LISR_Init) for IRQ_LISR_Init
init.obj(i.Application_Initialize) refers to custom_EMI.obj(i.Initialize_FDD_tables) for Initialize_FDD_tables
init.obj(i.Application_Initialize) refers to kal_debug_error_handling.obj(i.kal_debug_register_print_string_function) for kal_debug_register_print_string_function
init.obj(i.Application_Initialize) refers to kal_error_handling.obj(i.kal_register_fatal_error_handler) for kal_register_fatal_error_handler
init.obj(i.Application_Initialize) refers to kal_nucleus_initialize.obj(i.kal_initialize_me
文档评论(0)