当前位置: 首页 > news >正文

rk3568 norflash+pcei nvme 配置

文章目录

  • rk3568 norflash+pcei nvme 配置
      • 1,添加parameter_nor.txt文件
      • 2 修改编译规则
      • 3 修改uboot
      • 4 修改BoardConfig.mk
      • 5 修改kernel pcei配置
      • 6 编译
      • 7 烧录

rk3568 norflash+pcei nvme 配置

1,添加parameter_nor.txt文件

device/rockchip/rk356x/rk3568_xx/parameter_nor.txt

FIRMWARE_VER: 12.0
MACHINE_MODEL: rk3568_s_aio
MACHINE_ID: 007
MANUFACTURER: rockchip
MAGIC: 0x5041524B
ATAG: 0x00200800
MACHINE: rk3568_s_aio
CHECK_MASK: 0x80
PWR_HLD: 0,0,A,0,1
TYPE: GPT
CMDLINE:mtdparts=rk29xxnand:0x00002800@0x00004000(uboot)

2 修改编译规则

在这里插入代码片diff --git a/code/RKTools/linux/Linux_Pack_Firmware/rockdev/mkupdate.sh b/code/RKTools/linux/Linux_Pack_Firmware/rockdev/mkupdate.sh
index 0e00949f39e..7270b527312 100755
--- a/code/RKTools/linux/Linux_Pack_Firmware/rockdev/mkupdate.sh
+++ b/code/RKTools/linux/Linux_Pack_Firmware/rockdev/mkupdate.sh
@@ -43,5 +43,33 @@ fiecho "start to make update.img..."./afptool -pack ./ $IMAGE_PATH/update.img $PACKAGE_FILE || pause./rkImageMaker ${vendor_id_map[$PLATFORM]} $IMAGE_PATH/MiniLoaderAll.bin $IMAGE_PATH/update.img update.img -os_type:androidos || pause
-echo "Making update.img OK."
+
+echo "start to make pcie update.img..."
+
+ ./afptool -pack ./ $IMAGE_PATH/update.img $PACKAGE_FILE || pause
+./rkImageMaker ${vendor_id_map[$PLATFORM]} $IMAGE_PATH/MiniLoaderAll.bin $IMAGE_PATH/update.img pcie_update.img -os_type:androidos -storage:pcie || pause
+echo "Making $IMAGE_PATH/pcie_update.img OK."
+
+
+echo "regenernate $PACKAGE_FILE..."
+if [ -f "$PACKAGE_FILE" ]; then
+    rm -rf $PACKAGE_FILE
+fi
+cp $IMAGE_PATH/parameter.txt $IMAGE_PATH/parameter.txt.bak
+cp $IMAGE_PATH/parameter_nor.txt $IMAGE_PATH/parameter.txt
+
+./gen-package-file.sh $IMAGE_PATH > $PACKAGE_FILE
+
+echo "start to make spinor update.img..."
+
+./afptool -pack ./ $IMAGE_PATH/update.img $PACKAGE_FILE || pause
+./rkImageMaker ${vendor_id_map[$PLATFORM]} $IMAGE_PATH/MiniLoaderAll.bin $IMAGE_PATH/update.img spinor_update.img -os_type:androidos -storage:spinor || pause
+echo "Making $IMAGE_PATH/spi_update.img OK."
+
+./rkImageMaker -merge ./update.img ./spinor_update.img ./pcie_update.img
+
+
+mv $IMAGE_PATH/parameter.txt.bak $IMAGE_PATH/parameter.txt
+
+exit 0diff --git a/code/device/rockchip/common/build/rockchip/RebuildParameter.mk b/code/device/rockchip/common/build/rockchip/RebuildParameter.mk
index acc11e0b470..3bff517d2bd 100644
--- a/code/device/rockchip/common/build/rockchip/RebuildParameter.mk
+++ b/code/device/rockchip/common/build/rockchip/RebuildParameter.mk
@@ -5,7 +5,8 @@ $(info build parameter.txt with $(PRODUCT_PARAMETER_TEMPLATE)....)ifeq ($(strip $(BOARD_USES_AB_IMAGE)), true)partition_list := security:4M,uboot_a:4M,trust_a:4M,misc:4Melse
-partition_list := security:4M,uboot:4M,trust:4M,misc:4M
+# partition_list := security:4M,uboot:5M,trust:4M,misc:4M
+partition_list := security:4M,misc:4Mendif # BOARD_USES_AB_IMAGEifeq ($(strip $(BOARD_USES_AB_IMAGE)), true)
diff --git a/code/device/rockchip/common/mkimage.sh b/code/device/rockchip/common/mkimage.sh
index 69b733e0bbd..288c24564a2 100755
--- a/code/device/rockchip/common/mkimage.sh
+++ b/code/device/rockchip/common/mkimage.sh
@@ -193,6 +193,7 @@ thenelseif [ -f $OUT/parameter.txt ]; thencp -a $OUT/parameter.txt $IMAGE_PATH/parameter.txt
+        cp -a ${TARGET_DEVICE_DIR}/parameter_nor.txt $IMAGE_PATH/parameter_nor.txtelseecho "$PARAMETER not fount!"fidiff --git a/code/mkimage.sh b/code/mkimage.sh
index 69b733e0bbd..288c24564a2 100755
--- a/code/mkimage.sh
+++ b/code/mkimage.sh
@@ -193,6 +193,7 @@ thenelseif [ -f $OUT/parameter.txt ]; thencp -a $OUT/parameter.txt $IMAGE_PATH/parameter.txt
+        cp -a ${TARGET_DEVICE_DIR}/parameter_nor.txt $IMAGE_PATH/parameter_nor.txtelseecho "$PARAMETER not fount!"fi

3 修改uboot

diff --git a/code/u-boot/arch/arm/dts/rk3568-u-boot.dtsi b/code/u-boot/arch/arm/dts/rk3568-u-boot.dtsi
index 3eb39374f05..134645c5f68 100644
--- a/code/u-boot/arch/arm/dts/rk3568-u-boot.dtsi
+++ b/code/u-boot/arch/arm/dts/rk3568-u-boot.dtsi
@@ -15,7 +15,32 @@chosen {stdout-path = &uart2;
-		u-boot,spl-boot-order = &sdmmc0, &sdhci, &nandc0, &spi_nand, &spi_nor;
+		u-boot,spl-boot-order = &sdhci, &spi_nand, &spi_nor;
+	};
+
+	dc_12v: dc-12v {
+		u-boot,dm-pre-reloc;
+		compatible = "regulator-fixed";
+		regulator-name = "dc_12v";
+		regulator-always-on;
+		regulator-boot-on;
+		regulator-min-microvolt = <12000000>;
+		regulator-max-microvolt = <12000000>;
+	};
+
+	vcc3v3_pcie: gpio-regulator {
+		u-boot,dm-pre-reloc;
+		compatible = "regulator-fixed";
+		regulator-name = "vcc3v3_pcie";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		regulator-always-on;
+		enable-active-high;
+		gpio = <&gpio0 RK_PD4 GPIO_ACTIVE_HIGH>; //跟进实际情况修改
+		startup-delay-us = <5000>;
+		vin-supply = <&dc_12v>;};};@@ -367,16 +392,24 @@u-boot,dm-pre-reloc;};+&pcie30_phy_grf {
+    u-boot,dm-pre-reloc;
+};
+&pcie30phy {u-boot,dm-pre-reloc;status = "okay";};&pcie3x2 {u-boot,dm-pre-reloc;
+	reset-gpios = <&gpio2 RK_PD6 GPIO_ACTIVE_HIGH>; /跟进实际情况修改
+	vpcie3v3-supply = <&vcc3v3_pcie>;status = "okay";};+&pinctrl {u-boot,dm-pre-reloc;status = "okay";
diff --git a/code/u-boot/configs/rk3568_defconfig b/code/u-boot/configs/rk3568_defconfig
index fbd9820acc5..5b44113dd33 100644
--- a/code/u-boot/configs/rk3568_defconfig
+++ b/code/u-boot/configs/rk3568_defconfig
@@ -220,3 +220,19 @@ CONFIG_RK_AVB_LIBAVB_USER=yCONFIG_OPTEE_CLIENT=yCONFIG_OPTEE_V2=yCONFIG_OPTEE_ALWAYS_USE_SECURITY_PARTITION=y
+
+CONFIG_ROCKCHIP_BOOTDEV="nvme 0"
+CONFIG_EMBED_KERNEL_DTB_ALWAYS=y
+CONFIG_SPL_FIT_IMAGE_KB=2560
+# 改成实际使用的 dtb 把kernel编译的dtb拷贝到uboot/dts目录下
+CONFIG_EMBED_KERNEL_DTB_PATH="dts/rk3568-aio-ddr4-v10.dtb"
+CONFIG_NVME=y
+CONFIG_CMD_NVME=y
+CONFIG_CMD_PCI=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
\ No newline at end of file

4 修改BoardConfig.mk

diff --git a/code/device/rockchip/rk356x/BoardConfig.mk b/code/device/rockchip/rk356x/BoardConfig.mk
index c035a7fe6cf..c30bf1c75f3 100755
--- a/code/device/rockchip/rk356x/BoardConfig.mk
+++ b/code/device/rockchip/rk356x/BoardConfig.mk
@@ -24,7 +24,8 @@ PRODUCT_KERNEL_DTS ?= rk3568-evb1-ddr4-v10# BOARD_AVB_ENABLE := true# used for fstab_generator, sdmmc controller address
-PRODUCT_BOOT_DEVICE := fe310000.sdhci,fe330000.nandc
+# PRODUCT_BOOT_DEVICE := fe310000.sdhci,fe330000.nandc
+PRODUCT_BOOT_DEVICE := 3c0800000.pcie

5 修改kernel pcei配置

@@ -91,12 +91,16 @@vcc3v3_pcie: gpio-regulator {compatible = "regulator-fixed";regulator-name = "vcc3v3_pcie";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pcie3x2_en>;regulator-min-microvolt = <3300000>;regulator-max-microvolt = <3300000>;
+               regulator-always-on;enable-active-high;gpio = <&gpio0 RK_PD4 GPIO_ACTIVE_HIGH>;startup-delay-us = <5000>;vcc3v3_bu: vcc3v3-bu {
@@ -505,13 +509,15 @@};&pcie30phy {
-       status = "disabled";
+       status = "okay";};&pcie3x2 {reset-gpios = <&gpio2 RK_PD6 GPIO_ACTIVE_HIGH>;vpcie3v3-supply = <&vcc3v3_pcie>;
-       status = "disabled";
+       // pinctrl-names = "default";
+       // pinctrl-0 = <&pcie30x2m1_pins>;
+       status = "okay";};&pinctrl {
+       pcie3x2{
+               pcie3x2_rst: pcie3x2-rst {
+                       rockchip,pins = <2 RK_PD6 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+               pcie3x2_en: pcie3x2-en {
+                       rockchip,pins = <0 RK_PD4 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+cam {camera_pwr: camera-pwr {rockchip,pins =

6 编译

第一次编译完kernel 拷贝出dtb到uboot/dts,在编译
./build.sh -AUCKu

7 烧录

切换到Maskrom
在这里插入图片描述
全包烧录
注意烧录工具版本
在这里插入图片描述

http://www.lryc.cn/news/366770.html

相关文章:

  • 【Vue】面经基础版-首页请求渲染
  • OBS+nginx+nginx-http-flv-module实现阿里云的推流和拉流
  • ch1计算机网络和因特网
  • Web前端安全测试:深入剖析与实战策略
  • Java学习-JDBC(一)
  • 异步复位和同步释放
  • 03-3.2.4 双端队列
  • SpringBoot的Mapper文件什么时候需要使用@Param注解
  • 2024.6.8
  • 室内外融合定位是如何做到成为定位领域的新宠
  • 【刷题篇】分治-归并排序
  • 【经验】Ubuntu上离线安装VsCode插件浏览Linux kernel源码
  • 鼠标侧键映射虚拟桌面切换 —— Win11
  • 2024全国大学生数据统计与分析竞赛B题【电信银行卡诈骗的数据分析】思路详解
  • 鸿蒙emitter 订阅事件封装 EmitterUtils
  • C语言---深入指针(4)
  • 【启程Golang之旅】让文件操作变得简单
  • oracle视图无法删除,orcl视图删除卡住怎么办
  • ug编程怎么录制宏:一步步探索自动化编程的奥秘
  • 深度学习Week16——数据增强
  • python-自幂数判断
  • RocketMQ教程(三):RocketMQ的核心组件
  • 46.SQLserver中按照多条件分组:查询每个地方的各种水果的种植数量,新增时,一个地方同时有几种水果,只插入一条记录,同时多种水果之间使用|隔开
  • C盘满了怎么办,Windows11的C盘没有磁盘清理选项怎么办,一次搞定
  • 「动态规划」当小偷改行去当按摩师,会发生什么?
  • Python | 排队取奶茶
  • mysql当前状态分析(show status)
  • Google Earth Engine(GEE)——使用机器学习进行金三角大米分布图
  • MyBatis一级和二级缓存介绍
  • PowerDesigner遍历导出所有表结构到Excel