[ARM][Pine64] RockPro64 でNVMeディスクを使用してみた。

     
    • 最終更新日時:2019/01/18 10:15:04

    Embed
    IMG_20190117_164058.jpg
    ROCKPro64 Main Page - PINE64
    RockPro64は、RK3399を搭載したArm SBCなわけですが、どちらかというと開発ボードとしての側面が強い製品です。

    で、一応PCIe x4なスロットが搭載されているわけで、かつ公式からはPCIe - NVMe変換ボードやPCIe - SATA変換ボードが販売されています。
    Arm SBCは総じてmicroSDもしくはeMMCしかないため、ディスクを多用する場合は弱点となりがちですが、NVMeなどが使用できれば、この弱点を克服することができます。
    ということで、今回はNVMeを使用してみることにしました。

    ちなみにこの辺りの情報については、海外の方がいくつか情報を出していらっしゃいます。
    ROCKPro64 - der 3. im Datacenter
    Kernel updaten NVMe / SDCard | forum.frank-mankel.org
    RockPro64 – Boot from the NVMe disk – Cloud DDNS WordPress
    たぶん、最初に多くの情報を出されていたのは、たぶんドイツの方である、Flank Mankelさんだと思います。
    Flankさんは、ayufanさんのイメージを使用して、当時のメインラインカーネルである4.19系列で試していらっしゃいました。自分の環境では、Armbian 4.4.167(5.70)で確認しています。

    確認環境:
    - RockPro 64 v2.1
    ※ちなみに初期ロットは2.0のはずです。2.0の板も持っていたのですが、ちょいと手順を間違えて、電気的に殺してしまったので、初期ロットでは動作確認できていません。
    - PCIe -NVMe変換ボード
    ※中国から安い板を買いました。公式からも出ているので、動作に不安があるのであれば公式から購入した方がいいと思います。ちなみにこれも現在はリビジョンが変わっています。
    - NVMe
    ※私はKingSpec M.2 PCIe SSD M2 120GBを購入しました。この手の動作確認にはSamsungのものが良いとされており、uSDもEVO Plusとかの方が良いです。

    IMG_20190117_164144.jpg

    $ uname -a
    Linux dns03 4.4.167-rockchip64 #3 SMP Sat Jan 12 18:58:23 CET 2019 aarch64 aarch64 aarch64 GNU/Linux

    $ sudo lspci -vvv
    [sudo] password for kometch:
    00:00.0 PCI bridge: Rockchip Inc. RK3399 PCI Express Root Port Device 0100 (prog-if 00 [Normal decode])
    Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
    Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort+ SERR+ Latency: 0
    Interrupt: pin A routed to IRQ 224
    Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
    I/O behind bridge: 00000000-00000fff
    Memory behind bridge: fa000000-fa0fffff
    Prefetchable memory behind bridge: 00000000-000fffff
    Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
    PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
    Capabilities: [80] Power Management version 3
    Flags: PMEClk- DSI- D1+ D2- AuxCurrent=0mA PME(D0+,D1+,D2-,D3hot+,D3cold-)
    Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME+
    Capabilities: [90] MSI: Enable+ Count=1/1 Maskable+ 64bit+
    Address: 00000000fee30040 Data: 0000
    Masking: 00000000 Pending: 00000000
    Capabilities: [b0] MSI-X: Enable- Count=1 Masked-
    Vector table: BAR=0 offset=00000000
    PBA: BAR=0 offset=00000008
    Capabilities: [c0] Express (v2) Root Port (Slot+), MSI 00
    DevCap: MaxPayload 256 bytes, PhantFunc 0
    ExtTag- RBE+
    DevCtl: Report errors: Correctable+ Non-Fatal+ Fatal+ Unsupported+
    RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
    MaxPayload 128 bytes, MaxReadReq 512 bytes
    DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
    LnkCap: Port #0, Speed 5GT/s, Width x4, ASPM L1, Exit Latency L0s <256ns, L1 <8us
    ClockPM- Surprise- LLActRep- BwNot+ ASPMOptComp+
    LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk-
    ExtSynch- ClockPM- AutWidDis- BWInt+ AutBWInt+
    LnkSta: Speed 5GT/s, Width x2, TrErr- Train- SlotClk- DLActive- BWMgmt- ABWMgmt-
    SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
    Slot #0, PowerLimit 0.000W; Interlock- NoCompl-
    SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
    Control: AttnInd Off, PwrInd Off, Power+ Interlock-
    SltSta: Status: AttnBtn- PowerFlt- MRL+ CmdCplt- PresDet- Interlock-
    Changed: MRL- PresDet- LinkState-
    RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna+ CRSVisible-
    RootCap: CRSVisible-
    RootSta: PME ReqID 0000, PMEStatus- PMEPending-
    DevCap2: Completion Timeout: Range B, TimeoutDis+, LTR+, OBFF Via message ARIFwd+
    DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled ARIFwd-
    LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
    Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
    Compliance De-emphasis: -6dB
    LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-
    EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
    Capabilities: [100 v2] Advanced Error Reporting
    UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
    UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
    UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
    CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
    CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
    AERCap: First Error Pointer: 00, GenCap+ CGenEn- ChkCap+ ChkEn-
    Capabilities: [274 v1] Transaction Processing Hints
    Interrupt vector mode supported
    Device specific mode supported
    Steering table in TPH capability structure
    Kernel driver in use: pcieport

    01:00.0 Non-Volatile memory controller: Silicon Motion, Inc. Device 2263 (rev 03) (prog-if 02 [NVM Express])
    Subsystem: Silicon Motion, Inc. Device 2263
    Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
    Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- SERR- Latency: 0
    Interrupt: pin A routed to IRQ 223
    Region 0: Memory at fa000000 (64-bit, non-prefetchable) [size=16K]
    Capabilities: [40] Power Management version 3
    Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
    Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
    Capabilities: [50] MSI: Enable- Count=1/8 Maskable+ 64bit+
    Address: 0000000000000000 Data: 0000
    Masking: 00000000 Pending: 00000000
    Capabilities: [70] Express (v2) Endpoint, MSI 00
    DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s unlimited, L1 unlimited
    ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset+ SlotPowerLimit 0.000W
    DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
    RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop- FLReset-
    MaxPayload 128 bytes, MaxReadReq 512 bytes
    DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
    LnkCap: Port #0, Speed 8GT/s, Width x4, ASPM not supported, Exit Latency L0s <64ns, L1 <4us
    ClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp+
    LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk-
    ExtSynch- ClockPM+ AutWidDis- BWInt- AutBWInt-
    LnkSta: Speed 5GT/s, Width x2, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
    DevCap2: Completion Timeout: Range ABCD, TimeoutDis+, LTR+, OBFF Not Supported
    DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled
    LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis-
    Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
    Compliance De-emphasis: -6dB
    LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-
    EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
    Capabilities: [b0] MSI-X: Enable+ Count=16 Masked-
    Vector table: BAR=0 offset=00002000
    PBA: BAR=0 offset=00002100
    Capabilities: [100 v2] Advanced Error Reporting
    UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
    UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
    UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
    CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
    CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
    AERCap: First Error Pointer: 00, GenCap+ CGenEn- ChkCap+ ChkEn-
    Capabilities: [158 v1] #19
    Capabilities: [178 v1] Latency Tolerance Reporting
    Max snoop latency: 0ns
    Max no snoop latency: 0ns
    Capabilities: [180 v1] L1 PM Substates
    L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
    PortCommonModeRestoreTime=10us PortTPowerOnTime=10us
    L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1-
    T_CommonMode=0us LTR1.2_Threshold=0ns
    L1SubCtl2: T_PwrOn=10us
    Kernel driver in use: nvme

    $ dmesg | grep nvme
    [ 2.126982] nvme 0000:01:00.0: enabling device (0000 -> 0002)
    [ 586.397114] BTRFS: device fsid 1d283a38-43c4-45bc-8693-b17b014bc9ed devid 1 transid 5 /dev/nvme0n1
    [ 669.402692] BTRFS info (device nvme0n1): disk space caching is enabled
    [ 852.860262] BTRFS info (device nvme0n1): disk space caching is enabled
    [ 1076.835982] BTRFS info (device nvme0n1): disk space caching is enabled
    [ 1414.405011] EXT4-fs (nvme0n1): mounted filesystem with ordered data mode. Opts: (null)

    $ sudo fdisk  -l
    Disk /dev/nvme0n1: 119.2 GiB, 128035676160 bytes, 250069680 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes

    $ df -h
    Filesystem Size Used Avail Use% Mounted on
    udev 1.9G 0 1.9G 0% /dev
    tmpfs 388M 21M 368M 6% /run
    /dev/mmcblk0p1 15G 2.7G 12G 19% /
    tmpfs 1.9G 0 1.9G 0% /dev/shm
    tmpfs 5.0M 4.0K 5.0M 1% /run/lock
    tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
    tmpfs 1.9G 28K 1.9G 1% /tmp
    tmpfs 388M 0 388M 0% /run/user/1000
    /dev/nvme0n1 117G 1.1G 110G 1% /var/lib/docker

    今回は、dockerのbuildなどで使用するために、/var/lib/dockerにマウントしています。情報を確認している限りでは、NVMe bootもできるようですが、今のところ試していません。時間がある時にこちらは試してみようと思います。

    余談:
    最初、NVMeのディスクにもいろいろと規格があるのを知らなくて、SATAのモデルだったり、NGFFなモデルを購入したりして、動作しないなぁとか思っていました・・・
    関連記事


    Pagination

    Trackback

    Trackback URL

    https://kometchtech.blog.fc2.com/tb.php/2210-26871976

    Comment

    Post Your Comment

    コメント登録フォーム
    公開設定

    Utility

    Profile

    kometchtech

    Author:kometchtech
    なんちゃってエンジニアです。
    2009年10月から業務都合により大阪勤務になりました。
    2010年1月、HYBRID W-ZERO3を購入しました。
    2010年11月、HTC Desire HDを購入しました。
    2012年2月、都内の会社に転職しました。
    2012年5月、HTC One Xを購入しました。
    2012年8月、事情により休職しました。
    2012年8月、SONY Xperia SXを購入しました。
    2013年1月、一身上の都合により退職しました。
    2014年3月、都内の会社に就職しました。
    2016年8月、HPC系の会社に転職しました。
    2018年6月、Xperia XZ1 compactに機種変。

    Amazonほしい物リスト
    何か問題などありましたら、こちらまで。 Twitter:@kometchtech follow us in feedly

    カレンダー

    01 | 2019/02 | 03
    - - - - - 1 2
    3 4 5 6 7 8 9
    10 11 12 13 14 15 16
    17 18 19 20 21 22 23
    24 25 26 27 28 - -

    記事リスト

    最新の記事

    全記事(数)表示

    全タイトルを表示

    バロメーター

    カテゴリー

    カテゴリークラウド

    アーカイブ

    検索フォーム

    FCカウンター

    オンライン

    現在の閲覧者数:

    Amazonアソシエイト

    スポンサードリンク

    月間ページランキング

    ブログパーツ

    サイトランキング