|
楼主 |
发表于 2020-1-5 17:50
|
显示全部楼层
本帖最后由 jiuweiljp 于 2020-1-11 18:10 编辑
拆了光猫huawei hg8321 小板,吐槽下这个光猫没有板载内存,应该是片载内存(64MB)垃圾一个。
另外这个huawei 把u-boot存放的位置配置文件放置到很远(32MB以后),给复制带来了很大困难,在openwrt中也有内存限制
在4300的机器上不能直接复制/dev/mtd11(0x2000000-0x8000000,32MB-128MB),如果自接复制会造成缓冲溢出,
只能用nanddump分片断复制,并且复制了2段后要换上原启动时用的flash芯片,清理下缓存,然后换芯片复制第三段。写新的flash 芯片也同样。
希望大家能找到大内存(256MB以上最好512MB)的设备干着活,不然会烦死
就TM二个分区,第二个分区还很大(1MB-128MB)配置文件不知道在那个地址上
- SD511x chip id:0x51163100
- Special nand id table Version 1.33
- Hisilicon Nand Flash Controller V301 Device Driver, Version 1.10
- Nand ID: 0x2C 0xF1 0x80 0x95 0x02 0x00 0x00 0x00
- now using default nand flash type,Block:128KB Page:2KB!
- Nand(Hardware): Block:128KB Page:2KB Chip:128MB OOB:64B ECC:4bit
- NAND device: Manufacturer ID: 0x2c, Chip ID: 0xf1 (Micron default_nand_flash), 128MiB, page size: 2048, OOB size: 64
- NAND_ECC_NONE selected by board driver. This is not recommended!
- 3 cmdlinepart partitions found on MTD device hinand
- Creating 3 MTD partitions on "hinand":
- 0x000000000000-0x000000100000 : "startcode"
- 0x000000100000-0x000008000000 : "ubifs"
- 0x000008000000-0x000008000000 : "reserved"
- mtd: partition "reserved" is out of reach -- disabled
复制代码
arm v7的核心
- Booting Linux on physical CPU 0x0
- Linux version 3.10.53-HULK2 (ci@SZX1000044441) (gcc version 4.7.1 (SDK V100R005C00SPC030B050) ) #1 SMP Fri Dec 18 09:38:25 UTC 2015
- CPU: ARMv7 Processor [414fc091] revision 1 (ARMv7), cr=10c53c7d
- CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
- Machine: Hisilicon A9, model: HISI-CA9
复制代码
目标设备照片(可以看见没有板载内存)
cpu是麒麟sd5116(应该是sd5116L)nand flash 128mb
开机啥活没干内存占用85%
- 原nand flash 启动信息(nand id 0x2C 0xF1 0x80 0x95 0x04 0x00 0x00 0x00 )
- ++++++++++++++++++++++++
- HuaWei StartCode 2012.02 (R16C10 Dec 03 2015 - 23:43:03)
- NAND: Nand ID: 0x2C 0xF1 0x80 0x95 0x04 0x00 0x00 0x00
- NAND FLASH Enter Low Driver Mode
- ECC Match pagesize:2K, oobzie:64, ecctype:4bit
- Nand(Hardware): 128 MiB
- startcode select the uboot to load
- the high RAM is :8040103c
- startcode uboot boot count:0
- use the main slave_param area from flash, the RAM data is not OK!!!
- Use the UbootA to load first
- Use the UbootA to load success
- U-Boot 2010.03 (R16C10 Mar 18 2016 - 20:33:22)
- DRAM: 64 MB
- Boot From NAND flash
- Chip Type is SD5116L
- NAND: Special Nand id table Version 1.23
- Nand ID: 0x2C 0xF1 0x80 0x95 0x04 0x00 0x00 0x00
- NAND FLASH Enter Low Driver Mode
- ECC Match pagesize:2K, oobzie:64, ecctype:4bit
- Nand(Hardware): Block:128KB Page:2KB Chip:128MB*1 OOB:64B ECC:4bit
- 128 MiB
- Using default environment
- In: serial
- Out: serial
- Err: serial
- PHY power down !!!
- [main.c__6080]::CRC:0x3d80a8b4, Magic1:0x5a5a5a5a, Magic2:0xa5a5a5a5, count:0, CommitedArea:0x0, Active:0x0, RunFlag:0x0
- Start from main system(0x0)!
- CRC:0x3d80a8b4, Magic1:0x5a5a5a5a, Magic2:0xa5a5a5a5, count:1, CommitedArea:0x0, Active:0x0, RunFlag:0x0
- 0x000000100000-0x000008000000 : "mtd=1"
- UBI: attaching mtd1 to ubi0
- Main area (A) is OK!
- CRC:0x93e83925, Magic1:0x5a5a5a5a, Magic2:0xa5a5a5a5, count:1, CommitedArea:0x0, Active:0x0, RunFlag:0x0
- Bootcmd:ubi read 0x82c00000 kernelA 0x19c372; bootm 0x82c00054
- BootArgs:noalign mem=59M console=ttyAMA1,115200 ubi.mtd=1 root=/dev/mtdblock11 rootfstype=squashfs mtdparts=hinand:0x100000(startcode),0x7f00000(ubifs),-(reserved) pcie0_sel=x1 maxcpus=0 l2_cache=off user_debug=0x1f panic=1 skb_priv=128 debug_ll=on
- U-boot Start from NORMAL Mode!
- ## Booting kernel from Legacy Image at 82c00054 ...
- Image Name: Linux-3.10.53-HULK2
- Image Type: ARM Linux Kernel Image (uncompressed)
- Data Size: 1688286 Bytes = 1.6 MB
- Load Address: 80e08000
- Entry Point: 80e08000
- Memory Start: 80500000
- Loading Kernel Image ... OK
- OK
- kernel loaded at 0x80508000, end = 0x806a42de
- --------------------------------------------------------------
- 拷贝了前32MB后的启动信息2个flash
- (id: 0x01 0xF1 0x00 0x1D 0x01 0xF1 0x00 0x1D, 0x2C 0xF1 0x80 0x95 0x02 0x00 0x00 0x00)
- 只能启动一半(TMD 华X)
- +++++++++++++++++++++
- HuaWei StartCode 2012.02 (R16C10 Dec 03 2015 - 23:43:03)
- NAND: Nand ID: 0x01 0xF1 0x00 0x1D 0x01 0xF1 0x00 0x1D
- ECC Match pagesize:2K, oobzie:64, ecctype:4bit
- Nand(Hardware): 128 MiB
- startcode select the uboot to load
- the high RAM is :8040103c
- startcode uboot boot count:0
- Slave struct initializtion success!!
- Use the UbootA to load first
- Start from UbootA ERROR, Change to UbootB
- Both UbootA and UbootB are wrong, load it by JTAG!
- ================================
- HuaWei StartCode 2012.02 (R16C10 Dec 03 2015 - 23:43:03)
- NAND: Nand ID: 0x2C 0xF1 0x80 0x95 0x02 0x00 0x00 0x00
- now using default nand flash type, Block:128KB Page:2KB!
- ECC Match pagesize:2K, oobzie:64, ecctype:4bit
- Nand(Hardware): 128 MiB
- startcode select the uboot to load
- the high RAM is :8040103c
- startcode uboot boot count:0
- Slave struct initializtion success!!
- Use the UbootA to load first
- Start from UbootA ERROR, Change to UbootB
- Both UbootA and UbootB are wrong, load it by JTAG!
- ----------------------------------------------------------------------
- 完全复制原片flash 后的启动信息(nand id:0x2C 0xF1 0x80 0x95 0x02 0x00 0x00 0x00)
- +++++++++++++++++++++++++++++++++++
- HuaWei StartCode 2012.02 (R16C10 Dec 03 2015 - 23:43:03)
- NAND: Nand ID: 0x2C 0xF1 0x80 0x95 0x02 0x00 0x00 0x00
- now using default nand flash type, Block:128KB Page:2KB!
- ECC Match pagesize:2K, oobzie:64, ecctype:4bit
- Nand(Hardware): 128 MiB
- startcode select the uboot to load
- the high RAM is :8040103c
- startcode uboot boot count:0
- use the main slave_param area from flash, the RAM data is not OK!!!
- Use the UbootA to load first
- Use the UbootA to load success
- U-Boot 2010.03 (R16C10 Mar 18 2016 - 20:33:22)
- DRAM: 64 MB
- Boot From NAND flash
- Chip Type is SD5116L
- NAND: Special Nand id table Version 1.23
- Nand ID: 0x2C 0xF1 0x80 0x95 0x02 0x00 0x00 0x00
- now using default nand flash type, Block:128KB Page:2KB!
- ECC Match pagesize:2K, oobzie:64, ecctype:4bit
- Nand(Hardware): Block:128KB Page:2KB Chip:128MB*1 OOB:64B ECC:4bit
- 128 MiB
- Using default environment
- In: serial
- Out: serial
- Err: serial
- PHY power down !!!
- [main.c__6080]::CRC:0x3d80a8b4, Magic1:0x5a5a5a5a, Magic2:0xa5a5a5a5, count:0, CommitedArea:0x0, Active:0x0, RunFlag:0x0
- Start from main system(0x0)!
- CRC:0x3d80a8b4, Magic1:0x5a5a5a5a, Magic2:0xa5a5a5a5, count:1, CommitedArea:0x0, Active:0x0, RunFlag:0x0
- 0x000000100000-0x000008000000 : "mtd=1"
- UBI: attaching mtd1 to ubi0
复制代码
使用命令
1、读取原芯片命令前10个分区没有什么问题
- nanddump -nof hg8321_mt_mtd0_oob_noecc /dev/mtd0
- ....
- nanddump -nof hg8321_mt_mtd10_oob_noecc /dev/mtd10
复制代码 2、注意这个mtd11 要分片复制,并且在复制二个分区时
要么重启路由,要么换原启动芯片清理缓存
2.1查看内存使用情况(重启后可用内存很多)
- root@LEDE:/# free
- total used free shared buffers cached
- Mem: 125248 24364 100884 56 2048 6660
- -/+ buffers/cache: 15656 109592
- Swap: 0 0 0
复制代码 2.2 这条命令能看见使用情况
- root@LEDE:/# cat /proc/meminfo
- MemTotal: 125248 kB
- MemFree: 100884 kB
- MemAvailable: 81332 kB
- Buffers: 2048 kB
- Cached: 6660 kB
- SwapCached: 0 kB
- Active: 5904 kB
- Inactive: 3828 kB
- Active(anon): 1056 kB
- Inactive(anon): 24 kB
- Active(file): 4848 kB
- Inactive(file): 3804 kB
- Unevictable: 0 kB
- Mlocked: 0 kB
- SwapTotal: 0 kB
- SwapFree: 0 kB
- Dirty: 0 kB
- Writeback: 0 kB
- AnonPages: 1032 kB
- Mapped: 1744 kB
- Shmem: 56 kB
- Slab: 7452 kB
- SReclaimable: 1392 kB
- SUnreclaim: 6060 kB
- KernelStack: 400 kB
- PageTables: 216 kB
- NFS_Unstable: 0 kB
- Bounce: 0 kB
- WritebackTmp: 0 kB
- CommitLimit: 62624 kB
- Committed_AS: 3256 kB
- VmallocTotal: 1048372 kB
- VmallocUsed: 0 kB
- VmallocChunk: 0 kB
复制代码 2.3 清除缓存
- root@LEDE:/# echo 1 > /proc/sys/vm/drop_caches
- [ 4977.007841] ash (495): drop_caches: 1
复制代码 drop_caches的值可以是0-3之间的数字,代表不同的含义:
0:不释放(系统默认值)
1:释放页缓存
2:释放dentries和inodes
3:释放所有缓存
2.4 复制mtd11用的命令
- nanddump -s 0x0 -l 0x2000000 -nof hg8321_mt_mtd11_1_oob_noecc /dev/mtd11
- nanddump -s 0x2000000 -l 0x2000000 -nof hg8321_mt_mtd11_2_oob_noecc /dev/mtd11
- nanddump -s 0x4000000 -l 0x2000000 -nof hg8321_mt_mtd11_3_oob_noecc /dev/mtd11
复制代码
3、换芯片后 擦除新nand flash
- mtd erase /dev/mtd0
- ....
- mtd erase /dev/mtd11
复制代码
4、写如falsh用的命令
- nandwrite -on /dev/mtd0 hg8321_mt_mtd0_oob_noecc
- ......
- nandwrite -on /dev/mtd10 hg8321_mt_mtd10_oob_noecc
- ##mtd11 分片写入 TMD烦人啊
- nandwrite -s 0x0 -on /dev/mtd11 hg8321_mt_mtd11_1_oob_noecc
- nandwrite -s 0x2000000 -on /dev/mtd11 hg8321_mt_mtd11_2_oob_noecc
- nandwrite -s 0x4000000 -on /dev/mtd11 hg8321_mt_mtd11_3_oob_noecc
复制代码
最后补充说明:
花了点时间另外写了一份不带oob数据的flash
- <font size="4">nandwrite -n /dev/mtdX hg8321_mt_mtdX_noecc</font>
复制代码
(但心没有写好同时写了两个),在这台机器上启动结果是没有办法启动,什么提示也没有,看来这个onu在启动bootload过程中都要ecc校验。
同时说明写oob数据是有效的,完美复制。
-------------------------
我的4300的nand 控制器挂了,应该被静电给弄坏了。。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
评分
-
查看全部评分
|