ljj3166 发表于 2020-9-13 23:44

【CH579M-R1】啥是TMOS?

<p style="text-align:justify"><span style="font-size:16px;"><span style="font-family:等线">趁周末,多更一下</span></span></p>

<p style="text-align:justify"><span style="font-size:16px;"><span style="font-family:等线">这次WCH57x系列的一大卖点就是2.4G的BLE 4.2</span></span></p>

<p style="text-align:justify"><span style="font-size:16px;"><span style="font-family:等线">先从它下手吧</span></span></p>

<p style="text-align:justify"><span style="font-size:16px;"><span style="font-family:等线">官方提供的资料不多</span></span></p>

<p style="text-align:justify"><span style="font-size:16px;"><span style="font-family:等线">除了一大堆例程,然后就只有一个&rdquo;CH57xBLE协议栈库说明.pdf&rdquo;</span></span></p>

<p style="text-align:justify"></p>

<p style="text-align:justify"><span style="font-size:16px;"><span style="font-family:等线">这个文件也只有12页</span></span></p>

<p style="text-align:justify"><span style="font-size:16px;"><span style="font-family:等线">大概介绍了一下协议栈的配置和基本API,略显单薄</span></span></p>

<p style="text-align:justify"><span style="font-size:16px;"><span style="font-family:等线">文档中提到一个TMOS,貌似是一个准操作系统,实现了部分类似操作系统的功能</span></span></p>

<p style="text-align:justify"><span style="font-size:16px;"><span style="font-family:等线">据说从TI的OSAL裁剪得来,例程中很多代码风格和TI的协议栈接近</span></span></p>

<p style="text-align:justify"><span style="font-size:16px;"><span style="font-family:等线">应该是使用了TMOS来进行协议栈任务调度(这个TMOS可不是F5 NETWorks的TMOS)</span></span></p>

<p style="text-align:justify"><span style="font-size:16px;"><span style="font-family:等线">外部对协议栈的操作也得依靠TMOS的API来进行</span></span></p>

<p style="text-align:justify"><span style="font-size:16px;"><span style="font-family:等线">协议栈是以.lib+.h的形式给出</span></span></p>

<p style="text-align:justify"></p>

<p style="text-align:justify"><span style="font-size:16px;"><span style="font-family:等线">比较方便带协议栈仿真</span></span></p>

<p style="text-align:justify"><span style="font-size:16px;"><span style="font-family:等线">上篇</span></span><span style="font-size:16px;"><span style="font-family:等线"><a href="https://bbs.eeworld.com.cn/thread-1140901-1-1.html" target="_blank">【CH579M-R1】首撸一手汗</a>提到是否支持jlink的问题</span></span></p>

<p style="text-align:justify"><span style="font-size:16px;"><span style="font-family:等线">实测使用jlink来进行debug是没有问题的</span></span></p>

<p style="text-align:justify"></p>

<p style="text-align:justify"><span style="font-size:16px;"><span style="font-family:等线">目前手上的segger j-flash软件版本并不支持WCH 579系列的MCU</span></span></p>

<p style="text-align:justify"><span style="font-size:16px;"><span style="font-family:等线">需要选择一个相同内核的mcu才能正常进行仿真</span></span></p>

<p style="text-align:justify"><span style="font-size:16px;">喜欢的话,STM32F030也行</span></p>

<p style="text-align:justify"></p>

<p style="text-align:justify"><span style="font-size:16px;"><span style="font-family:等线">所以想通过jflash来偷窥579内部四块flash区域的愿望是不可能实现了</span></span></p>

<p style="text-align:justify"></p>

<p style="text-align:justify"><span style="font-size:16px;"><span style="font-family:等线">直接用jflash来擦写579也是不行的</span></span></p>

<p style="text-align:justify"><span style="font-size:16px;"><span style="font-family:等线">最后还得靠MDK的flash算法文件配合jlink来对579进行烧录仿真</span></span></p>

<p style="text-align:justify"><span style="font-size:16px;"><span style="font-family:等线">估计得要等到segger正式支持WCH相关系列的MCU吧</span></span></p>

<p style="text-align:justify"><span style="font-size:16px;"><span style="font-family:等线">先跑通一个例程试试吧,拿Peripheral开刀</span></span></p>

<p style="text-align:justify"><span style="font-size:16px;"><span style="font-family:等线">代码很简洁</span></span></p>

<p style="text-align:justify"></p>

<p style="text-align:justify"><span style="font-size:16px;"><span style="font-family:等线">DEBUG预编译中是对串口1外设的初始化</span></span></p>

<p style="text-align:justify"><span style="font-size:16px;"><span style="font-family:等线">打印协议栈库文件的版本号(不放到预编译中去?)</span></span></p>

<p style="text-align:justify"><span style="font-size:16px;"><span style="font-family:等线">CH57X_BLEInit是协议栈库的初始化</span></span></p>

<p style="text-align:justify"><span style="font-size:16px;"><span style="font-family:等线">主要是对协议栈库使用的buff啊,buff大小啊,时钟源啊,堆栈大小啊,发射功率啊,BLE工作方式啊,mac啊等等一系列参数的初始化。</span></span></p>

<p style="text-align:justify"><span style="font-size:16px;"><span style="font-family:等线">填充bleConfig_t cfg;后,塞进BLE_LibInit完成初始化。</span></span></p>

<p style="text-align:justify"><span style="font-size:16px;"><span style="font-family:等线">HAL_Init用来初始化使用到的硬件,同时TMOS_ProcessEventRegister将硬件操作事件注册进TMOS以便调用。</span></span></p>

<p style="text-align:justify"><span style="font-size:16px;"><span style="font-family:等线">HAL_ProcessEvent函数,实体可以跟踪到,但是在HAL.h文件中被申明extern,感觉应该会被协议栈调用。</span></span></p>

<p style="text-align:justify"><span style="font-size:16px;"><span style="font-family:等线">GAPRole_PeripheralInit,看不到实体</span></span></p>

<p style="text-align:justify"><span style="font-size:16px;"><span style="font-family:等线">Peripheral_Init,这个很重要,BLE的GAP、GATT、广播等等都通过这个函数完成配置,得靠它建立自己的蓝牙服务。值得认真看看。</span></span></p>

<p style="text-align:justify"><span style="font-size:16px;"><span style="font-family:等线">随便改了改源码,修改了一下广播名称和设备名称</span></span></p>

<p style="text-align:justify"><span style="font-size:16px;"><span style="font-family:等线">然后通过蓝牙发送&ldquo;Hello,EEWorld!&rdquo;</span></span></p>

<p style="text-align:justify"><span style="font-size:16px;"><span style="font-family:等线">贴个GIF随便看看吧</span></span></p>

<p style="text-align:justify"><span style="font-size:16px;"><span style="font-family:等线">没用WCH的app,用了一个友商的PC客户端和usb dongle</span></span></p>

<p style="text-align:justify"><span style="font-size:16px;"><span style="font-family:等线">提升空间还是很大的</span></span></p>

<p style="text-align:justify"></p>

<p style="text-align:justify"><span style="font-size:16px;">以上......</span></p>

okhxyyo 发表于 2020-9-14 11:32

<p><a href="https://bbs.eeworld.com.cn/thread-1140005-1-1.html" target="_blank">沁恒CH579M-R1开发板测评</a></p>

<p>汇总贴:<a href="https://bbs.eeworld.com.cn/thread-1140005-1-1.html">https://bbs.eeworld.com.cn/thread-1140005-1-1.html</a></p>

hujj 发表于 2020-9-14 08:59

<p>请教一下:我打开&quot;BEL\peripheral&quot;的项目,未作任何修改,但编译却出错,是缺少了哪个文件呢?</p>

<p></p>

宋元浩 发表于 2020-9-14 09:35

<p>看标题还以为是MOS管的叫法</p>

ljj3166 发表于 2020-9-14 14:17

hujj 发表于 2020-9-14 08:59
请教一下:我打开&quot;BEL\peripheral&quot;的项目,未作任何修改,但编译却出错,是缺少了哪个文件呢?


...

<p>感觉像是工程配置有问题,是不是目标芯片选错了?</p>

ljj3166 发表于 2020-9-14 14:24

宋元浩 发表于 2020-9-14 09:35
看标题还以为是MOS管的叫法

<p>TMOS这玩意儿故事很多,但又讲不出来,很有意思。</p>

hujj 发表于 2020-9-14 14:36

本帖最后由 hujj 于 2020-9-14 14:37 编辑

<div class="quote">
<blockquote><font size="2"><a href="forum.php?mod=redirect&amp;goto=findpost&amp;pid=3009961&amp;ptid=1140939" target="_blank"><font color="#999999">ljj3166 发表于 2020-9-14 14:17</font></a></font> 感觉像是工程配置有问题,是不是目标芯片选错了?</blockquote>
</div>

<p>我又检查了一遍,芯片没有错,是CH579M,整个项目文件都没有动过,就是编译没通过。</p>

<p>从提示上看是缺少宏定义,编译过程又没有找不到头文件的提示。</p>

freebsder 发表于 2020-9-14 21:42

<p>涂抹上?ljj你这是要干啥坏事?</p>

ljj3166 发表于 2020-9-14 23:43

freebsder 发表于 2020-9-14 21:42
涂抹上?ljj你这是要干啥坏事?

<p>尼玛,快说,搜狗的模糊拼写算法是不是你开发的。</p>

kingsleych 发表于 2020-9-27 11:43

<p>Tmos是wch 的叫法,跟TI的那种osal 非常类似,有兴趣可以参考下,</p>
页: [1]
查看完整版本: 【CH579M-R1】啥是TMOS?