找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 43458|回复: 287

[红米ax6000] 红米AX6000硬改2GB内存+硬改512MB闪存教程(含硬改USB的可能性)

 火... [复制链接]
本帖最后由 lgs2007m 于 2024-3-9 19:04 编辑




MediaTek Filogic 系列路由器串口救砖教程

感谢蝈蝈大佬开发的 mtk_uartboot 工具,暗云大佬提供的教程,这样就可以随便刷砖了
适用系列:MediaTek MT7622、MT7981、MT7986、MT7988 SoC

有了串口TTL救砖,天下无砖!



目录

【1】硬改2GB内存
【2】硬改512MB闪存



注意:拆开机子无保修!!无保修!!无保修!!

有硬改的大佬说过,OP使用512M内存基本够用,1G富余,2G浪费,而且MTK不太耗内存,不建议硬改内存。
我改512MB闪存是了装docker,但是发现镜像太大,512MB还是太小,也不建议改闪存,我纯粹是为了捣鼓折腾!


【关于硬改USB的可能性】
MT7986A的datasheet等资料github有开源,有大佬需要可以去看看,一起捣鼓
感谢大佬提供的MT7986A Datasheet~有pin map,我整理一个引脚图,可以看到USB2.0和3.0点位。
其中绿色和蓝色为两组USB2.0的DM(USB HS/FS/LS data pin Data-)和DP(USB HS/FS/LS data pin Data+)
黄色为一组USB3.0的RXN、RXP(SSUSB data pin RX-、RX+)和TXN、TXP(SSUSB data pin TX- TX+)
其中一组USB2.0和3.0组成完整的USB3.0

感谢thunder35大佬,为了验证是否有USB引线,无私拆了自己的红米AX6000的CPU,图片如下:

可以看到绿色和蓝色的USB2.0没有引线出来(没有过孔,背面也没有发现引线),USB3.0部分引脚也没有引出还部分接地了,要硬改USB只能拆U引线了。
可能USB3、USB2 IP核的
AVDD09、12、18、33这几个0.9V、1.2V、1.8V、3.3V供电也需要恢复,难度进一步加大……

完整的焊盘图如下:


和大佬一起想加个CPU垫片,把全部USB IP核的供电补齐、数据引脚引出来,但是内径0.15mm/外径0.3mm的盘中孔打板太贵了,目前只能放弃


提供红米AX6000的CPU垫片PCB工程文件,嘉立创EDA专业版的,有能力有条件的可以尝试:




【1】硬改2GB内存

感谢thunder35大佬,率先硬改了红米AX6000内存,分享了经验,我只是跟着大佬捣鼓了一下~
原贴:MT7986是真不错,大佬们快来玩啊
https://www.right.com.cn/forum/thread-8257694-1-1.html

首先选择内存颗粒。
MT7986A理论支持的DRAM是16bit DDR3/DDR4。
香蕉派 BPI-R3 开源路由器开发板用的也是MT7986A,内存是2GB,查了图片颗粒是K4AAG165WA-BCWE


它的在线wiki开发文档 : https://wiki.banana-pi.org/Banana_Pi_BPI-R3 里有个MT7986A Datasheet for BPI-R3。
貌似MT7986A Datasheet for BPI-R3里面的pin map引脚定义被删掉了。



里面特性介绍了说DDR3-2133支持到512MB、DDR4-3200支持到2GB,atf编译里面也是这样显示的,支持更大内存可能要自己写代码吧

根据acwifi拆机,同MT7986A处理器轻舟XDR6088拆机看到用的是ESMT 512MB DDR3-2133(M15T4G16256A-EFB)
红米AX6000拆机用的是三星 512MB DDR4-3200(K4A4G165WE-BCWE 4Gb 256Mx16 3200Mbps 1.2V 0~85°C 96FBGA)

我直接省事,选择了三星的颗粒,查询16位DDR4-3200的有以下颗粒:
4GB颗粒:K4ABG165WA-MCWE(32Gb 2Gx16 3200Mbps 1.2V 0~85°C 96FBGA)
2GB颗粒:K4AAG165WA-BCWE(16Gb 1Gx16 3200Mbps 1.2V 0~85°C 96FBGA)
1GB颗粒:K4A8G165WC-BCWE(8Gb 512Mx16 3200Mbps 1.2V 0~85°C 96FBGA)
1GB颗粒:K4A8G165WB-BCWE(8Gb 512Mx16 3200Mbps 1.2V 0~85°C 96FBGA)
512MB颗粒:K4A4G165WE-BCWE(4Gb 256Mx16 3200Mbps 1.2V 0~85°C 96FBGA)

我选择的是8GB单面4颗粒的1Rx16内存条子,它用就是2GB的颗粒。4GB单面4颗粒的1Rx16内存条子用的是1GB的颗粒。


选好颗粒就是拆机焊颗粒。
注意:拆开机子无保修!!无保修!!无保修!!
先拆颗粒,因为原厂基本都是高温焊锡,所以拆内存条上的颗粒我热风枪用440度、风速1或2,中枪嘴,加焊油后在颗粒上方转圈吹,吹大概25秒后,用镊子触碰颗粒可以自动还原,说明焊锡已经融化,直接镊子夹起颗粒,悬空冷却,这样不会破坏焊盘上的锡球。
拆下的颗粒是带比较完整的锡球,如果有个别锡球较小,可以镊子点一点锡膏上去,用热风焊台吹,补好直到所有焊点的锡球都很均匀即可。这样可以不用植锡板植锡了。
可以看到原厂三星512MB颗粒比内存条三星2GB颗粒要小一些,不知道其他品牌的是不是这样:


拆下颗粒后建议放焊油直接用刀口烙铁清理下焊盘,不建议用吸锡带清理,新手因为容易刮伤焊盘和线路。
接着放点焊油,接下来就是焊内存颗粒。
由于电路板上没有内存大小框,所以可以标记一些点来对准焊盘,要细心点,对准好就可以热风枪焊接了,温度风速与拆时相同。
下面图片中的黄色高温胶带我贴的不好,应该贴在PCB板上,而不是屏蔽罩框架上,贴着PCB板才能挡住热风吹向其他元器件。


焊接好后不要急着上电,需要测量内存的VPP、VDD(VDDQ)供电是否对地短路,就是屏蔽罩外面的三个0欧姆电阻是否对地短路,如果没有短路可以上电了。


只要焊接没问题一般上电就能正常启动了,不用像高通那样要刷CDT,自动识别,所以改还是挺简单的~

内存测试命令:
  1. dd if=/dev/zero of=/tmp/test bs=1M count=10000000 #不死机说明内存识别没问题
复制代码
会在tmp文件夹写入一个文件,1GB内存会写入500MB左右的一个test文件,2GB内存会写入一个1000MB左右的test文件,写入没有死机说明内存识别正常。
之后可以手动删除/tmp/test这个文件。

我简单测试了下红米AX6000的功耗,待机是6W左右,CPU满载是可以到8W,如果此时无线一台手机测速,可以到15W,如果是一台手机一台电脑同时无线测速可以到20W,有时候峰值到24W。可以说无线发射很吃功耗。
我们知道红米AX6000的适配器是12V2A的,24W,我实测我的这个适配器最大稳定输出到2.6A(输出2.7A就过载保护断电了),即30W,应该是够用的。
红米AX6000的12V2A适配器(AD-0241200200CN-1)简单测试,仅供参考(仅代表我个人情况,不一定准确、通用):





【2】硬改512MB闪存
改闪存前建议先看我这篇教程的编程器救砖部分,了解下一些基本知识。
有人用旧的闪存说启动不了,建议买全新的闪存吧!!!
听说NAND FLASH有一个只能写入一次的OTP(One Time Programable)区域,高端机用这个绑定机子,不能换闪存,红米AX6000这种中低端好像没有,可以随意换闪存。

改闪存需要先知道mt798x的U-Boot和ATF(TF-A)支持哪些闪存,这样比较容易。
红米AX6000原闪存是SPI-NAND FLASH,ESMT 1Gb(128MB) F50L1G41LB,3.3V,WSON-8封装。
查看香蕉派Banana Pi论坛的教程[Tutorial] Build, customize and use MediaTek open-source U-Boot and ATF

由教程可知MediaTek SDK的atf编译中,mt798x需要选spim-nand,NAND_TYPE可选最大spim:4k+256,数据阵列4k+256一般就是4Gb(512MB)或者8Gb(1GB)的闪存,8Gb的话是2个die,4Gbx2。

再看uboot源码中的SPI-NAND闪存驱动支持哪些3.3V WSON-8封装闪存,我用的是hanwckf大佬的uboot源码uboot-mtk-20220606/drivers/mtd/nand/spi

接着就是SPI-NAND编程器,选择最便宜的CH341A编程器(买到芯片是CH341B也可以),记住要改3.3V供电,可以看我的这篇教程中的编程器救砖改。
编程器软件选McMCCRU大佬的基于CH341A的SNANDer,可以单独写分区,查看SNANDer支持的SPI-NAND闪存型号flash_support_list
如果没有你需要的,可以下载闪存datasheet向McMCCRU大佬提交需求。

具体哪些是2Gb(256MB)、4Gb(512MB)闪存可以看源码spi_nand_flash.c里面的定义,搜索关键字找:
#define _SPI_NAND_CHIP_SIZE_2GBIT     0x10000000
#define _SPI_NAND_CHIP_SIZE_4GBIT     0x20000000

我做了个对照表,查了部分信息,不一定准,仅供参考:

我选择了KIOXIA的4Gb(512MB)闪存TC58CVG2S0HRAIJ,3.3V,WSON-8封装。原TOSHIBA的4Gb(512MB)闪存TC58CVG2S0HRAIG也可以。
512M KIOXIA-TC58CVG2S0HRAIJ的阵列组织是4k+256,阵列组织是这样的:


每个page包含:
Page size 4096 bytes :Data Storage Area,存储数据的数据区
OOB(Out-Of-Band) size 256 bytes:Spare Area,存储ECC(Error Checking and Correction)校验和标记是否存在坏块的备用区
最后计算整个设备是512MB+32MB,即512MB的数据+32MB的OBB数据,512MB的叫做不含ECC_OOB的编程器固件,我们在openwrt里面备份的mtd0_spi01就是这个,512+32=544MB的叫做含ECC_OOB的编程器固件,这个需要编程器关闭闪存ECC才能读取到。
根据上面香蕉派论坛编译uboot和atf的教程,使用spim-nand的MT798x使用On-die ECC,而不是MTK's HW ECC。使用On-die ECC,我的理解是当开启闪存的内部ECC时,在写入数据时由内部自动生成ECC并记录,不需要其他设备如CPU的参与,我们可以不用管这个ECC。不对还请大佬指正!
这样我们就不需要含ECC_OOB的编程器固件了,直接用我们备份的分区在编程器写入,不用管ECC数据!

为了测试,我拆掉了原机闪存,并使用1.27*1.27mm的排针排母做了底座。当然你可以直接写好数据后焊接上去,因为已经有我踩坑了。有问题也可以飞线到闪存上用编程器重新擦写数据。
闪存的引脚以及如何和编程器连接可以看我这篇教程的编程器救砖部分。

主板焊盘上用贴片排针,买的是1.27*1.27mm的双排弯针,因为够长,可以自己调整长度。不过这个双排弯针的塑料垫片只有1mm,太低了,需要2.5mm比较合适,我又买了1.27*1.27mm双排卧式贴片排针,只用它塑料垫片。
闪存WSON-8转接板和编程器转接板是自己简单画的,白嫖嘉立创打板,转接板上用1.27*1.27mm双排2*4P贴片母座,可以买弯针的,自己凑合适的引脚,引脚长了可以剪。
贴片排针两边我又各插了2根弯针,是为了限位,防止插错,同时拔闪存的时候可以按住两边,压住排针,不至于拔到焊盘。
后面我又加两个1.27*1.27mm 2*4P的拔掉金属弹片的母座塑料,总之,防止拔闪存拖拽到焊盘。

我还看到某宝有WSON-8测试座,但是想想测试座终究测试,触点不够稳定,而且福建旁边产的好的蛮贵的,没买。
我买了个“国产”WSON-8测试座,这个测试座不能焊在WSON-8的焊盘上,而且感觉有些粗糙,不建议买。
买福建旁边产的测试座会好点,不过这种测试座需要加热台从背部焊接,或者热风枪吹背面焊接,有难度。

拆闪存和焊底座的注意点:
1.这个型号闪存底部有一个metal pad,算是比较大的焊盘,吹的时候多在中间打转吹,感觉中间焊锡差不多融化后再辐射吹两边的引脚。原厂高温焊锡加上冬天又没有加热垫,因此我风枪开430度吹了三次才吹下来,我都以为要吹坏了……记住冬天开高点温度,不超过450度吧,加焊油适当吹多10来秒,不要怕~
2.用吸锡带清理焊盘,尽量不要拖拽吸锡带,这样容易弄伤焊盘边上的绝阻焊漆。吸锡带是吸,不是拖。
3.焊底座不要用太多焊锡,可能连锡使得闪存读取失败,不要问我为什知道……如果多了可以用吸锡带吸走或烙铁吸走一些。
拆下闪存后,看到主板上闪存焊盘最大的方形焊盘连的是GND,需要用高温胶带做下绝缘。焊盘大小可以看下图:

改完座子,就可以随意折腾了。

下面需要修改uboot和atf编译的配置文件。我使用的hanwckf大佬的uboot源码仓库,站在大佬的肩膀上~
首先clone大佬源码到本地,安装依赖
  1. git clone https://github.com/hanwckf/bl-mt798x
  2. sudo apt install gcc-aarch64-linux-gnu
  3. export CROSS_COMPILE=aarch64-linux-gnu-
复制代码

为了让底层的BL2支持新的512MB闪存,需要在大佬原配置文件config上修改:
不知道为什么需要关闭atf里的NMBM,不然只能启动一次,重启后卡在BL2的NMBM初始化,同时修改spim-nand的类型为spim:4k+256
就是增加下面两行到atf-20220606-637ba581b/configs/mt7986_redmi_ax6000_defconfig
  1. # CONFIG_NMBM is not set
  2. CONFIG_SPIM_NAND_TYPE="spim:4k+256"
复制代码

NMBM是MediaTek NAND Memory bad Block Management,MediaTek的闪存坏块管理。
测试如果按大佬的默认config会开启NMBM,uboot中也开启。
进过观察红米AX6000的TTL启动信息,BL2中也开启了NMBM,说明BL2和uboot的NMBM两者不会冲突,我的出问题可能跟闪存写入或者闪存本身有关!!
东芝这个闪存的数据结构有点不同,目前看不懂。
测试后觉得只能关闭atf里的NMBM,这样BL2就不会启动NMBM。
同时增加SPIM_NAND_TYPE="spim:4k+256",因为默认是spim:2k+64,只有spim:4k+256才能启动512MB闪存。
BL2初始化NMBM报错:
  1. NOTICE:  BL2: v2.7(release):20221201-dirty
  2. NOTICE:  BL2: Built : 20:46:09, Jan 17 2023
  3. NOTICE:  WDT: disabled
  4. NOTICE:  CPU: MT7986 (2000MHz)
  5. NOTICE:  EMI: Using DDR4 settings
  6. NOTICE:  EMI: Detected DRAM size: 2048MB
  7. NOTICE:  EMI: complex R/W mem test passed
  8. NOTICE:  SPI_NAND parses attributes from parameter page.
  9. NOTICE:  SPI_NAND Detected ID 0x98
  10. NOTICE:  Page size 4096, Block size 262144, size 536870912
  11. NOTICE:  Initializing NMBM ...
  12. NOTICE:  Signature found at block 2047 [0x1ffc0000]
  13. ERROR:   NMBM configuration mismatch
  14. ERROR:   BL2: Failed to load image id 3 (-5)
复制代码

uboot的config中设置NMBM最大blocks为64,修改默认mtdparts的ubi为490MB即501760k(ubi)
就是添加下面第一行,修改下面第二行内容到uboot-mtk-20220606/configs/mt7986_redmi_ax6000_defconfig
  1. CONFIG_NMBM_MAX_BLOCKS=64
  2. CONFIG_MTDPARTS_DEFAULT="nmbm0:1024k(bl2),256k(Nvram),256k(Bdata),2048k(factory),2048k(fip),256k(crash),256k(crash_log),501760k(ubi)"
复制代码

uboot编译默认使用最少1/16闪存的空间给NMBM做坏块管理,不过文件里面说对于大闪存1/16有点多,512MB/16=32MB。
另外一个限制NMBM坏块管理空间的配置是CONFIG_NMBM_MAX_BLOCKS,我设置为64,即64*64pages=64*64*4096bytes=16MB。
当NMBM最大块数的大小小于1/16闪存空间时,用最大块数的大小作为NMBM坏块管理空间,这里即16MB。
同时修改默认mtdparts的ubi大小为490MB即501760k(ubi)。
因为前面BL2、Nvram、Bdata、Factory、FIP、crash和crash_log这7个分区刚好占6MB。
512-6-16=490MB=501760k
修改后启动时TTL查看nmbm信息:
  1. MT7986> nmbm nmbm0 info
  2. nmbm0:
  3. Total blocks:                  2048
  4. Data blocks:                   1984
  5. Management start block:        1984
  6. Info table size:               0x4000
  7. Main info table start block:   1984
  8. Backup info table start block: 1987
  9. Signature block:               2047
  10. Mapping blocks top address:    2041
  11. Mapping blocks limit address:  1988
复制代码
可以看到坏块管理开始block是1984,总block是2048,2048-1984=64个block,就是我设置的NMBM最大blocks为64。

我看到编译后的uboot的config有一条CONFIG_MTK_BROM_HEADER_INFO="media=snand;nandinfo=2k+64",不知道对uboot有没有影响,我找到文件也改了
找到文件uboot-mtk-20220606/arch/arm/mach-mediatek/Kconfig
将config MTK_BROM_HEADER_INFO中的原来的nandinfo=2k+64改为nandinfo=4k+256,不知道有用没有……
经对比修改前后编译出来的文件,只有编译日期不同,所以这个修改是不需要的……
  1.   default "media=snand;nandinfo=4k+256" if TARGET_MT7981 || TARGET_MT7986 || TARGET_MT7988
复制代码
修改好后可以编译了
  1. cd bl-mt798x
  2. SOC=mt7986 BOARD=redmi_ax6000 ./build.sh
复制代码

如果编译出现报缺少dts、dtb文件错误,就安装device-tree-compiler:
  1. sudo apt-get install device-tree-compiler
复制代码
出现fvp-base-gicv3-psci.pre.dts:128.20-133.5: Warning (simple_bus_reg)或者Unable to find python You must have python installed in order错误,就安装python-is-python3:
  1. sudo apt-get install python-is-python3
复制代码

编译成功会显示build done,最后文件输出在这里atf-20220606-637ba581b/build/mt7986/release
复制bl2.imgfip.bin,这两个文件对应就是BL2和FIP分区的文件。

我使用的固件是237大佬的闭源源码编译的,我fork后修改了ax6000-uboot的DTS(Device Tree Source)
target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7986a-xiaomi-redmi-router-ax6000-uboot.dts
修改DTS,将原来partition中的ubi 110MB的16进制0x6e00000改为490MB的16进制0x1ea00000
  1.   /* ubi partition is the result of squashing
  2.   * consecutive stock partitions:
  3.   * - ubi
  4.   * - ubi1
  5.   * - overlay
  6.   */

  7. partition@600000 {
  8.   label = "ubi";
  9.   reg = <0x600000 0x1ea00000>;
  10.   };

  11. /* For 512MB NAND, ubi 490MB, last 16 MiB is reserved for NMBM bad block table */
复制代码

改完也可以重新编译固件了。

有一点不太明白,原来128MB闪存,DTS中说预留了12MB给NMBM坏块管理,按之前的理解计算128MB/16=8MB,实际也是8MB做坏块管理。
128-110-6-8=4MB,还剩下4MB不知道是如何算到NMBM坏块管理的呢?

刷机文件bl2.img和fip.bin,固件都编译好了,可以开刷了~

首先将bl2.img改名为bl2.bin,并复制你的分区备份文件放到同一个文件夹。
mtd1_BL2.bin  mtd2_Nvram.bin  mtd3_Bdata.bin  mtd4_Factory.bin mtd5_FIP.bin  mtd6_crash.bin  mtd7_crash_log.bin
crash和crash_log是两个256K的全是0xFF的文件。
然后用WinHex之类的二进制编辑软件打开mtd1_BL2.bin和bl2.bin,先用FF填充mtd1_BL2.bin,然后复制bl2.bin内容写入到mtd1_BL2.bin,最后点保存。
同理操作将fip.bin写入填充后的mtd5_FIP.bin,得到新的mtd1_BL2.bin和mtd5_FIP.bin,直接用WinHex先将7个文件按顺序合并为一个6MB的mtd.bin文件,再写入。
或者使用Bin Merger软件合并。当然分开写入也可以,建议先擦除对应分区再写入。




mtd1_BL2、mtd5_FIP、mtd6_crash、mtd7_crash_log和固件可以到我的仓库下载编译修改好的,下载后可以检查下文件的md5,然后和自己的mtd2_Nvram、mtd3_Bdata、mtd4_Factory文件合并为一个6M的mtd文件就行了。
下载链接:红米AX6000改512MB闪存刷机文件
squashfs-sysupgrade.bin固件已集成kmod-mtd-rw,可以运行下面命令解锁分区的写入,后期可以更新BL2和FIP:
  1. insmod /lib/modules/$(uname -r)/mtd-rw.ko i_want_a_brick=1
复制代码
我的红米AX6000改512MB闪存atf_uboot以及固件云编译https://github.com/lgs2007m/Redmi-AX6000-SPI-NAND-512MB

下面要刷写闪存了,下载SNANDer软件,就是源码仓库中Windows文件夹的SNANDer.exe和驱动zadig-2.3.exe,然后按照install文档运行驱动,插上CH341A编程器,点击安装驱动。
SNANDer.exe放在存放刷机文件的文件夹,然后在文件夹空白地方右键->在终端中打开,或者用CMD打开该文件夹路径。

输入下面命令先擦写整个闪存,再写入6MB的合并mtd.bin
  1. SNANDer -e
  2. SNANDer -v -w mtd.bin -a 0x0 -l 0x600000
复制代码

输出是下面这样的,我们会看到会报有坏块,这个不用管。因为大的闪存一般存在坏块,只要前面刷引导的地方没有坏块就行了。
底层引导启动后会有上层的坏块管理程序,如NMBM去重新映射坏块。我这个闪存有5个坏block。
PS:SNANDer这里显示OOB Size: 128B,与上面我说的256不一样,我觉可能是按启动内部ECC的情况吧。
  1. E:\>SNANDer -e

  2. SNANDer - Serial Nor/nAND/Eeprom programmeR v.1.7.8b2 by McMCC <mcmcc@mail.ru>

  3. Found programmer device: WinChipHead (WCH) - CH341A
  4. Device revision is 3.0.4
  5. spi_nand_probe: mfr_id = 0x98, dev_id = 0xed, dev_id_2 = 0x51
  6. Get Status Register 1: 0x00
  7. Get Status Register 2: 0x12
  8. Using Flash ECC.
  9. Detected SPI NAND Flash: KIOXIA TC58CVG2S0HRAIJ, Flash Size: 512MB, OOB Size: 128B
  10. ERASE:
  11. Set full erase chip!
  12. Erase addr = 0x0000000000000000, len = 0x0000000020000000
  13. spi_nand_erase_block : erase block fail, block = 0xba, status = 0x4
  14. spi_nand_erase_internal : Erase Fail at addr = 0x2e80000, len = 0x20000000, block_idx = 0xba
  15. spi_nand_erase_block : erase block fail, block = 0x40f, status = 0x4
  16. spi_nand_erase_internal : Erase Fail at addr = 0x103c0000, len = 0x20000000, block_idx = 0x40f
  17. spi_nand_erase_block : erase block fail, block = 0x4a7, status = 0x4
  18. spi_nand_erase_internal : Erase Fail at addr = 0x129c0000, len = 0x20000000, block_idx = 0x4a7
  19. spi_nand_erase_block : erase block fail, block = 0x600, status = 0x4
  20. spi_nand_erase_internal : Erase Fail at addr = 0x18000000, len = 0x20000000, block_idx = 0x600
  21. spi_nand_erase_block : erase block fail, block = 0x601, status = 0x4
  22. spi_nand_erase_internal : Erase Fail at addr = 0x18040000, len = 0x20000000, block_idx = 0x601
  23. Erase 100% [536870912] of [536870912] bytes
  24. Elapsed time: 7 seconds
  25. Status: OK

  26. E:\>SNANDer -v -w mtd.bin -a 0x0 -l 0x600000

  27. SNANDer - Serial Nor/nAND/Eeprom programmeR v.1.7.8b2 by McMCC <mcmcc@mail.ru>

  28. Found programmer device: WinChipHead (WCH) - CH341A
  29. Device revision is 3.0.4
  30. spi_nand_probe: mfr_id = 0x98, dev_id = 0xed, dev_id_2 = 0x51
  31. Get Status Register 1: 0x00
  32. Get Status Register 2: 0x12
  33. Using Flash ECC.
  34. Detected SPI NAND Flash: KIOXIA TC58CVG2S0HRAIJ, Flash Size: 512MB, OOB Size: 128B
  35. WRITE:
  36. Write addr = 0x0000000000000000, len = 0x0000000000600000
  37. Written 100% [6291456] of [6291456] bytes
  38. Elapsed time: 22 seconds
  39. Status: OK
  40. VERIFY:
  41. Read addr = 0x0000000000000000, len = 0x0000000000600000
  42. Read 100% [6291456] of [6291456] bytes
  43. Elapsed time: 58 seconds
  44. Status: OK
复制代码

刷完后可以装上闪存了,然后上电后5秒内按住RESET,按10秒,就可以进入uboot webui刷写编译好的ubi 490MB的固件了。
系统启动后可以查看分区,是这样的:
  1. root@ImmortalWrt:~# cat /proc/mtd
  2. dev:    size   erasesize  name
  3. mtd0: 20000000 00040000 "spi0.1"
  4. mtd1: 00100000 00040000 "BL2"
  5. mtd2: 00040000 00040000 "Nvram"
  6. mtd3: 00040000 00040000 "Bdata"
  7. mtd4: 00200000 00040000 "Factory"
  8. mtd5: 00200000 00040000 "FIP"
  9. mtd6: 00040000 00040000 "crash"
  10. mtd7: 00040000 00040000 "crash_log"
  11. mtd8: 1ea00000 00040000 "ubi"
  12. root@ImmortalWrt:~# cat /proc/partitions
  13. major minor  #blocks  name

  14.   31        0     524288 mtdblock0
  15.   31        1       1024 mtdblock1
  16.   31        2        256 mtdblock2
  17.   31        3        256 mtdblock3
  18.   31        4       2048 mtdblock4
  19.   31        5       2048 mtdblock5
  20.   31        6        256 mtdblock6
  21.   31        7        256 mtdblock7
  22.   31        8     501760 mtdblock8
  23. 253        0      44144 ubiblock0_1
  24. 252        0    1020928 zram0
  25. root@ImmortalWrt:~# ubinfo -a
  26. UBI version:                    1
  27. Count of UBI devices:           1
  28. UBI control device major/minor: 10:62
  29. Present UBI devices:            ubi0

  30. ubi0
  31. Volumes count:                           3
  32. Logical eraseblock size:                 253952 bytes, 248.0 KiB
  33. Total amount of logical eraseblocks:     1960 (497745920 bytes, 474.6 MiB)
  34. Amount of available logical eraseblocks: 0 (0 bytes)
  35. Maximum count of volumes                 128
  36. Count of bad physical eraseblocks:       0
  37. Count of reserved physical eraseblocks:  39
  38. Current maximum erase counter value:     2
  39. Minimum input/output unit size:          4096 bytes
  40. Character device major/minor:            249:0
  41. Present volumes:                         0, 1, 2

  42. Volume ID:   0 (on ubi0)
  43. Type:        dynamic
  44. Alignment:   1
  45. Size:        14 LEBs (3555328 bytes, 3.3 MiB)
  46. State:       OK
  47. Name:        kernel
  48. Character device major/minor: 249:1
  49. -----------------------------------
  50. Volume ID:   1 (on ubi0)
  51. Type:        dynamic
  52. Alignment:   1
  53. Size:        178 LEBs (45203456 bytes, 43.1 MiB)
  54. State:       OK
  55. Name:        rootfs
  56. Character device major/minor: 249:2
  57. -----------------------------------
  58. Volume ID:   2 (on ubi0)
  59. Type:        dynamic
  60. Alignment:   1
  61. Size:        1725 LEBs (438067200 bytes, 417.7 MiB)
  62. State:       OK
  63. Name:        rootfs_data
  64. Character device major/minor: 249:3
复制代码

附上128MB闪存的ubinfo -a作对比:
  1. root@ImmortalWrt:~# ubinfo -a
  2. UBI version:                    1
  3. Count of UBI devices:           1
  4. UBI control device major/minor: 10:62
  5. Present UBI devices:            ubi0

  6. ubi0
  7. Volumes count:                           3
  8. Logical eraseblock size:                 126976 bytes, 124.0 KiB
  9. Total amount of logical eraseblocks:     880 (111738880 bytes, 106.5 MiB)
  10. Amount of available logical eraseblocks: 0 (0 bytes)
  11. Maximum count of volumes                 128
  12. Count of bad physical eraseblocks:       0
  13. Count of reserved physical eraseblocks:  19
  14. Current maximum erase counter value:     2
  15. Minimum input/output unit size:          2048 bytes
  16. Character device major/minor:            249:0
  17. Present volumes:                         0, 1, 2

  18. Volume ID:   0 (on ubi0)
  19. Type:        dynamic
  20. Alignment:   1
  21. Size:        27 LEBs (3428352 bytes, 3.2 MiB)
  22. State:       OK
  23. Name:        kernel
  24. Character device major/minor: 249:1
  25. -----------------------------------
  26. Volume ID:   1 (on ubi0)
  27. Type:        dynamic
  28. Alignment:   1
  29. Size:        356 LEBs (45203456 bytes, 43.1 MiB)
  30. State:       OK
  31. Name:        rootfs
  32. Character device major/minor: 249:2
  33. -----------------------------------
  34. Volume ID:   2 (on ubi0)
  35. Type:        dynamic
  36. Alignment:   1
  37. Size:        474 LEBs (60186624 bytes, 57.3 MiB)
  38. State:       OK
  39. Name:        rootfs_data
  40. Character device major/minor: 249:3
复制代码

启动时的TTL输出,登录后查看分区信息和软件包剩余空间:


目前改闪存已经运行多天,目前还没有发现问题。
有什么再反馈了。

下面付上

关于TTL:我发现使用改了3.3V的CH341A/B土豪金的TTL连接路由器,只要是128M闪存都可以正常使用,但是用512M闪存的时候只要接上TTL的TX(即路由器的RX),就会卡System halt!不能启动。而我的FT232RL USB转TTL无论是128M还是512M都可以正常使用。
我断电路由器,保持TTL接路由器然后通电CH341A,发现路由器上的RX对地电压1.6V左右,路由器TX对地电压2.3V。我换了FT232RL TTL,设置输出3.3V电平,发现RX对地是1.3V、TX对地都是1.6V左右。我在CH341A/B土豪金TTL的TX发送端上面串联了一个4.7k电阻,此时然后再测路由器RX对地1.2V、TX对地1V,此时512M闪存可以正常启动了。
记录下,给大家避坑。








本帖子中包含更多资源

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

×

点评

一直没搞明白硬改闪存后,修改DTS里面UBI的分区大小是怎么确定的?比如楼主改成490M的0x1ea00000?  发表于 2024-2-20 13:13
春节前找了时间插线飞了USB2蓝色2根线,测试电阻应该没问题,进系统 没任何反应,dmesg没信息,也许需要你说的供电才能工作,拆U太难恢复,不知道磨掉U上层是不是能看到触点。  发表于 2023-2-2 10:04

评分

参与人数 23恩山币 +31 收起 理由
校友*** + 2 感谢你的分享,无论怎样,你都是最无私的人.
cqh*** + 1 几亿网民,我们俩竟然神奇的在恩山相遇了!.
love*** + 2 强大的恩山!(以下重复1万次)
davi*** + 1 你好,久仰卧龙大名,在下凤雏!.
ji*** + 1 强大的恩山!(以下重复1万次)
黑色*** + 1 你好,久仰卧龙大名,在下凤雏!.
ns*** + 1 2333
Biu*** + 1 你好,久仰卧龙大名,在下凤雏!
qsa*** + 2 你好,久仰卧龙大名,在下凤雏!
小牛*** + 1 加鸡腿!
wiz*** + 1 强大的恩山!(以下重复1万次)
3831*** + 1 NB
我妻*** + 2 强大的恩山!(以下重复1万次)
人生*** + 1 虽然用到退役也是空闲1G多内存,但不能没有.
im*** + 2 等阳没了搞USB
keke*** + 1 支持折腾~
x*** + 1 强大的恩山!(以下重复1万次)
溜*** + 1 感谢你的分享,无论怎样,你都是最无私的人.
xx*** + 2 兄弟,你肥皂又掉了…
chan*** + 1 强大的恩山!(以下重复1万次)
delu*** + 1 感谢你的分享,无论怎样,你都是最无私的人.
Devi*** + 2 这个可以了,顺便问一句,出不出魔改好的机.
zengh*** + 2 一看就是觉得高端、大气、上档次!

查看全部评分

我的恩山、我的无线 The best wifi forum is right here.
厉害啊,比高通简单很多
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

比高通简单很多啊,厉害
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

动手能力真强,顶一下
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

不用回复可见的帖子要顶一下

点评

谢谢,我个人很讨厌回复可见,就那么点东西没有技术含量,就是分享而已  详情 回复 发表于 2022-11-5 16:27
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
superzjg 发表于 2022-11-5 16:24
不用回复可见的帖子要顶一下

谢谢,我个人很讨厌回复可见,就那么点东西没有技术含量,就是分享而已
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

优秀如你!!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

先收藏了
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

动手能力真强
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

好像也用不上这么多内存,又不能docker,也没有USB

点评

我知道,看我第二句话  详情 回复 发表于 2022-11-5 17:04
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
sw1999 发表于 2022-11-5 17:03
好像也用不上这么多内存,又不能docker,也没有USB

我知道,看我第二句话
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

动手能力不错!~MTK真简单了不少,赞!·
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报


不用回复可见的帖子要顶一下
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

来自手机 | 显示全部楼层
可以帮我换内存吗

点评

换内存需要拆机,没有保修,内存颗粒也不便宜,不值得哦  详情 回复 发表于 2022-11-5 17:22
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
xcgf 发表于 2022-11-5 17:20
可以帮我换内存吗

换内存需要拆机,没有保修,内存颗粒也不便宜,不值得哦

点评

大佬啊 一定要用 1Rx16 的嘛  详情 回复 发表于 2022-12-29 17:09
大佬啊 可以用风枪拆嘛 真要上焊台的话是不是整块主板拆下来放上  详情 回复 发表于 2022-11-7 15:49
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 05:02

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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

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