CH32V2xx / CH32V3xx 的 UF2 bootloader
<p>WCH RISC-V微控制器的UF2引导加载程序。这允许通过将文件拖动到虚拟USB大容量存储设备更新程序,不需要特殊的软件。<br /><br />
<strong>使用说明</strong></p>
<ul>
<li>在0.5秒内通过双击复位按钮触发</li>
<li>需要使用 R16BKP_DATAR10
<ul>
<li>写入0x4170('Ap')以立即无延迟地引导到应用程序中</li>
<li>写入0x624c('bL')以无条件进入引导加载程序</li>
</ul>
</li>
<li>适合《4096字节</li>
<li>使用MounRiver GCC V1.91进行测试和构建
<ul>
<li>通过使用不在上游的“XW”指令来提高代码大小</li>
</ul>
</li>
<li>仅支持USBD外围设备(即不支持USBFS)
<ul>
<li>USBD和USBFS完全不同,QFN28封装(在LCSC上数量最多)只结合了USBD</li>
<li>注意,如果使用官方devkit的USBD需要USB a-a电缆</li>
</ul>
</li>
<li>内部8 MHz振荡器(尽管存在稳定性问题)
<ul>
<li>HSI振荡器的容差(-1.0%至+1.6%)远远超出USB全速($\pm$0.25%)的指定范围,但在实践中似乎有效</li>
<li>ISP ROM引导加载程序也会执行此操作</li>
</ul>
</li>
<li>应适用于大多数CH32V2xx和CH32V3xx系列,并对硬编码常数进行适当更改。</li>
<li>允许下载到带有“非主闪存”标志的闪存和SRAM(这就是RP2040 bootrom的工作原理)
<ul>
<li>Flash下载地址必须为08xxxxxx(即不从0开始)</li>
<li>SRAM下载地址必须为20xxxxxx</li>
<li>可以使用SRAM的整个尺寸,因为USBD包含独立于主SRAM的缓冲存储器</li>
</ul>
</li>
<li>下载完成后自动重新启动,但只有在下载程序足够小的情况下才有效。较大的下载程序仍然会更新,但不会触发自动重新启动,需要手动重新启动。</li>
</ul>
<p><a class="postlink" href="https://github.com/ArcaneNibble/wch-uf2">https://github.com/ArcaneNibble/wch-uf2</a></p>
<p>UF2 是个啥?</p>
freebsder 发表于 2024-5-17 17:25
UF2 是个啥?
<p>微软出的bootloader格式,使用磁盘方式更新程序。</p>
<p>这用起来非常爽呀,解决文件的大难题了。</p>
dcexpert 发表于 2024-5-17 20:00
微软出的bootloader格式,使用磁盘方式更新程序。
<p>磁盘方式?是和 mbr差不多一种东西?</p>
<p>我的GD32F303我也用了uf2方式更新固件,比较方便,可以不用FATFS即可解决U盘更新问题。</p>
<div class='shownolgin' data-isdigest='no'>fxyc87 发表于 2024-5-28 12:27
我的GD32F303我也用了uf2方式更新固件,比较方便,可以不用FATFS即可解决U盘更新问题。
<p><img height="48" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/wanwan88.gif" width="59" /></p>
</div><script>showreplylogin();</script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>
页:
[1]