Firefly开源社区

打印 上一主题 下一主题

[Linux] ROC-RK3566-PC 网络启动

133

积分

0

威望

0

贡献

技术小白

积分
133

ROC-RK3566-PC 网络启动

发表于 2022-4-13 21:43:57      浏览:5493 | 回复:4        打印      只看该作者   [复制链接] 楼主
//rk3399
CMDLINE: mtdparts=rk29xxnand:
0x00002000@0x00004000(uboot),
0x00002000@0x00006000(trust),
0x00002000@0x00008000(misc),
0x00010000@0x0000a000(boot),
0x00010000@0x0001a000(recovery),
0x00010000@0x0002a000(backup),
0x00020000@0x0003a000(oem),
0x00700000@0x0005a000(rootfs),
-@0x0075a000(userdata:grow)
uuid:rootfs=614e0000-0000-4b53-8000-1d28000054a9

//rk3566
CMDLINE: mtdparts=rk29xxnand:
0x00002000@0x00004000(uboot),
0x00002000@0x00006000(misc),
0x00010000@0x00008000(boot),
0x00010000@0x00018000(recovery),
0x00010000@0x00028000(backup),
0x00c00000@0x00038000(rootfs),
-@0x00c38000(userdata:grow)
uuid:rootfs=614e0000-0000-4b53-8000-1d28000054a9

uboot 分区: 烧写 uboot 编译出来的 uboot.img。
trust 分区: 烧写 uboot 编译出来的 trust.img。
misc 分区: 烧写 misc.img。开机检测进入 recovery 模式。(可省略)
boot 分区: 烧写 kernel 编译出来的 boot.img 包含 kernel 和设备树信息。
recovery 分区: 烧写 recovery.img。(可省略)
backup 分区: 预留,暂时没有用。后续跟 android 一样作为 recovery 的 backup 使用。(可省略)
oem 分区: 给厂家使用,存放厂家的 app 或数据。只读。代替原来音箱的 data 分区。挂载在/oem 目录。(可省略)
rootfs 分区: 存放 buildroot 或者 debian 编出来的 rootfs.img,只读.
userdata 分 区 : 存放 app 临时生成的文件或者是给最终用户使用。可读写,挂载在 /userdata 目录下。(可省略)

//rk3399
rk3399-firefly.dts
chosen {
    bootargs = "earlycon=uart8250,mmio32,0xff1a0000 swiotlb=1 console=ttyFIQ0 root=/dev/nfs rootfstype=ext4 rootwait";
};

#主要是修改 root 的值,root=/dev/nfs 表示通过 NFS 挂载网络根文件系统

# 设置从 TFTP 下载内核和 dtb 文件到相应地址,用户请根据自己实际的目标机修改相应地址
=> setenv bootcmd tftpboot 0x0027f800 boot.img \; tftpboot 0x08300000 rk3399-firefly.dtb \; bootm 0x0027f800 - 0x08300000

# 设置挂载网络根文件系统,IP 参数依次为:目标机 IP:服务器 IP:网关:网络掩码:设备名:off,可以更简单的设置 ip=dhcp,通过 DHXP 自动分配 IP
=> setenv bootargs root=/dev/nfs rw nfsroot=192.168.31.106:/nfs/rootfs,v3 ip=192.168.31.101:192.168.31.106:192.168.31.1:255.255.255.0::eth0:off

//rk3566
问题1:“tftpboot 0x0027f800 boot.img”语句中的boot.img与“0x00010000@0x0000a000(boot),”语句中的boot应该不是一个文件吧,因为后面的boot中包含了dtb(boot 分区: 烧写 kernel 编译出来的 boot.img 包含 kernel 和设备树信息。)

问题2:
“# 设置从 TFTP 下载内核和 dtb 文件到相应地址,用户请根据自己实际的目标机修改相应地址
=> setenv bootcmd tftpboot 0x0027f800 boot.img \; tftpboot 0x08300000 rk3399-firefly.dtb \; bootm 0x0027f800 - 0x08300000”
上面的说明用户根据自己的实际地址的目标修改相应的地址,那么RK3566开发板的地址在哪个文件中可以查到?

请大牛们指点一下。


回复

使用道具 举报

133

积分

0

威望

0

贡献

技术小白

积分
133
发表于 2022-4-14 10:43:52        只看该作者  沙发
采用如下命令:tftpboot 0x398870c0 boot.img
显示结果如下:
=> tftpboot 0x398870c0 boot.img
ethernet@fe010000 Waiting for PHY auto negotiation to complete. done
Using ethernet@fe010000 device
TFTP from server 192.168.154.134; our IP address is 192.168.154.10
Filename 'boot.img'.
Load address: 0x398870c0
Loading: #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #######
         2.8 MiB/s
done
Bytes transferred = 33495040 (1ff1800 hex)
## TFTP bootm boot.img at 0x398870c0 size 0x1ff1800
BOOTM: transferring to board FIT
DTB: rk-kernel.dtb
HASH(c): OK
## Booting FIT Image Sysmem Error: "FIT_USER" (0x398870c0 - 0x3b81a6c0) alloc is overlap with existence "STACK" (0x3b7f88f0 - 0x3b9f88f0)




sysmem_dump_all:
    --------------------------------------------------------------------
    memory.rgn[0].addr     = 0x00200000 - 0x08400000 (size: 0x08200000)
    memory.rgn[1].addr     = 0x09400000 - 0x40000000 (size: 0x36c00000)


    memory.total           = 0x3ee00000 (1006 MiB. 0 KiB)
    --------------------------------------------------------------------
    allocated.rgn[0].name  = "UBOOT"
                    .addr  = 0x3b9f88f0 - 0x40000000 (size: 0x04607710)
    allocated.rgn[1].name  = "STACK"       <Overflow!>
                    .addr  = 0x3b7f88f0 - 0x3b9f88f0 (size: 0x00200000)
    allocated.rgn[2].name  = "FDT"
                    .addr  = 0x0a100000 - 0x0a121e04 (size: 0x00021e04)


    kmem-resv.rgn[0].name  = "ramoops@110000"
                    .addr  = 0x00110000 - 0x00200000 (size: 0x000f0000)


    framework malloc_r     =  32 MiB
    framework malloc_f     = 512 KiB


    allocated.total        = 0x04919514 (73 MiB. 101 KiB)
    --------------------------------------------------------------------
    LMB.allocated[0].addr  = 0x0a100000 - 0x0a121e04 (size: 0x00021e04)
    LMB.allocated[1].addr  = 0x3b7f88f0 - 0x40000000 (size: 0x04807710)


    reserved.core.total    = 0x04829514 (72 MiB. 165 KiB)
    --------------------------------------------------------------------


FIT: No FIT image
tftpbootm - tftpbootm aosp/uImage/FIT image via network using TFTP protocol


Usage:
tftpbootm [loadAddress] [[hostIPaddr:]bootfilename]


输入命令:boot, 可以正常启动kernel进入内核。
回复

使用道具 举报

133

积分

0

威望

0

贡献

技术小白

积分
133
发表于 2022-4-14 21:28:15        只看该作者  板凳
fireinthehole 发表于 2022-4-14 10:43
采用如下命令:tftpboot 0x398870c0 boot.img
显示结果如下:
=> tftpboot 0x398870c0 boot.img

只需要加载boot.img文件。地址为4080000。
回复

使用道具 举报

44

积分

0

威望

0

贡献

技术小白

积分
44
发表于 2022-7-22 11:24:32        只看该作者  地板
你好,请问你最终NFS启动成功了吗?
回复

使用道具 举报

38

积分

0

威望

0

贡献

技术小白

积分
38
发表于 2022-7-27 19:20:52        只看该作者  5#
我在今天遇到了跟楼主相似的问题,我这边解决了,原因是boot.img导入到内存中的位置不对,设置成正确的位置后,就解决了
回复

使用道具 举报

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

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表