[i=s] 本帖最后由 大锤子 于 2025-4-12 22:16 编辑 [/i]
前言
不知道大多数电子爱好者的入门单片机是什么。 我入门的单片机是8位的51单片机。 也是我们大学期间的课程;
由于不是主修课程,也没有好好学。 真正认真学是从打算复刻888光立方开始的,然而失败了两次。最后一次失败到成功间隔了5年时间。
在这期间不管技术怎么发展,51单片机依然很活跃;
8位的51单片机特点就是资源比较少,直接操作寄存器。因为资源少,可实现的功能也就不会很多。功能不多,软件的规模也就不会很大。从而直接操作寄存器不管是用户还是芯片厂商都是最合适的。然而类似ARM32 或者 RISK-V32,其资源远比51多,实现的功能也很多,从而软件的规模也就比较大。直接操作寄存器实现功能显然不可取。
就比如今天的主角WB2-32S-Kit。 芯片原厂有封装的SDK,同时模组厂商也就是安信可也在芯片原厂商的基础上结合模组的特性进行了进一步的封装。软件开发者无需了解底层逻辑。
但是,不需要了解底层逻辑的前提是SDK结构清晰且有详细的SDK使用手册。然而,不管是安信可的SDK文档还是博流的文档,都是不够详细的,不全面的。这样就不得不进一步研究底层代码。
背景
那么是什么api或者SDK使的不得不去研究更底层的代码甚至是寄存器呢?上一篇文章中分享了蓝牙的第一篇。除了协议和资料,还花费了大部分的时间去研究一个函数:

是的就是这个 bl_sys_init(); 看函数的名字是博流的系统初始化函数,如果说所有的demo都使用了这个函数,可能就不会过多去注意到它。然而在其他的demo比如GPIO的demo中并没有使用这个函数。因此想对这个函数一探究竟;
1、首先是查看代码中是否有注释,这个函数在 /Ai-Thinker-WB2/components/platform/hosal/bl602_hal/bl_sys.h 头文件中声明,具体实现为:

显然后边的两个函数是rst,复位相关的;
第一个函数:bl_sys_em_config(); 在相同的.c文件中实现; 看下来这些函数都没有注释。
2、查看安信可的文档:
https://wb2-api-web.readthedocs.io/en/latest/docs/api-guides/index.html
bl_sys_em_config, 和 bl_sys_init 并没有找到这两个函数的说明;
3、博流的文档:
https://dev.bouffalolab.com/media/doc/602/open/reference_manual/zh/html/content/SystemAndMemoryOverview.html
很遗憾博流的文档也没有说明;
开始寄存器之旅
鉴于文档没办法给出答案,只能更深入研究底层代码:

如源码所示,根据__LD_CONFIG_EM_SEL 这个值调用了 GLB_Set_EM_Sel 这个宏定义来设置不同的大小,说到大小就很可能跟内存相关。
这里给出了两个线索,一个是 __LD_CONFIG_EM_SEL, 一个是 GLB_Set_EM_Sel;
分别研究:
__LD_CONFIG_EM_SEL :
在 /Ai-Thinker-WB2/components/platform/soc/bl602/bl602/evb/ld/flash.ld 这个文件中定义了 __LD_CONFIG_EM_SEL ;也没有具体说明;
GLB_Set_EM_Sel:

终于在这里找到了注释,select EM type 但是 EM type 是什么呢, EM具体是什么?继续看吧,找到它所涉及到的寄存,然后有寄存器相关的说明也能解决;
tmpVal=BL_RD_REG(GLB_BASE,GLB_SEAM_MISC);
上边这一行就是从 GLB_BASE(基地址) + GLB_SEAM_MISC(偏移地址)读一个字节暂存。
因此我们距离真相越来越近了, 只要找到寄存器 GLB_BASE(基地址) + GLB_SEAM_MISC(偏移地址) 的说明就好了。
GLB_BASE(基地址) + GLB_SEAM_MISC(偏移地址) = 0x40000000 + #define GLB_SEAM_MISC_OFFSET (0x7C)
并且进一步找到了一行注释:

seam_misc, xxxxx 杂项; 崩溃。
这里已经到头了,还是看博流的文档吧。 有个关键信息 glb:
在文档:https://dev.bouffalolab.com/media/doc/602/open/reference_manual/zh/html/content/GLB.html 中
有很多寄存器的说明,恰好就没有偏移量是 0x7C 的说明:
于是,。。。。。
好吧还是问deepseek吧:


算了,就当没看到过吧。。。。。如果有了解的小伙伴求告知。。。