打印
[开发工具]

【PW200烧录器评测】深度评测

[复制链接]
1950|26
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ICCCCC|  楼主 | 2020-6-30 17:45 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 ICCCCC 于 2020-7-7 16:40 编辑

【PW200烧录器评测】深度评测
0x00:开箱



创芯工坊介绍
创芯工坊科技(深圳)有限公司以“创新驱动产业,融合创造价值”为主旨,致力于以“集成电路+互联网”的新模式,打造精细化的产业互联网平台。旗下创芯工坊平台(https://www.icworkshop.com) 基于互联网技术,同时融合云存储、云烧录及网络加密技术,运用电子商务运营模式,将传统芯片程序交付模式转变为在线交付,实现方案交付的软硬分离,极大程度保护了开发者的知识产权权益,同时提高了方案交付效率。
Power Writer 简介
Power Writer 是创芯工坊官方推出的 Debugger + Programmer,主要面对个人开发者和小批量试产使用,授权控制领域。随着产品规划的推进,将会推出更多不同类型产品来满足不同类型的需求。
产品参数:
产品尺寸:92.000mm * 56.000mm * 16.000mm
工作电压:DC5V
产品功耗:30mA@5V~100mA@5V

Power Writer 特性简介
Power Writer 系列产品提供丰富的功能设定,让您无论在开发测试,还是实际量产、权限控制上都做到游刃有余,下面是功能特定的不完全列表,随着产品的不断升级、功能将会更加丰富。

特性列表概览 (安全部分: 约 30 项):
  • 客户端软件采用 C++ 11 开发,而非其它厂商采用的是 C#/VB 等语言开发,虽然可以加密,但是通过一些技术手段可以获取到客户端软件源代码,导致后续的数据保护都成为一纸空谈。
  • 客户端除了使用 C++ 开发之外,内部代码上采用了大量的检测技术,Hash/加密关键数据,用于检测内存中的软件数据是否被读取或被篡改等异常操作,在每一个环节都确保用户数据的安全。
  • 客户端软件采用商业保护软件,做了大量的逆向分析检测,多层防护。
  • 客户端采用双证书 EV 代码签名,用户可以直观的判断软件来源是否来自官方版本,如果软件被篡改,用户将收到提示。
  • 客户端支持多种加密算法、滚码算法、文件内部采用 Tag 标记和数据验证,而不是将密码存储在文件中,类似密码学中 zip 的加密方式。只有当密码输入正确时才能获取到真实数据,而大多密码长度为 16 字节以上。在代码开源的情形下,暴力**都并非易事,确保用户数据的极致安全。
  • 客户端软件到 Power Writer 的协议加密,采用非对称加密算法,在传输过程中不交换密钥。逆向分析人员只有同时**了烧录器和 PC 端软件,并且取得加密的公钥和私钥时才能解密数据包。
  • 客户端软件到 Power Writer 的协议同时做了动态滚码加密,在非对称 ECC 加密的基础上,多次发送同一个数据包,将得到不同的 packet
  • 客户端配合创芯工坊使用时,同时会经过服务端的验证,如果软件有任何修改,服务端将不会下发远程烧录数据。
  • 通讯协议签名校验,任何一帧数据都无法被篡改。
  • 支持烧录目标芯片协议层加密。
  • 支持烧录目标芯片动态加密、数据验证、读写防护和防注入。 (领先技术,一芯一密)
  • 支持目标芯片写入读保护之后再写入部分数据,确保在烧录芯片数据烧录完但没有写Option Byte 时断开芯片,导致芯片会被读取的可能。(注:部分芯片不支持)
  • Power Writer 硬件采用支持内存读取保护的芯片,支持 2 级保护的 L4 系列芯片,确保烧录器固件不被读取。
  • Power Writer 固件内置绑定算法,每个 Power Writer 的固件都是独一无二的,升级固件时,由系统内部自动生成正确的固件。
  • Power Writer 内置固件校验算法 Boot Loader、App 双验证。如果通过极端手段**拿到了烧录器固件,任何篡改都导致固件无法正确运行。
  • Power Writer 将用户敏感数据存在在核心区域,并经过多重加密算法加密。
  • Power Writer 每一台烧录器都有独立的 SN/OEM/并且支持和用户账户绑定 (开发中)。
  • 支持服务器远程在线授权,可以通过创芯工坊内建的授权服务器对量产进行授权控制。
  • 支持自三方自建服务器在线授权,通过采用创芯工坊授权服务器开发包,第三方用户可以快速搭建自己的授权服务器和自定义授权算法,自主控制产品的安全授权关键算法,创芯工坊作为平台提供方进行量产烧录,从根本上解决安全上的担忧。
  • 支持内建智能矩阵离线授权,而非其它友商的固定加密算法(固定加密算法由于代码是一致的,导致反编译的代码有规律可循,给**者可乘之机)。
  • 支持 ICWKEY 非对称加密算法硬件授权算法,详见硬件授权模块的用户手册。
  • 支持自定义 ICWKEY 的二次开发。(需取得创芯工坊授权)

特性列表概览 (功能部分: 约 110 项):
  • 支持加密 Project
  • 支持导入导出项目
  • 支持加载加密项目到 Power Writer, 用于离线量产控制
  • 支持从 Power Writer 读取离线项目。(读取需要项目密码,安全性所需)
  • 支持在线芯片 Program Flash 区域读取
  • 支持在线芯片 Program Flash 区域读取地址,读取大小设置,正片读取功能,方便用户读取目标芯片芯片的固件数据
  • 支持在线芯片查空,通过此项功能,用户可快速判断芯片是否是空片
  • 支持在线擦除芯片,开发者、用户可直接通过软件擦除目标芯片
  • 支持在线烧写 Program Flash 区域的数据,用户可通过在线编程的方式写入固件速度,而不是必须通过离线,或者 MDK/IAR/CUBEIDE Debugger 方式写入
  • 支持在线校验 Program Flash 数据
  • 支持在线自动编程,自动执行擦除、写入、校验、更新 Option Byte 功能
  • 支持在线复位目标芯片
  • 支持设置读保护:可设置 Level-0,Level-1,Level-2 级别,并自动识别用户的保护位是否开启
  • 支持完整的 Option Byte 设置列表
  • 支持完整的 Option Byte 的默认设置
  • Option Byte 支持多国语言
  • 支持自动识别 Option Byte 中的选项,执行对应的操作
  • 支持在线恢复出厂 Option Byte
  • 支持在线读取 Option Byte
  • 支持读取有锁芯片的选项字节
  • 支持在线写入 Option Byte
  • 支持保存用户自定义选项字节,用户可以将设置好的选项字节保存到文件,可以将其
  • 发送给烧录厂或者是用于其他用途
  • 支持加载用户自定义选项字节,可以从保存的选项字节加载到项目中
  • Option Byte 动态实时同步,连接上目标芯片自动同步到 PC 客户端
  • 支持 Bank 自动识别
  • 支持多种 Option Byte 更新方式
  • 1.烧录前无操作 -> 烧录后无操作
  • 2.烧录前误操作 -> 烧录后写入用户自定义 Option Byte
  • 3.烧录前 Option Byte 恢复出厂设置 -> 烧录后无操作
  • 4.烧录前 Option Byte 恢复出厂设置 -> 烧录后写入用户自定义 Option Byte
  • 支持在线读取目标芯片 Chip ID,方便用户检查 Chip ID,并且对于非连续的 Chip ID 自动按照连续地址的形式给出。
  • 支持在线任意地址读取目标芯片内部数据,主要用于开发者 Debug 分析目标芯片,并可任意设置读取地址和读取大小,详见相关章节,主要用于:
  • 1.读取任意内存数据
  • 2.读取任意 Flash 数据
  • 3.读取任意寄存器数据等
  • 支持软件自动在线升级(有网络的情况下)
  • 支持多国语言,完整支持
  • 支持主流 ARM Cortex-M 芯片 (目前支持 STM32 全系列,适配不断更新中...)
  • 支持多种擦除方法:按 Page 擦除、全片擦除、Bank 自动识别擦除 (无需用户选择)
  • 支持多种电压选择,1.8V/3.3V/5.0V/或者是用户自定义参考电压
  • 支持编程速度自由调节,5Khz~10MHZ 速度自由调节
  • 支持蜂鸣器在线提示音,定义规则请参考信号定义描述章节
  • 支持序列号写入,可设置序列号地址、初值、步长、大小端模式
  • 支持序列号 10 进制和 16 进制切换显示
  • 支持序列号地址、合法性检查(自动检查是否和其他设置地址重叠)
  • 支持离线烧录次数设置,最高可到 42 亿次
  • 支持自动芯片检测,芯片放入时可自动启停烧录支持设置自动芯片检测的稳定时间,默认 100ms
  • 支持设置自动烧录芯片时拿走延时时间,默认 100ms
  • 支持烧录次数设置信息的 10 进制和 16 进制显示切换
  • 支持烧录次数设定参数的合法性检查
  • 支持烧录完目标芯片后启动目标芯片(Reset & Run)
  • 支持烧录完目标芯片后关闭电源输出,在批量烧录时,通过烧录完关闭电源输出,可有效保护芯片不会被带电从烧录座取下
  • 支持设置烧录前和烧录后供电稳定时间或者掉电稳定时间(开启关闭电源输出选项有效)
  • 支持设置 RESET 引脚信号控制,支持以下三种模式
  • 1.输出常低电平
  • 2.关闭输出(高阻状态)
  • 3.输出复位后关闭(烧录前产生复位信号)
  • 支持数据校验:校验烧录到目标芯片的数据是否正确,默认开启
  • 支持 UID 创芯工坊官方授权服务器在线芯片授权烧录
  • 支持 Power Writer 内置离线授权算法对芯片进行授权
  • 支持灵活设置 Power Writer 内置离线授权算法的密钥存放地址,密钥大小(4/8/12byte),以及密钥的大小端模式,以及用户自定义密码功能支持用户自定义离线授权算**能,而不是已有的几种模式
  • 支持自动生成随机离线授权算法,Power Writer 可自动生成随机离线授权算法,每一种都是唯一的,重复的可能性几乎为零
  • 自动生成随机离线授权算法,支持算法强度检查,并提供手动调整参考建议。用户可手工调整,或者重新生成,直到满意为止
  • 支持之定义离线授权算法导出 Sample Project,用户只需将导出的源码编译到项目中即可实现离线授权算法,方便快捷
  • 通过完善的系统内核调度机制,Power Writer 可同时执行并发操作
  • 支持完整的在线操作日志显示,及时提醒用户,日志主要包含以下几种颜色
  • 1.浅蓝:代表一般性操作结果
  • 2.绿色:代表操作成功
  • 3.红色:代表错误,或者其他一些关键信息,比如 Power Writer 断开链接
  • 4.黄色:代表警告,操作可能有问题,或者是提示设置可能有问题
  • 支持日志重置、保存日志、想保存下操作记录,试试将日志保存下来备份、以便将来遇到问题时可以清楚的看到上一次的操作流程
  • 支持加密保存,加载烧录配置参数
  • 支持完整芯片 Flash 空间映射,用 HEX 视图显示,用户可以直观的看到加载的原始数
  • 支持 Flash 数据区复制,粘贴操作,用户可以对 Flash 数据区进行编辑
  • 支持 Flash 数据区地址跳转,用户可以快速跳转到指定的地址
  • 支持多段固件烧录功能,并且对固件数量没有进行限制
  • 多段固件可实时看到固件的起始地址,结束地址,大小和 CRC32 信息
  • 支持自定义固件地址,用户对 Bin 格式固件自定义地址,并对地址合法性进行检查
  • 支持丰富的固件格式,bin/Hex/S19/pkg 格式 (pkg 格式为创芯工坊自定义格式)
  • 支持添加随机数组功能,并且不限制随机数组的数量(开发中)
  • 支持完整的芯片扇区表查看,可以直观的看到芯片的扇区信息,起始地址,结束地址和大小
  • 支持自动识别固件对应的扇区信息,选择固件时可以看到固件对应的扇区
  • 支持在线自定义扇区擦除,用户可以在线对指定的扇区进行擦除
  • 支持 Bank 自动识别,针对单/双 Bank 芯片,用户同步修改、读取 Option Byte 时,扇区表会跟随 Option Bytes 设置进行切换
  • 支持随机填充选定的扇区表,用户可以对 Flash 中剩余的空闲部分填充随机数据
  • 支持通过 CTRL 控制信号,启动离线烧录
  • 支持手动烧录:按下按键进行烧录
  • 支持 LED 状态指示:LED 指示脱机下载器运行状态,四个独立的多彩 LED 显示 POWER/ BUSY / OK / NG 状态,而不是通过一个 LED 显示,更加直观
  • 支持创芯工坊服务端远程下载
  • 支持创芯工坊芯片量产授权
  • 支持第三方自建授权服务器授权
  • 支持机台信号给出,可以给出 NG、OK 信号
  • 支持设备当前配置读取 (注:部分敏感信息不会被读取显示)
  • 支持固件一键升级:简单方便,确保产品升级方便
  • 软件自动设备检测:插入设备到 USB 软件自动检测连接,无需手动操作
  • 支持烧录器到目标芯片数据加密,可防止用户固件数据被窃取
  • 支持数据加密:设备和 PC 通信数据多次加密,确保数据安全性
  • 设备存储数据加密:设备中固件存储数据采用多种加密算法确保数据无法被解密
  • 支持烧录地址有效性自动检测,确保程序运行正确
  • 多固件同事烧录支持地址重叠检查
  • 兼容的 SWJ 引脚信号
  • 支持 ARM 内核芯片的 Debugger / Trace 功能,Power Writer 不仅仅是一个在线烧录器和量产烧录器,同时也是一个全功能的 Debugger,不仅支持 Cortex-M 芯片的调试,同时也支持 Cortex-A CPU 的 debug
  • 主流的 USB HID 通信方式,用于作为 Debugger 调试 ARM 内核芯片
  • 支持 CDC 通信,并且 USBHID 和 CDC 可同时在线

使用特权

评论回复
评论
21小跑堂 2020-7-2 17:08 回复TA
@ICCCCC :收到 
ICCCCC 2020-7-1 16:51 回复TA
@21小跑堂 正式评测 
沙发
ICCCCC|  楼主 | 2020-6-30 17:46 | 只看该作者
本帖最后由 ICCCCC 于 2020-7-1 13:11 编辑

0x01:在线仿真
1.驱动安装
Power Writer HID 首次连接到电脑时,系统会自动安装 HID 驱动,请等待驱动安装完毕,HID 驱动集成在系统中,无需额外提供。如果能够正常安装那在设备管理器里可以看到驱动安装完成,如下所示:


PW200的VID号是0D28,虚拟成串口,用于与Power Writer上位机通讯,理论上也可以当作串口工具来使用,目前官方没有放出这个硬件。


CMSIS-DAP就是RAM开源的DAP-LINK仿真器,好处就是随便用,无版权纠纷。仿真速度取决于制作仿真器的主控,PW200使用L4系列,目前最高10MHz,对于下载个200k左右的程序还是不错。
如果是老系统(windows10外),由于不自带驱动,用户需要手动安装驱动,驱动存放在 Power Writer 应用软件的 driver 目录下:*/Power Writer/driver/WinSerial.exe然后从设备管理器找到端口:
PowerWriter Serial Port,右键手动更新驱动程序

2.在线仿真测试
  • 测试环境:MDK v5.30
  • 测试芯片:STM32F429BIT6

建立测试工程项目过程略过,直接进入设置,仿真设备选择CMSIS-DAP,如下所示:

点击Settings进行设置,如下所示:



Pack选项,可以使能或者不使能,如果异常就切换。
都设置好,回到主界面,点击下载,如下所示:


下载成功。点击主界面Debug按钮,进入仿真状态,如下所示:


全速运行,一切正常,点击暂停,可以正常查看各种变量数据等。

  • 测试环境:MDK v5.30
  • 测试芯片:STM32H743XIH6
  • 测试组件:EventRecorder
Debug配置上差不多,需要注意的是Trace选项里的Clock要跟目标单片机时钟一致,如下所示:

配置好后进入仿真状态,全速运行,时间测试及printf正常显示,代码执行时间准确,10MHz的带宽完全满足,效果如下所示:


在线仿真完结。

使用特权

评论回复
板凳
AlexChiu| | 2020-6-30 23:57 | 只看该作者
期待期待!

使用特权

评论回复
地板
zeshoufx| | 2020-7-1 08:42 | 只看该作者
谢谢分享【PW200烧录器评测】

使用特权

评论回复
5
chenci2013| | 2020-7-2 22:29 | 只看该作者
哪里申请的            

使用特权

评论回复
6
ICCCCC|  楼主 | 2020-7-3 10:00 | 只看该作者

活动已经结束了

使用特权

评论回复
7
ICCCCC|  楼主 | 2020-7-4 21:33 | 只看该作者
本帖最后由 ICCCCC 于 2020-7-4 22:51 编辑

0x03:UID加密操作
UID 加密设置是创芯工坊研发的目前市面上烧录器在授权控制上较为强大的加密版本,不但提供了随机的内置离线授权方法,一键生成动态的项目代码,同时提供了在线授权服务器(目前市面上提供此功能的只有 Segger 的 Secure Flash)支持第三方基于创芯工坊提供的授权服务器模板自建授权服务器,支持在线非对称授权方案,创芯工坊技术团队提供全程技术支持,支持离线 ICWKEY ECDSA非对称授权算法。

本次先使用<内置离线授权>,芯片使用STM32F429BIT6,配置如下:

密钥储存地址在芯片flash最后倒退12字节位置,密钥长度选择12字节,小端模式。点击UID矩阵编码按钮,打开窗口如下所示:

  • 随机生成:随机生成功能将会生成随机矩阵数组,用户每次生成将会得到真正的授权矩阵算法。
  • 检查代码:检查代码功能将会验证当前矩阵数组的强度,判断依据为是否每一个运算符都有参与运算、每一个 UID 和每一个用户 key 是否有有用到,检查提示截图如下所示:

  • 导出源码:导出源码功能将用户设置好的信息,导出为 MDK Source Code(如果用户 IDE 为其他格式,请包含对应的源码和头文件即可使用),导出的源码 Demo 如下图所示:

主要文件就是cortex_chipid_binding.c与cortex_chipid_binding.h,本小节只讲使用,不解析程序。
  • 编译并保存:编译并保存功能将用户设置好的 Power Writer 内置授权功能同步到PowerWriter 硬件,同时导出源码供用户使用。
其他选项请根据自己需求配置,保存项目为f429bit6uid.pkg。
准备个正常的MDK项目,复制cortex_chipid_binding.c与cortex_chipid_binding.h到项目下,打开工程,如下所示:
使用的是安富莱电子的例子,板子是V6开发板。

main.c文件加入#include "cortex_chipid_binding.h"头文件,打开工程选项,C/C++里选择C99模式,因为导出的代码编写方式是变量就近定义,默认的C89是不支持这种骚写法,如下所示:


全项目编译,报如下错误:
.\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).
意思是数据越界了,查看代码发现是cortex_chipid_binding.c里的指定了一个地址,这个地址就是存放密钥的地址,本意是告诉编译器我要占用12字节空间,可是编译器编译时还在这个位置后面放了代码,所以导致越界。
const static char mKey[UID_KEY_LENGTH] __attribute__((section(UID_KEYADDR_INNER)))
解决方法就是禁止这行代码,把cortex_chipid_binding.h的UID_KEYADDR_PLACEHOLDER_EN宏设置为0,如下所示:
#define    UID_KEYADDR_PLACEHOLDER_EN   0    //Key Store Addr In Flash Enable/Disable Placeholder
再次编译通过,在main.c文件里加上密钥判断,代码如下:

再次编译无错误,加载编译好的程序到烧录器,如下所示:

保存项目,在线烧录到目标单片机,如下所示:

开发板运行跑马灯,说明密钥校验通过。

使用特权

评论回复
8
AlexChiu| | 2020-7-5 22:40 | 只看该作者
操作流程很详细,辛苦辛苦!哈哈!还关注到了 ICWKEY,授权密钥产品会在近期发布,更适合算法团队或者产线授权管理使用,敬请关注

使用特权

评论回复
9
AlexChiu| | 2020-7-5 22:42 | 只看该作者
chenci2013 发表于 2020-7-2 22:29
哪里申请的

这次PowerWriter的评测活动已经结束了,7月底会有评测结果公布,欢迎关注!www.icworkshop.com 谢谢!

使用特权

评论回复
10
ICCCCC|  楼主 | 2020-7-7 17:09 | 只看该作者
0x04:创芯工坊发布固件

这个应用是创芯工坊平台的一大核心功能,也是一大创新。简单来讲就是为开发者和使用者提供一个平台,开发者在平台上发布程序,使用者购买然后烧录程序。
这节我们来看批量离线模式,适用于大批量烧录。
打开创芯工坊官网www.icworkshop.com,登陆账号,进入用户中心,如下所示:

点击我是开发者,如下所示:

点击程序发布,如下所示:

为了方便测试,价格选择赠送,指定对象就是使用者账号。

型号根据自己项目单片机来选,pkg文件是使用pw软件打包好的文件,这里继续使用上节打包的文件。固件密钥是指pw打包时的密码,一定要正确,否则无法解析文件,编程模式选择离线。点击确认发布即可。

使用者需要下载创芯工坊客户端,如下所示:


安装后登陆账号,如下所示:

第一个既是我们刚才推送的程序,连接好PW200烧录器,点击下载固件,如下所示:

下载完成后,这时我们按下PW200上的烧录按键,可以看到正常烧录,此次写的烧录次数是10次,也就是说可以离线烧录10次程序。

使用特权

评论回复
评论
饭伤胃 2020-7-7 18:22 回复TA
赞,另外,并不是PW烧录器的程序才可使用创芯工坊发布程序,主流品牌都有可用的烧录器,如GD-LINK,ST-LINK,正点原子等烧录器都可以。 
11
神圣雅诗人| | 2020-7-11 17:26 | 只看该作者
怎么烧写hex

使用特权

评论回复
12
ICCCCC|  楼主 | 2020-7-11 17:49 | 只看该作者

MDK,IAR直接下载,或者PowerWriter在线下载,离线下载都可以

使用特权

评论回复
13
ICCCCC|  楼主 | 2020-7-17 15:39 | 只看该作者
本帖最后由 ICCCCC 于 2020-7-17 15:42 编辑

0x05:SN码滚动烧录

SN码一般用于对设备进行标签或者作为设备ID地址。PW200烧录器支持在任意地址写入SN码,至于写入哪个位置用户自己把控,需要注意的就是不要写到用户代码域里。

  • 序列号初值:设置序列号的初始值,默认为 0x00000000
  • 序列号增量:设置序列号的增量,默认为 0x00000001
  • 序列号地址:设置序列号在 Flash 中的地址,默认为当前芯片的最末尾地址 - 4 的位置,如图 128Kb 的 STM32F071xB 芯片的,地址在 0x0801FFFC。
  • 添加序列号功能:序列号功能的开关。
  • 序列号 10 进制显示:切换序列号显示为 10 进制,默认为 16 进制
  • 序列号大端模式:序列号使用大端模式写入,默认为小端模式
这里测试的芯片是STM32F429BIT6,FLASH容量为2MB,SN位置我们放在0x081FFFFC地址,占用4字节。序列号初值我们设置为0x00000001,为了方便验证SN写入成功与否,选项字节的读保护设置为无保护,如下所示:

点击执行里的全功能自动编程,操作如下所示:

现在我们来读取0x081FFFFC地址数据,操作如下所示:

成功读取到0x00000001,为什么是01 00 00 00?因为使用小端储存模式。

使用特权

评论回复
14
ICCCCC|  楼主 | 2020-7-21 16:29 | 只看该作者
本帖最后由 ICCCCC 于 2020-7-21 20:44 编辑

0x06:在线授权
step0:生成数字电子签名
打开创新工坊官网:https://www.icworkshop.com,登陆账号,进入我是开发者,如下所示:

进入授权中心,如下所示:

添加算法,如下操作:


step1:创建项目文件

至此服务器端的操作完成,下面就是数字签名的移植。

step2:数字签名移植
准备一个能正常使用的项目,本次测试使用stm32f429bit6芯片。打开PW200资料文件夹里的PowerWriter_SampleF071例子,复制sissdk文件夹以及MDK-RAM文件夹里的相关计算文件,如下所示:




复制到准备的项目里,新建的uid文件夹放上面标注的4个文件。

为了达到双绑定目的,我们创建个PowerWrite项目,导出UID离线计算源码(如果仅仅要在线授权,可以不需要离线计算矩阵,跳过此步),如下所示:


复制以上两个文件到MDK项目的uid文件夹下。打开项目,创建分组,添加文件路径,项目分组如下:


step3:修改程序
修改f429的启动文件,把堆加大到4k以上,这里直接给8k,如下所示:

修改cortex_chipid_binding.h文件,把UID_KEYADDR_PLACEHOLDER_EN宏定义设置为0,如下所示:

修改cortex_chipid_binding_ecdsa.h文件,UID_CHIP_ADDR_ECDSA宏定义的地址,指的是芯片UID的地址,F429的UID地址为0x1FFF7A10。修改LICENCE_ADDR服务器授权地址,改为跟上面建立的授权地址一致,写入0x08004000,如下所示:

修改powerwriter_config.c文件,把printf重定向注释掉,这个跟自己工程有关,我的工程已经实现了printf重定向,如下所示:

修改cortex_chipid_binding_ecdsa.c里的服务器公钥,使用FlexHEX软件打开下载的publickey.cert公钥文件,如下操作:

右键粘贴到cortex_chipid_binding_ecdsa.c的PUBLIC_KEY数组里,如下所示:

最后就是修改main.c文件,查看验证结果,如下所示:

至此文件移植完成,全编译。无错误,生成hex文件,加载到PowerWrite软件,保存项目,如下所示:


step4:创新工坊发布程序


确认发布即可。

step5:在线授权烧录
打开终端软件,如下所示:

服务器已经推送刚才创建的onlinetest项目,勾选,点击下载固件。



烧录完成,时间比较长,这效率有待提升。
打开串口,查看执行结果,如下所示:

System running in both licensed by matirx & ecdsa...双绑定成功,到此在线授权完成。
提议:数字签名比较繁杂,文件较多,这个适当裁剪下,然后最好制作成库。



使用特权

评论回复
15
AlexChiu| | 2020-7-21 20:37 | 只看该作者
帖子最大的亮点除了内容详尽,其次就是格式完整!各种标注和动图,让我这种小白都想跃跃欲试,有所成就

使用特权

评论回复
16
ICCCCC|  楼主 | 2020-7-21 20:49 | 只看该作者
AlexChiu 发表于 2020-7-21 20:37
帖子最大的亮点除了内容详尽,其次就是格式完整!各种标注和动图,让我这种小白都想跃跃欲试,有所成就 [em ...

程序员的强迫症所导致,我大标题字号是6号,小标题字号5号,正文字号是4号。图片如果操作步骤较多就是上gif图

使用特权

评论回复
评论
ICCCCC 2020-7-21 22:41 回复TA
@AlexChiu :我不知道我是什么星座,哈哈。特意查了下,只能说,卧槽,还真是处女座,我是9月。https://www.d1xz.net/astro/zhishi/art312490.aspx 
AlexChiu 2020-7-21 21:33 回复TA
不,1号字加黑:服! 
AlexChiu 2020-7-21 21:32 回复TA
如果您还是处女座,我就一个大大的"服"字! 
17
ICCCCC|  楼主 | 2020-7-22 13:48 | 只看该作者
0x07:模拟机械手测试
PW200支持接机械手控制进行烧录,触发方式有两种,一种是传统的机械手发出Start控制信号,一种是自动检测芯片(想到印度一句调侃话:印度人卖鱼称不杀生,鱼都是自己往刀上撞的,不信你来问问这鱼)。
PW200通讯接口,如下所示:



Start控制信号就是CTRL口,低电平有效。OK与NG信号都是高电平。

方式1:传统触发方式
这里仅仅是为了测试,并没有实际上机械手,连线如下所示:

连接好线,把程序同步到烧录器,并让PW200处于离线状态,按下KEY1即可触发烧录,如果成功则点亮LED2,否则点亮LED1表示NG。

方式2:自动检测方式
连接方式一样,CTRL可以不接,程序同步时需要使能自动芯片检测选项,如下所示:

程序同步到烧录器,并让PW200处于离线状态,把SWD通讯线及电源同时连接目标芯片,这个时候PW200自动触发烧录,如果成功则点亮LED2,否则点亮LED1表示NG。
问题点:如果SWD通讯线的CLK或者DIO线接触不良,这时按下烧录键并没有启动烧录,也就是无法报错,这点个人认为是个缺陷,希望官方考量考量改进。

使用特权

评论回复
评论
饭伤胃 2020-7-22 16:12 回复TA
例行点赞。 
18
ICCCCC|  楼主 | 2020-8-4 11:06 | 只看该作者
本帖最后由 ICCCCC 于 2020-8-4 11:32 编辑

0x08:RT-Thread Studio测试
RT-Thread Studio开发环境是上海睿赛德电子科技有限公司研发,以下是RT-Thread Studio的介绍:
RT-Thread Studio 主要包括工程创建和管理,代码编辑,SDK管理,RT-Thread配置,构建配置,调试配置,程序下载和调试等功能,结合图形化配置系统以及软件包和组件资源,减少重复工作,提高开发效率。
  • 社区版本永久免费
  • 支持主流C/C++语言开发
  • 强大的代码编辑和重构功能
  • SDK管理器支持在线下载更新 RT-Thread 最新源码包
  • 简单易用的工程创建向导,快速验证原型
  • 全新图形化配置系统,同时支持架构图和树形图配置
  • 软件包市场提供丰富的可用软件包资源
  • 丰富的调试功能,快速查看和跟踪定位代码问题

step0:建立工程

一个工程即刻建立完成,打开main.c内容如下:

如果程序正常运行则不断的通过串口1打印”Hello RT-Thread!“内容。
step1:编译工程

RT-Thread Studio使用GCC编译器,编译速度一般,好处就是免费,结果如下:

step2:下载程序
连接PW200,连接目标板串口线,打开RT-Thread Studio内置的终端,

一切就绪,点击下载,如下所示:

开始下载程序:2020-08-04 11:22:35
D:\RT-ThreadStudio>D:/RT-ThreadStudio//repo/Extract/Debugger_Support_Packages/RealThread/PyOCD/0.1.0/pyocd.bat flash --target=STM32F429BI D:\RT-ThreadStudio\workspace\f429bit6onrtos\Debug\rtthread.bin
[---|---|---|---|---|---|---|---|---|----]
[========================================]
0002882:INFO:loader:Erased 0 bytes (0 sectors), programmed 0 bytes (0 pages), skipped 49152 bytes (48 pages) at 40.06 kB/s
执行完毕, 耗时:9568ms.


下载速度达40.06 kB/s,在DAP-LINK里属于高速版。
终端输出以下内容:
System Clock information
SYSCLK_Frequency = 180000000
HCLK_Frequency   = 180000000
PCLK1_Frequency  = 45000000
PCLK2_Frequency  = 90000000
Hello RT-Thread!
Hello RT-Thread!
Hello RT-Thread!
Hello RT-Thread!
Hello RT-Thread!
Hello RT-Thread!

说明程序下载后自动复位运行正常。
step3:在线仿真
点击小瓢虫,专业名词应该是七星瓢虫,进入仿真状态


进入仿真状态时处于就绪状态,点击全速运行,

终端一样打印内容,双击左侧的浅蓝色位置可以动态设置断点,PC执行至此停止,如下所示:

再次全速又可以再次运行自此断点,仿真正常,测试完成。

使用特权

评论回复
19
饭伤胃| | 2020-8-4 11:43 | 只看该作者
教科书版评测

使用特权

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

本版积分规则

24

主题

178

帖子

9

粉丝