完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
一、PCI设备调试手段
busybox lspci lspci命令查看pci设备。如下信息: shell@rk3399_mid:/ $ lspci shell@rk3399_mid:/ $ 0c:00.0 0100: 1000:0056 (rev 02) 是Android设备的没有lspci的可能需要通过busybox lspci实现。 0c:00.0 表示含义为bus number: device number.function number 三者组合成一个16bit的识别码 1. 总线数:8bits最多连接到256个总线 2.设备数:6bits 最多连接到32种装置 3. 功能号:3bits的多功能获取装置有 8 种 0100:1000:0056 表示为 Class ID: Vendor ID Device ID pci 设备速度 通过命令 pci 速度 shell@rk3399_mid:/ $ lspci -n -d 1000 :0056 -vvv | grep -i width 二、Sata设备板调试工具 查看分区信息 cat /proc/partitions1mount mountumount 三、PCIe转Sata小调试 3.1打开PCIe设备驱动
[1.157185] rockchip-pcie f8000000.pcie: no vpcie3v3 regulator found [1.157207] rockchip-pcie f8000000.pcie: no vpcie1v8 regulator found [1.157223] rockchip-pcie f8000000.pcie: n vpcie0v9 regulator found [1.691995] rockchip-pcie f8000000.pcie: PCIe link training gen1 timeout! [1.692059] rockchip-pcie: probe of f8000000.pcie failed with error -110 我们PCIe设备连接板,将出现如上Log为正常。 3. PCIe的设备插在上子后。 shell@rk3399_mid:/ $busybox lspci00 :00.0 Class 0604: 17cd:000001:00.0 Class 0106: 1b21:0612 。 比如根据官方的数据表,1b21 即知道我们的 ASMEDIA 厂商的 Vendor ID,0612 即知道我们的设备 ID。
对于调试转SATA设备,还需要提供设备驱动的支持: 打开PCIe转SATA小板的设备驱动: Device Driver -> Serial ATA and Parallel ATA driverrs(libata) -> AHCI SATA support 确认方法为 # ls dev/block/sd* sda sda1 可以看到很多sda 与sda,sda sata 硬盘,sda[n] 即为生成设备号。 3. 手动挂载硬盘 在之后将硬盘的设备出来挂载到我们系统的目录上。 首先查看产生的设备节点相关信息。 shell@rk3399_mid:/ $su shell@rk3399_mid:/ $ls dev/block/sd* shell@rk3399_mid:/ $sda sda1 sda2 sda3 可以看到我的硬盘有三个分区。 接下来手动挂载。 shell@rk3399_mid:/ $mount /dev/block/sdb1 /mnt/Younix/ 正常情况下,这样操作便可以正常挂载。 但是也有可能会产生一些报错,在后面 第四节 常见调试问题 中,我们再来描述。 3.4 实现自动挂载 3.4.1 修改 fstab diff --git a/device/rockchip/rk3399/fstab.rk30board.bootmode.emmc b/device/rockchip/rk3399/fstab.rk30board.bootmode.emmc index b2d4c75..059e73b 100755 --- a/device/rockchip/rk3399/fstab.rk30board.bootmode.emmc +++ b/device/rockchip/rk3399/fstab.rk30board.bootmode.emmc @@ -22,4 +22,7 @@ # for u***3.0 /devices/platform/u***@*/*.dwc3* auto vfat defaults voldmanaged=u***:auto +# for pcie +/devices/platform/*.pcie* auto vfat defaults voldmanaged=pcie:auto + /dev/block/zram0 none swap defaults zramsize=533413200 3.4.2 修改 VOLD 添加对 pcie 转 sata 设备的支持 diff --git a/system/vold/Disk.cpp b/system/vold/Disk.cpp index 7daa9b7..97b7cd8 100755 --- a/system/vold/Disk.cpp +++ b/system/vold/Disk.cpp @@ -65,6 +65,7 @@ static const unsigned int kMajorBlockScsiN = 133; static const unsigned int kMajorBlockScsiO = 134; static const unsigned int kMajorBlockScsiP = 135; static const unsigned int kMajorBlockMmc = 179; +static const unsigned int kMajorBlockPcie = 259; static const char* kGptBasicData = "EBD0A0A2-B9E5-4433-87C0-68B6B72699C7"; static const char* kGptAndroidMeta = "19A710A2-B3CA-11E4-B026-10604B889DCF"; @@ -230,6 +231,16 @@ status_t Disk::readMetadata() { } break; } + case kMajorBlockPcie: { + std::string path(mSysPath + "/device/device/vendor"); + std::string tmp; + if (!ReadFileToString(path, &tmp)) { + PLOG(WARNING) << "Failed to read vendor from " << path; + return -errno; + } + mLabel = tmp; + break; + } default: { LOG(WARNING) << "Unsupported block major type" << major(mDevice); return -ENOTSUP; @@ -301,6 +312,7 @@ status_t Disk::readPartitions() { case 0x0b: // W95 FAT32 (LBA) case 0x0c: // W95 FAT32 (LBA) case 0x0e: // W95 FAT16 (LBA) + case 0x83: // W95 FAT16 (LBA) createPublicVolume(partDevice); validParts = true; break; @@ -512,6 +524,14 @@ int Disk::getMaxMinors() { } return atoi(tmp.c_str()); } + case kMajorBlockPcie: { + std::string tmp; + if (!ReadFileToString(kSysfsMmcMaxMinors, &tmp)) { + LOG(ERROR) << "Failed to read max minors"; + return -errno; + } + return atoi(tmp.c_str()); + } } LOG(ERROR) << "Unsupported block major type " << major(mDevice); 四、调试问题汇总 4.1 PCIe 供电 PCIe 供电没有打开的情况下,需要在 dts 添加 power supply: index 4763727..677ed9d 100644 --- a/arch/arm64/boot/dts/rockchip/rk3399-sapphire.dtsi +++ b/arch/arm64/boot/dts/rockchip/rk3399-sapphire.dtsi @@ -179,6 +179,17 @@ rockchip,pwm_id= <2>; rockchip,pwm_voltage = <1000000>; }; + + vcc3v3_3g: vcc3v3-3g-regulator { + compatible = "regulator-fixed"; + enable-active-high; + regulator-always-on; + regulator-boot-on; + gpio = <&gpio0 2 GPIO_ACTIVE_HIGH>; + pinctrl-names = "default"; + pinctrl-0 = <&pcie_3g_drv>; + regulator-name = "vcc3v3_3g"; + }; }; &cpu_l0 { @@ -511,6 +522,7 @@ num-lanes = <4>; pinctrl-names = "default"; pinctrl-0 = <&pcie_clkreqn>; + phy-supply = <&vcc3v3_3g>; status = "okay"; }; @@ -658,6 +670,14 @@ }; &pinctrl { + + pcie { + pcie_3g_drv: pcie-3g-drv { + rockchip,pins = + <0 2 RK_FUNC_GPIO &pcfg_pull_up>; + }; + }; + 4.2 mount 失败 我在手动挂载硬盘的时候,碰到了这样的问题。 [ 167.457458] F2FS-fs (sda1): Magic Mismatch, valid(0xf2f52010) - read(0x0) [ 167.457483] F2FS-fs (sda1): Can't find valid F2FS filesystem in 2th superblock 这是因为默认对硬盘的文件系统不支持。 利用电脑尝试将硬盘格式化为 Fat 格式 或者 ext4 格式的系统后,重新 Mount ,问题解决。 4.3 自动挂载无效 刚修改完 fstab 的时候,编译打包烧录进机器发现无法自动挂载。 检查机器根目录下的 fstab.rk30board.bootmode.emmc 文件,发现我添加的 for pcie 的信息并没有添加成功。 对应 out/target/product/rk3399_mid/root/fstab* 文件中确实没有我的修改信息。 进一步去 device/rockchip/rk3399 下搜索 fstab 文件的拷贝规则。 在 device.mk 中查到结果。 55 ifeq ($(BUILD_WITH_FORCEENCRYPT),true) 56 PRODUCT_COPY_FILES += 57 $(LOCAL_PATH)/fstab.rk30board.bootmode.forceencrypt.unknown:root/fstab.rk30board.bootmode.unknown 58 $(LOCAL_PATH)/fstab.rk30board.bootmode.forceencrypt.emmc:root/fstab.rk30board.bootmode.emmc 59 else 60 PRODUCT_COPY_FILES += 61 $(LOCAL_PATH)/fstab.rk30board.bootmode.unknown:root/fstab.rk30board.bootmode.unknown 62 $(LOCAL_PATH)/fstab.rk30board.bootmode.emmc:root/fstab.rk30board.bootmode.emmc 63 endif 是因为对于 mid 工程 有定义BUILD_WITH_FORCEENCRYPT 当定义这个宏的时候,根目录下采用的是 fstab.rk30board.bootmode.forceencrypt.emmc,会将其拷贝到机器根目录下并重命名为 fstab.rk30board.bootmode.emmc。 所以应该在 fstab.rk30board.bootmode.forceencrypt.emmc 文件中修改,而我是想当然的在 fstab.rk30board.bootmode.emmc 中修改的。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
基于米尔瑞芯微RK3576核心板/开发板的人脸疲劳检测应用方案
808 浏览 0 评论
1024 浏览 1 评论
887 浏览 1 评论
2113 浏览 1 评论
3373 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 11:39 , Processed in 0.456465 second(s), Total 43, Slave 35 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号