找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
楼主: lostlonger

[k3] K3新梅林,1.0版发布,拯救三星闪存

 火... [复制链接]
 楼主| 发表于 2019-4-7 12:06 来自手机 | 显示全部楼层
本帖最后由 lostlonger 于 2019-4-7 16:25 编辑



usage: nvserial [options] [file]
options:
    -h, --help            This message
    -v, --verbose         Dump more information to stderr
    -r, --ramnvram        Create RAM nvram image
    -i, --input  <input>  Input stream (default none)
    -o, --output <output> Output stream (default stdout)
    -b, --offset <offset> Offset within output to embed NVRAM (default 0x400)
    -c, --count  <count>  Bytes of NVRAM to write (default 0x2000)
    -a, --standalone      Create standalone nvram image from text file
    -z, --compress        Compress NVRAM area file
    -n, --no-hdr-warn     Do not warn on missing hdr values
    -s, --serno  <serno>  Sets the variables "serno" "maclo" and "maclo12" (optional)
    -l, --lengthappend    Appends length to serialized NVRAM file
    -p, --placeinram  <mem_size>  Input RAM size. Outputs RAM location where serialized NVRAM should be written.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-7 18:41 | 显示全部楼层
paldier 发表于 2019-4-7 10:42
代码里已经写死,所以无解

还有一点,博通的cfe重启是不会清除内存的里的cfe的而是直接使用内存里的 ...

看了下68u的cfe的makefile,编译时定义了nvram大小,所以魔改k3的cfe来达到128knvram不现实。我做了个k3参数的3100版cfe,看看能不能在k3上运行。很有可能,cfe读nvram分区到内存,内核直接用,但保存参数的方式却是写nvram分区。
现在可以继续测试下,如果写多了,超过64k,重启后,cfe是重置nvram分区,还是只读64k剩下的不管?如果不重置,可以通过改内核代码,让启动后重读nvram分区,就可以去掉64k的限制,在openwrt下,系统认为nvram有1m,所以这个方法可行。nvram里丢掉某些参数是会让cfe重置nvram分区的,具体哪些不知道,但像把1:xx,2:xx之类的全删掉,肯定会重置,

回复 支持 反对

使用道具 举报

发表于 2019-4-7 19:22 | 显示全部楼层
lostlonger 发表于 2019-4-7 18:41
看了下68u的cfe的makefile,编译时定义了nvram大小,所以魔改k3的cfe来达到128knvram不现实。我做了个k3 ...

op的方法和蓝洞的一样以nvram分区大小为准,但博通是cfe和内核里写死大小,不commit的话是不会写到flash上的
回复 支持 反对

使用道具 举报

发表于 2019-4-7 21:34 | 显示全部楼层
一脸懵逼,用3100和88u的驱动都是双5g没有2.4,是我搞错了什么还是华硕埋的暗坑3100 88u 5300用一个驱动然后再哪里设个暗桩来判断

点评

nvram参数改过没。忘了在哪里看到的,1:xx之类的参数是低位pcie0的2.4g,0:xx是pcie0的5g,2:xx是pcie1的5g参数。  详情 回复 发表于 2019-4-7 22:41
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-7 22:41 | 显示全部楼层
paldier 发表于 2019-4-7 21:34
一脸懵逼,用3100和88u的驱动都是双5g没有2.4,是我搞错了什么还是华硕埋的暗坑3100 88u 5300用一个驱动然 ...

nvram参数改过没。忘了在哪里看到的,1:xx之类的参数是低位pcie0的2.4g,0:xx是pcie0的5g,2:xx是pcie1的5g参数。
回复 支持 反对

使用道具 举报

发表于 2019-4-7 22:55 | 显示全部楼层
lostlonger 发表于 2019-4-7 22:41
nvram参数改过没。忘了在哪里看到的,1:xx之类的参数是低位pcie0的2.4g,0:xx是pcie0的5g,2:xx是pcie1的 ...

3100 88u 0是2.4 1是5 2是5
看mac是直接读1因为2是空的所以用dhd驱动默认的

回复 支持 反对

使用道具 举报

发表于 2019-4-7 23:42 | 显示全部楼层
  1. May  5 05:05:00 syslogd started: BusyBox v1.17.4
  2. May  5 05:05:00 kernel: klogd started: BusyBox v1.17.4 (2019-04-06 10:00:33 CST)
  3. May  5 05:05:00 kernel: [   10.000000] Dongle Host Driver, version 1.363.45.58013 (r651509)
  4. May  5 05:05:00 kernel: [   10.000000] Compiled in drivers/net/wireless/bcmdhd on Dec 25 2018 at 16:33:51
  5. May  5 05:05:00 kernel: [   10.010000] Register interface [eth1]  MAC: 2c:b1:1a:ac:10:7c
  6. May  5 05:05:00 kernel: [   10.010000]
  7. May  5 05:05:00 kernel: [   10.120000] PCI_PROBE:  bus 1, slot 0,vendor 14E4, device 4365(good PCI location)
  8. May  5 05:05:00 kernel: [   10.230000] dhdpcie_init: can't find adapter info for this chip
  9. May  5 05:05:00 kernel: [   10.230000] PCI: Enabling device 0002:01:00.0 (0140 -> 0142)
  10. May  5 05:05:00 kernel: [   10.260000] CONSOLE: 000000.000 initvars_cis_pci: Not CIS format
  11. May  5 05:05:00 kernel: [   10.260000] CONSOLE: 000000.000 sprom_read_pci: buf[0] = 0xffff, returning bad-crc
  12. May  5 05:05:00 kernel: [   10.270000] CONSOLE: 000000.000 sprom_read_pci: buf[0] = 0xffff, returning bad-crc
  13. May  5 05:05:00 kernel: [   10.280000] CONSOLE: 000000.000 sprom_read_pci: buf[0] = 0xffff, returning bad-crc
  14. May  5 05:05:00 kernel: [   10.290000] CONSOLE: 000000.000 sprom_read_pci: buf[0] = 0xffff, returning bad-crc
  15. May  5 05:05:00 kernel: [   10.290000] CONSOLE: 000000.000 sprom_read_pci: buf[0] = 0xffff, returning bad-crc
  16. May  5 05:05:00 kernel: [   10.300000] CONSOLE: 000000.000 srom rev:0
  17. May  5 05:05:00 kernel: [   10.310000] CONSOLE: 000000.000 initvars_srom_pci, SROM CRC Error
  18. May  5 05:05:00 kernel: [   10.310000] CONSOLE: 000000.000 initvars_srom_pci, Using external nvram
  19. May  5 05:05:00 kernel: [   10.320000] CONSOLE: 000000.000 Setting clocks to 800/400/200
  20. May  5 05:05:00 kernel: [   10.320000] CONSOLE: 000000.000 si_set_bb_vcofreq_frac: only work on 4360, 4350
  21. May  5 05:05:00 kernel: [   10.330000] CONSOLE: 000000.000 Enabling D-cache
  22. May  5 05:05:00 kernel: [   10.340000] CONSOLE: 026738.568 gic_dist_init max_irq 64
  23. May  5 05:05:00 kernel: [   10.340000] CONSOLE: 026738.570 c_init: Watchdog reset bit set, clearing
  24. May  5 05:05:00 kernel: [   10.350000] CONSOLE: 026738.570
  25. May  5 05:05:00 kernel: [   10.350000] CONSOLE: RTE (PCIE-MSG_BUF) 10.10.69.69027 (r766943) on BCM4366 r4 [url=home.php?mod=space&uid=162986]@[/url] 40.0/200.0/800.0MHz
  26. May  5 05:05:00 K3: DEBUG 0:macaddr
  27. May  5 05:05:00 K3: DEBUG 1:macaddr
  28. May  5 05:05:00 K3: DEBUG 1:macaddr
  29. May  5 05:05:00 kernel: [   10.360000] CONSOLE: 026738.570 nvram_init: called again without calling nvram_exit()
  30. May  5 05:05:00 kernel: [   10.370000] CONSOLE: 026738.570 initvars_cis_pci: Not CIS format
  31. May  5 05:05:00 kernel: [   10.370000] CONSOLE: 026738.587 sprom_read_pci: buf[0] = 0xffff, returning bad-crc
  32. May  5 05:05:00 kernel: [   10.380000] CONSOLE: 026738.602 sprom_read_pci: buf[0] = 0xffff, returning bad-crc
  33. May  5 05:05:00 kernel: [   10.390000] CONSOLE: 026738.609 sprom_read_pci: buf[0] = 0xffff, returning bad-crc
  34. May  5 05:05:00 kernel: [   10.400000] CONSOLE: 026738.615 sprom_read_pci: buf[0] = 0xffff, returning bad-crc
  35. May  5 05:05:00 kernel: [   10.400000] CONSOLE: 026738.617 sprom_read_pci: buf[0] = 0xffff, returning bad-crc
  36. May  5 05:05:00 kernel: [   10.410000] CONSOLE: 026738.617 srom rev:0
  37. May  5 05:05:00 K3: DEBUG 0:macaddr
  38. May  5 05:05:00 kernel: [   10.420000] CONSOLE: 026738.617 initvars_srom_pci, SROM CRC Error
  39. May  5 05:05:00 kernel: [   10.420000] CONSOLE: 026738.617 initvars_srom_pci, Using external nvram
  40. May  5 05:05:00 kernel: [   10.430000] CONSOLE: 026738.617 allocating a max of 511 rxcplid buffers
  41. May  5 05:05:00 kernel: [   10.440000] CONSOLE: 026738.617 pciemsgbuf0: Broadcom PCIE MSGBUF driver
  42. May  5 05:05:00 kernel: [   10.440000] DHD: dongle ram size is set to 1835008(orig 1835008) at 0x200000
  43. May  5 05:05:00 kernel: [   10.440000] dhd_attach(): thread:dhd_watchdog_thread:a4 started
  44. May  5 05:05:00 kernel: [   10.440000] dhd_deferred_work_init: work queue initialized
  45. May  5 05:05:00 kernel: [   10.440000] dhd_bus_download_firmware: firmware path=, nvram path=
  46. May  5 05:05:00 kernel: [   10.440000] dhdpcie_ramsize_adj: Enter
  47. May  5 05:05:00 kernel: [   10.440000] dhdpcie_ramsize_adj: Adjust dongle RAMSIZE to 0x220000
  48. May  5 05:05:00 kernel: [   10.480000] CONSOLE: 026738.617 nvram_init: called again without calling nvram_exit()
  49. May  5 05:05:00 kernel: [   10.480000] CONSOLE: 026738.617 initvars_cis_pci: Not CIS format
  50. May  5 05:05:00 kernel: [   10.490000] CONSOLE: 026738.634 sprom_read_pci: buf[0] = 0xffff, returning bad-crc
  51. May  5 05:05:00 kernel: [   10.500000] CONSOLE: 026738.649 sprom_read_pci: buf[0] = 0xffff, returning bad-crc
  52. May  5 05:05:00 kernel: [   10.510000] CONSOLE: 026738.656 sprom_read_pci: buf[0] = 0xffff, returning bad-crc
  53. May  5 05:05:00 kernel: [   10.510000] CONSOLE: 026738.663 sprom_read_pci: buf[0] = 0xffff, returning bad-crc
  54. May  5 05:05:00 kernel: [   10.520000] CONSOLE: 026738.664 sprom_read_pci: buf[0] = 0xffff, returning bad-crc
  55. May  5 05:05:00 kernel: [   10.530000] CONSOLE: 026738.664 srom rev:0
  56. May  5 05:05:00 kernel: [   10.530000] CONSOLE: 026738.664 initvars_srom_pci, SROM CRC Error
  57. May  5 05:05:00 kernel: [   10.540000] CONSOLE: 026738.664 initvars_srom_pci, Using external nvram
  58. May  5 05:05:00 kernel: [   10.550000] CONSOLE: 026738.665 wlc_ucode_download: wl0: Loading non-MU ucode
  59. May  5 05:05:00 kernel: [   10.550000] CONSOLE: 026738.665 reclaim section 0: Returned 216 bytes to the heap
  60. May  5 05:05:00 kernel: [   10.560000] CONSOLE: 026738.665 initvars_cis_pci: Not CIS format
  61. May  5 05:05:00 kernel: [   10.570000] CONSOLE: 026738.683 sprom_read_pci: buf[0] = 0xffff, returning bad-crc
  62. May  5 05:05:01 kernel: [   10.570000] CONSOLE: 026738.697 sprom_read_pci: buf[0] = 0xffff, returning bad-crc
  63. May  5 05:05:01 kernel: [   10.580000] CONSOLE: 026738.704 sprom_read_pci: buf[0] = 0xffff, returning bad-crc
  64. May  5 05:05:01 kernel: [   10.590000] CONSOLE: 026738.711 sprom_read_pci: buf[0] = 0xffff, returning bad-crc
  65. May  5 05:05:01 kernel: [   10.600000] CONSOLE: 026738.713 sprom_read_pci: buf[0] = 0xffff, returning bad-crc
  66. May  5 05:05:01 kernel: [   10.600000] CONSOLE: 026738.713 srom rev:0
  67. May  5 05:05:01 kernel: [   10.610000] CONSOLE: 026738.713 initvars_srom_pci, SROM CRC Error
  68. May  5 05:05:01 kernel: [   10.610000] CONSOLE: 026738.713 initvars_srom_pci, Using external nvram
  69. May  5 05:05:01 kernel: [   10.620000] CONSOLE: 026738.713 wlc_bmac_attach, deviceid 0x43c5 nbands 1
  70. May  5 05:05:01 kernel: [   10.620000] dhdpcie_download_code_array: Download, Upload and compare succeeded (4366c0-roml/pcie-ag-splitrx-fdap-mbss-mfp-wnm-osen-wl11k-wl11u-txbf-pktctx-amsdutx-ampduretry-chkd2hdma-proptxstatus-11nprop-obss-dbwsw-ringer-dmaindex16-bgdfs-hostpmac-txpwr-stamon, 2018.08.23.143625, 2018/08/23 14:36:25).
  71. May  5 05:05:01 kernel: [   10.620000] dhdpcie_bus_write_vars: Download, Upload and compare of NVRAM succeeded.
  72. May  5 05:05:01 kernel: [   10.660000] CONSOLE: 026738.713 ipxotp_init: mapping otpbase at 0x18007000 to 0x18007000
  73. May  5 05:05:01 kernel: [   10.670000] CONSOLE: 026738.732 ipxotp_init: mapping otpbase at 0x18007000 to 0x18007000
  74. May  5 05:05:01 kernel: [   10.680000] CONSOLE: 026738.732 wl0: wlc_bmac_attach: chiprev 4 corerev 65 cccap 0x58400009 maccap 0xf0018705 band 5G, phy_type 11 phy_rev 33
  75. May  5 05:05:01 kernel: [   10.690000] CONSOLE: 026738.732 enable 1: q0 frmcnt 0, wrdcnt 0, q1 frmcnt 0, wrdcnt 0
  76. May  5 05:05:01 kernel: [   10.700000] CONSOLE: 026738.732 enable 1: q0 frmcnt 0, wrdcnt 0, q1 frmcnt 0, wrdcnt 0
  77. May  5 05:05:01 kernel: [   10.710000] CONSOLE: 026738.733 ipxotp_init: mapping otpbase at 0x18007000 to 0x18007000
  78. May  5 05:05:01 kernel: [   10.720000] CONSOLE: 026738.734 wl0: wlc_stf_txcore_shmem_write: No clock
  79. May  5 05:05:01 kernel: [   10.720000] CONSOLE: 026738.734 wl0: wlc_ampdu_tx_set: AGG Mode = MAC+AQM txmaxpkts 512
  80. May  5 05:05:01 kernel: [   10.730000] CONSOLE: 026738.736 wl_eventq_dup_event: wl_eventq not initialized
  81. May  5 05:05:01 kernel: [   10.740000] CONSOLE: 026738.736 wl_eventq_dup_event: wl_eventq not initialized
  82. May  5 05:05:01 kernel: [   10.750000] CONSOLE: 026738.736 wl0: Broadcom BCM4366 802.11 Wireless Controller 10.10.69.69027 (r766943)
  83. May  5 05:05:01 kernel: [   10.750000] CONSOLE: 026738.736 SPLITRX_MODE_2 enabled : tcmsegsize 160
  84. May  5 05:05:01 kernel: [   10.760000] CONSOLE: 026738.736 TCAM: 512 used: 238 exceed:0
  85. May  5 05:05:01 kernel: [   10.770000] CONSOLE: 026738.736 reclaim section 1: Returned 178072 bytes to the heap
  86. May  5 05:05:01 kernel: [   10.770000] CONSOLE: 026738.736 ThreadX v5.6 initialized
  87. May  5 05:05:01 kernel: [   10.780000] CONSOLE:
  88. May  5 05:05:01 kernel: [   10.780000] CONSOLE: 026738.953 wl0: wlc_enable_probe_req: state down, deferring setting of host flags
  89. May  5 05:05:01 kernel: [   10.790000] CONSOLE: 026738.953 wl0: wlc_enable_probe_req: state down, deferring setting of host flags
复制代码
回复 支持 反对

使用道具 举报

发表于 2019-4-8 13:20 | 显示全部楼层
看起来cfe里的情况和我预计的不太一样,换回斐讯的cfe这次正常了
回复 支持 反对

使用道具 举报

发表于 2019-4-9 01:06 | 显示全部楼层
本帖最后由 paldier 于 2019-4-9 01:08 编辑
  1. 0                 0x0               LZMA compressed data, properties: 0x5D, dictionary size: 65536 bytes, invalid uncompressed size: -6017808409882248960 bytes
  2. 3                 0x3               LZMA compressed data, properties: 0x01, invalid dictionary size: -1673986048 bytes, invalid uncompressed size: -2853912530954018166 bytes
  3. 1528              0x5F8             LZMA compressed data, properties: 0x5E, invalid dictionary size: 598933504 bytes, invalid uncompressed size: -7595198923860743762 bytes
复制代码

不知道博通到底怎么魔改的,cfe里我找不到解压的地方
  1. ff ff ff ff ff ff ff ff
复制代码
加上被舍弃的一段仍然无法识别

点评

上面的是用3100的cfe启动的效果? cfe里的nvram参数在k3里是0x400到0x1400;3100中是0x400到0x1480吧  详情 回复 发表于 2019-4-9 12:46
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-9 12:46 | 显示全部楼层
本帖最后由 lostlonger 于 2019-4-9 12:48 编辑
paldier 发表于 2019-4-9 01:06
不知道博通到底怎么魔改的,cfe里我找不到解压的地方
加上被舍弃的一段仍然无法识别

上面的是用3100的cfe启动的效果?

cfe里的nvram参数在k3里是0x400到0x1400;3100中是0x400到0x1480吧

cfe的阶段2怎么压缩的到没研究过


回复 支持 反对

使用道具 举报

发表于 2019-4-10 20:38 | 显示全部楼层
本帖最后由 paldier 于 2019-4-10 20:39 编辑
lostlonger 发表于 2019-4-9 12:46
上面的是用3100的cfe启动的效果?

cfe里的nvram参数在k3里是0x400到0x1400;3100中是0x400到0x1480吧
...

其实我们可以学ddwrt用双nvram,刚好k3有个nvram备份分区,第一个分区保留给cfe使用,第二个给固件使用,这样第二个使用128k也不会和cfe有任何冲突
我没记错的话斐讯官方第二个nvram应该是空的,也就是cfe不会读写这个分区

点评

行不通的,我以前试过,原因是:读nvram分区是靠的查找魔数FLSH,写是用mtd方式写nvram分区。 进系统后,你可以把nvram分区格了,重启时,在第二nvram读到flsh,就会继续读参数,系统启动后继续用这些参数,你会发现  详情 回复 发表于 2019-4-11 13:55
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-11 13:55 | 显示全部楼层
paldier 发表于 2019-4-10 20:38
其实我们可以学ddwrt用双nvram,刚好k3有个nvram备份分区,第一个分区保留给cfe使用,第二个给固件使用, ...

行不通的,我以前试过,原因是:读nvram分区是靠的查找魔数FLSH,写是用mtd方式写nvram分区。
进系统后,你可以把nvram分区格了,重启时,在第二nvram读到flsh,就会继续读参数,系统启动后继续用这些参数,你会发现,重置永远不会生效,

你要是让内核用第二nvram分区,只有改内核里面底层nvram驱动
回复 支持 反对

使用道具 举报

发表于 2019-4-11 15:31 来自手机 | 显示全部楼层
lostlonger 发表于 2019-4-11 13:55
行不通的,我以前试过,原因是:读nvram分区是靠的查找魔数FLSH,写是用mtd方式写nvram分区。
进系统后, ...

就是改驱动,注册nvram设备用的是分区名,读写靠magic确定位置
回复 支持 反对

使用道具 举报

发表于 2019-4-11 18:46 | 显示全部楼层
lostlonger 发表于 2019-4-11 13:55
行不通的,我以前试过,原因是:读nvram分区是靠的查找魔数FLSH,写是用mtd方式写nvram分区。
进系统后, ...
  1.         if (nvram_get_int("k3nvram")!=1){
  2.                 nvram_set_int("k3nvram",1);
  3.                 nvram_commit();
  4.                 doSystem("dd if=/dev/mtd1 of=/tmp/nvram  2>/dev/null");
  5.                 doSystem("dd if=/tmp/nvram of=/dev/mtd2  2>/dev/null");
  6.                 logmessage("K3", "创建nvram第二分区");
  7.                 logmessage("K3", "重启");
  8.                 _dprintf("k3 : reboot\n");
  9.                 doSystem("reboot");
  10.         }
复制代码
  1.         for (i = 0; i < MAX_MTD_DEVICES; i++) {
  2.                 nvram_mtd = get_mtd_device(NULL, i);
  3.                 if (!IS_ERR(nvram_mtd)) {
  4.                         if (!strcmp(nvram_mtd->name, "nvram_cfe")) {
  5.                                 printk(KERN_EMERG "found cfe nvram\n");
  6.                                 //continue;
  7.                         }
  8.                         if (!strcmp(nvram_mtd->name, "nvram") &&
  9.                             nvram_mtd->size >= nvram_space) {
  10.                                 printk(KERN_EMERG "found base nvram\n");
  11.                                 break;
  12.                         }
  13.                         put_mtd_device(nvram_mtd);
  14.                 }
  15.         }
复制代码

做一个临时固件专门复制nvram,然后刷入其他固件就可以直接使用了
回复 支持 反对

使用道具 举报

发表于 2019-4-11 23:21 | 显示全部楼层
  1. /tmp$ cat /proc/mtd
  2. dev:    size   erasesize  name
  3. mtd0: 00080000 00020000 "boot"
  4. mtd1: 00100000 00020000 "nvram_cfe"
  5. mtd2: 00280000 00020000 "nvram"
  6. mtd3: 03c00000 00020000 "linux"
  7. mtd4: 03a3cfd0 00020000 "rootfs"
  8. mtd5: 04000000 00020000 "brcmnand"
  9. /tmp$ nvram show |grep nvram
  10. size: 64781 bytes (66291 left)
复制代码

不知道为什么bootdev为什么最多只允许有3个分区,再多就会导致rootfs无法识别

点评

要修改/release/src-rt-7.14.114.x/src/linux/linux-2.6.36/arch/arm/mach-brcm-hnd/board_ns.c,看我的修改点,用手机看的,不好找,要把数字与分区序号相同  详情 回复 发表于 2019-4-12 11:18
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2024-6-16 15:17

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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

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