打印

请教怎么用st-link API或者dll读出stm32或者8的唯一ID?

[复制链接]
6630|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lixun00|  楼主 | 2012-6-6 15:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
以stm8105c6为例

已经可以编程,但看ptkAPI.h未发现相关函数。

尝试EReadAera 提示 hapiswim.dll内存越界了

求解!
沙发
lixun00|  楼主 | 2012-6-6 16:12 | 只看该作者
想到一个曲线救国的办法
烧写一段程序读取ID到eeprom
然后读取对应eeprom

使用特权

评论回复
板凳
IJK| | 2012-6-6 17:25 | 只看该作者
st-link API是ST官方公布的吗?

使用特权

评论回复
地板
lixun00|  楼主 | 2012-6-6 18:08 | 只看该作者
是啊。
查看相关dll发现函数都导出了。
要得到芯片是否读保护特别别扭!

使用特权

评论回复
5
lixun00|  楼主 | 2012-6-7 16:07 | 只看该作者
本帖最后由 lixun00 于 2012-6-7 16:17 编辑

经过两天的熟悉,发现这个API框架不好,数据没有分离!

我甚至觉得编写这个框架的人脑子秀逗了。

1.
完全没有函数返回错误码的概念,要么就是真,要么就是假。

只能凭消息回掉函数里的一大窜英文字母来区分。

我要是写个程序是中文的,很麻烦。

2.调用一个函数还会弹出一个消息对话框出来,你就不会在返回码里告诉调用者?

怎么屏蔽也屏蔽不掉。

当然,其它的设计感觉挺合理.

估计框架和st-link回掉函数是两个人写得

使用特权

评论回复
6
liangxijie| | 2014-5-9 18:45 | 只看该作者
不知道还有没有人需要这个。
在HaplSwim.dll里有个未公开的API:HReadByte,可以读取任意地址的值。
给出代码吧(以STM8L101为例):

typedef int (*HBeforeRead)(void);
typedef int (*HReadByte)(int,int,int,BYTE*);
HBeforeRead pHBeforeRead;
HReadByte   pHReadByte;

HINSTANCE dll = LoadLibrary("C:\\Program Files\\STMicroelectronics\\st_toolset\\stvp\\HaplSwim.dll");
pHBeforeRead = (HBeforeRead)GetProcAddress(dll, "HBeforeRead");
pHReadByte = (HReadByte)GetProcAddress(dll, "HReadByte");

BYTE uid[12];
if((*pHBeforeRead)() == TRUE){
        for(int i=0;i<12;i++){
                (*pHReadByte)(4, 0x4925+i, 1, uid+i);
        }
}


使用特权

评论回复
7
yb0121| | 2014-5-17 00:14 | 只看该作者
liangxijie 发表于 2014-5-9 18:45
不知道还有没有人需要这个。
在HaplSwim.dll里有个未公开的API:HReadByte,可以读取任意地址的值。
给出代 ...

能给一个完整的工程文件的例子吗?  需要一个这样的例子

使用特权

评论回复
8
liangxijie| | 2014-5-26 15:17 | 只看该作者
其实上面的代码已经很完整了,需要完整工程的话去ST官方网站下载STSW-MCU002。
www。stmicroelectronics。com。cn/web/en/catalog/tools/PF257522 (没有发链接权限)
需要注意的是调用HReadByte前必须先调用HBeforeRead初始化SWIM。
我只能帮你到这了。

使用特权

评论回复
9
lixun00|  楼主 | 2014-7-12 18:07 | 只看该作者
liangxijie 发表于 2014-5-9 18:45
不知道还有没有人需要这个。
在HaplSwim.dll里有个未公开的API:HReadByte,可以读取任意地址的值。
给出代 ...

确实有用,不知是反汇编得来的还是?

使用特权

评论回复
10
liangxijie| | 2014-7-22 11:42 | 只看该作者
lixun00 发表于 2014-7-12 18:07
确实有用,不知是反汇编得来的还是?

是反汇编出来的

使用特权

评论回复
11
1234567890091| | 2015-11-10 14:52 | 只看该作者
本帖最后由 1234567890091 于 2015-11-10 15:57 编辑


使用特权

评论回复
12
lanjackg2003| | 2015-11-17 15:31 | 只看该作者
liangxijie 发表于 2014-5-9 18:45
不知道还有没有人需要这个。
在HaplSwim.dll里有个未公开的API:HReadByte,可以读取任意地址的值。
给出代 ...

请问
typedef int (*HReadByte)(int,int,int,BYTE*);
这个函数指针的各个参数表示是什么意思?
从(*pHReadByte)(4, 0x4925+i, 1, uid+i);中,可以猜测试到第二、第四个参数分别是,要读 地址跟缓冲
那第一、第三个是什么意思呢?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

56

主题

683

帖子

3

粉丝