OpenEdv-开源电子网

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

请教,关于STVP_CmdLine的使用方法

[复制链接]

25

主题

78

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
234
金钱
234
注册时间
2015-12-16
在线时间
32 小时
发表于 2017-5-23 14:21:13 | 显示全部楼层 |阅读模式
1金钱
诸位大侠,公司量产需要烧录程序,芯片型号是STM8S105C6T6,
烧录器型号:ST_LINK/V2
安装STVP win7-64,点击STVP visual programme,进入烧录界面,操作正常

由于需要,拟使用STVP_CmdLine进行烧录,主要是方便将这个命令模式编写进入vb程序,以前烧录stm32使用J-LINK也是这样做的


在dos环境下,下达命令:STVP_CmdLine -port=USB -BoardName=ST-LINK -Device=stm8s105c6 -ProgMode=SWIM -no_warn_protect -no_loop -FileProg=p.hex -FileData=d.hex -FileOption=o.hex
得到错误提示如下:
STVP_CmdLine version 1.6

Verbose ON
Log activity ON
Display Progress OFF
Message box warning if protect option byte OFF
Loop mode OFF
Erase device OFF
Blank check device OFF
Verify device ON

(API) ERROR : Device STM8S105C6 not found in DBCFILE.CNF file


请问DBCFILE.CNF是什么文件,怎么没有发现STM8S105C6,应该如何处理?求助,谢谢!

最佳答案

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

总结 1.需求:由于需要将烧录程序嵌入到上位机程序中,即用Visual Basic编写的一个程序,在这个程序中调用STVP_CmdLine对STM8S105C6进行烧录, 2.参考STVP_CmdLine的帮助,依葫芦画瓢,摸索得出如下总结 3.关于STVP_CmdLine的保住,可以在DOS界面下,进入到STVP安装目录,输入如下命令: STVP_CmdLine /? 如果嫌DOS界面下,不方便看,可以将命令稍微更改成如下: STVP_CmdLine /? >1.txt 在上一次命令的基础上,增加"> 1.t ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

25

主题

78

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
234
金钱
234
注册时间
2015-12-16
在线时间
32 小时
 楼主| 发表于 2017-5-23 14:21:14 | 显示全部楼层
总结
1.需求:由于需要将烧录程序嵌入到上位机程序中,即用Visual Basic编写的一个程序,在这个程序中调用STVP_CmdLine对STM8S105C6进行烧录,

2.参考STVP_CmdLine的帮助,依葫芦画瓢,摸索得出如下总结

3.关于STVP_CmdLine的保住,可以在DOS界面下,进入到STVP安装目录,输入如下命令:
      STVP_CmdLine /?
如果嫌DOS界面下,不方便看,可以将命令稍微更改成如下:
     STVP_CmdLine /? >1.txt
在上一次命令的基础上,增加"> 1.txt",这样一来相关帮助信息就保存在文件1.txt中,在资源管理器中打开这个文件即可方便观看

4.如何在DOS下,进入到STVP_CmdLine安装目录,这个简单,本人是从DOS3.3开始用电脑的,命令如下:
    cd C:\Program Files (x86)\STMicroelectronics\st_toolset\stvp
如果你的安装路径不同,请做相关更改即可

5.文件生成,本人使用的IAR FOR STM8,编译得到一个.HEX文件,姑且把这个文件叫做s.hex吧
用记事本打开这个文件,将其拆分为两个文件:p.hex, d.hex
p.hex: 在s.hex的基础上,将eeprom的数据删除,就是删除地址为0x4000开始的数据,保留0x8000开始的数据,一般删除第一行或若干行,

不妨在网络上查找以下.HEX格式就明白,

同理,d.hex就是在s.hex的基础上,保留0x4000~0x7fff的数据,将其它地址的数据删除,注意要保留最后一行
        :00000001FF   此乃文件结尾的标志

6.生成 o.hex,如果你写入的程序,不需要进行代码保护,可跳过,一般来说还是需要代码保护,
打开STVP Visual Programme,按照平常烧录进行操作,点击OPTION BYTE页,将ROP 设置为ON,即加密保护
点击菜单File 另存为 o.hex即可

如上, 将ROP设置为OFF(取消代码保护),另存为un.hex,备用

7.VB程序处理,
7.1 先对单片机进行"取消保护"操作,调用DOS,设置命令如下:
cd C:\Program Files (x86)\STMicroelectronics\st_toolset\stvp
STVP_CmdLine -port=USB -BoardName=ST-LINK -Device=STM8S105x6 -ProgMode=SWIM -no_warn_protect -no_loop  -FileOption=uo.hex >1.txt

根据1.txt的信息,判断本次"解保护"是否成功

7.2烧录程序,命令如下:
cd C:\Program Files (x86)\STMicroelectronics\st_toolset\stvp
STVP_CmdLine -port=USB -BoardName=ST-LINK -Device=STM8S105x6 -ProgMode=SWIM -no_warn_protect -no_loop -FileProg=p.hex -FileData=d.hex -FileOption=o.hex >1.txt

同样,根据1.txt内容,判断操作是否成功

8.其它
8.1 在7.1/ 7.2操作之前,删除1.txt,操作后会重新生产该文件,再进行判断,
8.2 源文件p.hex, d.hex o.hex,放置的路径要注意,最好放到STVP安装目录下面,否则需要增加文件路径,本人拟将这三个文件,编译到VB程序中,在烧录时,临时有VB生成这三个文件,烧录完成后,立即删除,这样操作人员,基本上无法接触到源文件
8.3 既然烧录操作是通过VB来调用的,那么就可以利用VB做一些文章,例如:
8.3.1, VB程序进入后,读取电脑的网卡号等信息,与预先设置的文本进行比较,如果不符合,则退出VB,这样可以保证VB程序在指定的电脑上操作,即便拷贝到其它电脑,也无法运行
8.3.2, 自己可以制作加密狗,用一个USB转串口的芯片,例如FT4232(好像是这个型号,或者相近的型号)等,加上一个单片机,VB调用烧录之前,先对狗进行通信,狗负责计数,到达一定数量后,返回给VB一个信息,VB罢工不干了,这样可以限制烧录数量,需要继续烧录,对狗内置的单片机刷新程序(允许数量)

罗罗嗦嗦就此打住,有需要的自己继续摸索.................

回复

使用道具 举报

25

主题

78

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
234
金钱
234
注册时间
2015-12-16
在线时间
32 小时
 楼主| 发表于 2017-5-23 14:49:16 | 显示全部楼层
将型号更改为STM8S105x6,可以找到这个器件,但仍然错误,提示如下:
STVP_CmdLine version 1.6

Verbose ON
Log activity ON
Display Progress OFF
Message box warning if protect option byte OFF
Loop mode OFF
Erase device OFF
Blank check device OFF
Verify device ON

Configuration:
BoardName=ST-LINK ST-LINK_ID=0 Device=STM8S105x6 Port=USB ProgMode=SWIM

>>> Filling PROGRAM MEMORY image in computer with Blank Value
<<< Filling PROGRAM MEMORY image in computer succeeds

>>> Loading file p.hex in PROGRAM MEMORY image in computer
<<< Loading file succeeds

>>> Filling DATA MEMORY image in computer with Blank Value
<<< Filling DATA MEMORY image in computer succeeds

>>> Loading file d.hex in DATA MEMORY image in computer
<<< Loading file succeeds

>>> Loading file o.hex in OPTION BYTE image in computer
(API) WARNING : FILE : line 1: Address 0x4802 is out of range and is ignored!
(API) WARNING : FILE : line 1: Address 0x4804 is out of range and is ignored!
(API) WARNING : FILE : line 1: Address 0x4806 is out of range and is ignored!
(API) WARNING : FILE : line 1: Address 0x4808 is out of range and is ignored!
<<< Loading file succeeds

Hit 'Esc' key to abort during communication.

>>> Programming PROGRAM MEMORY
(API) ERROR : Cannot communicate with the device !
Check the SWIM cable connection and check all the needed pin connections on the SWIM connector.

If the application code uses Swim Disable and Reset pin as Output or has disabled SWIM Clock Divider:
Try Now to SWITCH OFF and ON the application Power Supply while NRST Reset pin is forced low.

<<< Programming PROGRAM MEMORY fails
回复

使用道具 举报

25

主题

78

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
234
金钱
234
注册时间
2015-12-16
在线时间
32 小时
 楼主| 发表于 2017-5-23 14:55:01 | 显示全部楼层
粗心大意,没有插上SWIM杜邦线,重新来,错误信息如下:
STVP_CmdLine version 1.6

Verbose ON
Log activity ON
Display Progress OFF
Message box warning if protect option byte OFF
Loop mode OFF
Erase device OFF
Blank check device OFF
Verify device ON

Configuration:
BoardName=ST-LINK ST-LINK_ID=0 Device=STM8S105x6 Port=USB ProgMode=SWIM

>>> Filling PROGRAM MEMORY image in computer with Blank Value
<<< Filling PROGRAM MEMORY image in computer succeeds

>>> Loading file p.hex in PROGRAM MEMORY image in computer
<<< Loading file succeeds

>>> Filling DATA MEMORY image in computer with Blank Value
<<< Filling DATA MEMORY image in computer succeeds

>>> Loading file d.hex in DATA MEMORY image in computer
<<< Loading file succeeds

>>> Loading file o.hex in OPTION BYTE image in computer
(API) WARNING : FILE : line 1: Address 0x4802 is out of range and is ignored!
(API) WARNING : FILE : line 1: Address 0x4804 is out of range and is ignored!
(API) WARNING : FILE : line 1: Address 0x4806 is out of range and is ignored!
(API) WARNING : FILE : line 1: Address 0x4808 is out of range and is ignored!
<<< Loading file succeeds

Hit 'Esc' key to abort during communication.

>>> Programming PROGRAM MEMORY
(API) ERROR : The device is protected
(API) WARNING : Operation aborted
<<< Programming PROGRAM MEMORY fails


Address 0x4802~0x4808是保护代码的,o.hex这个文件是在STVP Visual Programme中导出的,
继续努力看看
回复

使用道具 举报

25

主题

78

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
234
金钱
234
注册时间
2015-12-16
在线时间
32 小时
 楼主| 发表于 2017-5-23 14:59:45 | 显示全部楼层
o.hex这个文件是查STVP Visual Programme-OPTION BYTE中导出来的,我自己进行过编辑,估计编辑校验出错,使用编辑前的文件就可以成功调入文件,

重新下达指令,出错提示,器件是保护的
ERROR : The device is protected

这个好办,在STVP Visual Programme中重新取消写保护,再试试看
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2016-1-7
在线时间
1 小时
发表于 2018-8-2 11:14:30 | 显示全部楼层
想请教以下,使用stvp_cmdline时,总是出现
>>>Erasing PROGRAM MEMORY
<API>ERROR : Erase is not available on PROGRAM MEMORY for STM8S207C8
<<< Erase PROGRAM MEMORY fails
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-6-17 00:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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