您尚未登录。

楼主 #1 2017-11-14 20:05:45

basicdev
会员
注册时间: 2017-10-02
已发帖子: 159
积分: 159

为什么我的V3s 换 32M flash之后 shell执行 reboot 不重启呢?

为什么我的V3s 换 32M flash之后 shell执行 reboot 不重启呢?

离线

#2 2017-11-15 10:06:34

daydayup
会员
注册时间: 2017-10-09
已发帖子: 343
积分: 343

Re: 为什么我的V3s 换 32M flash之后 shell执行 reboot 不重启呢?

/usr/bin #
/usr/bin # reboot
/usr/bin # umount: devtmpfs busy - remounted read-only
umount: can't remount /dev/root read-only
can't run '/sbin/swapoff': No such file or directory
The system is going down NOW!
Sent SIGTERM to all processes
Requesting system rebootesses
[  837.214434] reboot: Restarting system

是不是这样,然后就没有然后了。。。

离线

#3 2017-11-15 13:53:04

沉鱼
管理员
注册时间: 2017-09-06
已发帖子: 161
积分: 161

Re: 为什么我的V3s 换 32M flash之后 shell执行 reboot 不重启呢?

荔枝派Q群群主说16M 的spi flash reboot正常,32M reboot不起来,
我验证过了,确实如此,
哪位大侠知道如何改吗?

离线

#4 2017-11-15 14:45:04

沉鱼
管理员
注册时间: 2017-09-06
已发帖子: 161
积分: 161

Re: 为什么我的V3s 换 32M flash之后 shell执行 reboot 不重启呢?

修改:  drivers/mtd/devices/m25p80.c
粗体部分是添加的内容:

static int m25p_remove(struct spi_device *spi) 

    struct m25p *flash = spi_get_drvdata(spi); 

    // manfeel note: add spi flash reset code 
flash->command[0] = 0x66; 
    spi_write(flash->spi, flash->command, 1); 
    flash->command[0] = 0x99; 
    spi_write(flash->spi, flash->command, 1);

    /* Clean up MTD stuff. */ 
    return mtd_device_unregister(&flash->mtd); 

 
 
static struct spi_driver m25p80_driver = { 
    .driver = { 
        .name   = "m25p80", 
        .owner  = THIS_MODULE, 
    }, 
    .id_table   = m25p_ids, 
    .probe  = m25p_probe, 
    .remove = m25p_remove, 
    // manfeel, add shutdown method to reset spi flash 
    .shutdown = m25p_remove, 

 
    /* REVISIT: many of these chips have deep power-down modes, which
     * should clearly be entered on suspend() to minimize power use.
     * And also when they're otherwise idle...
     */ 
};

修改原因:

kernel已经能够支持32M SPI Flash的读写以及擦除操作.然而,可能是系统考虑不周,亦或是Linux系统的BUG,在配置了W25Q256的V3s开发板系统上,无法soft reset!经过查阅相关资料,发现,V3s默认支持24bit(3byte)的spi地址模式,而要支持32M以上的spi flash,则必须切换到32bit(4byte)地址模式.在soft reset的时候,spi停留在了32bit模式,没有切换回默认的24bit模式,导致reset后,V3s在默认的24bit模式,无法和32bit模式的spi通讯,系统死机.

感谢:
荔枝派Q群群主,
感谢 csdn的Manfeel大神

离线

#5 2017-12-15 14:31:44

lzx1044364960
会员
注册时间: 2017-12-15
已发帖子: 35
积分: 35

Re: 为什么我的V3s 换 32M flash之后 shell执行 reboot 不重启呢?

为什么我的源码根目录没有这个drivers啊 只有这些
bin          Config.in  feeds.conf.default  LICENSE   rules.mk     tmp
BSDmakefile  dl         include             Makefile  scripts      toolchain
build_dir    docs       key-build           package   staging_dir  tools
config       feeds      key-build.pub       README    target

离线

#6 2017-12-15 14:36:47

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,223
积分: 9197

Re: 为什么我的V3s 换 32M flash之后 shell执行 reboot 不重启呢?

建议你找一本Linux基本操作的书先看看

find . |grep m25p80.c

用这个命令可以找到文件的, 你先试一试, 有问题可以继续留言。





离线

#7 2017-12-15 14:59:44

lzx1044364960
会员
注册时间: 2017-12-15
已发帖子: 35
积分: 35

Re: 为什么我的V3s 换 32M flash之后 shell执行 reboot 不重启呢?

我用的是MT7620a 32M 也是这么改么?

离线

#8 2017-12-15 15:01:42

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,223
积分: 9197

Re: 为什么我的V3s 换 32M flash之后 shell执行 reboot 不重启呢?

lzx1044364960 说:

我用的是MT7620a 32M 也是这么改么?

对,照着改就行了!
原理就是把bank寄存器切换回去。





离线

#9 2017-12-15 15:21:39

lzx1044364960
会员
注册时间: 2017-12-15
已发帖子: 35
积分: 35

Re: 为什么我的V3s 换 32M flash之后 shell执行 reboot 不重启呢?

我find到三个文件改哪一个?还是都改?
./build_dir/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/linux-3.18.75/drivers/mtd/devices/m25p80.c
./build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7620/linux-3.18.75/.pc/platform/0044-mtd-add-chunked-read-io-to-m25p80.patch/drivers/mtd/devices/m25p80.c
./build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7620/linux-3.18.75/drivers/mtd/devices/m25p80.c

离线

#10 2017-12-15 15:40:56

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,223
积分: 9197

Re: 为什么我的V3s 换 32M flash之后 shell执行 reboot 不重启呢?

看起来应该是这个:

./build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7620/linux-3.18.75/drivers/mtd/devices/m25p80.c





离线

#11 2017-12-15 15:42:34

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,223
积分: 9197

Re: 为什么我的V3s 换 32M flash之后 shell执行 reboot 不重启呢?

晕哥 说:

看起来应该是这个:

./build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7620/linux-3.18.75/drivers/mtd/devices/m25p80.c

有2个简单的方法判断:
1 这个目录下面有没有 m25p80.o 文件?
2. 随便在m25p80.c 乱打打几个字母,编译出错就说明是这个文件了。





离线

#12 2017-12-15 16:06:46

lzx1044364960
会员
注册时间: 2017-12-15
已发帖子: 35
积分: 35

Re: 为什么我的V3s 换 32M flash之后 shell执行 reboot 不重启呢?

三个全改了,编译以后ok了!!感谢大神们指点迷津D

离线

#13 2017-12-15 16:12:54

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,223
积分: 9197

Re: 为什么我的V3s 换 32M flash之后 shell执行 reboot 不重启呢?

lzx1044364960 说:

三个全改了,编译以后ok了!!感谢大神们指点迷津D

不用客气,有空常回来转转。





离线

#14 2017-12-15 16:27:08

lzx1044364960
会员
注册时间: 2017-12-15
已发帖子: 35
积分: 35

Re: 为什么我的V3s 换 32M flash之后 shell执行 reboot 不重启呢?

必须的

离线

#15 2018-01-04 16:34:50

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,223
积分: 9197

Re: 为什么我的V3s 换 32M flash之后 shell执行 reboot 不重启呢?

发现32M spi flash 只能解决软件重启(busybox reboot)的问题,
解决不了硬件 RESET 的问题,
按下复位按键之后, W25Q256/MX25L256 芯片内部的寄存器可能没有切换回第0个bank,
导致V3s的BROM找不到启动头(估计是V3s BROM没有考虑用32M的spi flash),
而且8Pin的 spi flash没有引出RESET#引脚,
但是16pin的 spi flash引出了RESET#引脚,或许用16pin的spi flash能完美解决硬件复位的问题。





离线

#16 2018-01-04 16:52:33

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,223
积分: 9197

Re: 为什么我的V3s 换 32M flash之后 shell执行 reboot 不重启呢?

QQ20180104165205.png

widora neo用硬件解决了这个复位问题. 参考原理图: widora-neo-32-128-sch.pdf





离线

#17 2019-02-18 16:29:04

tkyl01
会员
注册时间: 2018-11-19
已发帖子: 9
积分: 39

Re: 为什么我的V3s 换 32M flash之后 shell执行 reboot 不重启呢?

# reboot
# Saving random seed... done.
Stopping logging: OK
umount: devtmpfs busy - remounted read-only
[ 1075.465115] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null)
The system is going down NOW!
Sent SIGTERM to all processes
Sent SIGKILL to[ 1077.487857] reboot: Restarting system
[ 1078.489799] Reboot failed -- System halted


licheepi Nano,16M flash,出现这个问题。

离线

#18 2019-02-18 16:39:14

smartcar
会员
注册时间: 2018-02-19
已发帖子: 735
积分: 735

Re: 为什么我的V3s 换 32M flash之后 shell执行 reboot 不重启呢?

这个问题貌似和flash无关,可能涉及其他问题,貌似Q群提过几次了

离线

#19 2020-05-07 15:07:55

物联小白
会员
注册时间: 2018-05-17
已发帖子: 19
积分: 19

Re: 为什么我的V3s 换 32M flash之后 shell执行 reboot 不重启呢?

怪不得我输入 reboot 没卵用,输完系统就装死。

离线

#20 2020-05-15 21:39:32

huangjian276310465
会员
注册时间: 2020-04-15
已发帖子: 7
积分: 2

Re: 为什么我的V3s 换 32M flash之后 shell执行 reboot 不重启呢?

我也是同样的问题,后面加上硬件看门狗

离线

#21 2020-05-15 22:37:10

有梦的地方
会员
注册时间: 2020-03-17
已发帖子: 284
积分: 284

Re: 为什么我的V3s 换 32M flash之后 shell执行 reboot 不重启呢?

物联小白 说:

怪不得我输入 reboot 没卵用,输完系统就装死。

我换16pin的spi flash,flash复位脚和A33复位脚短路,上电一起复位,彻底解决了这个问题,全志brom的bug.

离线

页脚

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

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