myhwy · 2022年06月11日

[嵌入式linux] RK3399/RK3568 PCIE接口的M2固态硬盘调式

一、硬件平台
RK3399+NVME固态硬盘
sunychip.cpm.png
二、软件调式过程
1、在dev/block下有识别到nvme
clipboard-202203081033-ynpxb.png
2、格式化 挂载之后 下df-h 看到已经识别到硬盘容量
格式化命令:mkdosfs /dev/block/nvme0n1p1
挂载命令:busybox mount /dev/block/nvme0n1p1 /data/nvme
clipboard-202203081035-ri2xj.png
加log分析
void VolumeManager::handleBlockEvent(NetlinkEvent *evt) {
std::lock\_guard<std::mutex> lock(mLock);
if (mDebug) {

    LOG(VERBOSE) << "----------------";
    LOG(VERBOSE) << "handleBlockEvent with action " << (int) evt->getAction();
    evt->dump();
}std::string eventPath(evt->findParam("DEVPATH")?evt->findParam("DEVPATH"):"");
std::string devType(evt->findParam("DEVTYPE")?evt->findParam("DEVTYPE"):"");
  • LOG << "handleBlockEvent with eventPath " << eventPath;
    if (devType != "disk") return;
    加入补丁
  • if (isVirtioBlkDevice(majorId)) {
    LOG << "Recognized experimental block major ID " << majorId
    << " as virtio-blk (emulator's virtual SD card device)";
    mLabel = "Virtual";
    break;
    }
    if(majorId==259) {
    LOG << "majorID==259 major11 type " << majorId;
    mLabel = "Pcie";
    break;
    }
    LOG << "Unsupported block major11 type " << majorId;
    return -ENOTSUP;
    2: if (isVirtioBlkDevice(majorId)) {
    // drivers/block/virtio\_blk.c has "#define PART\_BITS 4", so max is
    // 2^4 - 1 = 15
    return 15;
    }
    if(majorId==259) {
    LOG << "majorID==259 major22 type " << majorId;
    return 15;
    }
  • clipboard-202203110842-88kzd.png

结果可以识别到了 识别成USB移动设备

推荐阅读
关注数
7
文章数
5
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息