请教CH57x,CH58x,Ch59x的协议栈库的使用问题

拿CH583EVT举例,CH583EVT\EVT\EXAM\BLE\LIB文件夹中有CH58xBLE_LIB.h,CH58xBLE_ROM.h两个头文件。

我理解CH58xBLE_LIB.h是需要链接.a文件,可以生成程序完整hex。

CH58xBLE_ROM.h是不需要链接.a文件,只生成用户代码,协议栈hex是可以烧写到flash中的某个地址的(OTA更新是不需要更新这部分的),这样的好处是用户代码非常小,便于OTA备份更新。之所以不需要链接.a文件是因为CH58xBLE_ROM.h中将需要的函数都声明成了指向某个地址的指针,由于不是函数声明,所以link阶段也不用去其他文件找对应的函数实现了。


但是,CH583EVT\EVT\EXAM\MESH\MESH_LIB文件夹下,只有MESH_LIB.h这一个文件,没有MESH_ROM.h文件,这样的话,如果用户使用MESH协议栈,就必须链接.a文件,生成包含MESH协议栈的完整hex,同时MESH_LIB文件夹下的CH58xBLE_ROM_MESH.hex文件,也就没有意义了。


不知道我理解的对不对,或者请帮忙指导下,我如何将mesh协议栈写进flash的某个地址,使我可以只生成用户代码的hex,这样我每次OTA就能只传输用户代码程序了

固定库协议栈的地址是固定指向地址的。所以在进行使用固定库的地址,需要启用对应的固定库和分配地址。

CH573 CH582 OTA例程讲解二(方式二:使用固定库+扩大APP程序空间) - WCH蓝牙应用分享 - 博客园 (cnblogs.com)

ROM.a和MESH.a公用一个.h的。


只有登录才能回复,可以选择微信账号登录