打印

STM8中OPTION字节如何软件配置

[复制链接]
20700|27
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yewuyi|  楼主 | 2009-12-24 11:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在STVD+COSMIC中,OPTION字节能否直接用软件配置后,编译后直接把相关数据加到HEX文件中,使用编程器软件打开后,自动把OPTION加载进来,免了烧片工人的OPTION操作,避免出错。

这类如PIC的CONFIG,在应用程序开头直接使用关键字CONFIG定义即可。

ST有没有类似的办法?!
沙发
yewuyi|  楼主 | 2009-12-24 11:33 | 只看该作者
请问梁总管,你们负责STM8的工程师是哪位?电话是多少?!

通过代理商解决问题效率不够,呵呵,直接ONE TO ONE 把。。。

使用特权

评论回复
板凳
汉之云| | 2009-12-24 11:56 | 只看该作者
STVP里面支持PROJECT 烧写,就是把CHIP /FLASH/CODE/OPT BYTE/SERIAL NUMBER/烧写次序。。。等等保存到一个project文件中,批量生产时只装载这个project文件就可以了。

除此之外,如果程序代码空间没用光的话,有一个做法推荐:
上电先检查optionbyte是不是你最终要的;如果不是,就把OPTION BYTE烧成你想要的,烧完后开狗等复位。这样即使特殊情况OPTION byte(特别是读保护!)忘记在STVP里面烧了,芯片也发到客户那边去了,你的程序还是安全的。

使用特权

评论回复
地板
yewuyi|  楼主 | 2009-12-24 13:37 | 只看该作者
生成项目文件不是一个好办法,在源代码中直接赋值才最好,在项目中手工配置还是很危险的,烧片的小女孩只管调入HEX或者S19文件就可以了,不需要再去管理那些项目文件,只要源代码不丢失,即使配置忘记了,只要重新建一个项目再编译一次就可以了,很好的方式,为何不去支持它呢?

至于上电先检查optionbyte是不是你最终要的就没什么意思了,嘿嘿,用户只需要保持RST,然后就可以读去HEX了,根本没RUN CODE !。。。

使用特权

评论回复
5
香水城| | 2009-12-24 14:22 | 只看该作者
项目文件中包含了HEX或者S19文件,调入项目文件的同时就调入了HEX或者S19文件,而不需要再单独调入了HEX或者S19文件了。

你提出的问题很好,但是源代码中都是可执行的C语句,如何能够插入对编程器的指令呢?好像COSMIC不具备这个功能。

使用特权

评论回复
6
汉之云| | 2009-12-24 15:18 | 只看该作者
“生成项目文件不是一个好办法,”
“烧片的小女孩只管调入HEX或者S19”
生成项目后,烧片的小女孩也只是调一个.stp,和调一个.s19没有任何难度区别。

“用户只需要保持RST,然后就可以读去HEX“
你的程序只要在烧片后运行过一次(这很容易做到:一种做法是只要在烧片选项里加上烧好后RUN即可),读保护就生效了,如何读HEX?

使用特权

评论回复
7
香水城| | 2009-12-24 15:30 | 只看该作者
上电先检查optionbyte是不是你最终要的;如果不是,就把OPTION BYTE烧成你想要的,烧完后开狗等复位。

这是一个好办法,产品出厂前的测试肯定是要上电运行的,也就是说测试时OPTION BYTE就烧好了。

使用特权

评论回复
8
yewuyi|  楼主 | 2009-12-24 16:12 | 只看该作者
LS两位完全是按照你们设想的使用环境理解这个问题的。

但事实上,对于用户,如下问题就决定了,能在HEX、BIN、S19文件包含以上的OPTION才是最好的。

首先,生成一个项目文件,在烧片的时候调入这个项目,貌似也很好,但这是建立在使用STVD或者STVP软件环境下的,这两个环境下生成的项目文件并不会被通常的编程器软件所支持,例如,我们普遍使用的是XELTEK的编程器,这个编程器是我们经过时间检验和大多数芯片编程烧写通用而要求的,我们是一个批量制造的企业,使用何种编程器是有严格规定的,甚至某种程度说,如果当我们现有的编程烧写系统不支持该款芯片时,我们一般暂时不会选择使用该芯片做产品设计的。为了保证具备通用性,所以生成HEX、BIN、S19格式的文件才是最稳妥的,因为只要是编程器就基本肯定支持这三种格式的文件,而且即使忘记了配置或者开发人员离开,只要源文件存在,简单的文档指导把源代码加入重新编译就可确保一切OK 。
至于上电检查OPTION,如果不对就用应用软件烧写OPTION字节,只能说聊胜于无,因为生产中,多领一个芯片或者少一个芯片是常有的事情,如果不良用心者拿走一片未通电过CHIP,就一切都白忙了,我们的生产管理现在还不能确保在生产过程中不出现数量偶尔出现差错的现象,也不能保证生产过程不被人替换走芯片,所以这个办法不是什么有限解决问题的办法。

使用特权

评论回复
9
yewuyi|  楼主 | 2009-12-24 16:19 | 只看该作者
很多编译器和IDE都支持在应用软件中对熔丝位进行配置,编译连接后在HEX中自动把配置数据放到规定的字节,其实做这个对于ST来说应该是很简单的问题,因为ST的OPTION都是确定的存储位置,只要能在HEX中带有这些位置的数据就OK了,然后在HEX调入的时候自动把数据放到它对应的位置即可,即使STVP不能把这个HEX中OPTION自动调入进来都没什么,至少要保证支持这种功能的软件能自动调进来就可以了,例如XELTEK就可以支持这种调入,但现在的问题是:没办法生成这样要求的HEX 。。。

使用特权

评论回复
10
yewuyi|  楼主 | 2009-12-24 16:24 | 只看该作者
千万别让我们换编程器,XELTEK很好用。

以下是为XELTEK做的广告:
1、自动PIN检测并自动烧写,嘿嘿,这个功能很好,选择这个功能后,只要不断换芯片就可以了,不必老是点鼠标或者按回车了,可以大大节省时间。
2、通用性很好,基本上多数芯片都支持,即使个别芯片不支持,只要打个电话给XELTEK,他们都尽量把这个型号给你加上的。
3、编程稳定可靠,速度也蛮快,即使个别型号速度不快,只要和XELTEK联系一下,他们一般都会很快进行软件升级的。

使用特权

评论回复
11
mcuisp| | 2009-12-24 23:00 | 只看该作者
呵呵,我照搬LS这几点来做我的广告了。
1、自动PIN检测并自动烧写,嘿嘿,这个功能很好,选择这个功能后,只要不断换芯片就可以了,不必老是点鼠标或者按回车了,可以大大节省时间。还不需要电脑,连开机都不用会。
2、通用性很好,基本上多数芯片都支持,即使个别芯片不支持,只要打个电话给McuIsp,他都尽量把这个型号给你加上的。
3、编程稳定可靠,速度也蛮快,即使个别型号速度不快,只要和McuIsp联系一下,他们一般都会很快进行软件升级的。

使用特权

评论回复
12
mcuisp| | 2009-12-24 23:01 | 只看该作者
本帖最后由 mcuisp 于 2009-12-24 23:03 编辑

另外,我知道怎么生成这种hex,就是不告诉叶兄,呵呵

使用特权

评论回复
13
yewuyi|  楼主 | 2009-12-25 08:32 | 只看该作者
倒塌了,LS的为什么不肯告诉俺呢?


呵呵,是否是因为俺没有‘跪求’的原因?!

使用特权

评论回复
14
lxyppc| | 2009-12-25 09:47 | 只看该作者
另外,我知道怎么生成这种hex,就是不告诉叶兄,呵呵
mcuisp 发表于 2009-12-24 23:01


难道是在编译后再加个后处理命令?

使用特权

评论回复
15
yewuyi|  楼主 | 2009-12-25 10:03 | 只看该作者
呵呵,手工拷贝的办法可以弄到一起,但显然不适合管理规定,不能解决问题,需要自动的。。。

使用特权

评论回复
16
香水城| | 2009-12-25 10:09 | 只看该作者
哈哈,12楼 mcuisp 卖关子。

说实话,我还真不知道在COSMIC的编译器中是否有这样的编译指示,查查看ing

使用特权

评论回复
17
汉之云| | 2009-12-25 14:50 | 只看该作者
如果数楼主想把OPTION的数值放入主程序的.s19, 可以试试一下下面的方法:
1.新建一个OPT.C,把opt.c加到项目中,在OPT.C中写OPTION BYTE常量数组:
const unsigned char opt[6]= {1,2,3,4,5,6};
2.在项目setting中,不使用自动生成链接文件(.LKF)方式,而使用指定的链接文件方式。而这个指定的链接文件你可以就选在DEBUG路径下的以前自动生成的.LKF,这样你就可以随意修改.LKF了。然后在.LKF的第一行加入:
+seg .const -b 0x4080 -m 0x80 -n .const -it
Debug\opt.o
3.体谅到COSMIC会自作聪明把OPT BYTE 常量优化掉(至少我手头的版本加volatile没用的),在主程序中加入:
extern const unsigned char opt[6];
volatile char* KeepOpt;

任意地方加一句:KeepOpt = opt;

4.编译链接,就ok 了,可以在生成的.S19及.map中看到option bytes的地址及设定值

使用特权

评论回复
18
yewuyi|  楼主 | 2009-12-25 14:55 | 只看该作者
LS的方法如果成立,到也是一种方法,但显得有点罗嗦了,是否还有更简便的解法?!

使用特权

评论回复
19
result| | 2009-12-28 09:52 | 只看该作者
这个我好像可以发表一下意见,我手上这款ISP工具(FlashRunner)是脱机烧写的,有个同事就是误操作写入了一些保护指令,导致该PCB无法再进行擦除等操作,我们是这样处理的:
1. 相信大家都了解STM8的OPTION 寄存器的地址.
; 0x4800                OPT0                Read-out Protection
; 0x4801                OPT1                User boot code
; 0x4802                NOPT1                Complementary of User boot code
; 0x4803                OPT2                Alternate function remapping
; 0x4804                NOPT2                Complementary of Alternate function remapping
; 0x4805                OPT3                Watchdog option
; 0x4806                NOPT3                Complementary of Watchdog option
; 0x4807                OPT4                Clock Option
; 0x4808                NOPT4                Complementary of Clock Option
; 0x4809                OPT5                HSE Clock Startup
; 0x480A                NOPT5                Complementary of HSE Clock Startup
; 0x480B                OPT6                TMU
; 0x480C                NOPT6                Complementary of TMU
; 0x480D                OPT7                Flash wait states
; 0x480E                NOPT7                Complementary of Flash wait states
; 0x4810                OPT8                TMU_KEY 1
; 0x4811                OPT9                TMU_KEY 2
; 0x4812                OPT10                TMU_KEY 3
; 0x4813                OPT11                TMU_KEY 4
; 0x4814                OPT12                TMU_KEY 5
; 0x4815                OPT13                TMU_KEY 6
; 0x4816                OPT14                TMU_KEY 7
; 0x4817                OPT15                TMU_KEY 8
; 0x4818                OPT16                TMU MAX_ATT
; 0x487E                OPT17                Bootloader
; 0x487F                NOPT17                Complementary of Bootloader
2. 根据这个地址, 我们制作了一个option.bin(option.hex)
以相对0映射到4800的方式制作了一个长度为7F的option.bin.
3. 我们在烧写的project加入了下面这些烧写需求,这样就可以非常方便的烧写这些option byte.
TPSETSRC FILE OPTION.BIN
TPCMD PROGRAM O $0(文件地址) $4800(器件地址) $F(长度)
TPCMD PROGRAM O $10 $4810 $9  
TPCMD PROGRAM O $7E $487E $2

使用特权

评论回复
20
yewuyi|  楼主 | 2009-12-28 10:47 | 只看该作者
呵呵,我们负责烧片的工作人员只会点鼠标,计算机运用只知道按POWER的那种,呵呵,这也是公司故意的,招聘这样的人最大好处就是安全,因为这些工作人员接触到公司关键的代码文件,就应该招一些比较笨的工作人员才放心  。。。

使用特权

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

本版积分规则

个人签名:一:我的回帖多数只是猜测/估计/想象,建立在我现有知识结构的理解和分析上,多数都没有动手实际检验过,请斟酌采纳. 二:若对我的技术类主帖或回帖有异议,欢迎讨论,拒绝过激攻击或辱骂,否则全站追杀屏蔽发帖,后果自负. 三:对本人的其它意见,请直接向站长投诉,勿使用站内短信骚扰/挑衅/辱骂,否则将全站追杀屏蔽发帖,后果自负.

1416

主题

20007

帖子

232

粉丝