[RISC-V MCU 应用开发]

使用RISC-V(CH32V307)芯片制作ARM芯片的仿真下载器

[复制链接]
291|4
手机看帖
扫描二维码
随时随地手机跟帖
zhifeng|  楼主 | 2022-9-20 08:45 | 显示全部楼层 |阅读模式

目前市面上常见的DAP仿真器一般都有基于CMSIS-DAP做的,ARM Mbed社区已经停止对CMSIS-DAP的支持了,目前官方社区一直在力推DAPLink的方案,DAPLink相当于CMSIS-DAP的升级版,支持更多的功能。

DAPLink的WEBUSB和拖拽烧录确实很有用,尤其是在板载仿真器、或者儿童教育开发板如Micro-Bit之类的场景,用户侧可以不需要安装任何IDE和驱动即可完成编程,但是灵活性较差,只能烧写指定的一些芯片。

目前,ARM支持两种标准协议的的 DAP,一种是 使用HID通信协议的V1版,优点是不用安装驱动,支持的 开发环境的 较为完善,缺点是速度慢。另外一种是使用BULK winusb通信协议的V2版,尤其是是速度快,缺点是对于老版本的操作系统需要安装驱动,对开发环境支持没有V1好。

有没有即能兼顾V1优点不用安装驱动速度又快的解决方案?当然是有,那就使用带高速usb的主控芯片,依然使用HID协议。

但是,一般带高速usb的芯片价格都比较贵,当前,市面高速的dap V1版使用的主控芯片 有stm32f405 + 3300;Atmel SAM3U2C,USB High Speed,内置USB高速phy,主频为96Mhz;Nxp lpc432x,芯唐m480 m505几种。无一例外是价格高采购不易。另外,这类芯片都是arm内核的芯片,移植官方的 daplink 相对容易。

对于能满足性能且价廉物美arm类的芯片很难找到,我们不妨将视野放开阔些,南京沁恒推出的 RISC-V Ch32v307让我们眼前一亮。

CH32V305/7系列是基于32位RISC-V设计的互联型微控制器,配备了硬件堆栈区、快速中断入口,在标准RISC-V基础上大大提高了中断响应速度。加入单精度浮点指令集,扩充堆栈区,具有更高的运算性能。扩展串口UART数量到8组,电机定时器到4组。提供USB2.0高速接口(480Mbps)并内置了PHY收发器,以太网MAC升级到千兆并集成了10M-PHY模块。

特点
· 青稞V4F处理器,最高144MHz系统主频
· 支持单周期乘法和硬件除法,支持硬件浮点运算(FPU)
· 64KB SRAM,256KB Flash
· 供电电压:2.5/3.3V,GPIO单元独立供电
· 多种低功耗模式:睡眠、停止、待机
· 上/下电复位、可编程电压检测器
· 2组18路通用DMA
· 4组运放比较器
· 1个随机数发生器TRNG
· 2组12位DAC转换
· 2单元16通道12位ADC转换,16路触摸按键TouchKey
· 10组定时器
· USB2.0全速OTG接口
· USB2.0高速主机/设备接口(480Mbps 内置PHY)
· 3个USART接口和5个UART接口
· 2个CAN接口(2.0B主动)
· SDIO接口、FSMC接口、DVP数字图像接口
· 2组IIC接口、3组SPI接口、2组IIS接口
· 千兆以太网控制器ETH(内置10M PHY)
· 80个I/O口,可以映射到16外部中断
· CRC计算单元,96位芯片唯一ID
· 串行2线调试接口
· 封装形式:LQFP64M、LQFP100

价格便宜,采购容易,淘宝可以直接购买。我们选择LQFP64M封装的ch32v307RC就能满足需求。余下就是如何移植 dap 到ch32v307问题了

首先,选择编译开发环境 官方 有个基于开源Eclipse基础上开发的MounRiver Studio。这个平台运行较慢,配置复杂主要是我使用不习惯。我们就采用自己开发的Risc5ide,开发平台有了,余下是烧录工具,采用官方的WCHISPTOOL。

v1.jpg

v2.jpg

再往下就是移植官方的daplink 到ch32v307 ,官方的daplink 由于受设计理念的限制,对于支持的芯片不够灵活,每变换一种芯片需要重新编译再写入主控芯片中这些对于,生手无疑是非常困难的,就是将官方的的源码成功编译都不是初学者容易搞定的,何况还需有自己编译对应的算法进主控。还有个问题就是 虚拟的 cdc 也是会出现很多问题,尤其是win10以前的版本系统,就是安装成功cdc驱动都不是容易的事情,再加上本身模拟的串口比专业芯片的串口性能差距非常大,芯片的串口价格也非常便宜,这个功能实在是个**肋。我将这些不实用的功能全部剔除,将原先的msc设备用于存储使用说明及上位机支持软件的下载地址链接。上位机ProgISP 是可以支持添加自定义算法的这样用户自己就可以轻松地添加没有的芯片,具体方法前面的文章有介绍,这里不再累述。

增加电源切换,开关功能,这个功能很有用,比如烧写stm32芯片的功能 选项字。选项字生效需要重新上电(st有相关手册,可以自行查阅)这时,只需要让上位机发送指令就可以了。增加显示屏,增加存储器,这样就实现了脱机下载功能。

至此,一个速度非常快功能强大的下载仿真器就出现了。

v6.jpg

经过实际测试,速度大于stlink v2及市面上使用 stm32 sam等主控芯片的高速 dapV1。stm32f405 主频 168M; SAM3U2C 96M lpc432x价格非常高,市面没有流通的版本。M480 主频192M。能取得这种速度也得益于ch32v307的 优秀的USB内核及144M主频 ,再加上ARM类芯片IO反转读入-修改-写入,而ch32v307只需要写入就行了。模拟SWD协议的速度非常依赖IO反转速度。

v3.jpg
v4.jpg






使用特权

评论回复

相关帖子

zhifeng|  楼主 | 2022-9-20 08:59 | 显示全部楼层
使用高速的 usb hid  协议发现,keil mdk 支持 64字节,全速  与  1024 字节高速通讯。如果,usb hid 高速设置更合理的  512字节通信,mdk在仿真的时候也只是使用 前面64字节有效,这样速度不能达到最优,使用1024字节通讯其实原理是依然不能达到最优,这个受arm的 dap协议限制。

另外,ch32v307  不知如何跳转到 芯片自带的bootload ,这个我在官方论坛问过,说是不支持。我个人觉得从原理上讲应该是不可能的。无非是跳转到 bootload 地址执行就行了。不知道广大网友有没找到对应的方法?

使用特权

评论回复
imdx| | 2022-9-20 14:26 | 显示全部楼层
CH32V203C8T6也是神片,估计很快就会流行起来

使用特权

评论回复
jinhui10507| | 2022-9-23 19:27 | 显示全部楼层
以前用ATMEL 8位机时,一直用智峰科技,真的好用。现在全改沁恒的了,不知道有没有相关的下载器

使用特权

评论回复
zhifeng|  楼主 | 2022-9-25 10:50 | 显示全部楼层
jinhui10507 发表于 2022-9-23 19:27
以前用ATMEL 8位机时,一直用智峰科技,真的好用。现在全改沁恒的了,不知道有没有相关的下载器 ...

只有arm的,risc-v 他们协议没有开放。

使用特权

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

本版积分规则