找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 5380|回复: 11

[k2p] MTK7621 分区结构的探索 和 理解,如何-备份-如何 -恢复-编程器固件

[复制链接]
本帖最后由 testios 于 2018-5-31 23:06 编辑

案例
好奇来源


这是我做的 联想 NewifiD1 Pandorabox17.05 Flash 空间分区图



联想 NewifiD1 Pandorabox17.05   重启  
reboot -f   
得到 启动的信息

dmesg   //系统初始化输出
--》
  1. [    2.108000] device id : c2 20 19 c2 0 (2019c200)
  2. [    2.112000] SPI flash chip: MX25L25635F (c2 2019c220) (32768 Kbytes)
  3. [    2.120000] Creating 5 MTD partitions on "raspi":
  4. [    2.124000] 0x000000000000-0x000000030000 : "u-boot"
  5. [    2.132000] 0x000000030000-0x000000040000 : "u-boot-env"
  6. [    2.140000] 0x000000040000-0x000000050000 : "Factory"
  7. [    2.144000] 0x000000000000-0x000002000000 : "fullflash"
  8. [    2.152000] 0x000000050000-0x000002000000 : "firmware"
  9. [    2.208000] 3 uimage-fw partitions found on MTD device firmware
  10. [    2.212000] 0x000000050000-0x0000001c4a32 : "kernel"
  11. [    2.220000] mtd: partition "kernel" must either start or end on erase block boundary or be smaller than an erase block -- forcing read-only
  12. [    2.232000] 0x0000001c4a32-0x000001fe0000 : "rootfs"
  13. [    2.236000] mtd: partition "rootfs" must either start or end on erase block boundary or be smaller than an erase block -- forcing read-only
  14. [    2.252000] mtd: device 6 (rootfs) set to be root filesystem
  15. [    2.256000] 1 squashfs-split partitions found on MTD device rootfs
  16. [    2.264000] 0x000000b30000-0x000001fe0000 : "rootfs_data"
  17. [    2.272000] 0x000001fe0000-0x000002000000 : "panic_oops"
  18. [    2.276000] mtdoops: ready 0, 1 (no erase)
  19. [    2.276000] mtdoops: Attached to MTD device 8
  20. [    2.284000] rdm_major = 251
  21. [    2.288000] EEPROM:Read from [Factory] offset 0xe000,length 0x6.
复制代码


分区结构 整理

  1. [root@PandoraBox:/root]#cat /proc/mtd
  2. dev:    size   erasesize  name
  3. mtd0: 00030000 00010000 "u-boot"
  4. mtd1: 00010000 00010000 "u-boot-env"
  5. mtd2: 00010000 00010000 "Factory"
  6. mtd3: 02000000 00010000 "fullflash"
  7. mtd4: 01fb0000 00010000 "firmware"
  8. mtd5: 00174a32 00010000 "kernel"
  9. mtd6: 01e1b5ce 00010000 "rootfs"
  10. mtd7: 014b0000 00010000 "rootfs_data"
  11. mtd8: 00020000 00010000 "panic_oops"
复制代码


如何备份编程器固件
一、编程器固件备份(所有分区)
-------------------------------------------------------------------------------------------------------
计算机ssh连接D1后,按如下操作输入命令
1、将固件保存到内存

  1. dd if=/dev/mtd3 of=/tmp/all.bin
复制代码


或者

  1. cat   /dev/mtd0 /dev/mtd1 /dev/mtd2 /dev/mtd4 >/tmp/all.bin
复制代码


基础参考十六进制
基址
kernel mtd 分区与UBOOT 分区的理解



08000000 //十六进制
等于
134217728  字节  // 十进制
128 MB (134,217,728 字节)


在线进制转换  //十六进制转 10




U-Boot移植相关硬件地址空间分配为:
FLASH 2MB 0x80000000~0x801FFFFF;  10: 2147483648    2149580799 等于空间差 2047k
PSRAM 8MB 0x81000000~0x817FFFFF;     10进制  等于 8191kb


如何理解字节地址为0x8000 0000~0x80ff ffff,是如何设置的?
SDRAM被映射到C6713的CE0存储空间,工作频率为100MHZ,Z支持8/16/32位访问,字节地址为0x8000 0000~0x80ff ffff如何理解字节地址为0x8000 0000~0x80ff ffff,是如何设置,在哪设置的啊?我可以设置成0x9000 0000~0x90ff ffff 吗?


CE0空间的起始地址为0x8000 0000 根据SDRAM的容量,扩展空间到0x80ff ffff
https://zhidao.baidu.com/question/1957856978709493460.html




https://img-blog.csdn.net/20160902152134665
关于加载地址和运行地址理解
https://blog.csdn.net/yanlutian/article/details/52414226


关于Nand Flash行地址和列地址的计算
https://blog.csdn.net/Sloane0/article/details/73065027


kernel mtd 分区与UBOOT 分区的理解
https://blog.csdn.net/maopig/article/details/17285119




回想我们在烧写程序时候的操作,比如我们选择烧写内核镜像,此时,uboot实际执行了一条语句,类似
#define kernel 0x00200000


memcpy(kernel,0x30000000,SZ_3M)


里我们烧写程序的入口地址是0x30000000,也就是说,uboot的下载模式将我们烧写到内存0x30000000处的数据,搬到了NAND flash的kernel处,保存了起来,因此,这里要清楚,我们烧写程序时,实际是将程序先烧写到了内存当中,然后由内存搬运到NAND flash中
当然,之前操作的都是物理地址,当内核真正运行起来以后,将开始使用虚拟地址。




https://zhidao.baidu.com/question/344268845.html
0X00000000 请问这是什么表达方式?
0X00000000这是16进制表达方式,前面的0X或者0x表示这个数字为16进制的,不是“0乘以多少”的意思。
追问
先谢谢了!00000000H为什么不是这种呢?0X怎么也不像16进制符号啊?
追答
16进制数有两种写法:一种是在数字前加0X或者0x,另一种就是再数字后面加H。




https://zhidao.baidu.com/question/519253294970292205.html
简单的说,就是操作系统在你的大小不同的物理内存上,虚拟出了一个一样大小的逻辑内存。




http://blog.sina.com.cn/s/blog_3e3a29b301016uif.html
UBoot常用命令手册


4、cp
cp [.b, .w, .l] source target count
       - copy memory
cp命令可以在内存中复制数据块,包括对Flash的读写操作。
第1个参数source是要复制的数据块起始地址。
第2个参数target是数据块要复制到的地址。这个地址如果在Flash中,那么会直接调用写Flash的函数操作。所以U-Boot写Flash就使用这个命令,当然需要先把对应Flash区域擦净。
第3个参数count是要复制的数目,根据cp.b cp.w cp.l分别以字节、字、长字为单位。


7、erase
erase start end
      - erase FLASH from addr 'start' to addr 'end'
erase N:SF[-SL]
      - erase sectors SF-SL in FLASH bank # N
erase bank N
      - erase FLASH bank # N
erase all
      - erase all FLASH banks
erase命令可以擦Flash。
参数必须指定Flash擦除的范围。
按照起始地址和结束地址,start必须是擦除块的起始地址;end必须是擦除末尾块的结束地址。这种方式最常用。举例说明:擦除0x20000 – 0x3ffff区域命令为erase 20000 3ffff。
按照组和扇区,N表示Flash的组号,SF表示擦除起始扇区号,SL表示擦除结束扇区号。另外,还可以擦除整个组,擦除组号为N的整个Flash组。擦除全部Flash只要给出一个all的参数即可。
用法:
写入数据之前必须先执行该命令
用法: erase 0xc******* +0xYYYYYYYY
说明: 擦除从0xc******* 开始的0xYYYYYYYY字节(字节必须块对齐)
例:
Z228 # erase 0xc4040000 +0x180000
........................ done
Erased 24 sectors
附加: erase 1:0-2(就是对每一块FLASH的0-2扇区进行删除)
h. cp.b
拷贝数据,从指定源地址到目标地址,地址可以是ram,也可以是nor flash
用法: cp.b 0x******** 0x######## 0xYYYYYYYY
说明: 拷贝源0x********到目标0x########,共拷贝0xYYYYYYY字节
例:
Z228 # cp.b 0x200000 0xc4040000 0x180000
Copy to Flash... done




25、tftpboot
tftpboot [loadAddress] [bootfilename]
tftpboot命令可以使用TFTP协议通过网络下载文件。按照二进制文件格式下载。另外使用这个命令,必须配置好相关的环境变量。例如serverip和ipaddr。
第1个参数loadAddress是下载到的内存地址。
第2个参数是要下载的文件名称,必须放在TFTP服务器相应的目录下。


http://wiki.openwrt.org/toh/netgear/r7000
Openwrt dmesg
[    2.309917] Creating 14 MTD partitions on "bcm_nand":
[    2.316263] 0x000000000000-0x000000080000 : "boot"
[    2.324160] 0x000000080000-0x000000200000 : "nvram"
[    2.334398] 0x000000200000-0x000002200000 : "firmware"
[    2.414534] 0x00000020001c-0x000000600000 : "linux"
[    2.430549] 0x000000600000-0x000002200000 : "ubi"
[    2.500998] 0x000002200000-0x000002240000 : "board_data"
[    2.508925] 0x000002240000-0x000002280000 : "POT"
[    2.516123] 0x000002280000-0x000002400000 : "POT"
[    2.526171] 0x000002400000-0x000002440000 : "ML"
[    2.533275] 0x000002440000-0x000002480000 : "ML"
[    2.540387] 0x000002480000-0x0000024c0000 : "ML"
[    2.547469] 0x0000024c0000-0x000002500000 : "ML"
[    2.554547] 0x000002500000-0x000002540000 : "ML"
[    2.561625] 0x000002540000-0x000008000000 : "ML"











https://blog.csdn.net/leekwen/article/details/53635462
路由固件的逆向解包及破解方法


https://zhidao.baidu.com/question/651503631891359365.html
如何从uboot中推算路由器flash烧写地址


http://blog.sina.com.cn/s/blog_3e3a29b301016uif.html
UBoot常用命令手册


https://www.right.com.cn/forum/thread-212299-1-1.html
【固件改造】腾达AC9官方固件结构及改造过程



https://www.right.com.cn/forum/thread-112987-1-1.html
简单方法提取OpenWrt的bin文件中的内容


https://www.right.com.cn/forum/thread-184418-1-1.html
padavan固件启动过程分析


本帖子中包含更多资源

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

×
我的恩山、我的无线 The best wifi forum is right here.
你那个牛头牌路由器搞好了没有?

点评

还没有搞, 店家今晚搞,或者明天给我弄,他说  详情 回复 发表于 2018-5-31 21:37
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
鲜锅兔儿 发表于 2018-5-31 21:36
你那个牛头牌路由器搞好了没有?

还没有搞, 店家今晚搞,或者明天给我弄,他说

点评

还以为你自己搞……  详情 回复 发表于 2018-5-31 21:39
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

本帖最后由 鲜锅兔儿 于 2018-5-31 21:40 编辑
testios 发表于 2018-5-31 21:37
还没有搞, 店家今晚搞,或者明天给我弄,他说

还以为你自己搞……请店家拍几张拆机照分享一下

点评

[attachimg]222923[/attachimg] 就是这个电路图 [attachimg]222924[/attachimg] [attachimg]222925[/attachimg] [attachimg]222926[/attachimg]  详情 回复 发表于 2018-5-31 21:54
论坛有人发了, 是很久的事情了  详情 回复 发表于 2018-5-31 21:42
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
鲜锅兔儿 发表于 2018-5-31 21:39
还以为你自己搞……请店家拍几张拆机照分享一下

论坛有人发了, 是很久的事情了
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
本帖最后由 testios 于 2018-5-31 22:00 编辑
鲜锅兔儿 发表于 2018-5-31 21:39
还以为你自己搞……请店家拍几张拆机照分享一下


就是这个电路图



本帖子中包含更多资源

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

×
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

好文!Mark一下~~
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2024-4-29 09:39

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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

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