社区导航

 
查看: 195|回复: 8

[问题讨论] 问个关于Open.mems和license的问题

[复制链接]

107

TA的帖子

2

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2017-6-18 08:52:59 | 显示全部楼层 |阅读模式
因为lisence是通过ST BlueMS申请的,当收到邮件回复后将收到的代码通过ST BlueMS进行lisence注册。
那么这个lisence是注册ST BlueMS请求的还是将这些代码烧入到SenseTile硬件的,前者可以注册过程可以分析明白,但是好像是通过后者进行注册的。那么这个注册过程是怎么样的,是将这些代码烧入到硬件哪个部分的,肯定不可能是直接插入到固件的吧!应该是烧入到Flash的一个内存地址的吧,然后固件运行读取该地址的内容。如果是这样的那么这个内存地址在哪里,固件关于license验证读取的部分代码在哪里?
或者是其他的方式进行的license注册使用,了解的朋友帮忙解答一下,感激!

回复

使用道具 举报

3960

TA的帖子

8

TA的资源

版主

Rank: 6Rank: 6

发表于 2017-6-18 16:05:52 来自手机 | 显示全部楼层
BLUE MS会把序列号写到STM32单片机 我电脑坏了 等修好后帮你看下

回复 支持 反对

使用道具 举报

1903

TA的帖子

8

TA的资源

版主

Rank: 6Rank: 6

发表于 2017-6-18 17:12:49 | 显示全部楼层
本帖最后由 strong161 于 2017-6-18 17:17 编辑

你可以编译固件的时候把lisence 放到 Middlewares/ST/STM32_OSX_********_Library 下面 有一个osx_license.h如: STM32_OSX_AcousticSL_Library 下面osx_license.h,把对应的 osx_asl_license[3][4] 换成ST发给你的,
这样license就写入到你的固件了,当然也可以在手机APP上面注册,那样license会通过手机BLE通讯的时候发给Sensortile,直接改的好处就是你手机不用去管这玩意了,直接放在sdk里面,以后的工程直接使用,换手机也不影响。

#ifndef _OSX_ACOUSTIC_SL_LICENSE_
#define _OSX_ACOUSTIC_SL_LICENSE_
uint32_t osx_asl_license[3][4] =
{
        { 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
        { 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
        { 0x00000000, 0x00000000, 0x00000000, 0x00000000 }
};
#endif // _OSX_ACOUSTIC_SL_LICENSE_



点评

那这样的话是每次和上位机连接后重新写入还是直接写在某个地址段了  详情 回复 发表于 2017-6-19 08:21

回复 支持 反对

使用道具 举报

107

TA的帖子

2

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2017-6-19 08:19:24 | 显示全部楼层
strong161 发表于 2017-6-18 17:12
你可以编译固件的时候把lisence 放到 Middlewares/ST/STM32_OSX_********_Library 下面 有一个osx_license. ...

是放在上位机的sdk还是硬件固件的sdk

回复 支持 反对

使用道具 举报

107

TA的帖子

2

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2017-6-19 08:21:40 | 显示全部楼层
strong161 发表于 2017-6-18 17:12
你可以编译固件的时候把lisence 放到 Middlewares/ST/STM32_OSX_********_Library 下面 有一个osx_license. ...

那这样的话是每次和上位机连接后重新写入还是直接写在某个地址段了

点评

Sensortile代码里面仿佛会直接验证有没有license,没有才会通过上位机获得,所以按理加入了后不会需要通过上位机获得license  详情 回复 发表于 2017-6-19 09:22

回复 支持 反对

使用道具 举报

1903

TA的帖子

8

TA的资源

版主

Rank: 6Rank: 6

发表于 2017-6-19 09:22:29 | 显示全部楼层
WZH70246 发表于 2017-6-19 08:21
那这样的话是每次和上位机连接后重新写入还是直接写在某个地址段了

Sensortile代码里面仿佛会直接验证有没有license,没有才会通过上位机获得,所以按理加入了后不会需要通过上位机获得license

点评

SensorTile验证license的时候是向上位机请求还是向硬件请求呢?因为我在第一个手机上获取了license后,SensorTile就可以在所有的设备上使用相应运动算法。所以我的感觉就是license直接烧入硬件中了,而且是烧入了一  详情 回复 发表于 7 天前

回复 支持 反对

使用道具 举报

3960

TA的帖子

8

TA的资源

版主

Rank: 6Rank: 6

发表于 2017-6-19 16:01:02 | 显示全部楼层
像strong161说的把license写到SensorTile代码里这种方法比较简单
我猜测license就是通过STM32的UID和某些算法生成一段序列号
这个STM32在调用对应的open.mems库时需要提供自身的UID
open.mems库再用同样的方法生成一段序列号,和ST发给你的比较,如果相同就通过验证
上位机检测到SensorTile的open.mems库没有验证通过时会提示你向ST申请,或者载入序列号
如果序列号已经写在SensorTile中,也能验证通过就会直接启用某些功能
但好像有时还需要在上位机操作一下,比如点一下load,但不需要你输入序列号就直接完成
SensorTile有一个函数,在DebugConsoleCommandParsing在sensor_service.c中
当使用BLUEMS上传序列号时会调用这个函数
不过没有找到对应写FLASH地址的函数,有可能是在另人函数里完成,或者直接调用了open.mems的库文件实现保存的

点评

验证license确实应该是这样验证的,  详情 回复 发表于 7 天前
虾扯蛋

回复 支持 反对

使用道具 举报

107

TA的帖子

2

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 7 天前 | 显示全部楼层
strong161 发表于 2017-6-19 09:22
Sensortile代码里面仿佛会直接验证有没有license,没有才会通过上位机获得,所以按理加入了后不会需要 ...

SensorTile验证license的时候是向上位机请求还是向硬件请求呢?因为我在第一个手机上获取了license后,SensorTile就可以在所有的设备上使用相应运动算法。所以我的感觉就是license直接烧入硬件中了,而且是烧入了一个特殊的地址,这个地址段应该是被保护的。因为我这边手头事情太多,没时间查阅那么多的相关资料。所以想验证自己的这个想法,并寻求license存放的地址。

回复 支持 反对

使用道具 举报

107

TA的帖子

2

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 7 天前 | 显示全部楼层
littleshrimp 发表于 2017-6-19 16:01
像strong161说的把license写到SensorTile代码里这种方法比较简单
我猜测license就是通过STM32的UID和某些 ...

验证license确实应该是这样验证的,

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456

GMT+8, 2017-6-27 16:48 , Processed in 0.344616 second(s), 14 queries , Redis On.

快速回复 返回顶部 返回列表
关闭