找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 15220|回复: 10

OP编译的时候,关于dts文件修改以支持不同FALSH

[复制链接]
发表于 2015-10-28 18:20 | 显示全部楼层 |阅读模式
之前鄙人遇到过一个问题,编译固件的大小与Flash不匹配的时候,需要进行修改,但是修改不正确,则导致固件不能正常启动
后来很多童靴问我具体是怎么解决的,留言不好回,开帖说明这个问题以及我采取的解决办法,可能有纰漏,欢迎大神指正。

问题如下,我直接拷贝了坛友luanlg的帖子,如有版权问题,请联系版主解决

网上买了个mt7620a板子,里面系统是Pandora的,16m的spi flash
启动后,相关分区信息如下:
[root@PandoraBox:/root]# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00020000 00010000 "u-boot"
mtd1: 00010000 00010000 "u-boot-env"
mtd2: 00010000 00010000 "Factory"
mtd3: 01000000 00010000 "fullflash"
mtd4: 00fc0000 00010000 "firmware"
mtd5: 000f0000 00010000 "kernel"
mtd6: 00ed0000 00010000 "rootfs"
mtd7: 009d0000 00010000 "rootfs_data"

[root@PandoraBox:/root]# block info
/dev/mtdblock6: UUID="12b5826e-faa30b74-5047b7ef-38160b24" VERSION="1024.0" TYPE="squashfs"
/dev/mtdblock7: TYPE="jffs2"


编译完trunk版本刷板子后,出错信息如下:
Starting kernel ...

[    0.000000] Linux version 3.10.49 (root@mt7620) (gcc version 4.8.3 (OpenWrt/Linaro GCC 4.8-2014.04 r42026) ) #4 Wed Aug 13 13:59:47 CST 2014
[    0.000000] Board has DDR2
[    0.000000] Analog PMU set to hw control
[    0.000000] Digital PMU set to hw control
[    0.000000] SoC Type: Ralink MT7620A ver:2 eco:3
[    0.000000] bootconsole [early0] enabled
[    0.000000] CPU revision is: 00019650 (MIPS 24KEc)
[    0.000000] MIPS: machine is Ralink MT7620a + MT7610e evaluation board
[    0.000000] Determined physical RAM map:
[    0.000000]  memory: 08000000 @ 00000000 (usable)
[    0.000000] Initrd not found or empty - disabling initrd
[    0.000000] Zone ranges:
[    0.000000]   Normal   [mem 0x00000000-0x07ffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x00000000-0x07ffffff]
[    0.000000] Primary instruction cache 64kB, VIPT, 4-way, linesize 32 bytes.
[    0.000000] Primary data cache 32kB, 4-way, PIPT, no aliases, linesize 32 bytes
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 32512
[    0.000000] Kernel command line: console=ttyS0,57600 rootfstype=squashfs,jffs2
[    0.000000] PID hash table entries: 512 (order: -1, 2048 bytes)
[    0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
[    0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
[    0.000000] Writing ErrCtl register=0006ffcb
[    0.000000] Readback ErrCtl register=0006ffcb
[    0.000000] Memory: 126552k/131072k available (2378k kernel code, 4520k reserved, 586k data, 168k init, 0k highmem)
[    0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] NR_IRQS:256
[    0.000000] CPU Clock: 580MHz
[    0.000000] Calibrating delay loop... 385.84 BogoMIPS (lpj=1929216)
[    0.060000] pid_max: default: 32768 minimum: 301
[    0.060000] Mount-cache hash table entries: 512
[    0.070000] pinctrl core: initialized pinctrl subsystem
[    0.080000] NET: Registered protocol family 16
[    0.500000] PCIE0 no card, disable it(RST&CLK)
[    0.510000] bio: create slab <bio-0> at 0
[    0.520000] rt2880_gpio 10000600.gpio: registering 24 gpios
[    0.530000] rt2880_gpio 10000600.gpio: registering 24 irq handlers
[    0.540000] PCI host bridge to bus 0000:00
[    0.550000] pci_bus 0000:00: root bus resource [mem 0x20000000-0x2fffffff]
[    0.560000] pci_bus 0000:00: root bus resource [io  0x10160000-0x1016ffff]
[    0.570000] pci_bus 0000:00: No busn resource found for root bus, will use [bus 00-ff]
[    0.580000] Switching to clocksource MIPS
[    0.590000] NET: Registered protocol family 2
[    0.590000] TCP established hash table entries: 1024 (order: 1, 8192 bytes)
[    0.600000] TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
[    0.610000] TCP: Hash tables configured (established 1024 bind 1024)
[    0.630000] TCP: reno registered
[    0.630000] UDP hash table entries: 256 (order: 0, 4096 bytes)
[    0.650000] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[    0.660000] NET: Registered protocol family 1
[    0.670000] rt-timer 10000100.timer: maximum frequncy is 2441Hz
[    0.700000] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.710000] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
[    0.730000] msgmni has been set to 247
[    0.740000] io scheduler noop registered
[    0.740000] io scheduler deadline registered (default)
[    0.760000] Serial: 8250/16550 driver, 2 ports, IRQ sharing disabled
[    0.770000] 10000c00.uartlite: ttyS0 at MMIO 0x10000c00 (irq = 20) is a 16550A
[    0.780000] console [ttyS0] enabled, bootconsole disabled
[    0.780000] console [ttyS0] enabled, bootconsole disabled
[    0.810000] m25p80 spi32766.0: found w25q128, expected en25q64
[    0.820000] m25p80 spi32766.0: w25q128 (16384 Kbytes)
[    0.830000] 4 ofpart partitions found on MTD device spi32766.0
[    0.840000] Creating 4 MTD partitions on "spi32766.0":
[    0.850000] 0x000000000000-0x000000020000 : "u-boot"
[    0.870000] 0x000000020000-0x000000030000 : "u-boot-env"
[    0.880000] 0x000000030000-0x000000040000 : "factory"
[    0.890000] 0x000000040000-0x000001000000 : "firmware"
[    0.900000] 0x00000012d491-0x000001000000 : "rootfs"
[    0.910000] mtd: partition "rootfs" must either start or end on erase block boundary or be smaller than an erase block -- forcing read-only
[    0.940000] mtd: device 4 (rootfs) set to be root filesystem
[    0.950000] mtdsplit: no squashfs found in "spi32766.0"
[    0.970000] (unregistered net_device): port 0 link up (100Mbps/Full duplex)
[    0.980000] libphy: mdio: probed
[    0.990000] ralink_soc_eth 10100000.ethernet: connected port 4 to PHY at mdio-bus:04 [uid=03a2940d, driver=Generic PHY]
[    1.010000] ralink_soc_eth 10100000.ethernet: connected port 5 to PHY at mdio-bus:05 [uid=0000ffff, driver=Generic PHY]
[    1.030000] ralink_soc_eth 10100000.ethernet: loaded mt7530 driver
[    1.050000] eth0: done loading
[    1.050000] rt3xxx-usbphy usbphy.3: loaded
[    1.060000] rt2880_wdt 10000120.watchdog: Initialized
[    1.070000] TCP: cubic registered
[    1.080000] NET: Registered protocol family 17
[    1.090000] 8021q: 802.1Q VLAN Support v1.8
[    1.100000] jffs2: Flash size not aligned to erasesize, reducing to 15168KiB
[    1.130000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00002b70: 0x7173 instead
[    1.150000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00002b74: 0x0008 instead
[    1.170000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00002b78: 0xea14 instead
[    1.190000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00002b7c: 0x0400 instead
[    1.210000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00002b84: 0x1200 instead

.......N 多类似信息.......
[   65.630000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00ec0004: 0x24c3 instead
[   65.650000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00ec0008: 0x24a5 instead
[   65.660000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00ec000c: 0x02a5 instead
[   65.680000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00ec0010: 0x8063 instead
[   65.700000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00ec0014: 0x1073 instead
[   65.720000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00ec0018: 0x2874 instead
[   65.740000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00ec001c: 0x1280 instead
[   65.760000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00ec0020: 0x2106 instead
[   65.780000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00ec0024: 0x4e10 instead
[   65.800000] jffs2: Further such events for this erase block will not be printed
[   65.910000] jffs2: Cowardly refusing to erase blocks on filesystem with no valid JFFS2 nodes
[   65.920000] jffs2: empty_blocks 27, bad_blocks 0, c->nr_blocks 237
[   65.940000] VFS: Cannot open root device "(null)" or unknown-block(31,4): error -5
[   65.950000] Please append a correct "root=" boot option; here are the available partitions:
[   65.970000] 1f00             128 mtdblock0  (driver?)
[   65.980000] 1f01              64 mtdblock1  (driver?)
[   65.990000] 1f02              64 mtdblock2  (driver?)
[   66.000000] 1f03           16128 mtdblock3  (driver?)
[   66.010000] 1f04           15178 mtdblock4  (driver?)
[   66.020000] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,4)



问题就在与启动时,一堆如下打印,最后系统启动失败。
[    1.130000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00002b70: 0x7173 instead

我回帖遇到相同问题和给出的解决步骤如下:
1、编译使用的默认8M固件配置,编译的固件小于8M,实际使用16M芯片,但工作正常
2、后来增加一些包,导致固件大于8M,于是修改Flash配置。我使用的ralink芯片,首先修改了trunk/target/linux/ramips/image/Makefile,找到对应路由器,
    将Default8M改为Default16M。编译通过,烧入之后,就出现了上面这样的问题,有很多这样的打印。
3、开始我以为是驱动不支持,找到内核支持SPI芯片列表,确认对应厂商芯片ID在列表中。
4、后来我想到平时编译其他工程的时候都要对代码进行分段,也就是分区。最后找到trunk/target/linux/ramips/dts/下对应路由器的分区配置文件,修改了匹配16M的分区数据。编译烧入,重启后以上问题消失

所以编译一个支持不同容量的Flash的固件时,要确认3点:
1、trunk/target/linux/ramips/image/Makefile内对应固件的大小。
2、确认驱动支持使用的Flash芯片。
3、确认trunk/target/linux/ramips/dts/对应的dts文件是否匹配。

前两点很好解决,然后有的童鞋就问到底怎么修改dts呢?举例说明如下
在这个问题例子里面,我们可以看到打印信息
[    0.850000] 0x000000000000-0x000000020000 : "u-boot"
[    0.870000] 0x000000020000-0x000000030000 : "u-boot-env"
[    0.880000] 0x000000030000-0x000000040000 : "factory"
[    0.890000] 0x000000040000-0x000001000000 : "firmware"
[    0.900000] 0x00000012d491-0x000001000000 : "rootfs"
这一段就是说明了flash内部分段的情况,每一个段存储了不同的内容,不同的固件可能还会有其他的段,看看每一段的意义:
[    0.850000] 0x000000000000-0x000000020000 : "u-boot"        u-boot存放的段,从flash开始的地址到0x20000 = 128K,所以我们看到很多u-boot固件是128K的
[    0.870000] 0x000000020000-0x000000030000 : "u-boot-env"  u-boot的参数,包括内核启动参数,u-boot使用的参数等,例如ip地址,TTL波特率等等
[    0.880000] 0x000000030000-0x000000040000 : "factory"        厂家参数,实际上无线配置参数就存在这个段,如果这个段的数据丢失,表现为没有无线或信号极弱
[    0.890000] 0x000000040000-0x000001000000 : "firmware"     一般是linux内核
[    0.900000] 0x00000012d491-0x000001000000 : "rootfs"         op文件系统

知道具体意义,那么看看dts是怎么样的,从op拷贝了一个dts文件,如下openwrt-rt5350-1/target/linux/ramips/dts/MT7620a_MT7610e.dts
/dts-v1/;
/include/ "mt7620a.dtsi"
/ {
       compatible = "ralink,mt7620a-eval-board", "ralink,mt7620a-soc";
       model = "Ralink MT7620A evaluation board";
       palmbus@10000000 {
                  sysc@0 {
                                   ralink,gpiomux = "i2c", "jtag";
                                   ralink,uartmux = "gpio";
                                   ralink,wdtmux = <1>;
                  };
                  gpio0: gpio@600 {
                                  status = "okay";
                  };
                  spi@b00 {
                                  status = "okay";
                                  m25p80@0 {
                                                         #address-cells = <1>;
                                                         #size-cells = <1>;
                                                          compatible = "en25q64";
                                                          reg = <0 0>;
                                                          linux,modalias = "m25p80", "en25q64";
                                                          spi-max-frequency = <1000000>;
                                                          partition@0 {
                                                                                 label = "u-boot";      //这里就是u-boot,可以看出从0到0x30000,可以支持192K大小的u-boot固件
                                                                                 reg = <0x0 0x30000>;
                                                                                 read-only;
                                                         };
                                                         partition@30000 {
                                                                                 label = "u-boot-env";   //u-boot参数,64K
                                                                                 reg = <0x30000 0x10000>;
                                                                                 read-only;
                                                        };
                                                        factory: partition@40000 {
                                                                                 label = "factory";     //无线参数,64K
                                                                                 reg = <0x40000 0x10000>;
                                                                                 read-only;
                                                        };
                                                        partition@50000 {
                                                                                 label = "firmware";   //固件剩下的部分全部给op固件,问题多半在这里,下面具体分析一下
                                                                                reg = <0x50000 0x7b0000>;
                                                        };
                                 };
                   };
         };
............后面内容不列出................

对于固件分区:
partition@50000 {
            label = "firmware";  
            reg = <0x50000 0x7b0000>;
};
如果使用8M的Flash, 固件编译成8M,不用修改,也能运行
如果使用16M的Flash, 固件编译成8M,不用修改,也能运行,相当与16M的Flash只使用了前面8M,后面空闲。
但是,如果使用8MFlash,固件编译选择16M,后面长度不够,可能导致问题,那么修改了Makefile还不够,还需要修改这个数据
reg = <0x50000 0x7b0000>; 中的0x7b0000需要再加8M,应该是0xfb0000
实际就是16M-0x50000,前面的被u-boot和参数段使用了。
0x50000也不是固定值,需要匹配使用的u-boot,如果u-boot固件增加很多功能,变成256K,那么相应的需要修改u-boot段
同时后面的段也需要按地址顺序修改,并从新计算固件使用的长度,要求与实际使用的Flash匹配

本帖为回答hj6419的留言而发,快来看看能不能解决你的实际问题吧。





只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
发表于 2015-10-29 08:09 | 显示全部楼层
“但是,如果使用8MFlash,固件编译选择16M,后面长度不够,可能导致问题,那么修改了Makefile还不够,还需要修改这个数据
reg = <0x50000 0x7b0000>; 中的0x7b0000需要再加8M,应该是0xfb0000
实际就是16M-0x50000,前面的被u-boot和参数段使用了。”

这句描述不对,16M的固件是不可能在8M的Flash上运行的。修改是为了能安装更多的软件而生成一个16M固件并充分利用16M Flash的空间。

点评

看你怎么编译 虽然设置编译16M固件,但是没有选择很多功能,也可能编译出小于8M的实际固件 这个我编译过,也试过  详情 回复 发表于 2015-10-29 09:17
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-10-29 09:17 | 显示全部楼层
CASPARTUNG 发表于 2015-10-29 08:09
“但是,如果使用8MFlash,固件编译选择16M,后面长度不够,可能导致问题,那么修改了Makefile还不够,还需 ...

看你怎么编译
虽然设置编译16M固件,但是没有选择很多功能,也可能编译出小于8M的实际固件
这个我编译过,也试过
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2015-10-29 16:34 | 显示全部楼层
感谢楼主!虽然这个早上已经暂时解决了,但是随着带来的困惑让我不解。
我手头的设备是RT5350平台的3G路由器,原厂匹配mx25l3205d 4m flash,出厂时我让厂方换成了w25q64fvsig 8m flash,然后厂方给的OP固件(刷完后显示Asus WL-330N3G)是4m flash用的,也实在太老(12.09.1),所以想自己编译15.05的固件,于是我参照网上的教程,修改了target/linux/ramips/dts/WL_330N3G.dts,具体如下

/dts-v1/;
/include/ "rt3050.dtsi"    //改成了rt5350.dtsi
/ {
        compatible = "WL_330N3G", "ralink,rt3050-soc";    //改成了ralink,rt5350-soc
        model = "Asus WL-330N3G";

        palmbus@10000000 {
                spi@b00 {
                        status = "okay";
                        m25p80@0 {
                                #address-cells = <1>;
                                #size-cells = <1>;
                                compatible = "mx25l3205d";    //改成了w25q64,关键就是这里,如果不改能正常运行,改了刷进去就打印错误
                                reg = <0 0>;
                                linux,modalias = "m25p80", "mx25l3205d";    //后面的值改成了w25q64,关键就是这里,如果不改能正常运行,改了刷进去就打印错误
                                spi-max-frequency = <10000000>;

                                partition@0 {
                                        label = "u-boot";
                                        reg = <0x0 0x30000>;
                                        read-only;
                                };

                                partition@30000 {
                                        label = "u-boot-env";
                                        reg = <0x30000 0x10000>;
                                        read-only;
                                };

                                factory: partition@40000 {
                                        label = "factory";
                                        reg = <0x40000 0x10000>;
                                        read-only;
                                };

                                partition@50000 {
                                        label = "firmware";
                                        reg = <0x50000 0x3b0000>;    //改成了0x7b0000
                                };
                        };
                };
        };


还改了target/linux/ramips/image/Makefile,如下:
Image/Build/Profile/WL_330N3G=$(call BuildFirmware/Default4M/$(1),$(1),wl-330n3g,WL_330N3G)    //Default4M 改成 Default8M


make menuconfig 里面简单勾选了几个工具,类库,luci等,让固件超过4M大小。

然后当我刷入flash改成w25q64的8M固件(实际大小:4,456,452 字节)时,通过串口查看启动情况发现跟楼主类似的错误,如下:
U-Boot 1.1.7 (Dec 13 2011 - 13:49:42)


Board: Ralink APSoC DRAM:  32 MB
relocate_code Pointer at: 81fb4000
spi_wait_nsec: 42
spi device id: ef 40 17 0 0 (40170000)
find flash: W25Q64BV
raspi_read: from:30000 len:1000
.raspi_read: from:30000 len:1000
.============================================
Ralink UBoot Version: 3.6.0.0
--------------------------------------------
ASIC 5350_MP (Port5<->None)
DRAM_CONF_FROM: Boot-Strapping
DRAM_TYPE: SDRAM
DRAM_SIZE: 256 Mbits
DRAM_WIDTH: 16 bits
DRAM_TOTAL_WIDTH: 16 bits
TOTAL_MEMORY_SIZE: 32 MBytes
Flash component: SPI Flash
Dateec 13 2011  Time:13:49:42
============================================
icache: sets:256, ways:4, linesz:32 ,total:32768
dcache: sets:128, ways:4, linesz:32 ,total:16384


##### The CPU freq = 360 MHZ ####
estimate memory size =32 Mbytes
raspi_read: from:40028 len:6
.
raspi_read: from:0 len:30004
....*************Is_update = 0 plat = 1**************


Please choose the operation:
   1: Load system code to SDRAM via TFTP.
   2: Load system code then write to Flash via TFTP.
   3: Boot system code via Flash (default).
   4: Entr boot command line interface.
   7: Load Boot Loader code then write to Flash via Serial.
   9: Load Boot Loader code then write to Flash via TFTP.
0
   
3: System Boot system code via Flash.
## Booting image at bc050000 ...
raspi_read: from:50000 len:40
.   Image Name:   MIPS OpenWrt Linux-3.18.21
   Created:      2015-10-23   3:40:52 UTC
   Image Type:   MIPS Linux Kernel Image (lzma compressed)
   Data Size:    1090881 Bytes =  1 MB
   Load Address: 80000000
   Entry Point:  80000000
raspi_read: from:50040 len:10a541
.................   Verifying Checksum ... OK
   Uncompressing Kernel Image ... OK
No initrd
## Transferring control to Linux (at address 80000000) ...
## Giving linux memsize in MB, 32


Starting kernel ...


[    0.000000] Linux version 3.18.21 (kingstone@kingstone-ubuntu-kylin) (gcc version 4.8.3 (OpenWrt/Linaro GCC 4.8-2014.04 r47235) ) #7 Fri Oct 23 11:27:26 CST 2015
[    0.000000] SoC Type: Ralink RT5350 id:1 rev:3
[    0.000000] bootconsole [early0] enabled
[    0.000000] CPU0 revision is: 0001964c (MIPS 24KEc)
[    0.000000] MIPS: machine is Asus WL-330N3G
[    0.000000] Determined physical RAM map:
[    0.000000]  memory: 02000000 @ 00000000 (usable)
[    0.000000] Initrd not found or empty - disabling initrd
[    0.000000] Zone ranges:
[    0.000000]   Normal   [mem 0x00000000-0x01ffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x00000000-0x01ffffff]
[    0.000000] Initmem setup node 0 [mem 0x00000000-0x01ffffff]
[    0.000000] Primary instruction cache 32kB, VIPT, 4-way, linesize 32 bytes.
[    0.000000] Primary data cache 16kB, 4-way, VIPT, no aliases, linesize 32 bytes
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 8128
[    0.000000] Kernel command line: console=ttyS0,57600 rootfstype=squashfs,jffs2
[    0.000000] PID hash table entries: 128 (order: -3, 512 bytes)
[    0.000000] Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)
[    0.000000] Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)
[    0.000000] Writing ErrCtl register=00000000
[    0.000000] Readback ErrCtl register=00000000
[    0.000000] Memory: 29016K/32768K available (2417K kernel code, 119K rwdata, 484K rodata, 172K init, 181K bss, 3752K reserved)
[    0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] NR_IRQS:256
[    0.000000] CPU Clock: 360MHz
[    0.000000] systick: running - mult: 214748, shift: 32
[    0.010000] Calibrating delay loop... 239.61 BogoMIPS (lpj=1198080)
[    0.080000] pid_max: default: 32768 minimum: 301
[    0.090000] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.100000] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.110000] pinctrl core: initialized pinctrl subsystem
[    0.120000] NET: Registered protocol family 16
[    0.130000] rt2880-pinmux pinctrl: invalid group "rgmii" for function "gpio"
[    0.140000] rt2880-pinmux pinctrl: invalid group "mdio" for function "gpio"
[    0.180000] rt2880_gpio 10000600.gpio: registering 22 gpios
[    0.190000] rt2880_gpio 10000600.gpio: registering 22 irq handlers
[    0.200000] Switched to clocksource systick
[    0.210000] NET: Registered protocol family 2
[    0.220000] TCP established hash table entries: 1024 (order: 0, 4096 bytes)
[    0.230000] TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
[    0.240000] TCP: Hash tables configured (established 1024 bind 1024)
[    0.260000] TCP: reno registered
[    0.260000] UDP hash table entries: 256 (order: 0, 4096 bytes)
[    0.270000] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[    0.290000] NET: Registered protocol family 1
[    0.300000] rt-timer 10000100.timer: maximum frequency is 7324Hz
[    0.310000] futex hash table entries: 256 (order: -1, 3072 bytes)
[    0.340000] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.350000] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
[    0.370000] msgmni has been set to 56
[    0.410000] io scheduler noop registered
[    0.420000] io scheduler deadline registered (default)
[    0.430000] Serial: 8250/16550 driver, 2 ports, IRQ sharing disabled
[    0.450000] console [ttyS0] disabled
[    0.450000] 10000c00.uartlite: ttyS0 at MMIO 0x10000c00 (irq = 20, base_baud = 2500000) is a 16550A
[    0.470000] console [ttyS0] enabled
[    0.470000] console [ttyS0] enabled
[    0.490000] bootconsole [early0] disabled
[    0.490000] bootconsole [early0] disabled
[    0.510000] m25p80 spi32766.0: found s25fl064k, expected w25q64
[    0.530000] m25p80 spi32766.0: s25fl064k (8192 Kbytes)
[    0.540000] 4 ofpart partitions found on MTD device spi32766.0
[    0.550000] Creating 4 MTD partitions on "spi32766.0":
[    0.560000] 0x000000000000-0x000000030000 : "u-boot"
[    0.570000] 0x000000030000-0x000000040000 : "u-boot-env"
[    0.580000] 0x000000040000-0x000000050000 : "factory"
[    0.600000] 0x000000050000-0x000000800000 : "firmware"
[    0.670000] 2 uimage-fw partitions found on MTD device firmware
[    0.680000] 0x000000050000-0x00000015a581 : "kernel"
[    0.700000] 0x00000015a581-0x000000800000 : "rootfs"
[    0.710000] mtd: device 5 (rootfs) set to be root filesystem
[    0.720000] 1 squashfs-split partitions found on MTD device rootfs
[    0.730000] 0x000000460000-0x000000800000 : "rootfs_data"
[    0.750000] ralink_soc_eth 10100000.ethernet eth0: ralink at 0xb0100000, irq 5
[    0.770000] rt2880_wdt 10000120.watchdog: Initialized
[    0.780000] TCP: cubic registered
[    0.790000] NET: Registered protocol family 17
[    0.790000] bridge: automatic filtering via arp/ip/ip6tables has been deprecated. Update your scripts to load br_netfilter if you need this.
[    0.820000] 8021q: 802.1Q VLAN Support v1.8
[    0.860000] squashfs: SQUASHFS error: unable to read id index table
[    0.870000] jffs2: Flash size not aligned to erasesize, reducing to 6784KiB
[    0.880000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000000: 0x7368 instead
[    0.900000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000004: 0x071b instead
[    0.920000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000008: 0xab2d instead
[    0.940000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000010: 0x001d instead
[    0.960000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000014: 0x0004 instead
[    0.980000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000018: 0x06c0 instead
[    1.000000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000001c: 0x0004 instead
[    1.020000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000020: 0x08b3 instead
[    1.040000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000028: 0x34e4 instead
[    1.050000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000030: 0x34dc instead
[    1.070000] jffs2: Further such events for this erase block will not be printed
[    1.100000] jffs2: Empty flash at 0x00000038 ends at 0x00000040
[    1.290000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00010000: 0x3e8d instead
[    1.310000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00010004: 0xf442 instead
[    1.330000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00010008: 0xc589 instead
[    1.350000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0001000c: 0xdfe5 instead
[    1.370000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00010010: 0x87c4 instead
[    1.380000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00010014: 0x7f1e instead
[    1.400000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00010018: 0x614c instead
[    1.420000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0001001c: 0xd71c instead
[    1.440000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00010020: 0x8743 instead
[    1.460000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00010024: 0x9910 instead
[    1.480000] jffs2: Further such events for this erase block will not be printed
[    1.680000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00020000: 0xa91f instead
[    1.700000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00020004: 0xd21f instead
[    1.720000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00020008: 0xc8ca instead
[    1.740000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0002000c: 0xa5cf instead
[    1.760000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00020010: 0x1be7 instead
[    1.780000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00020014: 0x1b9e instead
[    1.800000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00020018: 0x0341 instead
[    1.820000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0002001c: 0x55c5 instead
[    1.830000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00020020: 0x0ed6 instead
[    1.850000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00020024: 0x0c1b instead
[    1.870000] jffs2: Further such events for this erase block will not be printed
[    2.080000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00030000: 0x40e6 instead
[    2.090000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00030004: 0x6dbe instead
[    2.110000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00030008: 0xc6d4 instead
[    2.130000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0003000c: 0xfaf5 instead
[    2.150000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00030010: 0xc528 instead
[    2.170000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00030014: 0xff22 instead
[    2.190000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00030018: 0xdbf3 instead
[    2.210000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0003001c: 0xd441 instead
[    2.230000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00030020: 0x6a8e instead
[    2.250000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00030024: 0x54cf instead
[    2.260000] jffs2: Further such events for this erase block will not be printed
[    2.470000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00040000: 0x9133 instead
[    2.490000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00040004: 0xa0b7 instead
[    2.510000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00040008: 0xe12b instead
[    2.530000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0004000c: 0x3218 instead
[    2.540000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00040010: 0xd15b instead
[    2.560000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00040014: 0x2437 instead
[    2.580000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00040018: 0xcb5f instead
[    2.600000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0004001c: 0x010e instead
[    2.620000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00040020: 0xb8fb instead
[    2.640000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00040024: 0x21e8 instead
[    2.660000] jffs2: Further such events for this erase block will not be printed
[    2.750000] jffs2: Old JFFS2 bitmask found at 0x0004628c
[    2.770000] jffs2: You cannot use older JFFS2 filesystems with newer kernels

--------------N多类似信息--------------

[   15.820000] jffs2: Further such events for this erase block will not be printed
[   15.990000] jffs2: Old JFFS2 bitmask found at 0x0025c4d8
[   16.000000] jffs2: You cannot use older JFFS2 filesystems with newer kernels
[   16.020000] jffs2: Old JFFS2 bitmask found at 0x0025c948
[   16.030000] jffs2: You cannot use older JFFS2 filesystems with newer kernels
[   16.080000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00260000: 0x632f instead
[   16.100000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00260004: 0x49b9 instead
[   16.110000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00260008: 0x1af0 instead
[   16.130000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0026000c: 0xfd78 instead
[   16.150000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00260010: 0xf677 instead
[   16.170000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00260014: 0x722f instead
[   16.190000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00260018: 0xaa83 instead
[   16.210000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0026001c: 0xa86b instead
[   16.230000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00260020: 0x7acf instead
[   16.250000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00260024: 0x8d1c instead
[   16.270000] jffs2: Further such events for this erase block will not be printed
[   16.470000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00270000: 0x28fc instead
[   16.490000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00270004: 0xb50e instead
[   16.510000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00270008: 0x31c9 instead
[   16.530000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0027000c: 0x5112 instead
[   16.540000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00270010: 0x6a37 instead
[   16.560000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00270014: 0x4e11 instead
[   16.580000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00270018: 0xb36b instead
[   16.600000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0027001c: 0xe1ba instead
[   16.620000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00270020: 0x3d07 instead
[   16.640000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00270024: 0x3bf9 instead
[   16.660000] jffs2: Further such events for this erase block will not be printed
[   16.700000] jffs2: Old JFFS2 bitmask found at 0x00271f84
[   16.710000] jffs2: You cannot use older JFFS2 filesystems with newer kernels
[   16.890000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00280000: 0xf9a2 instead
[   16.910000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00280004: 0xfc5d instead
[   16.920000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00280008: 0x79b6 instead
[   16.940000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0028000c: 0xc226 instead
[   16.960000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00280010: 0x1821 instead
[   16.980000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00280014: 0x2f95 instead
[   17.000000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00280018: 0x66ae instead
[   17.020000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0028001c: 0xfb13 instead
[   17.040000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00280020: 0xa66a instead
[   17.060000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00280024: 0x1345 instead
[   17.080000] jffs2: Further such events for this erase block will not be printed
[   17.280000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00290000: 0xabbb instead
[   17.300000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00290004: 0x325c instead
[   17.320000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00290008: 0x25a4 instead
[   17.340000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0029000c: 0xfb26 instead
[   17.360000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00290010: 0x2b51 instead
[   17.370000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00290014: 0x171f instead
[   17.390000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00290018: 0x1353 instead
[   17.410000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0029001c: 0x8d75 instead
[   17.430000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00290020: 0xeea5 instead
[   17.450000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00290024: 0xb94f instead
[   17.470000] jffs2: Further such events for this erase block will not be printed
[   17.650000] jffs2: Old JFFS2 bitmask found at 0x0029db7c
[   17.660000] jffs2: You cannot use older JFFS2 filesystems with newer kernels
[   17.700000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x002a0000: 0xecb6 instead
[   17.720000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x002a0004: 0xf27b instead
[   17.740000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x002a0008: 0xb8e3 instead
[   17.750000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x002a000c: 0xb37f instead
[   17.770000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x002a0010: 0x29f1 instead
[   17.790000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x002a0014: 0x37e3 instead
[   17.810000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x002a0018: 0xfcb3 instead
[   17.830000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x002a001c: 0x9f08 instead
[   17.850000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x002a0020: 0x742b instead
[   17.870000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x002a0024: 0x9012 instead
[   17.890000] jffs2: Further such events for this erase block will not be printed
[   18.140000] jffs2: Cowardly refusing to erase blocks on filesystem with no valid JFFS2 nodes
[   18.150000] jffs2: empty_blocks 63, bad_blocks 0, c->nr_blocks 106
[   18.170000] VFS: Cannot open root device "(null)" or unknown-block(31,5): error -5
[   18.180000] Please append a correct "root=" boot option; here are the available partitions:
[   18.200000] 1f00             192 mtdblock0  (driver?)
[   18.210000] 1f01              64 mtdblock1  (driver?)
[   18.220000] 1f02              64 mtdblock2  (driver?)
[   18.230000] 1f03            7872 mtdblock3  (driver?)
[   18.240000] 1f04            1065 mtdblock4  (driver?)
[   18.250000] 1f05            6806 mtdblock5  (driver?)
[   18.260000] 1f06            3712 mtdblock6  (driver?)
[   18.270000] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,5)
[   18.270000] ---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,5)




到这里让我很困惑,莫非是我改的w25q64不对还是怎么,为什么会导致这个错误?

还有一个疑惑,之前曾经折腾过AR9341平台的固件,固件的大小就是编译配置的实际大小,不管勾选内容是否达到设定的的大小(比如我把固件大小设置为8M,那编译出来的固件就是7,544,815 字节,实际内容并没有这么多,刷好之后还有好几M可用),但是到了rt5350平台,我把固件大小设置成8M,编译出来的实际只有4M多(实际内容就的大小),是这两个平台生成固件的机制不一样还是我没搞对?


以上两个问题还望大侠解惑,感谢!{:soso__1039173773029404865_2:}
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-10-30 10:42 | 显示全部楼层
我没改过上面,给出我的分析方法,如果解决了,烦请告知
这一句有疑问,"mx25l3205d";    //改成了w25q64
看看这几句打印:
[    0.860000] squashfs: SQUASHFS error: unable to read id index table
[    0.870000] jffs2: Flash size not aligned to erasesize, reducing to 6784KiB
[    0.880000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000000: 0x7368 instead

squashfs是linux的文件压缩系统,报错说unable to read id index table,意思是没有找到id,什么id?我猜是falsh的芯片id之类
显然mx25l3205d就在这个table中,并且可以找到它的id。但是w25q64不在这个table中,也可能是叫w25q64xxx什么的,总之没匹配上。
既然找不到,内核会干啥?
内核没有停止,那么就会尝试使用默认参数去操作flash,于是文件系统jffs2就报错: Flash size not aligned to erasesize, reducing to 6784KiB
意思就是flash的对齐没做好,默认为6784KiB,这也不对。
如果了解flash的参数就知道,路由器上的Flash一个Sector是4K,一个block是64K,flash提供了sector刷新指令,block刷新指令和chip刷新指令
就是说如果没有对齐,刷新操作是会异常的。于是,就报刷新错误:jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000000: 0x7368 instead

路由器使用SPI flash结构参数都一样,只是长度不一样,所以使用mx25l3205d,刷新参数4K,64K是正常的,不会报这类错误
如果你要试试,找到flash的table,看看w25q64是否在里面,参数是多少。或者找到jffs2的默认block,尝试修改,最好是试前者。
我现在手上没代码,你可以去.../kernel/drivers/目录或子目录找找spi flash的驱动,应该有一个芯片支持列表

还有一点,使用u-boot烧录,u-boot也要支持对应的Flash,如果u-boot只支持4M,那么烧录的时候,只会刷新前4M
后面还有4M没有刷新就用,也会报[    0.880000] jffs2: jffs2_scan_eraseblock(): 这种错误
试试看,结果告诉我。


点评

3Q,我测试一下。  详情 回复 发表于 2015-11-2 09:28
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2015-11-2 09:28 | 显示全部楼层
andy_wsj 发表于 2015-10-30 10:42
我没改过上面,给出我的分析方法,如果解决了,烦请告知
这一句有疑问,"mx25l3205d";    //改成了w25q64
...

3Q,我测试一下。
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2016-2-23 16:03 | 显示全部楼层
我这OpenWRT就不能正常工作,flash-8M, DDR1-16M, MT7620的片子。使用的trunk版本

## Transferring control to Linux (at address 80000000) ...
## Giving linux memsize in MB, 16

Starting kernel ...

[    0.000000] Linux version 4.3.4 (ekongyun@develop) (gcc version 5.2.0 (OpenWr
t GCC 5.2.0 r48744) ) #11 Tue Feb 23 07:51:29 UTC 2016
[    0.000000] Board has DDR1
[    0.000000] Analog PMU set to hw control
[    0.000000] Digital PMU set to hw control
[    0.000000] SoC Type: MediaTek MT7620N ver:2 eco:3
[    0.000000] bootconsole [early0] enabled
[    0.000000] CPU0 revision is: 00019650 (MIPS 24KEc)
[    0.000000] MIPS: machine is WRTNODE
[    0.000000] Determined physical RAM map:
[    0.000000]  memory: 02000000 @ 00000000 (usable)
[    0.000000] Initrd not found or empty - disabling initrd
[    0.000000] Zone ranges:
[    0.000000]   Normal   [mem 0x0000000000000000-0x0000000001ffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000000000000-0x0000000001ffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x0000000001ffffff]


运行到这就不再往下走了,是什么原因呢?
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2016-10-18 18:24 | 显示全部楼层
改flash 有好几种方法修改
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2019-11-13 17:44 | 显示全部楼层
思考了 牛逼 牛逼
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2020-4-2 14:22 | 显示全部楼层
楼主有时间研究一下现在16M的K2P固件如何编译加一些插件也不会超容量,有结果请告知一下,谢谢!
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2023-8-31 16:33 | 显示全部楼层
正好入手一个扩容闪存32m的K2P,正准备思考。刚修改了openwrt\target\linux\ramips\dts文件夹下mt7621_phicomm_k2p的DTS文件,把

partition@a0000 {
                                compatible = "denx,uimage";
                                label = "firmware";
                                reg = <0xa0000 0xf60000>;
改成
partition@a0000 {
                                compatible = "denx,uimage";
                                label = "firmware";
                                reg = <0xa0000 0x1fb0000>;
修改openwrt\target\linux\ramips\image目录下的mt7621.mk文件将里面的
     IMAGE_SIZE=32000K
这样编译后结果出来了openwrt-ramips-mt7621-phicomm_k2p-initramfs-kernel.bin和openwrt-ramips-mt7621-phicomm_k2p-squashfs-sysupgrade.bin,但没有factory.bin

正在用度娘在到处搜资料,思考中。。。。大家有经验的记得分享。
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-9-23 08:23

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com

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