由于近来的活动,感觉PB03F将要热一段时间,所以找出早前买的PB03F研究了一下。想不起来当初为什么要买这款蓝牙模块,可能是和ESP8266模块pin to pin吧。但之前也就点个灯就一直搁置了。
1、关于开发环境
目前KEIL MDK的最新版是5.40吧,ARM Complier是6.xx吧。
PB03F的主控是PHY6252,PHY6252 的SDK不能支持这么高版本的MDK,否则编译报错。
为编译PHY6252,我专门安装了V5.27的MDK,ARM Complier版本是V5.06。
推荐版本v.5.24-v5.28,ARM Complier版本要V5,一定不能用V6。
2、偶然发现PHY6252和ST17H66一摸一样
PHY6252是奉加微的产品,ST17H66是伦茨科技的产品。
但是所有的东西都一样的,SDK、文档、下载工具。
所以可以用ST17H66的资料来研究PB03F
3、关于OSAL
osal是TI推出的,国内厂商拿来用的。PHY6252也用了OSAL,但是应该是用了静态库的原因导致暴露给开发者的函数是不完全的。大概是中间一段函数被封装了,使人无法跟踪,源码看起来云里雾里的,不直观。
一个典型的程序思维导图是这样的:
在程序中有:
- int app_main(void)
- {
- /* Initialize the operating system */
- osal_init_system();
- osal_pwrmgr_device( PWRMGR_BATTERY );
- /* Start OSAL */
- osal_start_system(); // No Return from here
- return 0;
- }
复制代码 其中osal_init_system()会调用osalInitTasks(),做OSAL初始化。
osal_init_system没有公开源码。
osal_start_system()会调用osal_run_system(),进行osal轮询。
但是osal_start_system、osal_run_system都没有公开源码。
用户能看到的是:
jump_table_base
tasksArr
还是要先研究明白osal。对于蓝牙来说,操作系统抽象层是绕不过的。如果不用OSAL之类的,直接用RTOS也是可以实现的,但是开销就更大了。
|