Firefly开源社区

标题: 关于 RKloader, parameter 与 uboot 分区的疑问 [打印本页]

作者: connet    时间: 2014-11-25 13:08
标题: 关于 RKloader, parameter 与 uboot 分区的疑问
本来想修改 boot 参数CMDLINE, 查看 android tools 带的 rockdev 下的 rk3288-3.10-uboot-data1G.parameter, 发现没有 指定root, 这个文件应该与双系统的那个parameter 不一致的, 于是进入rk3288的ubuntu系统查看,结果发现
  1. root@firefly:/dev/block/mtd/by-name# cat /proc/cmdline
  2. console=ttyFIQ0 androidboot.hardware=rk30board androidboot.console=ttyFIQ0 board.ap_has_alsa=0 root=/dev/block/mtd/by-name/linuxroot rw rootfstype=ext4 init=/sbin/init  mtdparts=rk29xxnand:0x00002000@0x00000000(parameter),0x00002000@0x00002000(uboot),0x00002000@0x00004000(misc),0x00008000@0x00006000(resource),0x00008000@0x0000e000(kernel),0x00010000@0x00016000(boot),0x00010000@0x00026000(recovery),0x0001a000@0x00036000(backup),0x00040000@0x00050000(cache),0x00002000@0x00090000(kpanic),0x00180000@0x00092000(system),0x00002000@0x00212000(metadata),0x00200000@0x00214000(userdata),0x00620000@0x00414000(linuxroot),-@0x00a34000(user) storagemedia=emmc loader.timestamp=2014-10-30_09:27:41 androidboot.serialno=1006110001000026 androidboot.mode=emmc
复制代码

可见 cmdline中指定了 root 及 rootfstype, mtdparts 中第一个分区是 parameter
然后查看 parameter, uboot 分区内容, 不明白为什么这两个分区内容为什么差不多, dd 出来一比较, 只有很少的不同
先看 paramter
  1. root@firefly:/dev/block/mtd/by-name# hexdump -C -n 1024 parameter
  2. 00000000  50 41 52 4d 78 03 00 00  46 49 52 4d 57 41 52 45  |PARMx...FIRMWARE|
  3. 00000010  5f 56 45 52 3a 34 2e 34  2e 32 0d 0a 4d 41 43 48  |_VER:4.4.2..MACH|
  4. 00000020  49 4e 45 5f 4d 4f 44 45  4c 3a 72 6b 33 30 73 64  |INE_MODEL:rk30sd|
  5. 00000030  6b 0d 0a 4d 41 43 48 49  4e 45 5f 49 44 3a 30 30  |k..MACHINE_ID:00|
  6. 00000040  37 0d 0a 4d 41 4e 55 46  41 43 54 55 52 45 52 3a  |7..MANUFACTURER:|
  7. 00000050  52 4b 33 30 53 44 4b 0d  0a 4d 41 47 49 43 3a 20  |RK30SDK..MAGIC: |
  8. 00000060  30 78 35 30 34 31 35 32  34 42 0d 0a 41 54 41 47  |0x5041524B..ATAG|
  9. 00000070  3a 20 30 78 36 30 30 30  30 38 30 30 0d 0a 4d 41  |: 0x60000800..MA|
  10. 00000080  43 48 49 4e 45 3a 20 33  30 36 36 0d 0a 43 48 45  |CHINE: 3066..CHE|
  11. 00000090  43 4b 5f 4d 41 53 4b 3a  20 30 78 38 30 0d 0a 50  |CK_MASK: 0x80..P|
  12. 000000a0  57 52 5f 48 4c 44 3a 20  30 2c 30 2c 41 2c 30 2c  |WR_HLD: 0,0,A,0,|
  13. 000000b0  31 0d 0a 23 4b 45 52 4e  45 4c 5f 49 4d 47 3a 20  |1..#KERNEL_IMG: |
  14. 000000c0  30 78 36 32 30 30 38 30  30 30 0d 0a 23 46 44 54  |0x62008000..#FDT|
  15. 000000d0  5f 4e 41 4d 45 3a 20 72  6b 2d 6b 65 72 6e 65 6c  |_NAME: rk-kernel|
  16. 000000e0  2e 64 74 62 0d 0a 23 52  45 43 4f 56 45 52 5f 4b  |.dtb..#RECOVER_K|
  17. 000000f0  45 59 3a 20 31 2c 31 2c  30 2c 32 30 2c 30 0d 0a  |EY: 1,1,0,20,0..|
  18. 00000100  43 4d 44 4c 49 4e 45 3a  63 6f 6e 73 6f 6c 65 3d  |CMDLINE:console=|
  19. 00000110  74 74 79 46 49 51 30 20  61 6e 64 72 6f 69 64 62  |ttyFIQ0 androidb|
  20. 00000120  6f 6f 74 2e 68 61 72 64  77 61 72 65 3d 72 6b 33  |oot.hardware=rk3|
  21. 00000130  30 62 6f 61 72 64 20 61  6e 64 72 6f 69 64 62 6f  |0board androidbo|
  22. 00000140  6f 74 2e 63 6f 6e 73 6f  6c 65 3d 74 74 79 46 49  |ot.console=ttyFI|
  23. 00000150  51 30 20 62 6f 61 72 64  2e 61 70 5f 68 61 73 5f  |Q0 board.ap_has_|
  24. 00000160  61 6c 73 61 3d 30 20 72  6f 6f 74 3d 2f 64 65 76  |alsa=0 root=/dev|
  25. 00000170  2f 62 6c 6f 63 6b 2f 6d  74 64 2f 62 79 2d 6e 61  |/block/mtd/by-na|
  26. 00000180  6d 65 2f 6c 69 6e 75 78  72 6f 6f 74 20 72 77 20  |me/linuxroot rw |
  27. 00000190  72 6f 6f 74 66 73 74 79  70 65 3d 65 78 74 34 20  |rootfstype=ext4 |
  28. 000001a0  69 6e 69 74 3d 2f 73 62  69 6e 2f 69 6e 69 74 20  |init=/sbin/init |
  29. 000001b0  69 6e 69 74 72 64 3d 30  78 36 32 30 30 30 30 30  |initrd=0x6200000|
  30. 000001c0  30 2c 30 78 30 30 38 30  30 30 30 30 20 6d 74 64  |0,0x00800000 mtd|
  31. 000001d0  70 61 72 74 73 3d 72 6b  32 39 78 78 6e 61 6e 64  |parts=rk29xxnand|
  32. 000001e0  3a 30 78 30 30 30 30 32  30 30 30 40 30 78 30 30  |:0x00002000@0x00|
  33. 000001f0  30 30 32 30 30 30 28 75  62 6f 6f 74 29 2c 30 78  |002000(uboot),0x|
  34. 00000200  30 30 30 30 32 30 30 30  40 30 78 30 30 30 30 34  |00002000@0x00004|
复制代码
再看 uboot
  1. root@firefly:/dev/block/mtd/by-name# hexdump -C -n 1024 uboot
  2. 00000000  50 41 52 4d 78 03 00 00  46 49 52 4d 57 41 52 45  |PARMx...FIRMWARE|
  3. 00000010  5f 56 45 52 3a 34 2e 34  2e 32 0d 0a 4d 41 43 48  |_VER:4.4.2..MACH|
  4. 00000020  49 4e 45 5f 4d 4f 44 45  4c 3a 72 6b 33 30 73 64  |INE_MODEL:rk30sd|
  5. 00000030  6b 0d 0a 4d 41 43 48 49  4e 45 5f 49 44 3a 30 30  |k..MACHINE_ID:00|
  6. 00000040  37 0d 0a 4d 41 4e 55 46  41 43 54 55 52 45 52 3a  |7..MANUFACTURER:|
  7. 00000050  52 4b 33 30 53 44 4b 0d  0a 4d 41 47 49 43 3a 20  |RK30SDK..MAGIC: |
  8. 00000060  30 78 35 30 34 31 35 32  34 42 0d 0a 41 54 41 47  |0x5041524B..ATAG|
  9. 00000070  3a 20 30 78 36 30 30 30  30 38 30 30 0d 0a 4d 41  |: 0x60000800..MA|
  10. 00000080  43 48 49 4e 45 3a 20 33  30 36 36 0d 0a 43 48 45  |CHINE: 3066..CHE|
  11. 00000090  43 4b 5f 4d 41 53 4b 3a  20 30 78 38 30 0d 0a 50  |CK_MASK: 0x80..P|
  12. 000000a0  57 52 5f 48 4c 44 3a 20  30 2c 30 2c 41 2c 30 2c  |WR_HLD: 0,0,A,0,|
  13. 000000b0  31 0d 0a 23 4b 45 52 4e  45 4c 5f 49 4d 47 3a 20  |1..#KERNEL_IMG: |
  14. 000000c0  30 78 36 32 30 30 38 30  30 30 0d 0a 23 46 44 54  |0x62008000..#FDT|
  15. 000000d0  5f 4e 41 4d 45 3a 20 72  6b 2d 6b 65 72 6e 65 6c  |_NAME: rk-kernel|
  16. 000000e0  2e 64 74 62 0d 0a 23 52  45 43 4f 56 45 52 5f 4b  |.dtb..#RECOVER_K|
  17. 000000f0  45 59 3a 20 31 2c 31 2c  30 2c 32 30 2c 30 0d 0a  |EY: 1,1,0,20,0..|
  18. 00000100  43 4d 44 4c 49 4e 45 3a  63 6f 6e 73 6f 6c 65 3d  |CMDLINE:console=|
  19. 00000110  74 74 79 46 49 51 30 20  61 6e 64 72 6f 69 64 62  |ttyFIQ0 androidb|
  20. 00000120  6f 6f 74 2e 68 61 72 64  77 61 72 65 3d 72 6b 33  |oot.hardware=rk3|
  21. 00000130  30 62 6f 61 72 64 20 61  6e 64 72 6f 69 64 62 6f  |0board androidbo|
  22. 00000140  6f 74 2e 63 6f 6e 73 6f  6c 65 3d 74 74 79 46 49  |ot.console=ttyFI|
  23. 00000150  51 30 20 62 6f 61 72 64  2e 61 70 5f 68 61 73 5f  |Q0 board.ap_has_|
  24. 00000160  61 6c 73 61 3d 30 20 72  6f 6f 74 3d 2f 64 65 76  |alsa=0 root=/dev|
  25. 00000170  2f 62 6c 6f 63 6b 2f 6d  74 64 2f 62 79 2d 6e 61  |/block/mtd/by-na|
  26. 00000180  6d 65 2f 6c 69 6e 75 78  72 6f 6f 74 20 72 77 20  |me/linuxroot rw |
  27. 00000190  72 6f 6f 74 66 73 74 79  70 65 3d 65 78 74 34 20  |rootfstype=ext4 |
  28. 000001a0  69 6e 69 74 3d 2f 73 62  69 6e 2f 69 6e 69 74 20  |init=/sbin/init |
  29. 000001b0  69 6e 69 74 72 64 3d 30  78 36 32 30 30 30 30 30  |initrd=0x6200000|
  30. 000001c0  30 2c 30 78 30 30 38 30  30 30 30 30 20 6d 74 64  |0,0x00800000 mtd|
  31. 000001d0  70 61 72 74 73 3d 72 6b  32 39 78 78 6e 61 6e 64  |parts=rk29xxnand|
  32. 000001e0  3a 30 78 30 30 30 30 32  30 30 30 40 30 78 30 30  |:0x00002000@0x00|
  33. 000001f0  30 30 32 30 30 30 28 75  62 6f 6f 74 29 2c 30 78  |002000(uboot),0x|
  34. 00000200  30 30 30 30 32 30 30 30  40 30 78 30 30 30 30 34  |00002000@0x00004|
  35. 00000210  30 30 30 28 6d 69 73 63  29 2c 30 78 30 30 30 30  |000(misc),0x0000|
复制代码
问题1, paramter 中没有 root, rootfstype , cmdline 到底从哪里读来的启动参数?
问题2, uboot 分区为什么显示内容和 parameter 差不多?难道这个分区不应该是uboot.bin?
问题3,  parameter 分区到底怎么确认是 RKloader 还是 parameter 烧录工具可以看到这两个东西都烧到起始位置0x0?




作者: busybee    时间: 2014-11-25 14:57
问题1: 含有 Ubuntu 的 parameter 有指定 root=/dev/block/mtd/by-name/linuxroot rw rootfstype=ext4 init=/sbin/init

问题2:这个 uboot 分区是存放 u-boot 的 second stage loader 的,但在 eMMC flash 中,u-boot 不用分开两个,此 uboot 分区就没有用了。至于为什么存的是 parameter,可能是为了冗余存储,多存了几份。

实际上,在 Linux 下均看不到 u-boot ,因为 u-boot 是物理地址零地址处,而在 Linux 下看到的是逻辑地址,而这个逻辑地址不是从物理地址 0 开始。

问题3,  RKloader 是从物理零地址处开始烧录,parameter 是从逻辑零地址开始烧录。
作者: opjk    时间: 2015-12-24 00:55
本帖最后由 opjk 于 2015-12-24 01:21 编辑

用 从百度云盘上下载的代码 firefly-rk3288_android5.1_git_20150910.tar
构建生成的文件9个文件,如下:
boot.img  kernel.img  misc.img  pcba_small_misc.img  pcba_whole_misc.img  recovery.img  resource.img  RK3288UbootLoader_V2.19.10.bin  system.img
我想增加 system分区的大小。如何修改配置文件。


源码 RKTools\windows\AndroidTool\rockdev 目录里面有 rk3288box-3.10-uboot.parameter.txt  和  package-file, 如修改,才能与我编译出来的img文件配套? 需要修改那些地方,修改值是多少。如何烧制成一个 update.img文件?


第二问题,上面的 kernel.img resource.img 两个文件是使用 帖子
http://developer.t-firefly.com/f ... &highlight=10.1
提供的驱动程序,和方法 。替换了,firefly-rk3288_android5.1_git_20150910.tar 代码对应的目录下的文件,
重新编译出来的,这样就能支持了10.1寸那个屏幕了么?


作者: opjk    时间: 2015-12-24 01:13
本帖最后由 opjk 于 2015-12-24 01:20 编辑

烦请版主 帮忙说明一下。
作者: zhansb    时间: 2015-12-24 10:48
opjk 发表于 2015-12-24 01:13
烦请版主 帮忙说明一下。

wiki上有相关的说明:http://wiki.t-firefly.com/index.php/%E9%A6%96%E9%A1%B5
作者: opjk    时间: 2015-12-24 15:01
本帖最后由 opjk 于 2015-12-24 15:02 编辑

谢谢
作者: opjk    时间: 2015-12-24 16:12
zhansb 发表于 2015-12-24 10:48
wiki上有相关的说明:http://wiki.t-firefly.com/index.php/%E9%A6%96%E9%A1%B5

我说的是,在unbuntu 下编译安卓,烧制到板子上,而不是编译linux ,烧制到板子上。能帮我解答以下具体问题么?
作者: lansexingyu    时间: 2016-4-29 11:08
opjk 发表于 2015-12-24 16:12
我说的是,在unbuntu 下编译安卓,烧制到板子上,而不是编译linux ,烧制到板子上。能帮我解答以下具体问 ...

这个社区几乎没人回答的
作者: samuel0755    时间: 2016-5-5 21:04
学习啦
作者: wx_星星_lr38R    时间: 2021-4-21 19:16
学习啦




欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1