完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
如何使用cosmic编译器在stvd开发人员中使用汇编语言为stm8 mcu编写选项字节。
我必须在不使用stvp程序员的情况下设置读出保护。 以上来自于谷歌翻译 以下为原文 How to write option bytes in assembly language for stm8 mcu in stvd developer using cosmic compiler. I have to set Read out protection without using the stvp programmer. |
|
相关推荐
3个回答
|
|
嗨!
如果你将Forth的这一点翻译成汇编,那么这里是如何做到的。 请注意,' ..'和'(..)'是注释。数据通过数据堆栈传递,您可以在汇编时对其进行编码时将其保存在寄存器中。 STM8S选项设置字 请参阅github.com/TG9541/stm8ef/blob/master/LICENSE.md 将char c存储到(a),将值反转为(a + 1) :CN! (c a - ) 2DUP C! SWAP NOT SWAP 1+ C! ; 解锁写保护,存储选项字节 :OPT! (c a - ) FLASH_CR2 DUP C @ $ 80或SWAP CN!解锁选项字节 ULOCK CN! LOCK 解锁EEPROM,将c写入(a); \来自forth.asm的ULOCK和LOCK: ;锁( - ) ;锁定EEPROM(STM8S) HEADER LOCK'LOCK' 锁: BRES FLASH_IAPSR,#3 RET HEADER ULOCK'ULOCK' ULOCK: MOV FLASH_DUKR,#0xAE MOV FLASH_DUKR,#0x56 1 $:BTJF FLASH_IAPSR,#3,1 $; PM0051 4.1在写入之前需要轮询bit3 = 1 RET 以上来自于谷歌翻译 以下为原文 Hi! If you translate this bit of Forth into assembly, then here is how to do it. Note that ' ..' and '( .. )' are comments. Data is passed through the data stack, and you can probably keep it in registers when coding it in assembly. STM8S option setting words refer to github.com/TG9541/stm8ef/blob/master/LICENSE.md store char c to (a), inverted value to (a+1) : CN! ( c a -- ) 2DUP C! SWAP NOT SWAP 1+ C! ; unlock write protection, store option byte : OPT! ( c a -- ) FLASH_CR2 DUP C@ $80 OR SWAP CN! unlock option bytes ULOCK CN! LOCK unlock EEPROM, write c to (a) ; \ ULOCK and LOCK from forth.asm: ; LOCK ( -- ) ; Lock EEPROM (STM8S) HEADER LOCK 'LOCK' LOCK: BRES FLASH_IAPSR,#3 RET HEADER ULOCK 'ULOCK' ULOCK: MOV FLASH_DUKR,#0xAE MOV FLASH_DUKR,#0x56 1$: BTJF FLASH_IAPSR,#3,1$ ; PM0051 4.1 requires polling bit3=1 before writing RET |
|
|
|
这会有用吗?
组织04800h LOCKBYTE:dc.b 0AAh;读出字节 OPT1:dc.b 000h NOPT1:dc.b 0ffhOPT2:dc.b 081h NOPT2:dc.b 07ehOPT3:dc.b 000h NOPT3:dc.b 0ffhOPT4:dc.b 000h NOPT4:dc.b 0ffhOPT5:dc.b 000h NOPT5:dc.b 0ffhOPT6:dc.b 000h NOPT6:dc.b 0ffhOPT7:dc.b 000h NOPT7:dc.b 0ffhend 以上来自于谷歌翻译 以下为原文 will this work ? org 04800h LOCKBYTE:dc.b 0AAh; Read out Bytes OPT1:dc.b 000h NOPT1:dc.b 0ffhOPT2:dc.b 081h NOPT2:dc.b 07ehOPT3:dc.b 000h NOPT3:dc.b 0ffhOPT4:dc.b 000h NOPT4:dc.b 0ffhOPT5:dc.b 000h NOPT5:dc.b 0ffhOPT6:dc.b 000h NOPT6:dc.b 0ffhOPT7:dc.b 000h NOPT7:dc.b 0ffhend |
|
|
|
不,我不认为这会奏效。如果不首先解锁EEPROM,就不能对选项字节进行编程,这是闪存工具在闪存设备时不会做的事情。
您需要在工具链级别(使用类似ST-Link的程序员)或使用IAP(在应用程序编程中)解决此问题。 http://www.st.com/content/ccc/resource/technical/document/programming_manual/0f/82/71/32/87/2a/46/f2/CD00191343.pdf/files/CD00191343.pdf/jcr:内容/翻译/ en.CD00191343.pdf 第4.1章。这就是上面的代码所做的。可能还有一个STM8库函数来完成它。 以上来自于谷歌翻译 以下为原文 No, I don't think that this will work. You can't program the option bytes without unlocking the EEPROM first, and that's something a flash tool won't do while flashing the device. You need to solve it either it on the tool chain level (using a programmer like ST-Link), or using IAP (in application programming) with the procedure laid out in http://www.st.com/content/ccc/resource/technical/document/programming_manual/0f/82/71/32/87/2a/46/f2/CD00191343.pdf/files/CD00191343.pdf/jcr:content/translations/en.CD00191343.pdf Chapter 4.1. That's what the code above does. It's likely that there is also a STM8 library function to do it. |
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2634 浏览 1 评论
3208 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1783 浏览 1 评论
3609 浏览 6 评论
5987 浏览 21 评论
939浏览 4评论
1315浏览 4评论
在Linux上安装Atollic TRUEStudio的步骤有哪些呢?
582浏览 3评论
使用DMA激活某些外设会以导致外设无法工作的方式生成代码是怎么回事
1302浏览 3评论
1358浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 14:15 , Processed in 1.357905 second(s), Total 83, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号