一、代码写入及加读维护的进程:
1.准备工作:HEX文件和JLINK驱动(JLinkARM_V420以上,4.08中secure chip或许呈现灰色不可选)
装置结束后,能够在开端–一切程序–SEGGER–J-Flash ARM翻开该应用程序
先设置要写入的芯片和写入办法,
挑选JATG仍是SWD
挑选芯片类型:Option–>Project settings–>CPU–>Device(类型不对程序写入不了,设置Option–>Project settings–>Production,选中Securechip;)
2.翻开要烧写的HEX文件:File–Open data file ,能够下拉挑选HEX文件类型
3.衔接要写入的芯片:Target–Connect(此步之前能够先铲除再读出看是否读出为全空,好与后边比照)
4.写入代码:Target–Program & Verify(F6)
(到此,便是代码的写入进程,下面是加读维护的进程)
5.加读维护:Target—Secure chip,点击是,便是加上了读维护!
二、怎么验证是否已读维护
验证办法,能够运用一个没有加读维护的芯片,重复进程中的3,衔接上之后,read back一下,看看是否能读出?
然后再运用一个加了读维护的芯片,重复进程中的3,衔接之后,read back一下,看看是不是真的不能读出了,假如成功加了读维护,它会一向停在那里,数据一向读不出来,最终弹出一个过错正告!
到此,读维护现已加载进去了!
三、代码更新怎么免除读维护
代码需求更新,假如不免除读维护功用,则很难再次将程序写入,免除办法也便是进程中的5项中的反操作:Target—Unsecure chip
免除成功后,你就能够再次写入你更新后的代码了。并没有网友所说的要更改BOOT0和BOOT1的设置,等等。。。
四、怎么一键写入读维护
这个加载代码读维护功用的进程或许对有些人来说仍是比较费事的,究竟产品多的时分,写入之后还要按一下写维护指令,关于产线操作员来说,或许一时忽略忘掉其间一个,就会形成代码的外泄,是不是应该还有更简略的办法一键写入呢,答案是必定的!
具体做法,便是要在生成HEX文件之前,要多几个进程
1.首要,加载: C:KeilARMBoardsKeilMCBSTM32Blinky文件夹中的一个STM32F10xOPT.s文件
2.修正下面两个值为1
3.生成HEX文件之前必须进行一下此装备
这样简略的一个HEX文件就会使你的产品流入商场之后,即便是被抄板成功,也不会代码流了,只需自己公司的职工不外泄。
ulink-Jlink下在ram和flash中调试STM32的办法
http://www.21ic.com/app/embed/201209/142684.htm
时刻:2012-09-11 来历: 作者:
关键字:ulink-Jlink
Keil MDK3.20 在ULINK下调试stm32办法
1. 程序在RAM中运转
关键:(1)程序的下载地址改到RAM空间中
(2)程序的debug之前要设定SP,PC指针到Ram空间
a 新建工程,挑选STM32 的具体类型。
b 设定程序下载地址,如下图所示,IROM1的地址指向了STM32的ram空间。
c 空间巨细怎么分配取决于自己的需求。本款处理器内部ram巨细为20K,分配16K给只读区,4K给可读可写区。这样IROM设定的巨细为0x4000,IRAM1的开端就变为0X20004000,巨细只剩下0X1000。
d Debug标签挑选ULINK1 Cortex Debugger(软件选用yjgyiysbcc兄crack办法)。不选Load Application at Start,在Initialization中参加发动脚本RAM.ini。
RAM.ini中具体内容如下:
FUNC void Setup (void) {
SP = _RDWORD(0x20000000); // Setup Stack Pointer
PC = _RDWORD(0x20000004); // Setup Program Counter
_WDWORD(0xE000ED08, 0x20000000); // Setup Vector Table Offset Register
}
LOAD XXX.axf INCREMENTAL // Download,赤色代表工程文件名.axf
Setup(); // Setup for Running
g, main
Utilities下Update Target before Debugging不选
这样增加后就能够在RAM中调试了。
>>>>>>咱们需求在代码中设置正确的中断向量表方位。中断向量表一般被放置在用户程序的开端,所以flash中运转时,向量表坐落0x08000000处,而当代码被放置在SRAM中运转时,他的方位就成了0x20000000。在初始化NVIC时,咱们能够放置如下代码,界说向量表的方位
NVIC_SetVectorTable(0x20000000 , 0x0);
或
NVIC_SetVectorTable(0x08000000 , 0x0);
或
>>>>>工程选项中Debug项,Download选项卡中,去掉一切钩子,不下载代码到flash,这样就能够在RAM中调试程序了!
2. Flash中调试
新建工程后体系默许设定好IROM1为FLASH的地址和空间巨细。只需求两步:
1) 设定调试东西为ULINK1 CORTEX DEBUGGER,如下图所示,不需求设定开端脚本。
硬件:万利的 EK-STM32F开发板,硬件去掉RS3,RS4 排阻,断开开发板自身的仿真器。
软件:KEIL MDK3.20+ULINK驱动替换文件。
仿真器:ULINK
STM8S读维护:
看了文档,感觉和MEGA88的维护措施没什么两样的。
ATMEL死活不供认MEGA88能被解密.可是,确实1000元就能把完好的代码给你,并且是反汇编的.编译后,从头烧录一切正常
STM8S103K3保密性究竟怎么?有没有目标能够参照的?
榜首:IC没有留后门.许多不良的IC规划公司,尤其是台湾的,都留有后门.代理商很简单就能把ROM的代码读出来给客户.
第二:现在解密,都是把IC刨开直接读里边的东西.许多解密公司都是这么做的.传闻STM8SXX里边有检测机制:发现IC被刨开后,主动擦出FLASH的东西.这个仅仅传闻,没有得到考证.
但从芯片规划视点讲,芯片也像PCB相同有许多层,一般至少十几、二十几层,咱们把需求保密的部分,例如Flash和Flash的锁,规划在比较靠下面的层面上,这样即便把芯片剖开,也要磨掉许多层之后才干找到需求的层,因为不知道Flash在哪一层,解剖的难度就进一步加大了。
——————————————————————————–
我想ATMEL的MCU也是这样规划的.可是却很简单就被破解了.
象台湾的MCU,底子就不必刨开IC,500块全给你读出来.ELAN,SONIX等等,也声称IC加密了,