OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4678|回复: 11

很好奇这个ISP获取ID问题

[复制链接]

58

主题

359

帖子

0

精华

高级会员

Rank: 4

积分
987
金钱
987
注册时间
2014-9-29
在线时间
261 小时
发表于 2016-7-8 17:08:47 | 显示全部楼层 |阅读模式
1金钱
ISP下载时,会显示芯片ID
这个是串口发了怎样的指令让他回复的?

求解答!!

最佳答案

查看完整内容[请看2#楼]

厂商一般不会公开,我今天在STC12C5A60S2下载时抓取了串口通信数据, 你看看,中间蓝色的是真正的程序代码, 前面一串7F是下载请求,已公开, 波特率设置以及ID获取应该就在这两段中间那部分,虽然有数据但也没办法知道具体哪一个是用来做什么的 程序下载完之后还有一段,是设置MCU的,也就这几部分 如果你想知道在ISP通信时MCU发送什么给PC,我找了一下,STC公布的只有两段 ISP擦除准备是0x5A55,ISP下载是0x5A ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

4

帖子

0

精华

高级会员

Rank: 4

积分
923
金钱
923
注册时间
2016-7-1
在线时间
22 小时
发表于 2016-7-8 17:08:48 | 显示全部楼层
闪电之舞 发表于 2016-7-9 14:36
其实就是想知道  特定的字节码
也就是说那个是不公开的咯?

厂商一般不会公开,我今天在STC12C5A60S2下载时抓取了串口通信数据,
你看看,中间蓝色的是真正的程序代码,

前面一串7F是下载请求,已公开,

波特率设置以及ID获取应该就在这两段中间那部分,虽然有数据但也没办法知道具体哪一个是用来做什么的

程序下载完之后还有一段,是设置MCU的,也就这几部分

如果你想知道在ISP通信时MCU发送什么给PC,我找了一下,STC公布的只有两段

ISP擦除准备是0x5A55,ISP下载是0x5AA5

资料我也就找到这么多了,知道下载命令流,擦除,下载准备这三个就可以ISP下载了,这是STC的

各个厂商都差不多,其他的涉及到BOOT代码,可能不会公开
00.PNG
just Think
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11546
金钱
11546
注册时间
2014-4-1
在线时间
1315 小时
发表于 2016-7-8 17:16:15 | 显示全部楼层
本帖最后由 xuande 于 2016-7-8 22:24 编辑

这是芯片与仿真器之间的协议,
我们很难知道。



回复

使用道具 举报

58

主题

359

帖子

0

精华

高级会员

Rank: 4

积分
987
金钱
987
注册时间
2014-9-29
在线时间
261 小时
 楼主| 发表于 2016-7-8 20:03:15 | 显示全部楼层
xuande 发表于 2016-7-8 17:16
这是芯片与仿真器直接的协议,
我们很难知道。

不是吧,就是BOOT脚电平变了,直接发数据下载
一般的串口软件也能烧程序
用ISP也是这样
但获取ID我感觉是先发特殊数据,让MCU应答ID
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11546
金钱
11546
注册时间
2014-4-1
在线时间
1315 小时
发表于 2016-7-8 22:25:47 | 显示全部楼层
闪电之舞 发表于 2016-7-8 20:03
不是吧,就是BOOT脚电平变了,直接发数据下载
一般的串口软件也能烧程序
用ISP也是这样


问题就是,命令的构成和具体内容,
这就是协议。


回复

使用道具 举报

14

主题

96

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
412
金钱
412
注册时间
2013-6-23
在线时间
59 小时
发表于 2016-7-9 07:39:31 | 显示全部楼层
MCU的ID就在flash地址为0x1FFF F7E8的地方,串口一个命令让MCU把这个地址的数据读出来 然后再发回到串口即可
回复

使用道具 举报

58

主题

359

帖子

0

精华

高级会员

Rank: 4

积分
987
金钱
987
注册时间
2014-9-29
在线时间
261 小时
 楼主| 发表于 2016-7-9 08:27:35 | 显示全部楼层
wuhanhongshanqu 发表于 2016-7-9 07:39
MCU的ID就在flash地址为0x1FFF F7E8的地方,串口一个命令让MCU把这个地址的数据读出来 然后再发回到串口即 ...

就是想知道这是个啥样的命令
回复

使用道具 举报

14

主题

96

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
412
金钱
412
注册时间
2013-6-23
在线时间
59 小时
发表于 2016-7-9 08:36:05 | 显示全部楼层
闪电之舞 发表于 2016-7-9 08:27
就是想知道这是个啥样的命令

命令是自己定义的,单片机执行这个语句ID = (*(__IO uint16_t*)(0x1FFFF7E8)); 就可以读出来
回复

使用道具 举报

58

主题

359

帖子

0

精华

高级会员

Rank: 4

积分
987
金钱
987
注册时间
2014-9-29
在线时间
261 小时
 楼主| 发表于 2016-7-9 09:34:36 | 显示全部楼层
wuhanhongshanqu 发表于 2016-7-9 08:36
命令是自己定义的,单片机执行这个语句ID = (*(__IO uint16_t*)(0x1FFFF7E8)); 就可以读出来

单片机内部我也知道啊,关键是你用ISP下载会显示ID
这个ID是串口发送指令,单片机回复的
并不需要预先在单片机内部编程
回复

使用道具 举报

0

主题

4

帖子

0

精华

高级会员

Rank: 4

积分
923
金钱
923
注册时间
2016-7-1
在线时间
22 小时
发表于 2016-7-9 11:00:08 | 显示全部楼层
这样:
MCU复位到ISP程序区,在这段代码中预先写入了与ISP下载程序的通信协议,不同的厂家都有自己的协议,一般不会开源,不过之前STC公布过一个用户自定义版的ISP程序,通信过程主要有两部分:
1.ISP擦除程序准备,这时候MCU会从串口发送特定的字节码,PC端ISP程序接收后等待MCU对ROM进行擦除
2.ISP写入程序准备,此时MCU已经擦除了程序存储器,准备好下载程序

这只是STC公布的那一部分,事实上,还有一部分是:一开始MCU进入ISP区,MCU与PC握手后,PC会发送特定的字节码,MCU接收到之后执行对应的代码,比如发送ID,比如调节晶振分频比例,这一部分与上述两部分一样,都是厂商预先烧录在MCU的ISP代码中的。

你可能会有一个疑问:那为什么用其他的ISP软件也能正常下载呢?
其实,只要在握手后,能正常进行上述通信协议的1,2两个个部分就可以正常下载,不需要获取ID的部分的

完毕,加油
just Think
回复

使用道具 举报

58

主题

359

帖子

0

精华

高级会员

Rank: 4

积分
987
金钱
987
注册时间
2014-9-29
在线时间
261 小时
 楼主| 发表于 2016-7-9 14:36:49 | 显示全部楼层
volter_c 发表于 2016-7-9 11:00
这样:
MCU复位到ISP程序区,在这段代码中预先写入了与ISP下载程序的通信协议,不同的厂家都有自己的协议 ...

其实就是想知道  特定的字节码
也就是说那个是不公开的咯?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-7-9 20:56:16 | 显示全部楼层
ST官方有文档的,你去找下吧
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-10 18:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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