Raspberry Pi 4Bでは、Raspberry Pi OSとmainlineのLinux Kernelでserial0, serial1の割当が違う

Raspberry Pi 4Bでは、Raspberry Pi OSのmainlineのDeviceTreeは、serial0がシリアルコンソール(mini UART側)になるようになっている。
おそらく、過去のRaspberry Piシリーズと同じようにserial0がシリアルコンソールになるように合わせていると推測。
Rasbperry Pi OSの場合は以下の辺りでその対応付の変更をしている。

https://github.com/raspberrypi/linux/blob/rpi-6.1.y/arch/arm/boot/dts/bcm2711-rpi-4-b.dts#L250-L288

mainlineの場合は、serial1がシリアルコンソールとなっている。
なお、Rasbperry Piのシリーズによって定義が異なるので、注意して確認したほうが良さそう。

Posted at : 2023-10-15 17:28:55 / Category : none

最新の Linux Kernel を各環境でビルドして動かしてみる(2023/8/6)

ここ数年の Linux Kernel はかなり安定しているとは思っていて、滅多にハングする状況を見ることをなくなりました。
でも、本当にそうなのか気になります。
気が向いたときに最新の Linux Kernel をいくつかのアーキテクチャでビルドして動かしてみた結果をまとめてみます。

■ 以下の情報に関する注意点

  • ファームウェアやブートローダ、ユーザランドは適当なので、現時点で再現性はないです
  • あくまでも起動プロセスを見ているだけです。長時間動作させた場合や高負荷時の条件では、別の問題が発生する可能性があります

■ 結果 (mainline)

バージョン : 6.5-rc4

  • Raspberry Pi 2 (arm)

    • 問題なし
    • DTSの配置先が変わっている。arch/arm/boot/dts/bcm2836-rpi-2-b.dtb -> arch/arm/boot/dts/broadcom/bcm2836-rpi-2-b.dtb
      • 以前からdtsディレクトリのファイルは多かったので、整理されるとありがたい
  • VisionFive 2 (riscv)

    • ルートファイルシステムのマウントで止まる
    • ドライバはロードされているものの、microSDの挿抜で何もログがでていないので、認識していない? [ 0.121509] sdhci: Secure Digital Host Controller Interface driver [ 0.121528] sdhci: Copyright(c) Pierre Ossman [ 0.121643] sdhci-pltfm: SDHCI platform and OF driver helper … [ 1.123265] Waiting for root device /dev/mmcblk1p4...
    • MMCDWSTARFIVE がデフォルトでnだったので、yにしてみたものの変わらず
    • DTSを確かめてみるとそもそも定義がなかった
      • VisionFive2のカーネルのリポジトリを見ると定義があったので、これを使えばできそうには見えるものの、電源レギュレータとかも参照していて単純なコピペでは無理

■ 結果 (-rt)

バージョン : 6.4.6-rt8

  • Raspberry Pi 2 (arm)
    • 問題なし
Posted at : 2023-08-06 17:01:39 / Category : none

OpenOCDを使ってVisionFive2のJTAGデバッグ

単純なアタッチは以下の通りでできた。
https://forum.rvspace.org/t/connecting-to-visionfive-s-jtag-port-a-short-guide/514/1

ホスト側のJTAG I/Fには秋月のFT232HLを使用した。

アタッチしてデバッグまでは特に問題なくできるものの、
TRSTnをアサートしてもリセットがかからない。
これができれば、リセットベクタからデバッグができるのだけどなぁ。。。

手順は以下の通り。

  1. FT232HLのOpenOCDの設定にTRSTn関連の端子設定をする
  2. gdbからmonitor resetコマンドを実行する

念のためオシロでTRSTnの端子を見ると、ちゃんと一定時間Lにアサートしていた。
アサート時間が短いのかなと思い、monitor jtagntrstassert_widthで調整をしてみても変わらず。
ホスト側は特に問題なさそう。

ターゲット側の問題のような感じはするけど、はっきりとはわからず。
仕様書は抜粋版しか公開されていないようなので、ここからも情報は得られなかった。

そうなると、U-Bootだとresetコマンドが実行できるのはなんでだろう?
抜粋版の仕様書にリセットレジスタの記載があるので、これを叩いているのだろうか。

ソースを見てみる。
U-BootのCONFIGSYSRESETSBIが経っていて、resetコマンド実行時にU-BootからOpenSBIに落ちている。
OpenSBIでは、I2Cでregulatorのレジスタのresetビットを叩いている…。
これは望んでいた方法ではないな。。。

Posted at : 2023-08-05 16:13:07 / Category : none

VisionFive2でLinuxを起動する

VisionFive2 8GByteが届きました。
早速、配布されているイメージからLinuxを起動してみました。
SDにイメージを書き込んでOK、とは行かなかったので、Linuxを起動させるまでの手順を書いておきます。

試したイメージはDebian Image 69です。
またターゲットとの通信はUARTを使用しました。
以下は起動することだけを目的としているので、必ずしも正しい方法とは限らないことにご注意ください。

ダウンロードしたイメージをMicroSDに書き込みます。
32GByteのMicorSDを使用しました。

UARTをPCとつないで、電源を投入します。
UARTからは以下のログが出力されます(必要な部分だけ抜粋しています)。

 1Loading Environment from SPIFlash... SF: Detected gd25lq128 with page size 256 Bytes, erase size 4 KiB, total 16 MiB
 2*** Warning - bad CRC, using default environment
 3 4Enter choice: 1
 51:      Debian GNU/Linux bookworm/sid 5.15.0-starfive
 6Retrieving file: /boot/initrd.img-5.15.0-starfive
 79684953 bytes read in 411 ms (22.5 MiB/s)
 8Retrieving file: /boot/vmlinuz-5.15.0-starfive
 910append: root=/dev/mmcblk1p3 rw console=tty0 console=ttyS0,115200 earlycon rootwait stmmaceth=chain_mode:1 selinux=0 single
11Retrieving file: /boot/dtbs/starfive/starfive_visionfive2.dtb
12Failed to load '/boot/dtbs/starfive/starfive_visionfive2.dtb'
13kernel_comp_addr_r or kernel_comp_size is not provided!
14

U-Bootの環境変数が壊れている(もしくは書かれていない)ため、デフォルトの環境変数を読んでいます。
デフォルトでも必要なことは書かれており、Linux Kernelの起動は行おうとしています。
ただ、DTBが見つからず、エラーとなっていました。

MicorSDの中身をPCで見てみると、それっぽいDTBが見つかります。

 1/mnt/boot$ find .
 2 3./dtbs/starfive/jh7110-evb-usbdevice.dtb
 4./dtbs/starfive/jh7110-evb.dtb
 5./dtbs/starfive/jh7110-fpga.dtb
 6./dtbs/starfive/jh7110-visionfive-v2-A10.dtb
 7./dtbs/starfive/jh7110-visionfive-v2-A11.dtb
 8./dtbs/starfive/jh7110-visionfive-v2-ac108.dtb
 9./dtbs/starfive/jh7110-visionfive-v2-wm8960.dtb
10./dtbs/starfive/jh7110-visionfive-v2.dtb
11./dtbs/starfive/evb-overlay

ロードしようとしているファイル名にコピーします。

1/mnt/boot/dtbs/starfive$ sudo cp jh7110-visionfive-v2.dtb starfive_visionfive2.dtb

ひとまず、先ほどのエラーはこれで消えます。
次に問題になるのは以下の部分。

1kernel_comp_addr_r or kernel_comp_size is not provided!

Linux Kernelのdecompress先のアドレスとサイズが設定されていないとエラーとなります。

これらを設定します。
この辺りは、8GByteもRAMがあるのでざっくりと取っておけば間違いはないです。

bdinfoでDRAMの開始アドレスと(U-Bootの)DTBの配置先、リロケート先を確認しておきます。
startが0x4000_0000(+1GByte)です。
DTBの配置先とリロケート先は4GByteの手前ぐらいなので、ここは避けたほうが良さそうです。

1StarFive # bdinfo
2boot_params = 0x0000000000000000
3DRAM bank   = 0x0000000000000000
4-> start    = 0x0000000040000000
5-> size     = 0x0000000200000000
6relocaddr   = 0x00000000fff4e000
7reloc off   = 0x00000000bfd4e000
8fdt_blob    = 0x00000000fffc97f0

また、U-BootがロードするLinuxのDTBの配置先とLinux Kernelのアドレスを確認します。
先頭1GByteから64MByteと96MByteの位置に取っています。
また一時的にloadaddrも使用しているので、ここも避けたほうが良さそうです。

1fdt_addr_r=0x46000000
2kernel_addr_r=0x44000000
3loadaddr=0xa0000000

以上から展開先は1GByteから+256MByteの0x5000_0000を設定しています。
サイズは16MByteを指定します。
(以降のログでは起動していますが、後から考えると16MByteは少ない可能性があるため、もっと増やしたほうが良いです)

1# setenv kernel_comp_addr_r 0x50000000
2# setenv kernel_comp_size 0x1000000

ここまでできたら、後はブートするのみです。

1# run bootcmd

以下に起動までのログを示します。

  1U-Boot SPL 2021.10 (Oct 31 2022 - 12:11:37 +0800)
  2DDR version: dc2e84f0.
  3Trying to boot from SPI
  4
  5OpenSBI v1.0
  6   ____                    _____ ____ _____
  7  / __ \                  / ____|  _ \_   _|
  8 | |  | |_ __   ___ _ __ | (___ | |_) || |
  9 | |  | | '_ \ / _ \ '_ \ \___ \|  _ < | |
 10 | |__| | |_) |  __/ | | |____) | |_) || |_
 11  \____/| .__/ \___|_| |_|_____/|____/_____|
 12        | |
 13        |_|
 14
 15Platform Name             : StarFive VisionFive V2
 16Platform Features         : medeleg
 17Platform HART Count       : 5
 18Platform IPI Device       : aclint-mswi
 19Platform Timer Device     : aclint-mtimer @ 4000000Hz
 20Platform Console Device   : uart8250
 21Platform HSM Device       : ---
 22Platform Reboot Device    : ---
 23Platform Shutdown Device  : ---
 24Firmware Base             : 0x40000000
 25Firmware Size             : 360 KB
 26Runtime SBI Version       : 0.3
 27
 28Domain0 Name              : root
 29Domain0 Boot HART         : 1
 30Domain0 HARTs             : 0*,1*,2*,3*,4*
 31Domain0 Region00          : 0x0000000002000000-0x000000000200ffff (I)
 32Domain0 Region01          : 0x0000000040000000-0x000000004007ffff ()
 33Domain0 Region02          : 0x0000000000000000-0xffffffffffffffff (R,W,X)
 34Domain0 Next Address      : 0x0000000040200000
 35Domain0 Next Arg1         : 0x0000000042200000
 36Domain0 Next Mode         : S-mode
 37Domain0 SysReset          : yes
 38
 39Boot HART ID              : 1
 40Boot HART Domain          : root
 41Boot HART Priv Version    : v1.11
 42Boot HART Base ISA        : rv64imafdcbx
 43Boot HART ISA Extensions  : none
 44Boot HART PMP Count       : 8
 45Boot HART PMP Granularity : 4096
 46Boot HART PMP Address Bits: 34
 47Boot HART MHPM Count      : 2
 48Boot HART MIDELEG         : 0x0000000000000222
 49Boot HART MEDELEG         : 0x000000000000b109
 50
 51
 52U-Boot 2021.10 (Oct 31 2022 - 12:11:37 +0800), Build: jenkins-VF2_515_Branch_SDK_Release-10
 53
 54
 55CPU:   rv64imacu
 56Model: StarFive VisionFive V2
 57DRAM:  8 GiB
 58MMC:   sdio0@16010000: 0, sdio1@16020000: 1
 59Loading Environment from SPIFlash... SF: Detected gd25lq128 with page size 256 Bytes, erase size 4 KiB, total 16 MiB
 60*** Warning - bad CRC, using default environment
 61
 62StarFive EEPROM format v2
 63
 64--------EEPROM INFO--------
 65Vendor : StarFive Technology Co., Ltd.
 66Product full SN: VF7110A1-2250-D008E000-00001168
 67data version: 0x2
 68PCB revision: 0xa1
 69BOM revision: A
 70Ethernet MAC0 address: 6c:cf:39:00:1c:9f
 71Ethernet MAC1 address: 6c:cf:39:00:1c:a0
 72--------EEPROM INFO--------
 73
 74In:    serial@10000000
 75Out:   serial@10000000
 76Err:   serial@10000000
 77Model: StarFive VisionFive V2
 78Net:   eth0: ethernet@16030000, eth1: ethernet@16040000
 79switch to partitions #0, OK
 80mmc1 is current device
 81found device 1
 82bootmode flash device 1
 83Can't set block device
 84Failed to load '/boot/uEnv.txt'
 85Hit any key to stop autoboot:  0
 86Can't set block device
 87Importing environment from mmc1 ...
 88## Warning: Input data exceeds 1048576 bytes - truncated
 89## Info: input data size = 1048578 = 0x100002
 90## Error: "boot2" not defined
 91switch to partitions #0, OK
 92mmc1 is current device
 93Scanning mmc 1:2...
 94Found /boot/extlinux/extlinux.conf
 95Retrieving file: /boot/extlinux/extlinux.conf
 96823 bytes read in 5 ms (160.2 KiB/s)
 97U-Boot menu
 981:      Debian GNU/Linux bookworm/sid 5.15.0-starfive
 992:      Debian GNU/Linux bookworm/sid 5.15.0-starfive (rescue target)
100Enter choice: 1:        Debian GNU/Linux bookworm/sid 5.15.0-starfive
101Retrieving file: /boot/initrd.img-5.15.0-starfive
1029684953 bytes read in 411 ms (22.5 MiB/s)
103Retrieving file: /boot/vmlinuz-5.15.0-starfive
1048015200 bytes read in 340 ms (22.5 MiB/s)
105append: root=/dev/mmcblk1p3 rw console=tty0 console=ttyS0,115200 earlycon rootwait stmmaceth=chain_mode:1 selinux=0
106Retrieving file: /boot/dtbs/starfive/starfive_visionfive2.dtb
10747546 bytes read in 10 ms (4.5 MiB/s)
108kernel_comp_addr_r or kernel_comp_size is not provided!
1092:      Debian GNU/Linux bookworm/sid 5.15.0-starfive (rescue target)
110Retrieving file: /boot/initrd.img-5.15.0-starfive
1119684953 bytes read in 411 ms (22.5 MiB/s)
112Retrieving file: /boot/vmlinuz-5.15.0-starfive
1138015200 bytes read in 340 ms (22.5 MiB/s)
114append: root=/dev/mmcblk1p3 rw console=tty0 console=ttyS0,115200 earlycon rootwait stmmaceth=chain_mode:1 selinux=0 single
115Retrieving file: /boot/dtbs/starfive/starfive_visionfive2.dtb
11647546 bytes read in 10 ms (4.5 MiB/s)
117kernel_comp_addr_r or kernel_comp_size is not provided!
118SCRIPT FAILED: continuing...
119Card did not respond to voltage select! : -110
120
121** Unable to read file ubootefi.var **
122Failed to load EFI variables
123Scanning mmc 1:3...
124ethernet@16030000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
125phy_startup() failed: -110FAILED: -110ethernet@16040000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
126phy_startup() failed: -110FAILED: -110ethernet@16030000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
127phy_startup() failed: -110FAILED: -110ethernet@16040000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
128phy_startup() failed: -110FAILED: -110StarFive # setenv kernel_comp_addr_r 0x50000000
129StarFive # setenv kernel_comp_size 0x1000000
130StarFive # run bootcmd
131Can't set block device
132Importing environment from mmc1 ...
133## Error: "boot2" not defined
134switch to partitions #0, OK
135mmc1 is current device
136Scanning mmc 1:2...
137Found /boot/extlinux/extlinux.conf
138Retrieving file: /boot/extlinux/extlinux.conf
139823 bytes read in 5 ms (160.2 KiB/s)
140U-Boot menu
1411:      Debian GNU/Linux bookworm/sid 5.15.0-starfive
1422:      Debian GNU/Linux bookworm/sid 5.15.0-starfive (rescue target)
143Enter choice: 1
1441:      Debian GNU/Linux bookworm/sid 5.15.0-starfive
145Retrieving file: /boot/initrd.img-5.15.0-starfive
1469684953 bytes read in 412 ms (22.4 MiB/s)
147Retrieving file: /boot/vmlinuz-5.15.0-starfive
1488015200 bytes read in 340 ms (22.5 MiB/s)
149append: root=/dev/mmcblk1p3 rw console=tty0 console=ttyS0,115200 earlycon rootwait stmmaceth=chain_mode:1 selinux=0
150Retrieving file: /boot/dtbs/starfive/starfive_visionfive2.dtb
15147546 bytes read in 9 ms (5 MiB/s)
152   Uncompressing Kernel Image
153Moving Image from 0x44000000 to 0x40200000, end=41767000
154## Flattened Device Tree blob at 46000000
155   Booting using the fdt blob at 0x46000000
156   Using Device Tree in place at 0000000046000000, end 000000004600e9b9
157
158Starting kernel ...
159
160clk u5_dw_i2c_clk_core already disabled
161clk u5_dw_i2c_clk_apb already disabled
162[    0.000000] Linux version 5.15.0-starfive (sw_buildbot@mdcsw02) (riscv64-unknown-linux-gnu-gcc (GCC) 10.2.0, GNU ld (GNU Binutils) 2.35) #1 SMP Mon Dec 19 07:56:37 EST 2022
163[    0.000000] OF: fdt: Ignoring memory range 0x40000000 - 0x40200000
164[    0.000000] Machine model: StarFive VisionFive V2
165[    0.000000] earlycon: uart0 at MMIO32 0x0000000010000000 (options '115200')
166[    0.000000] printk: bootconsole [uart0] enabled
167[    0.000000] efi: UEFI not found.
168[    0.000000] OF: reserved mem: failed to allocate memory for node 'linux,cma'
169[    0.000000] cma: Reserved 16 MiB at 0x00000000bf000000
170[    0.000000] Zone ranges:
171[    0.000000]   DMA32    [mem 0x0000000040200000-0x00000000ffffffff]
172[    0.000000]   Normal   [mem 0x0000000100000000-0x000000013fffffff]
173[    0.000000] Movable zone start for each node
174[    0.000000] Early memory node ranges
175[    0.000000]   node   0: [mem 0x0000000040200000-0x00000000c010ffff]
176[    0.000000]   node   0: [mem 0x00000000c0110000-0x00000000c01fffff]
177[    0.000000]   node   0: [mem 0x00000000c0200000-0x000000013fffffff]
178[    0.000000] Initmem setup node 0 [mem 0x0000000040200000-0x000000013fffffff]
179[    0.000000] SBI specification v0.3 detected
180[    0.000000] SBI implementation ID=0x1 Version=0x10000
181[    0.000000] SBI TIME extension detected
182[    0.000000] SBI IPI extension detected
183[    0.000000] SBI RFENCE extension detected
184[    0.000000] SBI v0.2 HSM extension detected
185[    0.000000] CPU with hartid=0 is not available
186[    0.000000] CPU with hartid=0 is not available
187
188[    0.000000] riscv: ISA extensions acdfim
189[    0.000000] riscv: ELF capabilities acdfim
190[    0.000000] percpu: Embedded 17 pages/cpu s31528 r8192 d29912 u69632
191[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 1033735
192[    0.000000] Kernel command line: root=/dev/mmcblk1p3 rw console=tty0 console=ttyS0,115200 earlycon rootwait stmmaceth=chain_mode:1 selinux=0
193[    0.000000] Unknown command line parameters: stmmaceth=chain_mode:1 selinux=0
194[    0.000000] Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes, linear)
195[    0.000000] Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes, linear)
196[    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
197[    0.000000] software IO TLB: mapped [mem 0x00000000fb000000-0x00000000ff000000] (64MB)
198[    0.000000] Memory: 3942888K/4192256K available (9884K kernel code, 4982K rwdata, 4096K rodata, 2191K init, 401K bss, 232984K reserved, 16384K cma-reserved)
199[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
200[    0.000000] rcu: Hierarchical RCU implementation.
201[    0.000000] rcu:     RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=4.
202[    0.000000] rcu:     RCU debug extended QS entry/exit.
203[    0.000000]  Tracing variant of Tasks RCU enabled.
204[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
205[    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
206[    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
207[    0.000000] CPU with hartid=0 is not available
208[    0.000000] riscv-intc: unable to find hart id for /cpus/cpu@0/interrupt-controller
209[    0.000000] riscv-intc: 64 local interrupts mapped
210[    0.000000] plic: plic@c000000: mapped 136 interrupts with 4 handlers for 9 contexts.
211[    0.000000] random: get_random_bytes called from start_kernel+0x4d0/0x6e2 with crng_init=0
212[    0.000000] riscv_timer_init_dt: Registering clocksource cpuid [0] hartid [1]
213[    0.000000] clocksource: riscv_clocksource: mask: 0xffffffffffffffff max_cycles: 0x1d854df40, max_idle_ns: 881590404240 ns
214[    0.000000] sched_clock: 64 bits at 4MHz, resolution 250ns, wraps every 2199023255500ns
215[    0.008967] clocksource: timer@13050000.ch0: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
216[    0.020277] clocksource: timer@13050000.ch1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
217[    0.031594] clocksource: timer@13050000.ch2: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
218[    0.042905] clocksource: timer@13050000.ch3: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
219[    0.054353] Console: colour dummy device 80x25
220[    0.060256] printk: console [tty0] enabled
221[    0.064799] Calibrating delay loop (skipped), value calculated using timer frequency.. 8.00 BogoMIPS (lpj=40000)
222[    0.076009] pid_max: default: 32768 minimum: 301
223[    0.081239] Mount-cache hash table entries: 8192 (order: 4, 65536 bytes, linear)
224[    0.089463] Mountpoint-cache hash table entries: 8192 (order: 4, 65536 bytes, linear)
225[    0.099335] ASID allocator disabled
226[    0.103269] rcu: Hierarchical SRCU implementation.
227[    0.108694] EFI services will not be available.
228[    0.114024] smp: Bringing up secondary CPUs ...
229[    0.120417] smp: Brought up 1 node, 4 CPUs
230[    0.125987] devtmpfs: initialized
231[    0.135789] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
232[    0.146636] futex hash table entries: 1024 (order: 4, 65536 bytes, linear)
233[    0.154663] pinctrl core: initialized pinctrl subsystem
234[    0.161100] NET: Registered PF_NETLINK/PF_ROUTE protocol family
235[    0.168134] cpuidle: using governor menu
236[    0.190004] platform soc:dsi-output: Fixing up cyclic dependency with 29400000.dc8200
237[    0.199088] platform 295d0000.mipi: Fixing up cyclic dependency with soc:dsi-output
238[    0.207842] platform 29590000.hdmi: Fixing up cyclic dependency with 29400000.dc8200
239[    0.225951] HugeTLB registered 1.00 GiB page size, pre-allocated 0 pages
240[    0.233348] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
241[    0.243400] vgaarb: loaded
242[    0.246584] SCSI subsystem initialized
243[    0.250972] usbcore: registered new interface driver usbfs
244[    0.257054] usbcore: registered new interface driver hub
245[    0.262914] usbcore: registered new device driver usb
246[    0.268728] mc: Linux media interface: v0.10
247[    0.273439] videodev: Linux video capture interface: v2.00
248[    0.279635] Advanced Linux Sound Architecture Driver Initialized.
249[    0.286651] Bluetooth: Core ver 2.22
250[    0.290614] NET: Registered PF_BLUETOOTH protocol family
251[    0.296454] Bluetooth: HCI device and connection manager initialized
252[    0.303451] Bluetooth: HCI socket layer initialized
253
254[    0.308818] Bluetooth: L2CAP socket layer initialized
255[    0.314389] Bluetooth: SCO socket layer initialized
256[    0.320090] clocksource: Switched to clocksource riscv_clocksource
257[    0.332768] NET: Registered PF_INET protocol family
258[    0.338772] IP idents hash table entries: 65536 (order: 7, 524288 bytes, linear)
259[    0.350050] tcp_listen_portaddr_hash hash table entries: 2048 (order: 4, 81920 bytes, linear)
260[    0.359548] TCP established hash table entries: 32768 (order: 6, 262144 bytes, linear)
261[    0.368654] TCP bind hash table entries: 32768 (order: 8, 1048576 bytes, linear)
262[    0.377896] TCP: Hash tables configured (established 32768 bind 32768)
263[    0.385350] UDP hash table entries: 2048 (order: 5, 196608 bytes, linear)
264[    0.393085] UDP-Lite hash table entries: 2048 (order: 5, 196608 bytes, linear)
265[    0.401432] NET: Registered PF_UNIX/PF_LOCAL protocol family
266[    0.408117] RPC: Registered named UNIX socket transport module.
267[    0.414654] RPC: Registered udp transport module.
268[    0.419824] RPC: Registered tcp transport module.
269[    0.425001] RPC: Registered tcp NFSv4.1 backchannel transport module.
270[    0.432662] PCI: CLS 0 bytes, default 64
271[    0.437540] Initialise system trusted keyrings
272[    0.440391] Unpacking initramfs...
273[    0.442591] workingset: timestamp_bits=62 max_order=20 bucket_order=0
274[    0.458172] NFS: Registering the id_resolver key type
275[    0.463792] Key type id_resolver registered
276[    0.468404] Key type id_legacy registered
277[    0.472952] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
278[    0.480355] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
279[    0.488553] ntfs: driver 2.1.32 [Flags: R/W].
280[    0.493638] jffs2: version 2.2. (NAND) © 2001-2006 Red Hat, Inc.
281[    0.500768] fuse: init (API version 7.34)
282[    0.536216] NET: Registered PF_ALG protocol family
283[    0.541542] Key type asymmetric registered
284[    0.546056] Asymmetric key parser 'x509' registered
285[    0.551522] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 249)
286[    0.559674] io scheduler mq-deadline registered
287[    0.564695] io scheduler kyber registered
288[    0.655630] clk-starfive-jh7110 13020000.clock-controller: starfive JH7110 clkgen init successfully.
289[    0.666899] L2CACHE: DataError @ 0x00000000.08040140
290[    0.672493] L2CACHE: DataFail @ 0x00000000.0804000C
291[    0.677961] L2CACHE: No. of Banks in the cache: 8
292[    0.683181] L2CACHE: No. of ways per bank: 16
293[    0.687991] L2CACHE: Sets per bank: 256
294[    0.692242] L2CACHE: Bytes per cache block: 64
295[    0.697149] L2CACHE: Index of the largest way enabled: 15
296[    0.703455] jh7110-pmu 17030000.power-controller: registered 8 power domains
297[    0.773166] Serial: 8250/16550 driver, 6 ports, IRQ sharing disabled
298[    0.783097] @@#########################@@
299[    0.825259] @@ dev ptr:ffffffe0bfedc000/1500/1
300[    0.830436] PVR_K:  1: Read BVNC 36.50.54.182 from HW device registers
301[    0.837714] PVR_K:  1: RGX Device registered BVNC 36.50.54.182 with 1 core in the system
302[    0.847944] [drm] Initialized pvr 1.17.6210866 20170530 for 18000000.gpu on minor 0
303[    0.869026] loop: module loaded
304[    0.875003] spi-nor spi0.0: gd25lq128d (16384 Kbytes)
305[    1.090678] Freeing initrd memory: 9456K
306[    1.111323] 3 fixed-partitions partitions found on MTD device 13010000.spi.0
307[    1.119119] Creating 3 MTD partitions on "13010000.spi.0":
308[    1.125199] 0x000000000000-0x000000020000 : "spl"
309[    1.132172] 0x000000100000-0x000000400000 : "uboot"
310[    1.139080] 0x000000f00000-0x000001000000 : "data"
311[    1.147008] libphy: Fixed MDIO Bus: probed
312
313[    1.153018] CAN device driver interface
314[    1.157850] starfive-eth-plat 16030000.ethernet: force_sf_dma_mode is ignored if force_thresh_dma_mode is set.
315[    1.169283] starfive-eth-plat 16030000.ethernet: User ID: 0x41, Synopsys ID: 0x52
316[    1.177561] starfive-eth-plat 16030000.ethernet:     DWMAC4/5
317[    1.183627] starfive-eth-plat 16030000.ethernet: DMA HW capability register supported
318[    1.192274] starfive-eth-plat 16030000.ethernet: RX Checksum Offload Engine supported
319[    1.200914] starfive-eth-plat 16030000.ethernet: Wake-Up On Lan supported
320[    1.208389] starfive-eth-plat 16030000.ethernet: TSO supported
321[    1.214841] starfive-eth-plat 16030000.ethernet: Enable RX Mitigation via HW Watchdog Timer
322[    1.224074] starfive-eth-plat 16030000.ethernet: Enabled Flow TC (entries=1)
323[    1.231856] starfive-eth-plat 16030000.ethernet: TSO feature enabled
324[    1.238853] starfive-eth-plat 16030000.ethernet: Using 40 bits DMA width
325[    1.498340] libphy: stmmac: probed
326[    1.502151] YT8531 Gigabit Ethernet stmmac-0:00: attached PHY driver (mii_bus:phy_addr=stmmac-0:00, irq=POLL)
327[    1.513100] YT8531 Gigabit Ethernet stmmac-0:01: attached PHY driver (mii_bus:phy_addr=stmmac-0:01, irq=POLL)
328[    1.525258] starfive-eth-plat 16040000.ethernet: force_sf_dma_mode is ignored if force_thresh_dma_mode is set.
329[    1.536672] starfive-eth-plat 16040000.ethernet: User ID: 0x41, Synopsys ID: 0x52
330[    1.544951] starfive-eth-plat 16040000.ethernet:     DWMAC4/5
331[    1.551018] starfive-eth-plat 16040000.ethernet: DMA HW capability register supported
332[    1.559648] starfive-eth-plat 16040000.ethernet: RX Checksum Offload Engine supported
333[    1.568291] starfive-eth-plat 16040000.ethernet: Wake-Up On Lan supported
334[    1.575782] starfive-eth-plat 16040000.ethernet: TSO supported
335[    1.582233] starfive-eth-plat 16040000.ethernet: Enable RX Mitigation via HW Watchdog Timer
336[    1.591480] starfive-eth-plat 16040000.ethernet: Enabled Flow TC (entries=1)
337[    1.599243] starfive-eth-plat 16040000.ethernet: TSO feature enabled
338[    1.606252] starfive-eth-plat 16040000.ethernet: Using 40 bits DMA width
339[    1.864194] libphy: stmmac: probed
340[    1.867967] YT8512B Ethernet stmmac-1:00: attached PHY driver (mii_bus:phy_addr=stmmac-1:00, irq=POLL)
341[    1.878273] YT8512B Ethernet stmmac-1:03: attached PHY driver (mii_bus:phy_addr=stmmac-1:03, irq=POLL)
342[    1.890152] Intel(R) Wireless WiFi driver for Linux
343[    1.897468] cdns3-starfive 10210000.usbdrd: usb mode 2 2.0 probe success
344[    1.905661] usbcore: registered new interface driver uas
345[    1.911596] usbcore: registered new interface driver usb-storage
346[    1.930426] starfive-rtc 17040000.rtc: registered as rtc0
347[    1.936395] starfive-rtc 17040000.rtc: setting system clock to 2001-01-01T00:00:00 UTC (978307200)
348[    1.946442] i2c_dev: i2c /dev entries driver
349[    1.951408] usbcore: registered new interface driver uvcvideo
350[    1.958909] starfive-wdt 13070000.wdog: Heartbeat: timeout=15, count/2=180000000 (0aba9500)
351[    1.968664] Bluetooth: HCI UART driver ver 2.3
352[    1.973591] Bluetooth: HCI UART protocol H4 registered
353[    1.979470] starfive-cpufreq soc:starfive,jh7110-cpufreq: Failed to get regulator for cpu!
354[    1.988614] starfive-cpufreq soc:starfive,jh7110-cpufreq: Failed to init starfive cpu dvfs info
355[    1.998753] sdhci: Secure Digital Host Controller Interface driver
356[    2.005592] sdhci: Copyright(c) Pierre Ossman
357[    2.010437] Synopsys Designware Multimedia Card Interface Driver
358[    2.017361] sdhci-pltfm: SDHCI platform and OF driver helper
359[    2.024429] jh7110-sec 16000000.crypto: Unable to request sec_m dma channel in DMA channel
360[    2.033575] jh7110-sec 16000000.crypto: Cannot initial dma chan
361[    2.040410] usbcore: registered new interface driver usbhid
362[    2.046561] usbhid: USB HID core driver
363[    2.051056] usbcore: registered new interface driver snd-usb-audio
364[    2.061142] NET: Registered PF_PACKET protocol family
365[    2.066734] can: controller area network core
366[    2.071652] NET: Registered PF_CAN protocol family
367[    2.076944] can: raw protocol
368[    2.080229] can: broadcast manager protocol
369[    2.084851] can: netlink gateway - max_hops=1
370[    2.089963] Bluetooth: RFCOMM TTY layer initialized
371[    2.095385] Bluetooth: RFCOMM socket layer initialized
372[    2.101101] Bluetooth: RFCOMM ver 1.11
373[    2.105269] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
374[    2.111143] Bluetooth: BNEP filters: protocol multicast
375[    2.116916] Bluetooth: BNEP socket layer initialized
376[    2.122578] 9pnet: Installing 9P2000 support
377[    2.127344] Key type dns_resolver registered
378
379[    2.132830] Loading compiled-in X.509 certificates
380[    2.174109] starfive_jh7110-pinctrl 13040000.gpio: SiFive GPIO chip registered 64 GPIOs
381[    2.183785] starfive_jh7110-pinctrl 17020000.gpio: SiFive GPIO chip registered 4 GPIOs
382[    2.192770] pl08xdmac 16008000.sec_dma: initialized 8 virtual memcpy channels
383[    2.200677] pl08xdmac 16008000.sec_dma: initialized 16 virtual slave channels
384[    2.210216] debugfs: Directory '16008000.sec_dma' with parent 'dmaengine' already present!
385[    2.219364] pl08xdmac 16008000.sec_dma: DMA: PL080 rev0 at 0x16008000 irq 23
386[    2.227426] ssp-pl022 10060000.spi: ARM PL022 driver for StarFive SoC platform, device ID: 0x00041022
387[    2.237631] ssp-pl022 10060000.spi: mapped registers from 0x0000000010060000 to (____ptrval____)
388[    2.247779] ssp-pl022 10060000.spi: Requested frequency: 10000000 Hz is unsupported,select by default 8250000 Hz
389[    2.259395] ssp-pl022 10060000.spi: will use autosuspend for runtime pm, delay 100ms
390[    2.269288] i2c 2-0045: Fixing up cyclic dependency with 295d0000.mipi
391[    2.276782] seeed_panel 2-0045: Unknown Atmel firmware revision: 0x00
392[    2.284121] i2c 2-0019: Fixing up cyclic dependency with 295d0000.mipi
393[    2.292743] at24 5-0050: supply vcc not found, using dummy regulator
394[    2.300588] at24 5-0050: 512 byte 24c04 EEPROM, writable, 16 bytes/write
395[    2.309908] axp15060-regulator 5-0036: Register mipi_0p9 done! vol range:900 ~ 900 mV
396[    2.320057] axp15060-regulator 5-0036: Register hdmi_1p8 done! vol range:1800 ~ 1800 mV
397[    2.330401] axp15060-regulator 5-0036: Register hdmi_0p9 done! vol range:900 ~ 900 mV
398[    2.340571] axp15060-regulator 5-0036: Register cpu_vdd done! vol range:500 ~ 1540 mV
399[    2.350006] i2c 6-0010: Fixing up cyclic dependency with 19800000.vin_sysctl
400[    2.358206] imx219 6-0010: supply VANA not found, using dummy regulator
401[    2.365642] imx219 6-0010: supply VDIG not found, using dummy regulator
402[    2.373006] imx219 6-0010: supply VDDL not found, using dummy regulator
403[    2.387798] imx219 6-0010: failed to read chip id 219
404[    2.393606] imx219: probe of 6-0010 failed with error -5
405[    2.402042] pcie_plda 2b000000.pcie: host bridge /soc/pcie@2B000000 ranges:
406[    2.409769] pcie_plda 2b000000.pcie:      MEM 0x0030000000..0x0037ffffff -> 0x0030000000
407[    2.418741] pcie_plda 2b000000.pcie:      MEM 0x0900000000..0x093fffffff -> 0x0900000000
408[    2.427723] ATR entry: 0x0940000000 -> 0x0000000000 [0x0010000000] (param: 0x000001)
409[    2.436293] ATR entry: 0x0030000000 -> 0x0030000000 [0x0008000000] (param: 0x000000)
410[    2.444856] ATR entry: 0x0900000000 -> 0x0900000000 [0x0040000000] (param: 0x000000)
411[    2.800188] pcie_plda 2b000000.pcie: Port link up.
412[    2.805633] pcie_plda 2b000000.pcie: PCI host bridge to bus 0000:00
413[    2.812571] pci_bus 0000:00: root bus resource [bus 00-ff]
414[    2.818623] pci_bus 0000:00: root bus resource [mem 0x30000000-0x37ffffff]
415[    2.826224] pci_bus 0000:00: root bus resource [mem 0x900000000-0x93fffffff pref]
416[    2.834517] pci 0000:00:00.0: [1556:1111] type 01 class 0x060400
417[    2.841163] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0xffffffff 64bit pref]
418[    2.849191] pci 0000:00:00.0: supports D1 D2
419[    2.853911] pci 0000:00:00.0: PME# supported from D0 D1 D2 D3hot D3cold
420[    2.864775] pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
421[    2.873759] pci 0000:01:00.0: [1106:3483] type 00 class 0x0c0330
422[    2.880415] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x00000fff 64bit]
423[    2.887980] pci 0000:01:00.0: PME# supported from D0 D3cold
424[    2.897488] pci_bus 0000:01: busn_res: [bus 01-ff] end is updated to 01
425[    2.904828] pci 0000:00:00.0: BAR 0: no space for [mem size 0x100000000 64bit pref]
426[    2.913301] pci 0000:00:00.0: BAR 0: failed to assign [mem size 0x100000000 64bit pref]
427[    2.922154] pci 0000:00:00.0: BAR 8: assigned [mem 0x30000000-0x300fffff]
428[    2.929638] pci 0000:01:00.0: BAR 0: assigned [mem 0x30000000-0x30000fff 64bit]
429[    2.937731] pci 0000:00:00.0: PCI bridge to [bus 01]
430[    2.943218] pci 0000:00:00.0:   bridge window [mem 0x30000000-0x300fffff]
431[    2.950815] pci 0000:00:00.0: enabling device (0000 -> 0002)
432[    2.957057] pci 0000:01:00.0: enabling device (0000 -> 0002)
433[    2.963338] pci 0000:01:00.0: quirk_usb_early_handoff+0x0/0x9d4 took 12238 usecs
434[    2.971727] xhci_hcd 0000:01:00.0: xHCI Host Controller
435[    2.977509] xhci_hcd 0000:01:00.0: new USB bus registered, assigned bus number 1
436[    2.986085] xhci_hcd 0000:01:00.0: hcc params 0x002841eb hci version 0x100 quirks 0x0000040000000890
437[    2.996243] pcie_plda 2b000000.pcie: msi#0 address_hi 0x0 address_lo 0x190
438[    3.004224] xhci_hcd 0000:01:00.0: xHCI Host Controller
439[    3.010000] xhci_hcd 0000:01:00.0: new USB bus registered, assigned bus number 2
440[    3.018191] xhci_hcd 0000:01:00.0: Host supports USB 3.0 SuperSpeed
441
442[    3.025844] hub 1-0:1.0: USB hub found
443[    3.030016] hub 1-0:1.0: 1 port detected
444[    3.035395] hub 2-0:1.0: USB hub found
445[    3.039570] hub 2-0:1.0: 4 ports detected
446[    3.046871] pcie_plda 2c000000.pcie: host bridge /soc/pcie@2C000000 ranges:
447[    3.054619] pcie_plda 2c000000.pcie:      MEM 0x0038000000..0x003fffffff -> 0x0038000000
448[    3.063576] pcie_plda 2c000000.pcie:      MEM 0x0980000000..0x09bfffffff -> 0x0980000000
449[    3.072567] ATR entry: 0x09c0000000 -> 0x0000000000 [0x0010000000] (param: 0x000001)
450[    3.081134] ATR entry: 0x0038000000 -> 0x0038000000 [0x0008000000] (param: 0x000000)
451[    3.089680] ATR entry: 0x0980000000 -> 0x0980000000 [0x0040000000] (param: 0x000000)
452[    3.250164] usb usb2-port2: over-current condition
453[    3.350168] usb 1-1: new high-speed USB device number 2 using xhci_hcd
454[    3.410143] usb usb2-port4: over-current condition
455[    3.520348] pcie_plda 2c000000.pcie: Port link down, exit.
456[    3.540223] clk-starfive-jh7110-vout 295c0000.clock-controller: starfive JH7110 clk_vout init successfully.
457[    3.561252] hub 1-1:1.0: USB hub found
458[    3.562674] clk-starfive-jh7110-isp 19810000.clock-controller: starfive JH7110 clk_isp init successfully.
459[    3.565610] hub 1-1:1.0: 4 ports detected
460[    3.576608] dw_axi_dmac_platform 16050000.dma-controller: DesignWare AXI DMA Controller, 4 channels
461[    3.591411] printk: console [ttyS0] disabled
462[    3.616354] 10000000.serial: ttyS0 at MMIO 0x10000000 (irq = 17, base_baud = 1500000) is a 16550A
463[    3.626209] printk: console [ttyS0] enabled
464[    3.626209] printk: console [ttyS0] enabled
465[    3.635018] printk: bootconsole [uart0] disabled
466[    3.635018] printk: bootconsole [uart0] disabled
467[    3.645246] jh7110-vin 19800000.vin_sysctl: stfcamss probe enter!
468[    3.653400] jh7110-vin 19800000.vin_sysctl: stfcamss probe success!
469[    3.662192] dwmmc_starfive 16010000.sdio0: IDMAC supports 32-bit address mode.
470[    3.662711] dwmmc_starfive 16020000.sdio1: IDMAC supports 32-bit address mode.
471[    3.669488] dwmmc_starfive 16010000.sdio0: Using internal DMA controller.
472[    3.676786] dwmmc_starfive 16020000.sdio1: Using internal DMA controller.
473[    3.676973] jh7110-sec 16000000.crypto: will run requests pump with realtime priority
474[    3.680184] jh7110-sec 16000000.crypto: Initialized
475[    3.681285] starfive-i2s 120b0000.i2stx_4ch0:  designware: play supported
476[    3.681295] starfive-i2s 120b0000.i2stx_4ch0: designware: i2s master mode supported
477[    3.681484] sf-mipi-dphy-tx 295e0000.mipi-dphy: sf_dphy_probe begin
478[    3.681498] sf-mipi-dphy-tx 295e0000.mipi-dphy: ===> sf_dphy_probe enter, 445
479[    3.681627] sf-mipi-dphy-tx 295e0000.mipi-dphy: control ECO
480[    3.681647] sf-mipi-dphy-tx 295e0000.mipi-dphy: supply mipi_1p8 not found, using dummy regulator
481[    3.681929] sf-mipi-dphy-tx 295e0000.mipi-dphy: sf_dphy_probe end
482[    3.682122] cdns-dsi 295d0000.mipi: dsi_sys_clk = 297000000
483[    3.682361] cdns-dsi 295d0000.mipi: starfive dsi bind end
484[    3.683603] dwmmc_starfive 16010000.sdio0: Version ID is 290a
485[    3.684906] of_cfs_init
486[    3.684954] of_cfs_init: OK
487[    3.685470] starfive-pwmdac 100b0000.pwmdac: clk_apb0 = 49500000, clk_pwmdac_apb = 49500000, clk_pwmdac_core = 4068493
488[    3.685912] cfg80211: Loading compiled-in X.509 certificates for regulatory database
489[    3.690450] dwmmc_starfive 16020000.sdio1: Version ID is 290a
490[    3.698353] dwmmc_starfive 16010000.sdio0: DW MMC controller at irq 29,32 bit host data width,32 deep fifo
491[    3.703293] dwmmc_starfive 16020000.sdio1: DW MMC controller at irq 30,32 bit host data width,32 deep fifo
492[    3.710201] mmc_host mmc0: card is non-removable.
493[    3.717889] mmc_host mmc1: card is polling.
494[    3.806912] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
495[    3.834563] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
496[    3.835994] starfive soc:display-subsystem: bound 29400000.dc8200 (ops 0xffffffff80e75af8)
497[    3.843223] cfg80211: failed to load regulatory.db
498[    3.856322] innohdmi-starfive 29590000.hdmi: inno hdmi bind begin
499[    3.863843] innohdmi-starfive 29590000.hdmi: [drm:inno_hdmi_bind] registered Inno HDMI I2C bus driver success
500[    3.873931] innohdmi-starfive 29590000.hdmi: HDMI&AUDIO register done.
501
502[    3.880496] innohdmi-starfive 29590000.hdmi: inno hdmi bind end
503[    3.886423] starfive soc:display-subsystem: bound 29590000.hdmi (ops 0xffffffff80e768a8)
504[    3.894549] vs-simple-encoder soc:dsi-output: encoder_bind begin
505[    3.900594] no panel, -517
506[    3.903306] vs-simple-encoder soc:dsi-output: encoder_bind error
507[    3.909315] starfive soc:display-subsystem: bound soc:dsi-output (ops 0xffffffff80e764f0)
508[    3.917893] [drm] Initialized starfive 1.0.0 20191101 for soc:display-subsystem on minor 1
509[    3.940109] mmc_host mmc0: Bus speed (slot 0) = 198000000Hz (slot req 400000Hz, actual 399193HZ div = 248)
510[    4.020218] mmc_host mmc1: Bus speed (slot 0) = 198000000Hz (slot req 400000Hz, actual 399193HZ div = 248)
511[    4.272444] mmc_host mmc1: Bus speed (slot 0) = 198000000Hz (slot req 50000000Hz, actual 49500000HZ div = 2)
512[    4.282563] mmc1: new high speed SDHC card at address 1234
513[    4.289656] mmcblk1: mmc1:1234 SA32G 28.8 GiB
514[    4.296892] random: fast init done
515[    4.306974] GPT:Primary header thinks Alt. header is not at the end of the disk.
516[    4.314458] GPT:32767999 != 60456959
517[    4.318054] GPT:Alternate GPT header not at the end of the disk.
518[    4.324104] GPT:32767999 != 60456959
519[    4.327700] GPT: Use GNU Parted to correct GPT errors.
520[    4.332962]  mmcblk1: p1 p2 p3
521[    4.390178] mmc_host mmc0: Bus speed (slot 0) = 198000000Hz (slot req 300000Hz, actual 300000HZ div = 330)
522[    4.830160] mmc_host mmc0: Bus speed (slot 0) = 198000000Hz (slot req 200000Hz, actual 200000HZ div = 495)
523[    5.280204] mmc_host mmc0: Bus speed (slot 0) = 198000000Hz (slot req 100000Hz, actual 100000HZ div = 990)
524[    6.010170] ALSA device list:
525[    6.013194]   #0: Starfive-PWMDAC-Sound-Card
526[    6.017518]   #1: Starfive-HDMI-Sound-Card
527[    6.026630] Freeing unused kernel image (initmem) memory: 2188K
528[    6.032927] Run /init as init process
 1root@starfive:~# cat /proc/cpuinfo
 2processor       : 0
 3hart            : 1
 4isa             : rv64imafdc
 5mmu             : sv39
 6uarch           : sifive,u74-mc
 7
 8processor       : 1
 9hart            : 2
10isa             : rv64imafdc
11mmu             : sv39
12uarch           : sifive,u74-mc
13
14processor       : 2
15hart            : 3
16isa             : rv64imafdc
17mmu             : sv39
18uarch           : sifive,u74-mc
19
20processor       : 3
21hart            : 4
22isa             : rv64imafdc
23mmu             : sv39
24uarch           : sifive,u74-mc
Posted at : 2023-01-09 21:39:55 / Category : none

今年もよろしくお願いいたします

今年もよろしくお願いいたします。

年末はスキーをしてきました。
3年ぶりともなると、元々うまくもないのがさらにひどいことに…。
翌日は筋肉痛がひどかったです。

年々、この日記に書くことも減ってきてしまっていますが、
今年も気が向いたら書こうかなとは思います。

Posted at : 2023-01-05 09:24:57 / Category : none

SDカードリーダが壊れた

Raspberry PiでLinuxのブート周りをいろいろといじっているうちに、
MicroSDのパーティション情報が認識されなくなりました。
何かの拍子にMicorSDのデータを壊したかなと思い、Raspberry Pi OSのイメージを再度書き直してみるも状況は変わらず。
いくつか調べてみると、USB接続のSDカードリーダに問題があったようでした。

2つSDカードリーダを用意して、同じMicroSDを読んだ結果が以下です。

■ 壊れたSDカードリーダ

 1$ sudo hexdump -C /dev/sdb | head
 200000000  ba b8 00 10 8a 90 b8 00  b0 b8 00 00 8a 98 8a 80  |................|
 300000010  bb ba 00 38 bb 00 02 b9  00 02 b3 a0 aa 21 02 00  |...8.........!..|
 400000020  00 ba ba 03 38 00 31 0b  83 82 10 81 ba ba 03 31  |....8.1........1|
 500000030  b3 ab 12 b0 02 b0 01 bb  00 38 b2 80 8a 30 01 8b  |.........8...0..|
 600000040  08 02 89 13 aa 00 38 00  00 ab ba 00 00 00 00 00  |......8.........|
 700000050  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
 8*
 9000001b0  00 00 00 00 00 00 00 00  39 a0 91 29 00 00 00 00  |........9..)....|
10000001c0  01 00 08 03 a0 bb 00 20  00 00 00 00 08 00 00 03  |....... ........|
11000001d0  a0 bb 83 3b a0 bb 00 20  08 00 00 20 83 01 00 00  |...;... ... ....|

■ 正常なSDカードリーダ

 1$ sudo hexdump -C /dev/sdc | head
 200000000  fa b8 00 10 8e d0 bc 00  b0 b8 00 00 8e d8 8e c0  |................|
 300000010  fb be 00 7c bf 00 06 b9  00 02 f3 a4 ea 21 06 00  |...|.........!..|
 400000020  00 be be 07 38 04 75 0b  83 c6 10 81 fe fe 07 75  |....8.u........u|
 500000030  f3 eb 16 b4 02 b0 01 bb  00 7c b2 80 8a 74 01 8b  |.........|...t..|
 600000040  4c 02 cd 13 ea 00 7c 00  00 eb fe 00 00 00 00 00  |L.....|.........|
 700000050  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
 8*
 9000001b0  00 00 00 00 00 00 00 00  3d e4 95 29 00 00 00 00  |........=..)....|
10000001c0  01 40 0c 03 e0 ff 00 20  00 00 00 00 08 00 00 03  |.@..... ........|
11000001d0  e0 ff 83 3f e0 ff 00 20  08 00 00 60 c7 01 00 00  |...?... ...`....|

SDカードのデータ線は4bitなので、4bit単位で化けている部分を探すと以下の規則性です。

10 -> 4
21 -> 5
32 -> 6
459 -> d
6a -> e
7b -> f

つまり、3bit目が化けているので、DATA2の信号線に何らかの問題が出ていると考えられます。
前後のデータに依存性があるわけではなく、ランダムにDATA2がHighになっているようです。

化けるときは常にHighになる方向なので、どこかで短絡している可能性があるのかなとは思います。
MicorSDの端子ではDATA2の近くにVCCは見当たらないので、基板上かコントローラの中で何らかの問題が発生しているのでしょうか。

かなり古いもので、十分役に立ってくれたので、これは捨てようと思います。
再現性の低い問題ではなく、わりとわかりやすい壊れ方してくれたのはありがたいことでした。

Posted at : 2022-02-06 22:13:49 / Category : none

あけましておめでとうございます

あけましておめでとうございます。
今年もよろしくお願いいたします。

今年のお正月は2年ぶりの帰省ができて、楽しみのおおい正月でした。
改めて感じるのは、家で過ごした正月は普段と何ら変わらず、気が休まらないですね。
気軽に旅行など行ける世の中が早く来てほしいです。

昨年は今まで経験したことのないイベントが多かったです。
正直、胃の痛いことも多くありましたが、
思い返してみると無事こなせていたのでよかった。
また、ほとんど日記に書かなくなっていますが、
技術的な面でも以前より面白いことができてるのではと思ってます。

今年は目先のことだけでなく、10年先のことを見据えた考えをしていきたいですね。
もっと躍進できるよう、がんばっていこうと思います。

Posted at : 2022-01-03 02:19:25 / Category : none

systemdのProtectHomeでハマる

話の発端はmuninのプラグインを作っていたことです。
home以下に配置したスクリプトをシンボリックリンクでpluginsディレクトリにシンボリックリンク張って、読み込ませようとしていました。
が、これがどうやっても読み込まれない。

perlのスクリプトの中身を追っていくと、以下のような感じになってさっぱりな状況。

・muninを通して-x, -fやstatの結果、エラーとなる
・別途perlスクリプトを書いて同じことを行うと問題ない

パーミッションを疑っていたけれども、それも違うような…と思っていろいろと試行錯誤している中、
そういえばsystemdでこのスクリプトが動いていることを思い出す。
initスクリプトの顔してたから、systemdのことを忘れていたんですね。

で、systemdの設定見たら確かにProtectHomeなるオプションが有効になっている。
オプションを無効にしてrestartしたら意図通りの実行ができるようになった。
うーん、そんなオプションあったとはね。。。

Posted at : 2021-10-25 21:44:53 / Category : none

WN-DX2033GRのDHCPサーバが無効にならない

いままで使って無線APの動作がいろいろと怪しかったので、WN-DX2033GR を購入しました。
ax に対応したものも候補として考えたけど、性能を求めるとあまり安くないし、そもそも対応したクライアントを持っていない。
ルータとしての機能も不要(APとして使わない)ので、アンテナの本数と値段(と、特定のメーカを除外)を考えてこれになりました。

今日になってPCから無線に接続すると、一瞬DHCPから設定されるデフォルトGWが何故か無線APのものになっていることが判明。
Wiresharkで調べるとDHCPの応答がWN-DX2033GRと本来のGWの2箇所から返ってきている…。
本来のGWのほうが遅れてDHCPの応答を返すため、たまたまうまくいっていた模様。

確かに、WN-DX2033GRのステータスを見ると、APモードで動かしているのにDHCPサーバは「有効」の表示になっている。
ただ、APモードなのでDHCPサーバの有効・無効の設定も存在しない。
おそらく、セットアップの手順で不具合を踏んだのかなと推測し、初期化して設定をし直し。
今回は、ちゃんとDHCPサーバは「無効」の表示となりました。一体何だったんだろうか。

image

Posted at : 2021-08-22 15:52:42 / Category : none

Linux Kernelのpreemption modelを動的に変更する

Linux Kernel 5.12ではpreemption modelの動的変更が実装されています。
この機能を試してみます。

■ 前準備

以下のconfigを有効にします。

  • PREEMPT_DYNAMIC
  • HAVEPREEMPTDYNAMIC

ここでは省略しますが、どちらも他の設定に依存した設定値になっているので、間接的に設定が必要です。
Ubuntu 20.04(x86_64)の場合は、PREEMPTを有効にすることで上記が有効になりました。

■ 動的にpreemption modelを変更する

方法としては2つあります。

  • Kernel引数のpreemptにnone/voluntary/fullのいずれかを指定する
  • /sys/kernel/debug/sched_preemptから変更する

今回は後者の方法を試してみます。
まずcatで現在の設定の確認。

1# cat /sys/kernel/debug/sched_preempt
2(none) voluntary full

これをCONFIG_PREEMPTと同じpreemption modelに変更します。

1# echo "full" > /sys/kernel/debug/sched_preempt
2# cat /sys/kernel/debug/sched_preempt
3none voluntary (full)

とりあえず変わることはわかりました。

■ 何かがおかしい?

本来はここで動作検証をするところなのですが、
試してみても挙動がまったく変わらず、何かがおかしい?

一つ気になるのがDEFINESTATICCALLでpreemptscheduleは登録しているものの、
static
callで呼び出しているところが見つからない。

https://elixir.bootlin.com/linux/v5.12/source/kernel/sched/core.c#L5264

PREEMPTDYNAMICがstaticcallの機能の上で成り立っているため、
static_callで呼び出さないとダメだと思うんだけどな。もう少し調べてみよう。

Posted at : 2021-05-07 16:35:39 / Category : none

Ubuntu 20.04で最新のメインラインのカーネルを試す

以下の環境で試していきます。

  • ビルド環境 (以下、プロンプトは build$ で示します)
    • Arch : x86_64 (実機)
    • Distribution : Ubuntu 20.04.1
  • ターゲット環境 (以下、プロンプトは target$ で示します)
    • Arch : x86_64 (VMware fusion) ** Distribution : Ubuntu 20.04.2

ビルド環境とターゲット環境を兼用しても大丈夫です。
今回は、VMに割り当てられるリソースが少ないので別途ビルド環境を用意しています。

ターゲットとするカーネルは5.12とします。
ビルド環境にて、メインラインのカーネルをチェックアウトします。

configはUbuntu 20.04のものを使用します。
ターゲット環境からビルド環境へ転送します。

1target$ scp /boot/config-5.4.0-72-generic 192.168.10.44:~/linux/.config

configはdefconfigから生成する方法もありますが、
ドライバの有無や機能の有無にも関連してくるため、
ひとまずはディストリビューションのものを試すのが無難だと思います。

カーネルのバージョンが5.4から5.12へ変わるため、
oldconfigで不足しているconfigを設定します。

1build$ make oldconfig

数十〜百単位で項目が聞かれますが、とりあえず試すだけであれば
全部デフォルト値(つまりEnter押しっぱなし)で十分だと思います。

一点だけ、CONFIGSYSTEMTRUSTED_KEYS はデフォルト値を削除して空欄にする必要があります。
署名済みカーネルモジュールを生成するためのキーみたいですが、
この点はどういう仕組になっているのかよくわかってないです。
make menuconfig でメニューを表示し / で検索します。

1build$ make menuconfig

次にビルドします。
細かくはカーネルビルドして、モジュールビルドして…とか手順はありますが、
今回そこが目的ではないので以下でまとめてビルドしてしまいます。

1build$ make -j4 bindeb-pkg

ビルドが完了すると以下のファイルが出力されます。

  • linux-headers-5.12.05.12.0-1amd64.deb
  • linux-image-5.12.05.12.0-1amd64.deb
  • linux-image-5.12.0-dbg5.12.0-1amd64.deb
  • linux-libc-dev5.12.0-1amd64.deb

これをターゲットに転送して、インストールします。

1target$ sudo dpkg -i linux-*.deb

完了したらrebootします。
立ち上がったらunameでカーネルのバージョンが上がっていることを確認します。

1target$ uname -a
2Linux ubuntu05 5.12.0 #1 SMP Wed May 5 17:25:30 JST 2021 x86_64 x86_64 x86_64 GNU/Linux
Posted at : 2021-05-06 18:22:31 / Category : none

あけましておめでとうございます。

あけましておめでとうございます。
普段の年末なら実家に帰ったりして、ちょっと普段と雰囲気が変わって"お正月"な感じがでますが、
今年はずっと家にいたため、あまりお正月感が出ずでした。
でも、その分考えることややりたいことは進んだので良かったかな。

そんな中で今年の目標を考えてみました。
あれこれ考えながら、以下のあたりでいきます。

  • 英語の聞く・話す能力の向上
  • ものを作る過程のアウトプットを増やしていきたい。ちゃんと形にしていきたい

やることをうまく分解・組み立てして、実現に向けて頑張っていこうと思います。

Posted at : 2021-01-05 21:01:56 / Category : none

今年もありがとうございました

今年も1年ありがとうございました。
COVID-19でいろいろと変化の多かった年でしたが、3点ほど今年の印象的な出来事を上げてみます。

■ 3月頃からリモートワークを続けてます

3月頃から続けてリモートワークをしています。
良い点としては、(COVID-19はあまり関係ないですが)子供がいると何かあったときに対応しやすく、
その点は非常に良かったかな。

一方で一時期は常にリモートでも良いのかなと思い、実際そういう時期も2ヶ月近くあったけど、
実際にやってみると中々すべてをリモートでというのは難しいなと感じました。
特に人と人とのやり取りの中では、直接会うほうが進めやすいというケースがありますね。

■ Linux Kernelをいじる業務が増えました

以前からそんな感じのことはしていたのですが、今年は特に集中的にやってます。
ソースコードを上から下まで読み込んで、いろいろと手を加えたりとか、
バグを出したりとかしていて、奥深いところまで理解が進んだのかなおと思ってます。
特にアーキテクチャ依存部の実装や一部のドライバの実装には詳しくなったと思います。
また、自分の手でOSを動かせるっていうのはやっぱり面白いですね。

■ 万年筆にはまりました

以前からプラチナ万年筆のプレピーという万年筆を使っていました。
ただ、ペン先の歩留まりが悪いのか、数本買って書き味の選別をしてみたり、
(一本300円ぐらいなので)自分でルーペでみながらヤスリで調整とかしていました。
じゃあ、ペン先が金の万年筆だとどうなのか?というのが発端で、
センチュリーの太字と細字を半年間隔ぐらいで購入してしまい、はまりました。

使ってみた感想は期待通りか、ちょっと下回るぐらいかなぁ。。。
太字はぬらぬら感が良かったんですが、細字はかりかり感が出てしまうのがちょっと微妙なところでした。
こういう時期でなければ、ペンクリニックに持っていって調整をしてもらうの良いとは思ってます。
次に気になってくるのは、他のメーカーだとどうなのかなとか思っていて、
また少し経ったら買いたくなっちゃう気がします。。。

逆にうまくいかなかったな点は以下の2点。

■ 英語がおざなりになってきている

話す機会が圧倒的に減ってきているのが良くないかな。
読み、書きは普段から少しはするものの、もうちょっと量を増やしていきたいですね。

そういえば、2月にTOEIC S/Wを受けたことをこれを書きながら思い出しました。
定期的にテストを受けながら目標設定していくつもりが、
この状況下(特に2月の回を最後に中止になったり、人数制限がかかったりしていた)ですっかりおろそかになっていました。

■ 自分の作りたいものがうまく進んでいない

目下はAVRの書き込み基板を作っています。
それを応用して広げていきたいなと考えているのですが、
単に書き込み基板(とそのファームウェア)を実装するのに時間がかかってます。
時間がまだあると思っちゃうんだろうけど、サクッと終わらせたいところです。

こんな感じの1年でした。

それでは、来年も良いお年をお迎えください。

Posted at : 2020-12-31 21:49:52 / Category : none

2020年12月19日

Raspberry Pi W Zero をセットアップした。
MH-Z19(詳細は12月1日の日記参照)を使って、CO2濃度を測れるようにする。
以前やったときは、Raspberry Pi 4 を使っていて、普段仕事をする部屋で稼働している。
時系列でグラフを見ていると相対的に空気が悪い事がわかるので、
空気を入れ替えるタイミングが分かるのが良いかな。
今回セットアップしたものは、リビングに設置して測定予定。

昨晩のこと。開栓したワインが何かカビ臭い(乾いた雑巾のような匂い)。
保管期間が長くて酸化したのともまた違った感じで、飲むのもツライ感じ。
そういえばソムリエがコルクを確認するのはこういう理由だったような、と思い
調べてみるとブショネとというらしい。

うーん、でも本当にそうなのか…?
少し置いてみてもカビ臭いのは抜けない。
あと、念のためvinicaでレビュー見てみて、そういうワインなのか調べてみる。
フルーティーでスパイシー…全くそんな感じしない。やっぱりおかしい。
今まで感じたことのない匂いだし、まぁそうなんだろうな。

さらに調べてみると、販売元によっては交換をしてくれるみたい。
今回買ったところはその対応をしてくれるところで、
連絡をしてみたところ返金をしてもらえることになった。良かった。

ワインって毎回味が変わるものだし、こういうのも含めて面白みなのかなと。
ただ、最初にこんなワインにあたったら嫌だろうな…。飲み慣れててもこの匂いはきつい。
この日もう一本開けてみたけど、前の匂いの印象が残ってて全然進まなかった。

Posted at : 2020-12-19 21:54:04 / Category : none

2020年12月13日

AVRでSPIのデバッグの続き。ようやく理由がわかった。
Slave Selectの信号が入力になっていて、かつ、Lowに入力されている状態になっていて、SPIの回路が動作していなかった。
仕様書確認して、信号の方向を出力にした場合は回路側が影響を受けないということなので、ひとまず出力にして対策。
特に他のデバイスはつないでいない状態であれば、出力にしてしまってもひとまずは問題ない。
他のデバイスを接続する可能性を考えると、外でpull upしておくのが良かったな。。。次回修正しよう。

あと、SPIのMOSI、MISOの接続を間違えていることにも気づいた。
Master Out Slave Input(MOSI)なので、MasterとSlave間で同じ端子をつなぐのが正しい。
つい、UARTのRX, TXの感覚でクロスで接続してしまった…。
基板をカットして配線し直そう。

CO2センサとして使っているMH-Z19を購入しようと、数日前からaliexpressをちらほらと見ているんだけど、
在庫や値段の動きがちらほらある感じがする。
どうせすぐに使うものでもないし、何かのセールのタイミングで良いかなとか考えていただけど、
値上がり傾向な感じもしてたため、購入することにした。ちょうど年末年始に届く予定。

Posted at : 2020-12-13 22:32:13 / Category : none

2020年12月5日

AVRでSPIを使いたいと思っていじってるんだけど、うまくいかない。
ライタと信号を共有しているので、それが原因かなとか思って外してみるも、これも効果なし。
プログラムが間違っているのかもだけど、仕様書の通りの手順でやってるだけなんだよね…。
うーん、また時間をあけて考えてみよう。。。

Posted at : 2020-12-05 23:19:07 / Category : none

2020年12月1日

今日は休暇だったので、家でいろいろと作業。

以前aliexpressで買ったMH-Z19をようやく動かしてみる気になり、
コネクタをはんだ付けしたりしてRaspberry Piに接続できるようにした。
Pythonのライブラリを使って、特に問題もなくセンサの値が取得できた。

グラフを見ていると在室状況によって変動するので面白い。
あとはこの値から部屋の中の換気が適切かどうか判断したい。

今回少し工夫したのは、ストレージへの書き込み回数を減らすこと。
1秒おきにロギング&グラフ出力をするようにしていて、
そのまま出力するとSDカードの書き込み回数上限に達してしまう可能性があり、
代わりにramfsに出力するようにしてram上で完結させるようにした。
再起動するとログも飛ぶものの、過去のデータは無くても良いかな。
必要なら1日おきとかにバックアップ取れば良さそう。

Posted at : 2020-12-01 22:33:50 / Category : none

サーバのアップデート

やらないと…と先延ばしにしていたサーバのアップデート、ようやく完了。
今回はOSをDebian 10にしました。

railsで動いているアプリケーションも何とか6.0にしました。
ところどころ動かないところは諦めたりとかしましたが、
主要なものはあまり手を入れずに動かせて良かったです。

Posted at : 2020-07-25 17:24:40 / Category : none

MCP2221Aを使う(その1)

基板を作成してみました。
昨日FusionPCBで発注、そんなに急ぎではなかったのでShigapore Postで配送にしました。
3週間後ぐらいに届くのが楽しみです。

今回作った基板は、USBで接続をして、UART、I2C、GPIOをそれぞれコネクタから出します。
メインはUSB-シリアル変換として使うため、ついでに今後その他のIOで遊ぼうと思っています。

最初、いろいろなところで使えると良いなと思い、MCP2221Aを表面実装とDIPとそれぞれ切り替えて使えるよう設計していました。
ただ、USBの基板設計ガイドラインを確認していて、明確には書いてないものの分岐はダメな気がしてきてやめました。
表面実装とDIP、どちらかは未実装になるので動作としての影響はないのですが、分岐していることで反射の影響とか受けそうだなぁ…と。
ということで、表面実装だけ残してあとはすべて削除。すっきりとした基板になりました。

image

Posted at : 2020-06-14 22:45:19 / Category : none

AVRの書き込み基板(その1)

今さらAVRの書き込み基板を作ってます。
ワンボードにAVRを2個乗っけて、モニタ用(マスタ)とプログラム実行用(スレーブ)のそれぞれで使用して、
PCからUSB1本でプログラムの書き込みから実行までできるような基板です。
基板の詳細についてはまた別の機会に書くことにして、早速失敗に気づいたので、まずはそちらから…。

UARTからデータの送受信をするプログラムを作成して実行してみるも、何かうまく行かない。
オシロで見てみるとボーレート自体は問題なさそうだし…って、なんでマイナスの電圧が?というので気づきました、レベル変換入れてない…。
そういう設計でも(仕様通りなら)良かったんですが、少なくとも今使っているUSBシリアル変換はRS-232Cのレベルでしか受けてくれません(なので仕様通りじゃない)。

こういうときのため、以前にMAX232を使ったレベル変換基板を作ったので、それを使ってみることに。
が、これもこれでよく調べてみると、この基板は電源をマイコン側から取るようになっている(当然RS-232Cのコネクタにも電源はないので、MAX232を動かすための電源が取れない)。
今回作った基板は添付の画像のようにRX, TX, GNDの3線しか出していません(ここにVCCがあれば解決する問題だった)。うーん…ダメじゃん。

そうなるとCMOSレベルで受けられる、USBシリアル変換を買うか、あるいは作るかになりそうです。

image

Posted at : 2020-06-07 21:36:56 / Category : none