您尚未登录。

楼主 #1 2020-11-08 22:28:35

微凉VeiLiang
会员
所在地: 深圳
注册时间: 2018-10-28
已发帖子: 595
积分: 525
个人网站

看到有兄弟用win32diskimager不小心把磁盘给格式化掉了,分享一个C#写的磁盘烧录工具,源码

这个工具是之前做v3s的时候,因为用到nand。然后参考晕哥的帖子
V3s/S3/f1c100s通过USB启动Linux,并把SD NAND/TF卡挂载为U盘, 可以dd或Win32DiskImager任烧写
通过调用脚本烧录然后跑linux,启动完成后把nand挂载u盘,然后用Win32DiskImager烧录。
发现Win32DiskImager会把本地的硬盘也显示出来,这个时候如果不小心选错的话,后果非常严重。心想着就自己做个工具,保险一点。顺便把脚本启动也一并做进去了,通过C#调用

做好的工具如下图
1.烧写的盘符为所需要烧写的盘符地址,默认会选择小于10GB的U盘或者硬盘,而且盘符包括Linux字样,具体可以看源码实现
2.第一阶段boot,指的是spl的boot。可以自己做nand boot驱动,利用xoot 精简
3.选择需要跳的page大小,如果用W25N01GV选择跳2K。意思是页大小,为什么说是跳呢,全志的brom里面默认一个页就只读1024byte,如果一个nand的页是2K,也是只读前面的1K。所以烧录时候要对应把SPL数据拆开1K,1K地放入nand的页中。
4.第二阶段的boot。第二阶段boot一般是自己拿来做bootloader,烧录完BootLoader后面app的升级就不需要这个工具了,自己做对应BootLoader的升级工具例如usb,或者网络tftp。很方便。当然,这个第二阶段boot也可以直接把APP烧录进去。
5.把设备进入sunxi-fel模式,点击烧录按钮,这个时候,软件会调用晕哥帖子给出的烧录脚本进行linux烧录并启动,烧录成功软件后会倒计时等待linux启动并挂载u盘。等待倒计时结束后就开始操作底层磁盘,把第一阶段boot和第二阶段的boot烧录到对应位置,默认这个软件第二阶段boot烧录位置是磁盘的0x10000位置 。具体可以看程序源码。

软件截图
QQ%E6%88%AA%E5%9B%BE20201108214323.png

直接上附件
编译好的软件
SPL_SPINand_烧录软件.rar
windows下sunxi-fel的驱动安装,zadig
zadig-2_3.rar

下面是源代码
SPL_Proc_For_SPINand.rar

注:
因为是底层磁盘操作,所以运行时候需要获取管理员权限
如果电脑插着有小于10GB的U盘或者硬盘,而且盘符包括Linux字样的不能 用本软件!
使用时候千万要小心看软件提示,不然烧录bin到硬盘的0扇区后果很严重!!!
用W25N01GV,选择跳2K

最近编辑记录 微凉VeiLiang (2020-11-08 22:30:52)

离线

楼主 #7 2021-01-21 00:21:59

微凉VeiLiang
会员
所在地: 深圳
注册时间: 2018-10-28
已发帖子: 595
积分: 525
个人网站

Re: 看到有兄弟用win32diskimager不小心把磁盘给格式化掉了,分享一个C#写的磁盘烧录工具,源码

迪卡 说:

我可以集成到DKTool吗

嘿嘿,完全可以

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn