OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7042|回复: 15

解决wsl中无法挂载块设备,无法烧录bin文件的问题

[复制链接]

3

主题

42

帖子

0

精华

高级会员

Rank: 4

积分
569
金钱
569
注册时间
2019-10-18
在线时间
43 小时
发表于 2019-12-2 11:11:52 | 显示全部楼层 |阅读模式
问题:
继上一篇帖子http://www.openedv.com/forum.php?mod=viewthread&tid=301257搭建开发环境搭建之后,过了好久收到了开发板,迫不及待的验证是否可以使用wsl替换虚拟机;编程似乎是没有问题,可以正常进行编译,并生成对应的文件。但是在烧录时却出现了严重的问题,wsl中并不能以块设备的格式识别sd卡,imxdownload工具无法使用,退而求其次,我在我的树莓派上重新编译了imxdownload并用树莓派完成了二进制文件的烧写,终究,这不是最好的解决办法,所以一直把这个事放在心上。
解决:
昨天突然想起来这个问题,遂仔细看了一遍imxdownload的c代码,理了一下思路,最后发现其实是调用了Linux操作系统中的dd命令进行的块复制;那么解决思路也就有了。
解决思路:
1. windows下肯定也有类似的工具。
2. 可以使用python进行二进制文件的编辑工作
解决:
通过百度,得到了许多烧录工具,大多数都是制作系统U盘启动盘用的,多数操作比较繁琐,而且都有图形界面,显然,我想要的是命令行,最终发现了dd for windows这个程序(其实这个搜索过程也就几分钟),使用方法和Linux的dd命令极为相似,重要的几个选项名称都相同,遂测试了一下,可以将二进制文件烧录到U盘中。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2019-12-2 17:41:27 | 显示全部楼层
回复 支持 反对

使用道具 举报

3

主题

42

帖子

0

精华

高级会员

Rank: 4

积分
569
金钱
569
注册时间
2019-10-18
在线时间
43 小时
 楼主| 发表于 2019-12-2 18:05:19 | 显示全部楼层

左老大,我还没写完,点击暂存就直接发布了;在这里再写两句吧
1. wsl中可以直接执行dd.exe,没错,可以直接执行Windows的可执行文件
2. 更改dd命令为dd.exe,重新编译imxdownload.c,测试并不能运行,换成bash dd.exe提示不能执行二进制文件,猜测wsl中使用的shell并不是一般的shell,估计是bash和powershell的结合体。
3. 目前的解决办法是imxdownload只用来生成load.imx文件,再执行一次dd.exe进行烧写sd卡
还有一个问题:
bin文件好像一直没烧录进去,灯瞎亮,不正常
回复 支持 反对

使用道具 举报

27

主题

427

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
4356
金钱
4356
注册时间
2017-5-30
在线时间
578 小时
发表于 2019-12-5 16:25:31 | 显示全部楼层
vvaa00 发表于 2019-12-2 18:05
左老大,我还没写完,点击暂存就直接发布了;在这里再写两句吧
1. wsl中可以直接执行dd.exe,没错,可以 ...

我也用的WSL啊,学习卡在这一步了,期待大佬的研究成果
回复 支持 反对

使用道具 举报

27

主题

427

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
4356
金钱
4356
注册时间
2017-5-30
在线时间
578 小时
发表于 2019-12-5 22:41:10 | 显示全部楼层
vvaa00 发表于 2019-12-2 18:05
左老大,我还没写完,点击暂存就直接发布了;在这里再写两句吧
1. wsl中可以直接执行dd.exe,没错,可以 ...

我现在WSL下可以识别到SD卡,也能正确访问,但是 dev下看不到SD卡,所以还不知道怎么烧录程序
回复 支持 反对

使用道具 举报

3

主题

42

帖子

0

精华

高级会员

Rank: 4

积分
569
金钱
569
注册时间
2019-10-18
在线时间
43 小时
 楼主| 发表于 2019-12-7 20:03:48 | 显示全部楼层
whj467467274672 发表于 2019-12-5 22:41
我现在WSL下可以识别到SD卡,也能正确访问,但是 dev下看不到SD卡,所以还不知道怎么烧录程序

访问肯定是正常访问,因为走的是Windows系统,dev下看不到也是这个原因,wsl和Windows深度整合,我猜测wsl压根就不支持块设备了,所有块设备都走的的Windows,即使你执行mount了,dev里也没有
回复 支持 反对

使用道具 举报

27

主题

427

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
4356
金钱
4356
注册时间
2017-5-30
在线时间
578 小时
发表于 2019-12-8 10:36:32 | 显示全部楼层
vvaa00 发表于 2019-12-7 20:03
访问肯定是正常访问,因为走的是Windows系统,dev下看不到也是这个原因,wsl和Windows深度整合,我猜测ws ...

为了能烧录程序,我还是装了虚拟机
回复 支持 反对

使用道具 举报

3

主题

42

帖子

0

精华

高级会员

Rank: 4

积分
569
金钱
569
注册时间
2019-10-18
在线时间
43 小时
 楼主| 发表于 2019-12-9 22:42:09 | 显示全部楼层
填坑:
目前已经能够正常使用dd.exe进行二进制文件烧写进sd卡,或者说早就行了,只是上次烧写出现了错误,以为不行,实际这个错误不需要管
步骤如下:
1. 测试用例ledc项目
2. 使用vscode链接本地wsl进行代码编写,当然前提是已经搭建好开发环境
3. 修改imxdownload.c文件,将 构建烧写的shell命令 这一部分全部注释掉,因为不用Linux自带的dd命令了,imxdownload改完后就只剩下一个生成load.imx文件的功能,但是在调用时,依然需要指定块设备,这个地方指定/dev/null就完了,反正也用不到 Snipaste_2019-12-09_22-30-46.png
4. 使用gcc命令编译imxdownload.c文件生成imxdownload可执行文件,并复制到与ledc.bin(话说这个文件应该在下一步中才生成)在同一个目录
5. 在ledc项目文件夹中执行make命令对项目进行编译
6. 执行imxdownload命令进行二进制文件的修改与保存,当然也就没有烧录这回事了,此时会生成一个load.imx文件,即为需要烧录到sd卡中的二进制文件
7. 在wsl的shell环境中执行dd.exe --list(是的,没有看错,直接在Linux的shell中执行Windows的二进制文件,前提是已经下载了dd fow windows并将dd.exe所在目录添加到Windows的环境变量,该环境变量会被wsl识别并读取)列出所有设备,一般sd卡会被识别成removable media设备
Snipaste_2019-12-09_22-37-34.png
8. 执行dd.exe if=load.imx of=\\\\?\\Device\\HarddiskVolume11  命令,需要注意,dd.exe --list中列出的这个路径是windows的格式,所以每个\都需要进行转义,所以每个斜杠前都加一个\,就变成了这个样子
9. 执行后可能会出现一个错误,但是不用管
10. 综上,至少针对led这个示例来说,是可以使用wsl来进行开发并烧录的,只是,可能操作没那么的方便,但是开发起来却比虚拟机要方便多了,至少不会特别卡
回复 支持 反对

使用道具 举报

2

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2017-5-15
在线时间
12 小时
发表于 2020-4-21 21:08:08 | 显示全部楼层
你好,请教一下,我使用你提供的这种方法,然后是下面这样子的
D:\ubuntu>dd.exe if=load.imx of=\\.\e:
rawwrite dd for windows version 0.6beta3.
Written by John Newbigin <jn@it.swin.edu.au>
This program is covered by terms of the GPL Version 2.

Error reading file: 87 参数错误。
736+1 records in
736+1 records out
然后sd卡也没有烧录成功,请教一下你,谢谢
回复 支持 反对

使用道具 举报

2

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2017-5-15
在线时间
12 小时
发表于 2020-4-21 21:32:01 | 显示全部楼层
vvaa00 发表于 2019-12-9 22:42
填坑:
目前已经能够正常使用dd.exe进行二进制文件烧写进sd卡,或者说早就行了,只是上次烧写出现了错误, ...

你好,请教一下你,我使用你提供的这种方法进行烧录,然后就是下面这样
D:\ubuntu>dd.exe if=load.imx of=\\.\e:
rawwrite dd for windows version 0.6beta3.
Written by John Newbigin <jn@it.swin.edu.au>
This program is covered by terms of the GPL Version 2.

Error reading file: 87 参数错误。
736+1 records in
736+1 records out

而且sd卡并没有被烧写,请教一下,是不因为我的命令格式有问题
回复 支持 反对

使用道具 举报

3

主题

42

帖子

0

精华

高级会员

Rank: 4

积分
569
金钱
569
注册时间
2019-10-18
在线时间
43 小时
 楼主| 发表于 2020-4-23 12:27:17 | 显示全部楼层
』杯中茶ク 发表于 2020-4-21 21:32
你好,请教一下你,我使用你提供的这种方法进行烧录,然后就是下面这样
D:%ubuntu>dd.exe if=load.imx o ...

好久了,我也忘了,当时就试了一下,成了就没再管
我看你这个命令和我的有两个区别
1. 我是在wsl中执行的,我看你是在windows里执行的
2. 我执行的时候使用的linkto那个位置,你是用的mounted那个位置
不知道有区别没有,你再试试
回复 支持 反对

使用道具 举报

2

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2017-5-15
在线时间
12 小时
发表于 2020-4-23 21:27:55 | 显示全部楼层
vvaa00 发表于 2020-4-23 12:27
好久了,我也忘了,当时就试了一下,成了就没再管
我看你这个命令和我的有两个区别
1. 我是在wsl中执行 ...

谢谢你的回复,我现在在wsl中执行dd命令,然后使用了linkto地址,然后就是以下现象,同样无法烧录
root@DESKTOP-UD0VN92:/mnt/d/ubuntu/uboot# dd.exe if=load.imx of=\\\\?\\Device\\HarddiskVolume20
rawwrite dd for windows version 0.6beta3.
Written by John Newbigin <jn@it.swin.edu.au>
This program is covered by terms of the GPL Version 2.

Error native opening file: 0 操作成功完成。
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2015-12-27
在线时间
11 小时
发表于 2020-5-21 14:34:20 | 显示全部楼层
』杯中茶ク 发表于 2020-4-23 21:27
谢谢你的回复,我现在在wsl中执行dd命令,然后使用了linkto地址,然后就是以下现象,同样无法烧录
root@ ...

我也是一样的现象,你解决了吗
回复 支持 反对

使用道具 举报

2

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2018-2-9
在线时间
16 小时
发表于 2020-6-14 17:30:30 | 显示全部楼层
不可一世ywd 发表于 2020-5-21 14:34
我也是一样的现象,你解决了吗

用大佬这个工具可以在win10直接烧录http://www.openedv.com/forum.php?mod=viewthread&tid=311226
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2015-12-27
在线时间
11 小时
发表于 2020-6-15 12:52:35 | 显示全部楼层
Yuri 发表于 2020-6-14 17:30
用大佬这个工具可以在win10直接烧录http://www.openedv.com/forum.php?mod=viewthread&tid=311226

谢了兄弟,已解决,终于能摆脱虚拟机了
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2019-4-7
在线时间
4 小时
发表于 2020-10-11 16:51:23 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 18:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表