Firefly开源社区

标题: RK3588Q从外挂的SSD引导系统 [打印本页]

作者: tfirst    时间: 2023-5-18 17:18
标题: RK3588Q从外挂的SSD引导系统
本帖最后由 tfirst 于 2023-5-18 17:32 编辑

RK3588Q从外挂的SSD引导系统
硬件:AIO-3588Q+Samsung SSD(nvme,1TB)
软件:buildroot (sdk 版本:v1.0.6f.)
按照文档《Rockchip Developer Guide Dual StorageCN》(Rockchip_Developer_Guide_Dual_Storage_CN.pdf)中的步骤,在uboot及kernel中进行dts设置如下:
1、 在内核中修改rk3588-firefly-aio-3588q.dtsi文件中的宏M2_SATA_OR_PCIE为0。
2、 在uboot中:
rk3588-u-boot.dtsi文件,
       chosen{
              stdout-path= &uart2;
              //u-boot,spl-boot-order = &sdmmc, &sdhci, &spi_nand, &spi_nor;
              u-boot,spl-boot-order= &sdhci, &spi_nand, &spi_nor;
       };
在根节点上添加如下:
       vcc12v_dcin:vcc12v_dcin {
              u-boot,dm-pre-reloc;
              compatible= "regulator-fixed";
              regulator-name= "vcc12v_dcin";
              regulator-always-on;
              regulator-boot-on;
              //status= "okay";
              regulator-min-microvolt= <12000000>;
              regulator-max-microvolt= <12000000>;
       };     
       vcc_sata_pwr_en:vcc-sata-pwr-en-regulator {
              u-boot,dm-pre-reloc;
              compatible= "regulator-fixed";
              regulator-name= "vcc_sata_pwr_en";
              regulator-min-microvolt= <3300000>;
              regulator-max-microvolt= <3300000>;         
              regulator-boot-on;
              regulator-always-on;
              enable-active-high;
              status= "okay";
              gpio= <&pca9555 PCA_IO1_2 GPIO_ACTIVE_HIGH>;  
              startup-delay-us= <5000>;
              vin-supply= <&vcc12v_dcin>;         
       };
并使能相应模块
&combphy0_ps {
       u-boot,dm-pre-reloc;
       status= "okay";
};
/* pca9555 */
/*
&pca9555{
       u-boot,dm-pre-reloc;
       status= "okay";
};
*/
&pcie2x1l2 {
       u-boot,dm-pre-reloc;
       reset-gpios=  <&pca9555 PCA_IO1_6GPIO_ACTIVE_HIGH>;
       vpcie3v3-supply= <&vcc_sata_pwr_en>;
       status= "okay";
};
&i2c6 {
       u-boot,dm-pre-reloc;
       clock-frequency= <400000>;
       status= "okay";
       pinctrl-names= "default";
       pinctrl-0= <&i2c6m0_xfer>;
      
       pca9555_1:gpio@20 {
              u-boot,dm-pre-reloc;
       compatible = "nxp,pca9555";
       reg = <0x20>;
       gpio-controller;
        #gpio-cells = <2>;
       gpio-group-num = <300>;
       status = "okay";
   };
      
       pca9555:gpio@21 {
              u-boot,dm-pre-reloc;
              compatible= "nxp,pca9555";
              reg= <0x21>;
              gpio-controller;
              #gpio-cells= <2>;
              gpio-group-num= <200>;
              status= "okay";
       };
};
&pcfg_pull_none_smt {
       u-boot,dm-spl;
       bias-disable;
       input-schmitt-enable;
};
在pinctrl节点中,添加:
       i2c6{
              u-boot,dm-spl;
              i2c6m0_xfer:i2c6m0-xfer {
                     u-boot,dm-spl;
                     rockchip,pins=
                            /*i2c6_scl_m0 */
                            <0RK_PD0 9 &pcfg_pull_none_smt>,
                            /*i2c6_sda_m0 */
                            <0RK_PC7 9 &pcfg_pull_none_smt>;
              };
       };
修改firefly-linux.config文件:
CONFIG_OF_U_BOOT_REMOVE_PROPS="clock-namesinterrupt-parent assigned-clocks assigned-clock-ratesassigned-clock-parents"
并添加如下内容:
CONFIG_CMD_I2C=y
CONFIG_CMD_PCI=y
CONFIG_NVME=y
CONFIG_PCI=y
CONFIG_DM_PCI=y
CONFIG_DM_PCI_COMPAT=y
CONFIG_PCIE_DW_ROCKCHIP=y
CONFIG_PHY_ROCKCHIP_NANENG_COMBOPHY=y
CONFIG_PHY_ROCKCHIP_SNPS_PCIE3=y
CONFIG_DM_REGULATOR_FIXED=y
CONFIG_ROCKCHIP_BOOTDEV="nvme 0"
CONFIG_EMBED_KERNEL_DTB_ALWAYS=y
#CONFIG_EMBED_KERNEL_DTB_PATH="dts/kern.dtb"
CONFIG_SPL_FIT_IMAGE_KB=2560
将编译内核时编译出来的dtb拷贝到u-boot/dts/kern.dtb中。
修改完成后,重新编译,可以在uboot中识别出ssd。信息如下:
=> pci scan
Scanning PCI devices on bus 0
BusDevFun VendorId   DeviceId   Device Class       Sub-Class
_____________________________________________________________
00.00.00  0x1d87     0x3588     Bridge device           0x04
=>
Scanning PCI devices on bus 0
BusDevFun VendorId   DeviceId   Device Class       Sub-Class
_____________________________________________________________
00.00.00  0x1d87     0x3588     Bridge device           0x04
=> pci 1
Scanning PCI devices on bus 1
BusDevFun VendorId   DeviceId   Device Class       Sub-Class
_____________________________________________________________
01.00.00  0x144d     0xa809     Mass storage controller 0x08
=>
Scanning PCI devices on bus 1
BusDevFun VendorId   DeviceId   Device Class       Sub-Class
_____________________________________________________________
01.00.00  0x144d     0xa809     Mass storage controller 0x08
=> nvme scan
=> nvme details
Blk device 0: Optional Admin CommandSupport:
       Namespace Management/Attachment: no
       Firmware Commit/Image download: yes
       Format NVM: yes
       Security Send/Receive: yes
Blk device 0: Optional NVM Command Support:
       Reservation: yes
       Save/Select field in the Set/Get features: no
       Write Zeroes: yes
       Dataset Management: no
       Write Uncorrectable: yes
Blk device 0: Format NVM Attributes:
       Support Cryptographic Erase: yes
       Support erase a particular namespace: Yes
       Support format a particular namespace: No
Blk device 0: LBA Format Support:
Blk device 0: End-to-End DataProtectCapabilities:
       As last eight bytes: No
       As first eight bytes: No
       Support Type3: No
       Support Type2: No
       Support Type1: No
Blk device 0: Metadata capabilities:
        As part of a separate buffer: No
       As part of an extended data LBA: No
=>
Blk device 0: Optional Admin CommandSupport:
       Namespace Management/Attachment: no
       Firmware Commit/Image download: yes
       Format NVM: yes
       Security Send/Receive: yes
Blk device 0: Optional NVM Command Support:
       Reservation: yes
       Save/Select field in the Set/Get features: no
       Write Zeroes: yes
       Dataset Management: no
       Write Uncorrectable: yes
Blk device 0: Format NVM Attributes:
       Support Cryptographic Erase: yes
       Support erase a particular namespace: Yes
       Support format a particular namespace: No
Blk device 0: LBA Format Support:
Blk device 0: End-to-End DataProtectCapabilities:
       As last eight bytes: No
       As first eight bytes: No
       Support Type3: No
       Support Type2: No
       Support Type1: No
Blk device 0: Metadata capabilities:
       As part of a separate buffer: No
       As part of an extended data LBA: No
=> nvme info
Device 0: Vendor: 0x144d Rev: 3B4QFXO7Prod: S649NL0W205605E     
           Type: Hard Disk
           Capacity: 953869.7 MB = 931.5 GB (1953525168 x 512)
=>

使用RKDevTool.exe(v2.96)烧录各个固件:

其中: parameter_emmc.txt文件的内容如下:
FIRMWARE_VER: 1.0
MACHINE_MODEL: RK3588
MACHINE_ID: 007
MANUFACTURER: RK3588
MAGIC: 0x5041524B
ATAG: 0x00200800
MACHINE: 0xffffffff
CHECK_MASK: 0x80
PWR_HLD: 0,0,A,0,1
TYPE: GPT
CMDLINE: mtdparts=rk29xxnand:0x00004000@0x00004000(uboot)

parameter_nvme.txt文件的内容如下:
FIRMWARE_VER: 1.0
MACHINE_MODEL: RK3588
MACHINE_ID: 007
MANUFACTURER: RK3588
MAGIC: 0x5041524B
ATAG: 0x00200800
MACHINE: 0xffffffff
CHECK_MASK: 0x80
PWR_HLD: 0,0,A,0,1
TYPE: GPT
CMDLINE: mtdparts=rk29xxnand:0x00002000@0x00008000(misc),0x00080000@0x0000a000(boot:bootable),0x00040000@0x0008a000(recovery),0x00010000@0x000ca000(backup),0x00c00000@0x000da000(rootfs),-@0x0cda000(userdata:grow)
uuid:rootfs=614e0000-0000-4b53-8000-1d28000054a9

在进行分区配置时,会如下错误。

点击“执行”按钮后,软件会报错:”xxx” did not find matchpartition(xxx分别为:misc、boot、recovery、backup、rootfs、userdata)

不理会错误,重新进入maskrom模式后,选择“强制按地址写”,从软件的日志上看,似乎可以正确烧录。
烧录完成后,自动重启,串口打印如下信息:
done
Saving random seed: OK
realpath: /dev/block/by-name: No such fileor directory
Will now mount all partitions in /etc/fstab
strings: : No such file or directory
Note: Will skip fsck, remove /.skip_fsck toenable
Log saved to /tmp/mountall.log
Starting network: cmdline=storagemedia=nvmeandroidboot.storagemedia=nvme androidboot.mode=normal  storagenode=/pcie@fe190000androidboot.verifiedbootstate=orange ro rootwaitearlycon=uart8250,mmio32,0xfeb50000 console=ttyFIQ0 irqchip.gicv3_pseudo_nmi=0root=PARTLABEL=rootfs rootfstype=ext4 overlayroot=device:dev=PARTLABEL=userdata,fstype=ext4,mkfs=1coherent_pool=1m systemd.gpt_auto=0 cgroup_enable=memory swapaccount=1

read console from cmdline is /dev/ttyFIQ0
Starting recovery on Thu May 18 09:00:192023

Recovery System have UI defined.
failed to read font: res=-1, fall back tothe compiled-in font
OK
Debug: configfs_init
rotate degree: 0 - none, 1 - right, 2 -down, 3 - left.
current rotate degree is : 0
mkdir: can't create directory'/sys/kernel/config/usb_gadget/rockchip/functions/uac1.gs0': No such file ordirectory
mkdir: can't create directory'/sys/kernel/config/usb_gadget/rockchip/functions/uac2.gs0': No such file ordirectory
[   7.857208] file system registered
mkdir: can't create directory'/sys/kernel/config/usb_gadget/rockchip/functions/mtp.gs0': No such file ordirectory
[   7.864041] using random self ethernet address
[   7.864085] using random host ethernet address
[   7.868268] Mass Storage Function, version: 2009/09/11
[   7.868334] LUN: removable file: (no medium)
mkdir: can't create directory'/sys/kernel/config/usb_gadget/rockchip/functions/hid.usb0': No such file ordirectory
[   7.898766] read descriptors
[   7.898825] read strings
[   8.158843] rk_hdmirx fdee0000.hdmirx-controller:hdmirx_cancel_cpu_limit_freq freq qos nod add
[   8.171203] rk-pcie fe150000.pcie: PCIe Link Fail
[   8.171217] rk-pcie fe150000.pcie: failed to initialize host
Starting input-event-daemon:input-event-daemon: Start parsing /etc/input-event-daemon.conf...
input-event-daemon: Adding device:/dev/input/event0...
input-event-daemon: Adding device:/dev/input/event1...
input-event-daemon: Adding device:/dev/input/event2...
input-event-daemon: Adding device:/dev/input/event3...
input-event-daemon: Adding device:/dev/input/event4...
input-event-daemon: Start listening on 5devices...
done
[root@RK3588:/]# [    9.106625] dwc3 fc000000.usb: device reset
[   9.231491] android_work: sent uevent USB_STATE=CONNECTED
[   9.410018] dwc3 fc000000.usb: device reset
recovery filesystem table
=========================
  0(null) /tmp ramdisk (null) (null) (null)
  1/dev/root / ext4 rw,noauto 0 1
  2proc /proc proc defaults 0 0
  3devpts /dev/pts devpts defaults,gid=5,mode=620 0 0
  4tmpfs /dev/shm tmpfs mode=0777 0 0
  5tmpfs /tmp tmpfs mode=1777 0 0
  6tmpfs /run tmpfs mode=0755,nosuid,nodev 0 0
  7sysfs /sys sysfs defaults 0 0
  8/dev/block/by-name/misc /misc emmc defaults 0 0
  9/dev/block/by-name/userdata /userdata ext4 defaults 0 0
  10/dev/block/by-name/oem /oem ext2 defaults 0 0
  11/dev/sda1 /mnt/usb_storage vfat defaults 0 0
  12/dev/mmcblk1p1 /mnt/external_sd vfat defaults 0 0
  13/dev/block/by-name/oem /oem ext2 defaults 0 2
  14/dev/block/by-name/userdata /userdata ext4 defaults 0 2

executing '/usr/bin/relink-block.sh'
executed '/usr/bin/relink-block.sh' done
executed '/usr/bin/relink-block.sh' return0
stat /dev/block/by-name/misc try 1: No suchfile or directory
[   9.494680] usb 4-1: new SuperSpeed Gen 1 USB device number 2 usingxhci-hcd
[   9.519634] usb 4-1: New USB device found, idVendor=05e3, idProduct=0620,bcdDevice=93.91
[   9.519701] usb 4-1: New USB device strings: Mfr=1, Product=2,SerialNumber=0
[   9.519716] usb 4-1: Product: USB3.2 Hub
[   9.519729] usb 4-1: Manufacturer: GenesysLogic
[   9.548335] hub 4-1:1.0: USB hub found
[   9.548757] hub 4-1:1.0: 4 ports detected
[   9.574729] android_work: sent uevent USB_STATE=CONFIGURED
[   9.638183] usb 3-1: new high-speed USB device number 2 using xhci-hcd
[   9.781305] usb 3-1: New USB device found, idVendor=05e3, idProduct=0610,bcdDevice=93.91
[   9.781352] usb 3-1: New USB device strings: Mfr=1, Product=2,SerialNumber=0
[   9.781365] usb 3-1: Product: USB2.1 Hub
[   9.781376] usb 3-1: Manufacturer: GenesysLogic
[   9.836774] hub 3-1:1.0: USB hub found
[   9.837194] hub 3-1:1.0: 4 ports detected
stat /dev/block/by-name/misc try 2: No suchfile or directory
stat /dev/block/by-name/misc try 3: No suchfile or directory
stat /dev/block/by-name/misc try 4: No suchfile or directory
stat /dev/block/by-name/misc try 5: No suchfile or directory
stat /dev/block/by-name/misc try 6: No suchfile or directory
stat /dev/block/by-name/misc try 7: No suchfile or directory
stat /dev/block/by-name/misc try 8: No suchfile or directory
stat /dev/block/by-name/misc try 9: No suchfile or directory
stat /dev/block/by-name/misc try 10: Nosuch file or directory
failed to stat /dev/block/by-name/misc
emmc_point is /dev/mmcblk0
sd_point is (null)
sd_point_2 is (null)
Recovery start....................
read cmdline
>>> Boot from non-SDcard
executing '/usr/bin/relink-block.sh'
executed '/usr/bin/relink-block.sh' done
executed '/usr/bin/relink-block.sh' return0
[I/]RECOVERY devices is not MTD.
stat /dev/block/by-name/misc try 1: No suchfile or directory
stat /dev/block/by-name/misc try 2: No suchfile or directory
stat /dev/block/by-name/misc try 3: No suchfile or directory
stat /dev/block/by-name/misc try 4: No suchfile or directory
stat /dev/block/by-name/misc try 5: No suchfile or directory
stat /dev/block/by-name/misc try 6: No suchfile or directory
stat /dev/block/by-name/misc try 7: No suchfile or directory
stat /dev/block/by-name/misc try 8: No suchfile or directory
stat /dev/block/by-name/misc try 9: No suchfile or directory
stat /dev/block/by-name/misc try 10: Nosuch file or directory
failed to stat /dev/block/by-name/misc
[E/]RECOVERY Can't open/dev/block/by-name/misc
(No such file or directory)
executing '/usr/bin/relink-block.sh'
executed '/usr/bin/relink-block.sh' done
executed '/usr/bin/relink-block.sh' return0
[E/]RECOVERY failed to mount /userdata (Nosuch file or directory)
[E/]RECOVERY Can't mount/userdata/recovery/command
executing '/usr/bin/relink-block.sh'
executed '/usr/bin/relink-block.sh' done
executed '/usr/bin/relink-block.sh' return0
[I/]RECOVERY devices is not MTD.
Command: "/usr/bin/recovery"

finish_recovery Enter.....
executing '/usr/bin/relink-block.sh'
executed '/usr/bin/relink-block.sh' done
executed '/usr/bin/relink-block.sh' return0
[E/]RECOVERY failed to mount /userdata (Nosuch file or directory)
[E/]RECOVERY Can't mount/userdata/recovery/log
[E/]RECOVERY Can't open/userdata/recovery/log
executing '/usr/bin/relink-block.sh'
executed '/usr/bin/relink-block.sh' done
executed '/usr/bin/relink-block.sh' return0
[E/]RECOVERY failed to mount /userdata (Nosuch file or directory)
[E/]RECOVERY Can't mount/userdata/recovery/last_log
[E/]RECOVERY Can't open/userdata/recovery/last_log
executing '/usr/bin/relink-block.sh'
executed '/usr/bin/relink-block.sh' done
executed '/usr/bin/relink-block.sh' return0
[I/]RECOVERY devices is not MTD.
executing '/usr/bin/relink-block.sh'
executed '/usr/bin/relink-block.sh' done
executed '/usr/bin/relink-block.sh' return0
[E/]RECOVERY failed to mount /userdata (Nosuch file or directory)
[W/]RECOVERY Can't unlink/userdata/recovery/command

发现没有进入weston桌面,也没有发现其他分区:
[root@RK3588:/]#
[root@RK3588:/]# ls /dev/block/
179:0   179:64   253:0    7:0     7:2      7:4      7:6     by-name
179:32  1:0      259:0    7:1     7:3      7:5      7:7
[root@RK3588:/]# ls /dev/block/by-name/
misc
[root@RK3588:/]# ls /dev/nvme0
nvme0   nvme0n1
[root@RK3588:/]# ls /dev/nvme*
/dev/nvme0    /dev/nvme0n1
[root@RK3588:/]#

除了uboot.img外,其他同样的镜像文件,烧录到emmc上,使用emmc启动引导,可以正常进入weston桌面。

不知道是什么原因。开机启动日志见附件

tchip_askquestions

session.log

91.2 KB, 下载次数: 0, 下载积分: 灯泡 -1 , 经验 -1


作者: loading    时间: 2023-5-19 17:41
如果不强制按地址写呢? (没有的就不烧录,把前面勾选去掉)
作者: tfirst    时间: 2023-5-19 22:25
本帖最后由 tfirst 于 2023-5-22 09:15 编辑
loading 发表于 2023-5-19 17:41
如果不强制按地址写呢? (没有的就不烧录,把前面勾选去掉)

“把前面勾选去掉”———把哪些去掉?每个分区都要。
如果不强制按地址写,有时会报错,会报说“超过flash大小的错误”,但是每个分区的大小实际都大于每一个镜像文件的大小的。偶尔又不会报这个错误,不知道为啥?但是在没报错的情况下烧录完成后,自动重启进入recovery模式,此时可以看到nvme0被分成了好几个分区,并进行格式化,recovery完成后自动重启,kernel就再也无法引导了,直接进入uboo命令行模式,此时用part list nvme 0去查看分区情况,返回错误,没有分区信息,用part list emmc 0去查看emmc的分区,可以看到如第一个parameter.txt文件所示的分区,但是如果在烧录完成后,人为介入,使进入uboot命令行模式去查看nvme的分区信息,此时是可以看到如第二个parameter.txt所示的那些分区,所以怀疑是recovery模式破坏了分区信息,但是将wipeoff 的misc镜像换成blank的镜像烧录进去后,启动就只能进入uboot命令行模式,而不能正常引导kernel。
对这个recovery不熟悉,不知道该是哪里破坏了分区信息,能否指导一下?(我也尝试更换recovery程序去调试,结果即使没有做任何改动,仅仅是将rk3588*.cpio.gz解压,然后再压缩,去替换制作recovery.img文件所需要的那个rk3588*.cpio.gz文件,制作出来的recovery.img文件烧录进入后,就只能进入uboot命令行模式,而不能正常引导kernel,不知道制作这个cpio文件该用什么命令?)
另外,关于不强制按地址写,有时会报比flash大的错误问题,不知道是不是跟emmc刷过misc、kernel、recovery等分区的原因?目前还没有找到规律。

补充:通过《瑞芯微开发工具》V2.96的高级功能,去擦除emmc,再烧录,会报如下图所示的错误,无法烧录。




作者: loading    时间: 2023-5-22 09:44
tfirst 发表于 2023-5-19 22:25
“把前面勾选去掉”———把哪些去掉?每个分区都要。
如果不强制按地址写,有时会报错,会报说“超过fl ...

我目前也在尝试spinor+sata 方式,也是进入recovery 模式,进不到系统
作者: tfirst    时间: 2023-5-22 10:33
loading 发表于 2023-5-22 09:44
我目前也在尝试spinor+sata 方式,也是进入recovery 模式,进不到系统

我的是buildroot,不是android系统。
你的分区文件是不是跟我的那两个pameter类似:写进emmc的分区只有uboot分区,写进nvme的分区是除了uboot之外的分区?
你的不强制写,能烧录进行吗?之前怀疑是emmc烧录过全部分区,所以导致不强制写pcie,就写不进去,但是经过验证,我擦除了emmc后,再烧录,就是会报错。偶尔能烧录,都不知道怎么才能烧录进去,现在如果不强制写的话,一直都烧录不进去。
作者: loading    时间: 2023-5-22 12:48
我的也是Linux,buildroot、Debian 都有,我没有emmc(spinor,你可以理解为你的emmc),我不强制是可以烧录的(你也可以看下那文档里面也没有强制)。
parameter 我参考了文档的:
我是怀疑跟这个有关:
[I/]RECOVERY devices is not MTD.
stat /dev/block/by-name/misc try 1: No suchfile or directory
作者: loading    时间: 2023-5-22 12:49
parameter 我参考了文档的:
mtdparts=sfc_nor:0x00040000@0x00180000(vnvm),0x00600000@0x00200000(uboot)
作者: tfirst    时间: 2023-5-22 13:48
loading 发表于 2023-5-22 12:49
parameter 我参考了文档的:
mtdparts=sfc_nor:0x00040000@0x00180000(vnvm),0x00600000@0x00200000(uboot ...

用了这个参数,会有弹框(”xxx” did not find matchpartition)提示吗?
作者: loading    时间: 2023-5-22 15:45
tfirst 发表于 2023-5-22 13:48
用了这个参数,会有弹框(”xxx” did not find matchpartition)提示吗?

不会,都正常,烧录工具也要添加vnvm
作者: tfirst    时间: 2023-5-22 15:53
loading 发表于 2023-5-22 15:45
不会,都正常,烧录工具也要添加vnvm

那听奇怪的。为啥我的会有弹框提示呢?我的第一个Parameter.txt文件根据你的提示改成:
mtdparts=rk29xxnand:0x00000200@00001c0(vnvm),0x00004000@0x00004000(uboot)
第二个parameter.txt文件是去除了uboot分区之后的,如下:
mtdparts=rk29xxnand:0x00002000@0x00008000(misc),0x00080000@0x0000a000(boot:bootable),0x00040000@0x0008a000(recovery),0x00010000@0x000ca000(backup),0x00c00000@0x000da000(rootfs),-@0x0cda000(userdata:grow)
在烧录的时候还是有一个错误弹框:“misc” did not find matchpartition”的提示。

为啥呢?

作者: loading    时间: 2023-5-22 18:13
tfirst 发表于 2023-5-22 15:53
那听奇怪的。为啥我的会有弹框提示呢?我的第一个Parameter.txt文件根据你的提示改成:
mtdparts=rk29xx ...

这个不太清楚了,一般是烧录工具 跟parameter 对应上
作者: tfirst    时间: 2023-5-23 14:30
loading 发表于 2023-5-22 18:13
这个不太清楚了,一般是烧录工具 跟parameter 对应上

这个问题你目前进展怎么样了?
方便把你的两个parameter.txt给我看看吗?
作者: loading    时间: 2023-5-24 14:58



作者: tfirst    时间: 2023-5-25 09:40
loading 发表于 2023-5-24 14:58

谢谢!借鉴了你的参数设置,我这边仍然是会报弹框报错。
现在这个事情,我目前的情况是:
      在弹框报错的情况下(不强制写),重新选择软件界面中变灰的文件,再执行烧录操作,是可以烧录进去。烧录完成后,自动进入recovery模式,在recovery处理完后自动重启后,就只能停在uboot命令行下。这个时候用命令“part list nvme 0”去查看ssd中的分区情况,会报“ERROR: Can't read MBR header”这样的错误,而我reset或者掉电重启后,按下键盘Ctrl+C,主动进入u-boot命令行模式,此时用命令去查看ssd的分区情况,是可以正确读取到分区的信息(与parameter.txt的一直),然后使用boot命令去引导kernel,依然是无法启动,而停留在u-boot命令行模式,此时再用命令去查看ssd的分区情况,却又会报“ERROR: Can't read MBR header”这样的错误,所以我怀疑是不是uboot哪里没有配置好?(关于uboot的配置,我用的都是这个开发板默认的配置:firefly-linux.config,仅仅是在此基础上添加了如我贴子写的那样的关于PCI等的相关配置)
作者: loading    时间: 2023-5-25 11:52
tfirst 发表于 2023-5-25 09:40
谢谢!借鉴了你的参数设置,我这边仍然是会报弹框报错。
现在这个事情,我目前的情况是:
      在弹框 ...

1. 还弹框报错,就是烧录工具的分区跟parameter 的分区不对应;
2.uboot 修改都参考文档来改了吗?
作者: tfirst    时间: 2023-5-25 13:20
loading 发表于 2023-5-25 11:52
1. 还弹框报错,就是烧录工具的分区跟parameter 的分区不对应;
2.uboot 修改都参考文档来改了吗?

确实是还弹框,那个软件的配置就跟我之前在贴子正文贴的图一样,每一个地址我都核对过的。写到emmc的parameter.txt只有一个uboot分区,写到SSD的parameter.txt就是除了uboot之外的其他分区。
uboot的修改就是参考那个文档,以及https://blog.csdn.net/weixin_43245753/article/details/124768691这个贴子来修改的。
作者: loading    时间: 2023-5-25 15:49
tfirst 发表于 2023-5-25 13:20
确实是还弹框,那个软件的配置就跟我之前在贴子正文贴的图一样,每一个地址我都核对过的。写到emmc的para ...

你emmc 不够大放系统吗? 烧录到emmc 本来就可以引导系统启动了;下面这个你配置的啥
CONFIG_ROCKCHIP_BOOTDEV="nvme 0" # 可择 "nvme"-NVMe "mmc"-1 emmc "scsi"-SATA
作者: tfirst    时间: 2023-5-25 15:56
loading 发表于 2023-5-25 15:49
你emmc 不够大放系统吗? 烧录到emmc 本来就可以引导系统启动了;下面这个你配置的啥
CONFIG_ROCKCHIP_B ...

因为客户的需要,我们需要装一个可销毁的SSD,所以就需要将系统等放到SSD中,所以需要采用emmc+SSD的方式,SSD里需要装除了uboot以外的固件。
那个CONFIG_ROCKCHIP_BOOTDEV我设置的是nvme 0
作者: loading    时间: 2023-5-26 09:15
tfirst 发表于 2023-5-25 15:56
因为客户的需要,我们需要装一个可销毁的SSD,所以就需要将系统等放到SSD中,所以需要采用emmc+SSD的方式 ...

嗯,我觉得至少先把烧录弹框的解决了,然后再分析其他的
作者: tfirst    时间: 2023-5-26 11:13
loading 发表于 2023-5-26 09:15
嗯,我觉得至少先把烧录弹框的解决了,然后再分析其他的

烧录弹框的问题,有点困难,因为这个过程就是一个黑盒子,都搞不清楚什么原因。
作者: loading    时间: 2023-5-26 15:41
tfirst 发表于 2023-5-26 11:13
烧录弹框的问题,有点困难,因为这个过程就是一个黑盒子,都搞不清楚什么原因。

是烧录到emmc 弹框还是ssd 弹框
作者: tfirst    时间: 2023-5-26 16:38
本帖最后由 tfirst 于 2023-5-26 16:43 编辑
loading 发表于 2023-5-26 15:41
是烧录到emmc 弹框还是ssd 弹框

没烧录,在配置的时候会弹窗,配置完后,选择所有固件进行烧录的时候也会弹窗。
我将这个配置,保存成配置文件,重新导入这个配置文件的时候就会立即弹窗。

本来想上传一个视频文件的,但是论坛都不传不了大文件

作者: loading    时间: 2023-5-26 18:02
tfirst 发表于 2023-5-26 16:38
没烧录,在配置的时候会弹窗,配置完后,选择所有固件进行烧录的时候也会弹窗。
我将这个配置,保存成配 ...

配置哪一部分弹框? emmc? SSD?
作者: tfirst    时间: 2023-5-29 09:58
loading 发表于 2023-5-26 18:02
配置哪一部分弹框? emmc? SSD?

烧录时的报错,具体如下:

RK3588 emmc+pcie nvme烧录出错记录
一、parameter_emmc.txt内容如下:
FIRMWARE_VER: 1.0
MACHINE_MODEL: RK3588
MACHINE_ID: 007
MANUFACTURER: RK3588
MAGIC: 0x5041524B
ATAG: 0x00200800
MACHINE: 0xffffffff
CHECK_MASK: 0x80
PWR_HLD: 0,0,A,0,1
TYPE: GPT
CMDLINE: mtdparts=sfc_nor:0x00004000@0x00004000(uboot)
二、parameter_nvme.txt内容如下:
FIRMWARE_VER: 1.0
MACHINE_MODEL: RK3588
MACHINE_ID: 007
MANUFACTURER: RK3588
MAGIC: 0x5041524B
ATAG: 0x00200800
MACHINE: 0xffffffff
CHECK_MASK: 0x80
PWR_HLD: 0,0,A,0,1
TYPE: GPT
CMDLINE: mtdparts=sfc_nor:0x00002000@0x00008000(misc),0x00080000@0x0000a000(boot:bootable),0x00040000@0x0008a000(recovery),0x00010000@0x000ca000(backup),0x00c00000@0x000da000(rootfs),0x00010000@0x0cda000(saat1),0x00010000@0x00cea000(saat2),-@0x00cfa000(userdata:grow)
uuid:rootfs=614e0000-0000-4b53-8000-1d28000054a9

三、报错记录:
运行RKDevTool.exe程序,右键选择“清空所有项”后,进行配置,在软件中第一个参数文件(即下载到EMMC的配置参数文件)选择parameter_emmc.txt。当配置到PCIE存储的第一个文件,即第二个参数文件(parameter_nvme.txt文件)时,会弹出报错:”“uboot” did not find match partiion”。



忽略错误,按照parameter_nvme.txt文件中的地址继续配置PCIE的各个分区,配置完成后,点击“执行”,则会从misc分区到userdata分区依次报错,如“”misc” did not find match partion”、“”boot” did not find match partion”等


依次点击对话框的“确定”后,会出现最后一个报错:


点击该对话框中的确定后,发现uboot一项变灰。

重新选择uboot文件后,uboot一项恢复正常颜色,点击“执行”按钮进行烧录,则会报如下错误:


此时关闭软件,再次运行,在软件界面还未出现时就会弹框,从misc分区到userdata分区依次弹框。


依次点击对话框中的确定后,即进入软件界面,此时出现之前配置好的信息

直接点击“执行”,进行烧录,会同样出现“misc超过Flash大小”的错误。



作者: loading    时间: 2023-5-30 17:44
tfirst 发表于 2023-5-29 09:58
烧录时的报错,具体如下:

RK3588 emmc+pcie nvme烧录出错记录

这错误确实顶奇怪的,我一般是打开烧录工具,添加各个分区,然后再导入文件
作者: tfirst    时间: 2023-5-31 14:57
loading 发表于 2023-5-30 17:44
这错误确实顶奇怪的,我一般是打开烧录工具,添加各个分区,然后再导入文件

目前这种按分区的方式,到目前为止,这种错误还是没解决,我只能通过更新镜像的方式去更新,一下子把所有分区镜像通过一个Img文件下载的方式,就OK
作者: loading    时间: 2023-6-1 12:39
tfirst 发表于 2023-5-31 14:57
目前这种按分区的方式,到目前为止,这种错误还是没解决,我只能通过更新镜像的方式去更新,一下子把所有 ...

嗯,那下载的没啥纠结了,能引导成功了吗
作者: tfirst    时间: 2023-6-2 08:49
loading 发表于 2023-6-1 12:39
嗯,那下载的没啥纠结了,能引导成功了吗

可以成功引导了。这个版本的uboot虽然有对应的驱动,但是还不支持。后来参照emmc的启动引导,经过添加修改,可以正常引导了。
作者: loading    时间: 2023-6-2 09:27
tfirst 发表于 2023-6-2 08:49
可以成功引导了。这个版本的uboot虽然有对应的驱动,但是还不支持。后来参照emmc的启动引导,经过添加修 ...

恭喜




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