查看: 9326|回复: 7

真相:中国版BBB用USB连电脑没有盘符的根本原因分析

[复制链接]
  • TA的每日心情
    开心
    2013-8-7 09:31
  • 签到天数: 5 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2013-7-19 13:00:42 | 显示全部楼层 |阅读模式
    分享到:
        很多网友在问:为什么中国版的装完驱动插上板子没有显示端口号和69M的盘符??楼主发现,在开机启动的时候,加载g_multi模块时出现错误提示 invalid argument
            Embest的员工表示:装的是BBB-eMMC-flasher-2013.04.13-DDR3 -400MHz.img.xz  版本确认有此盘符!而我们去官网上下载这个版本发现真的跟我们板子上的是一样的。甚至装上最新的版本也还是同样的问题。此事必有蹊跷!!!
            有大牛提出了解决办法:输入命令
            x=/usr/bin/g-ether-load.sh;sed -e 's/SERIAL_NUMBER=/x=/g' $x> x;rm $x;mv x $x;chmod a+x $x;sync;
            完成后重启即可,驱动自动加载;如果需要手工安装驱动,运行命令modprobe g_multi file=/dev/mmcblk0p1 cdrom=0 stall=0removable=1 nofua=1 系统自动安装USB驱动,这时就能在电脑上看到69.4MB的盘符。问题跟EEPROM里的ID号有关。
    但是大牛并没有解释为什么这么做。他只告诉我们跟EEPROM里的ID号有关。先百度了一下sed这个命令的意思,sed -e 's/SERIAL_NUMBER=/x=/g',就是把文件中所有”SERIAL_NUMBER=”的字符串替换成了“x=”。
            先把/usr/bin/g-ether-load.sh这个文件找出来。找到跟SERIAL_NUMBER有关的命令。
    SERIAL_NUMBER=$(hexdump -e '8/1 "%c"'/sys/bus/i2c/devices/0-0050/eeprom -s 14 -n 2)-$(hexdump -e '8/1"%c"' /sys/bus/i2c/devices/0-0050/eeprom -s 16 -n 12)
    modprobe g_multi file=/dev/mmcblk0p1 cdrom=0 stall=0removable=1 nofua=1 iSerialNumber=${SERIAL_NUMBER} iManufacturer=Circuitco  iProduct=BeagleBone${BLACK} host_addr=${DEV_ADDR}
            这样按照大牛的改法,意思就是传给内核的iSerialNumber参数变为空了。很明显EEPROM里的SERIAL_NUMBER是有问题的,既然文件系统肯定是没错的,那么肯定是Embest的EEPROM出厂数据写错了。可以把上面的命令分步执行一下:
            先echo $(hexdump -e '8/1 "%c"'/sys/bus/i2c/devices/0-0050/eeprom -s 14 -n 2)
            运行结果为:ue                    这一句没有问题
            再执行下面半句的时候
           echo $(hexdump -e '8/1 "%c"'/sys/bus/i2c/devices/0-0050/eeprom -s 16 -n 12)
            运行结果是这么个鬼样子:��D503785
            显然是出现了非法的字符。
            echo $(hexdump -e '8/1 "%c"'/sys/bus/i2c/devices/0-0050/eeprom -s 16 -n 12) > sn1
            把它存到文件里面,发现这个文件都不能用gedit打开,只能用vi打开,

            说明embest在EEPROM里面写序列号的时候后面忘了填几个零,直接又在后面开始写正常编码以外的数据。所以读的时候出现了致命的错误,整个参数都是不对的。
            另外提一句,大牛的方法虽然能解决问题,但楼主发现可操作性很差,而且没有把原来的文件做备份就rm掉了,要打那么多个字符,一个字符出错了可能把这个文件搞没掉。楼主就是在输完这个命令的时候,发现我的/usr/bin/g-ether-load.sh这个文件变成空白的了,所以建议像楼主一样菜的菜鸟们可以用我的办法:
            先把/usr/bin/g-ether-load.sh备份为/usr/bin/g-ether-load.bak.sh,用任意一个编辑器(gedit,或者vi)打开/usr/bin/g-ether-load.sh脚本文件,把下面这一段中的iSerialNumber=的参数填为空或者你板子上标签的序列号。
            modprobe g_multi file=/dev/mmcblk0p1 cdrom=0 stall=0removable=1 nofua=1 iSerialNumber=${SERIAL_NUMBER} iManufacturer=Circuitco  iProduct=BeagleBone${BLACK} host_addr=${DEV_ADDR}
            比如我的改成这个样子:
            modprobeg_multi file=/dev/mmcblk0p1 cdrom=0 stall=0 removable=1 nofua=1iSerialNumber=ue-EMD503785 iManufacturer=Circuitco  iProduct=BeagleBone${BLACK}host_addr=${DEV_ADDR}
           下次开机的时候电脑就会自动识别BBB的盘符和USB网卡啦啦啦啦。
            另外这次想手动启动相关模块的话可以直接运行/usr/bin/g-ether-load.sh脚本,事实上开机的时候系统也是通过这个脚本启动USB从设备驱动的。

    评分

    参与人数 1声望 +3 与非币 +10 收起 理由
    幸得安然 + 3 + 10 很给力!

    查看全部评分

    回复

    使用道具 举报

  • TA的每日心情
    开心
    2013-8-7 09:31
  • 签到天数: 5 天

    连续签到: 1 天

    [LV.2]偶尔看看I

     楼主| 发表于 2013-7-19 13:08:29 | 显示全部楼层
    本帖最后由 dolphi 于 2013-7-19 13:10 编辑



    就是这个EEPROM里面的数据没写对
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2013-8-7 09:31
  • 签到天数: 5 天

    连续签到: 1 天

    [LV.2]偶尔看看I

     楼主| 发表于 2013-7-19 13:14:50 | 显示全部楼层
    本帖最后由 dolphi 于 2013-9-12 14:29 编辑

    sn.png

    终极解决办法:
    把eeprom里面的数据读到文件中来:
    cp /sys/bus/i2c/devices/0-0050/eeprom      /eeprom.dump
    打开这个文件:
    cd /
    vim –b eeprom.dump
    以16进制方式编辑:
    :%!xxd
    将第三行到最后一行全部删掉(删除2199行)
    将第二行0d后面的两个个ff改成00,如图所示:
    返回普通编辑模式:
    :%!xxd  –r
    然后保存退出
    :wq
    最后将数据写入eeprom,写之前要用镊子将板子上的TP4和TP8短接,解除硬件写保护。  
    ddif=/eeprom.dump of=/sys/devices/ocp.2/44e0b000.i2c/i2c-0/0-0050/eeprom
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2018-11-15 17:06
  • 签到天数: 30 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2013-7-19 13:18:13 | 显示全部楼层
    {:soso_e179:}厉害!高手在民间啊
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2013-7-31 00:17:21 | 显示全部楼层
    高手+大牛 厉害
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2019-1-9 11:07
  • 签到天数: 77 天

    连续签到: 1 天

    [LV.6]常住居民II

    发表于 2013-8-14 10:40:07 | 显示全部楼层
    高手啊   高手在民间哦
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2014-5-18 22:32
  • 签到天数: 257 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2013-9-27 18:52:13 | 显示全部楼层
    为什么我用SD卡把这个最新的的BBB-eMMC-flasher-2013.09.15.img.xz镜像更新到BBB中插上电脑还是没有盘符呢?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2014-8-1 20:25
  • 签到天数: 46 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2013-11-20 22:00:27 | 显示全部楼层
    原来如此,感谢楼上的解惑。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /5 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-12-21 13:59 , Processed in 0.187737 second(s), 30 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.