切换到宽版
 
  • 223阅读
  • 0回复

[思壮新闻]创芯工坊Power Writer PW200烧录器深度评测 [复制链接]

上一主题 下一主题
 

发帖
158
好评度
311
只看楼主 倒序阅读 使用道具 楼主  发表于: 2021-10-28
DI7g-h8`  
  原创:ICCCCC .yb=I6D;<3  
Kld#C51X f  
  前言: kyu PN<?  
I hPX/P  
   \I #}R4z  
m! _*Q  
  一、开箱 IJv+si:k  
ZA.i\ ;2  
   JFh_3r'  
W^N|+$g>H  
   aF%V  
+'!Y[7|9iv  
   i'`[dwfS  
Bf{c4YiF  
  二、在线仿真测试 EN{o3@ O'  
X^9eCj;c  
  测试环境:MDK v5.30 22r$Ri_>  
p@jwHlX  
  测试芯片:STM32F429BIT6 eD?f|bif  
Bd>a"3fA  
  建立测试工程项目过程略过,直接进入设置,仿真设备选择CMSIS-DAP,如下所示: \cW9"e'  
1 JB~G7  
   52#Ac;Y  
q@Oe}  
  点击Settings进行设置,如下所示: zt/N)5\V  
)T!3du:M  
   b?nORWjC  
^{l$>e]  
   J3,m{%EtNM  
`F4gal^ ^  
   C7xmk;c w  
)l[bu6bM  
   x5%x""VEK  
v5dLjy5  
  Pack选项,可以使能或者不使能,如果异常就切换。 #7|73&u(  
0t(js_  
  都设置好,回到主界面,点击下载,如下所示: \TnRn(Kw  
J ` KyS  
   j-9Zzgr  
Q+a"Z^Z|  
  [img]https://z3.ax1x.com/2021/10/28/5bhwDO.png[/img] u @#fOu  
l-<EG9m@  
  下载成功。点击主界面Debug按钮,进入仿真状态,如下所示: -mY,nMDb  
p~f=0K  
  [img]https://www.z4a.net/images/2021/10/28/40.png[/img] jCp`woV  
vz3#.a~2  
  [img]https://z3.ax1x.com/2021/10/28/5bhDVe.png[/img] B`wrr8"Rz  
sX,S]:X  
  全速运行,一切正常,点击暂停,可以正常查看各种变量数据等。 .vWwYG  
+S ],){  
  [img]https://z3.ax1x.com/2021/10/28/5bh0bD.png[/img] 2C"[0*.[N  
6gTc)rhRT  
  测试环境:MDK v5.30 *5d6Q   
WWG+0jQ9  
  测试芯片:STM32H743XIH6 }b=Cv?Zg$m  
6Eyinv  
  测试组件:EventRecorder pgEDh^[MW  
<Xl/U^B  
  Debug配置上差不多,需要注意的是Trace选项里的Clock要跟目标单片机时钟一致,如下所示: @"__2\ 0  
u?I2|}#  
  [img]https://z3.ax1x.com/2021/10/28/5bhrUH.png[/img] h@%a+6b?  
-)Of\4kx  
  配置好后进入仿真状态,全速运行,时间测试及printf正常显示,代码执行时间准确,10MHz的带宽完全满足,效果如下所示: ^j]_MiA4  
osZ] R  
  [img]https://z3.ax1x.com/2021/10/28/5bhc8I.png[/img] L=wpZ`@ y  
= ow=3Ku  
  [img]https://z3.ax1x.com/2021/10/28/5bhs5d.png[/img] 'e:(61_  
tzrvIVD  
  在线仿真完结。 *^[j6  
}0~X)Vgm(  
  三、UID加密操作 SkyX\&  
M*2 Nq=3  
  UID 加密设置是创芯工坊研发的目前市面上烧录器在授权控制上较为强大的加密版本,不但提供了随机的内置离线授权方法,一键生成动态的项目代码,同时提供了在线授权服务器(目前市面上提供此功能的只有 Segger 的 Secure Flash)支持第三方基于创芯工坊提供的授权服务器模板自建授权服务器,支持在线非对称授权方案,创芯工坊技术团队提供全程技术支持,支持离线 ICWKEY ECDSA非对称授权算法。 rceX|i>9n  
*I9O+/,  
  [img]https://z3.ax1x.com/2021/10/28/5bh6PA.png[/img] J/B`c(  
,v_NrX=f?  
  本次先使用<内置离线授权>,芯片使用STM32F429BIT6,配置如下: )%vnl~i!  
")@#B=8+3^  
  [img]https://z3.ax1x.com/2021/10/28/5bhg2t.png[/img] *=(vIm[KL  
W(\ ^6S)  
  密钥储存地址在芯片flash最后倒退12字节位置,密钥长度选择12字节,小端模式。点击UID矩阵编码按钮,打开窗口如下所示: 3o BR  
RJOW#e :  
  [img]https://z3.ax1x.com/2021/10/28/5bhWKf.png[/img] X}B ]0z>  
z#^;'nnw  
  [img]https://www.z4a.net/images/2021/10/28/16353823221.png[/img] z4{ :X Da  
3 @%XR8ss  
  [img]https://z3.ax1x.com/2021/10/28/5bh2xP.png[/img] ubUVxYD?  
]_43U` [#  
  导出源码:导出源码功能将用户设置好的信息,导出为 MDK Source Code(如果用户 IDE 为其他格式,请包含对应的源码和头文件即可使用),导出的源码 Demo 如下图所示: 2(H-q(  
ppzQh1  
  [img]https://z3.ax1x.com/2021/10/28/5bhfr8.png[/img] ]Gf`nJDV  
VMH^jCFp  
  主要文件就是cortex_chipid_binding.c与cortex_chipid_binding.h,本小节只讲使用,不解析程序。 JasA w7  
-rlCE-S  
  编译并保存:编译并保存功能将用户设置好的 Power Writer 内置授权功能同步到PowerWriter 硬件,同时导出源码供用户使用。 ?}"39n  
#eIFRNRb)  
  其他选项请根据自己需求配置,保存项目为f429bit6uid.pkg。 p((a(Q/  
 {[dY$  
  准备个正常的MDK项目,复制cortex_chipid_binding.c与cortex_chipid_binding.h到项目下,打开工程,如下所示: aKz:hG  
_)[UartKx  
  使用的是安富莱电子的例子,板子是V6开发板。 u7lO2 C7  
+F+M[ef<ws  
  [img]https://z3.ax1x.com/2021/10/28/5bhhqS.png[/img] }56WAP}Z 4  
v-DZW,  
  main.c文件加入#include "cortex_chipid_binding.h"头文件,打开工程选项,C/C++里选择C99模式,因为导出的代码编写方式是变量就近定义,默认的C89是不支持这种骚写法,如下所示: T,h 9xl9i  
Z7p!YTA  
  [img]https://z3.ax1x.com/2021/10/28/5bh5Vg.png[/img] n}/4em?  
a!B"WNb+  
  [img]https://z3.ax1x.com/2021/10/28/5bhIaQ.png[/img] d r$E:kr  
vKBi jmE  
  全项目编译,报如下错误: ' r/xBj[Z  
8p_6RvG  
  .\Flash\Obj\output.axf: Error: L6220E: Load region LR_IROM1 size (2097232 bytes) exceeds limit (2097152 bytes). Region contains 2087436 bytes of padding and 0 bytes of veneers (total 2087436 bytes of linker generated content). W_lXY Z<  
pv]" 2'aQ  
  意思是数据越界了,查看代码发现是cortex_chipid_binding.c里的指定了一个地址,这个地址就是存放密钥的地址,本意是告诉编译器我要占用12字节空间,可是编译器编译时还在这个位置后面放了代码,所以导致越界。 *" +u^  
Vh N6 oI  
  const static char mKey[UID_KEY_LENGTH] __attribute__((section(UID_KEYADDR_INNER))) GQ2/3kt  
vwAtX($  
  解决方法就是禁止这行代码,把cortex_chipid_binding.h的UID_KEYADDR_PLACEHOLDER_EN宏设置为0,如下所示: ?z&5g-/b  
T{)_vQ  
  #define    UID_KEYADDR_PLACEHOLDER_EN   0    //Key Store Addr In Flash Enable/Disable Placeholder u=t.1eS5  
qyP={E9A  
  再次编译通过,在main.c文件里加上密钥判断,代码如下: mM.YZUX  
1$H<Kjsm  
  [img]https://z3.ax1x.com/2021/10/28/5bh7Ps.png[/img] F}?4h Dt  
Q2[; H!"  
  再次编译无错误,加载编译好的程序到烧录器,如下所示: oL@K{dk  
5GbC}y>  
  [img]https://z3.ax1x.com/2021/10/28/5bho5j.png[/img] !RSJb  
oI-,6G}  
  保存项目,在线烧录到目标单片机,如下所示: p0h E`!  
V.Tn1i-v  
  [img]https://z3.ax1x.com/2021/10/28/5bhHGn.png[/img]  "3/&<0k  
\P7<q,OGS  
  开发板运行跑马灯,说明密钥校验通过。 qHn X)  
%`*On~  
  四、创芯工坊发布固件 <QD[hO^/  
yxAy1P;dX  
  这个应用是创芯工坊平台的一大核心功能,也是一大创新。简单来讲就是为开发者和使用者提供一个平台,开发者在平台上发布程序,使用者购买然后烧录程序。 y/+ IPR  
Bk[C=<X  
  这节我们来看批量离线模式,适用于大批量烧录。 psUT2  
ty'/i!/\  
  打开创芯工坊官网www.icworkshop.com,登陆账号,进入用户中心,如下所示: J4u>77I  
/xj`'8  
  [img]https://z3.ax1x.com/2021/10/28/5bhb2q.png[/img] +t3o5&  
e~7FK_y#0  
  点击我是开发者,如下所示: _!,Ees=b  
nJ h)iQu  
  [img]https://z3.ax1x.com/2021/10/28/5bhqx0.png[/img] %77uc9}  
.wB'"z8L  
  点击程序发布,如下所示: .3&( Y  
HoK+g_9~  
  [img]https://z3.ax1x.com/2021/10/28/5bhOMV.png[/img] |}b~YHTs  
FLX n%/  
  为了方便测试,价格选择赠送,指定对象就是使用者账号。 ;8a9S0eS  
\440gH`  
  [img]https://z3.ax1x.com/2021/10/28/5bhjqU.png[/img] A9;,y'm^8  
%OOkPda  
  型号根据自己项目单片机来选,pkg文件是使用pw软件打包好的文件,这里继续使用上节打包的文件。固件密钥是指pw打包时的密码,一定要正确,否则无法解析文件,编程模式选择离线。点击确认发布即可。 tAsap}(  
b0Dco0U(  
  [img]https://z3.ax1x.com/2021/10/28/5bhXrT.png[/img] k-^le|n9  
Bj<s!}i{[  
  使用者需要下载创芯工坊客户端,如下所示: M.+h3<%^  
2M=h:::W  
  [img]https://www.z4a.net/images/2021/10/28/32.png[/img] -iKoQkHt  
G.`},c;A-  
  [img]https://z3.ax1x.com/2021/10/28/5bhxZF.png[/img] yD#(Iw  
sNM ]bei  
  安装后登陆账号,如下所示: eph2&)D}Ep  
D -d  
  [img]https://www.z4a.net/images/2021/10/28/34.png[/img] Lv#0-+]$Bt  
zwz_K!229  
  第一个既是我们刚才推送的程序,连接好PW200烧录器,点击下载固件,如下所示: B<i(Y1n[  
5?Pf#kq  
  [img]https://www.z4a.net/images/2021/10/28/35.png[/img] LosRjvQ:  
`]^W#6l  
  [img]https://www.z4a.net/images/2021/10/28/16353821721.png[/img] X9ZHYlr+Q  
*2pf> UzL  
  [img]http://changhee.cn/data/attachment/forum/202110/28/083538bgddg93242y3kkng.png[/img] }x+6<Rp'E_  
 TD%&9$F  
  [img]https://www.z4a.net/images/2021/10/28/16353819001.png[/img] \*[DR R0  
|<'6rJ[i>  
  这里测试的芯片是STM32F429BIT6,FLASH容量为2MB,SN位置我们放在0x081FFFFC地址,占用4字节。序列号初值我们设置为0x00000001,为了方便验证SN写入成功与否,选项字节的读保护设置为无保护,如下所示: -K3d u&j  
3?&v:H  
  [img]http://changhee.cn/data/attachment/forum/202110/28/083538cs1b32gwtnnr85bw.png[/img] Ho =vdB  
~6IY4']m*  
  点击执行里的全功能自动编程,操作如下所示: $JUkw sc  
OTl9MwW  
  [img]https://www.z4a.net/images/2021/10/28/38.png[/img] V~p01f"J  
NfnPXsad  
  现在我们来读取0x081FFFFC地址数据,操作如下所示: `mA;1S  
t+_\^Oa)  
  [img]http://changhee.cn/data/attachment/forum/202110/28/083542coout9zf5dohdoki.png[/img] lV$CBS  
8i5S }  
  成功读取到0x00000001,为什么是01 00 00 00?因为使用小端储存模式。 <p}7T]a7  
zc$}4o  
  结语: JOJuGB-d  
g9fYt&  
  时间有限,只测了小部分功能,不得不说power writer确实很强大,不管是烧录安全还是烧录速度方面,都表现非常不错,基本满足了工程师开发调试的所有要求。而且还支持STM32、STM8、GD32等十几个品牌芯片。还是非常值得推荐的。
 
快速回复
限100 字节
如果您在写长篇帖子又不马上发表,建议存为草稿
 
上一个 下一个