U-Bootのwgetコマンドを使っているとたまに転送に失敗することがあり、
不具合を追っていった結果、2つほど不具合がありました。
以下2つのパッチを作成して、無事mergeされました。
https://github.com/u-boot/u-boot/commit/cab7867cff33f9c21025102ea9ca3b26e362fb52
https://github.com/u-boot/u-boot/commit/beac9581531d7882df8c1de653db18fb3ab4100a
1つ目のパッチを最初にMLに投稿したところ、別の不具合に心当たりある?とのこと。
実はすでにその問題には気づいていて、
1つ目のパッチを1週間ほど手元でテストする中で発生しており、
問題点と修正方法は目星がついている状況でした。
早速2つ目のパッチを作成、テストしてMLに投稿し、
無事が解消したとの連絡があり安心しました。
ただ、まだ何かおかしいところがあるようなので、引き続き調査は必要そうです。
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のシリーズによって定義が異なるので、注意して確認したほうが良さそう。
ここ数年の Linux Kernel はかなり安定しているとは思っていて、滅多にハングする状況を見ることをなくなりました。
でも、本当にそうなのか気になります。
気が向いたときに最新の Linux Kernel をいくつかのアーキテクチャでビルドして動かしてみた結果をまとめてみます。
■ 以下の情報に関する注意点
■ 結果 (mainline)
バージョン : 6.5-rc4
Raspberry Pi 2 (arm)
VisionFive 2 (riscv)
■ 結果 (-rt)
バージョン : 6.4.6-rt8
単純なアタッチは以下の通りでできた。
https://forum.rvspace.org/t/connecting-to-visionfive-s-jtag-port-a-short-guide/514/1
ホスト側のJTAG I/Fには秋月のFT232HLを使用した。
アタッチしてデバッグまでは特に問題なくできるものの、
TRSTnをアサートしてもリセットがかからない。
これができれば、リセットベクタからデバッグができるのだけどなぁ。。。
手順は以下の通り。
念のためオシロでTRSTnの端子を見ると、ちゃんと一定時間Lにアサートしていた。
アサート時間が短いのかなと思い、monitor jtagntrstassert_widthで調整をしてみても変わらず。
ホスト側は特に問題なさそう。
ターゲット側の問題のような感じはするけど、はっきりとはわからず。
仕様書は抜粋版しか公開されていないようなので、ここからも情報は得られなかった。
—
そうなると、U-Bootだとresetコマンドが実行できるのはなんでだろう?
抜粋版の仕様書にリセットレジスタの記載があるので、これを叩いているのだろうか。
ソースを見てみる。
U-BootのCONFIGSYSRESETSBIが経っていて、resetコマンド実行時にU-BootからOpenSBIに落ちている。
OpenSBIでは、I2Cでregulatorのレジスタのresetビットを叩いている…。
これは望んでいた方法ではないな。。。
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 9… 10append: 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の手前ぐらいなので、ここは避けたほうが良さそうです。
また、U-BootがロードするLinuxのDTBの配置先とLinux Kernelのアドレスを確認します。
先頭1GByteから64MByteと96MByteの位置に取っています。
また一時的にloadaddrも使用しているので、ここも避けたほうが良さそうです。
以上から展開先は1GByteから+256MByteの0x5000_0000を設定しています。
サイズは16MByteを指定します。
(以降のログでは起動していますが、後から考えると16MByteは少ない可能性があるため、もっと増やしたほうが良いです)
ここまでできたら、後はブートするのみです。
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
今年もよろしくお願いいたします。
年末はスキーをしてきました。
3年ぶりともなると、元々うまくもないのがさらにひどいことに…。
翌日は筋肉痛がひどかったです。
年々、この日記に書くことも減ってきてしまっていますが、
今年も気が向いたら書こうかなとは思います。
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単位で化けている部分を探すと以下の規則性です。
つまり、3bit目が化けているので、DATA2の信号線に何らかの問題が出ていると考えられます。
前後のデータに依存性があるわけではなく、ランダムにDATA2がHighになっているようです。
化けるときは常にHighになる方向なので、どこかで短絡している可能性があるのかなとは思います。
MicorSDの端子ではDATA2の近くにVCCは見当たらないので、基板上かコントローラの中で何らかの問題が発生しているのでしょうか。
かなり古いもので、十分役に立ってくれたので、これは捨てようと思います。
再現性の低い問題ではなく、わりとわかりやすい壊れ方してくれたのはありがたいことでした。
あけましておめでとうございます。
今年もよろしくお願いいたします。
今年のお正月は2年ぶりの帰省ができて、楽しみのおおい正月でした。
改めて感じるのは、家で過ごした正月は普段と何ら変わらず、気が休まらないですね。
気軽に旅行など行ける世の中が早く来てほしいです。
昨年は今まで経験したことのないイベントが多かったです。
正直、胃の痛いことも多くありましたが、
思い返してみると無事こなせていたのでよかった。
また、ほとんど日記に書かなくなっていますが、
技術的な面でも以前より面白いことができてるのではと思ってます。
今年は目先のことだけでなく、10年先のことを見据えた考えをしていきたいですね。
もっと躍進できるよう、がんばっていこうと思います。
話の発端はmuninのプラグインを作っていたことです。
home以下に配置したスクリプトをシンボリックリンクでpluginsディレクトリにシンボリックリンク張って、読み込ませようとしていました。
が、これがどうやっても読み込まれない。
perlのスクリプトの中身を追っていくと、以下のような感じになってさっぱりな状況。
・muninを通して-x, -fやstatの結果、エラーとなる
・別途perlスクリプトを書いて同じことを行うと問題ない
パーミッションを疑っていたけれども、それも違うような…と思っていろいろと試行錯誤している中、
そういえばsystemdでこのスクリプトが動いていることを思い出す。
initスクリプトの顔してたから、systemdのことを忘れていたんですね。
で、systemdの設定見たら確かにProtectHomeなるオプションが有効になっている。
オプションを無効にしてrestartしたら意図通りの実行ができるようになった。
うーん、そんなオプションあったとはね。。。
いままで使って無線APの動作がいろいろと怪しかったので、WN-DX2033GR を購入しました。
ax に対応したものも候補として考えたけど、性能を求めるとあまり安くないし、そもそも対応したクライアントを持っていない。
ルータとしての機能も不要(APとして使わない)ので、アンテナの本数と値段(と、特定のメーカを除外)を考えてこれになりました。
今日になってPCから無線に接続すると、一瞬DHCPから設定されるデフォルトGWが何故か無線APのものになっていることが判明。
Wiresharkで調べるとDHCPの応答がWN-DX2033GRと本来のGWの2箇所から返ってきている…。
本来のGWのほうが遅れてDHCPの応答を返すため、たまたまうまくいっていた模様。
確かに、WN-DX2033GRのステータスを見ると、APモードで動かしているのにDHCPサーバは「有効」の表示になっている。
ただ、APモードなのでDHCPサーバの有効・無効の設定も存在しない。
おそらく、セットアップの手順で不具合を踏んだのかなと推測し、初期化して設定をし直し。
今回は、ちゃんとDHCPサーバは「無効」の表示となりました。一体何だったんだろうか。
Linux Kernel 5.12ではpreemption modelの動的変更が実装されています。
この機能を試してみます。
■ 前準備
以下のconfigを有効にします。
ここでは省略しますが、どちらも他の設定に依存した設定値になっているので、間接的に設定が必要です。
Ubuntu 20.04(x86_64)の場合は、PREEMPTを有効にすることで上記が有効になりました。
■ 動的にpreemption modelを変更する
方法としては2つあります。
今回は後者の方法を試してみます。
まずcatで現在の設定の確認。
これをCONFIG_PREEMPTと同じpreemption modelに変更します。
とりあえず変わることはわかりました。
■ 何かがおかしい?
本来はここで動作検証をするところなのですが、
試してみても挙動がまったく変わらず、何かがおかしい?
一つ気になるのがDEFINESTATICCALLでpreemptscheduleは登録しているものの、
staticcallで呼び出しているところが見つからない。
https://elixir.bootlin.com/linux/v5.12/source/kernel/sched/core.c#L5264
PREEMPTDYNAMICがstaticcallの機能の上で成り立っているため、
static_callで呼び出さないとダメだと思うんだけどな。もう少し調べてみよう。
以下の環境で試していきます。
ビルド環境とターゲット環境を兼用しても大丈夫です。
今回は、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
ビルドが完了すると以下のファイルが出力されます。
これをターゲットに転送して、インストールします。
1target$ sudo dpkg -i linux-*.deb
完了したらrebootします。
立ち上がったらunameでカーネルのバージョンが上がっていることを確認します。
あけましておめでとうございます。
普段の年末なら実家に帰ったりして、ちょっと普段と雰囲気が変わって"お正月"な感じがでますが、
今年はずっと家にいたため、あまりお正月感が出ずでした。
でも、その分考えることややりたいことは進んだので良かったかな。
そんな中で今年の目標を考えてみました。
あれこれ考えながら、以下のあたりでいきます。
やることをうまく分解・組み立てして、実現に向けて頑張っていこうと思います。
今年も1年ありがとうございました。
COVID-19でいろいろと変化の多かった年でしたが、3点ほど今年の印象的な出来事を上げてみます。
■ 3月頃からリモートワークを続けてます
3月頃から続けてリモートワークをしています。
良い点としては、(COVID-19はあまり関係ないですが)子供がいると何かあったときに対応しやすく、
その点は非常に良かったかな。
一方で一時期は常にリモートでも良いのかなと思い、実際そういう時期も2ヶ月近くあったけど、
実際にやってみると中々すべてをリモートでというのは難しいなと感じました。
特に人と人とのやり取りの中では、直接会うほうが進めやすいというケースがありますね。
■ Linux Kernelをいじる業務が増えました
以前からそんな感じのことはしていたのですが、今年は特に集中的にやってます。
ソースコードを上から下まで読み込んで、いろいろと手を加えたりとか、
バグを出したりとかしていて、奥深いところまで理解が進んだのかなおと思ってます。
特にアーキテクチャ依存部の実装や一部のドライバの実装には詳しくなったと思います。
また、自分の手でOSを動かせるっていうのはやっぱり面白いですね。
■ 万年筆にはまりました
以前からプラチナ万年筆のプレピーという万年筆を使っていました。
ただ、ペン先の歩留まりが悪いのか、数本買って書き味の選別をしてみたり、
(一本300円ぐらいなので)自分でルーペでみながらヤスリで調整とかしていました。
じゃあ、ペン先が金の万年筆だとどうなのか?というのが発端で、
センチュリーの太字と細字を半年間隔ぐらいで購入してしまい、はまりました。
使ってみた感想は期待通りか、ちょっと下回るぐらいかなぁ。。。
太字はぬらぬら感が良かったんですが、細字はかりかり感が出てしまうのがちょっと微妙なところでした。
こういう時期でなければ、ペンクリニックに持っていって調整をしてもらうの良いとは思ってます。
次に気になってくるのは、他のメーカーだとどうなのかなとか思っていて、
また少し経ったら買いたくなっちゃう気がします。。。
逆にうまくいかなかったな点は以下の2点。
■ 英語がおざなりになってきている
話す機会が圧倒的に減ってきているのが良くないかな。
読み、書きは普段から少しはするものの、もうちょっと量を増やしていきたいですね。
そういえば、2月にTOEIC S/Wを受けたことをこれを書きながら思い出しました。
定期的にテストを受けながら目標設定していくつもりが、
この状況下(特に2月の回を最後に中止になったり、人数制限がかかったりしていた)ですっかりおろそかになっていました。
■ 自分の作りたいものがうまく進んでいない
目下はAVRの書き込み基板を作っています。
それを応用して広げていきたいなと考えているのですが、
単に書き込み基板(とそのファームウェア)を実装するのに時間がかかってます。
時間がまだあると思っちゃうんだろうけど、サクッと終わらせたいところです。
こんな感じの1年でした。
それでは、来年も良いお年をお迎えください。
Raspberry Pi W Zero をセットアップした。
MH-Z19(詳細は12月1日の日記参照)を使って、CO2濃度を測れるようにする。
以前やったときは、Raspberry Pi 4 を使っていて、普段仕事をする部屋で稼働している。
時系列でグラフを見ていると相対的に空気が悪い事がわかるので、
空気を入れ替えるタイミングが分かるのが良いかな。
今回セットアップしたものは、リビングに設置して測定予定。
昨晩のこと。開栓したワインが何かカビ臭い(乾いた雑巾のような匂い)。
保管期間が長くて酸化したのともまた違った感じで、飲むのもツライ感じ。
そういえばソムリエがコルクを確認するのはこういう理由だったような、と思い
調べてみるとブショネとというらしい。
うーん、でも本当にそうなのか…?
少し置いてみてもカビ臭いのは抜けない。
あと、念のためvinicaでレビュー見てみて、そういうワインなのか調べてみる。
フルーティーでスパイシー…全くそんな感じしない。やっぱりおかしい。
今まで感じたことのない匂いだし、まぁそうなんだろうな。
さらに調べてみると、販売元によっては交換をしてくれるみたい。
今回買ったところはその対応をしてくれるところで、
連絡をしてみたところ返金をしてもらえることになった。良かった。
ワインって毎回味が変わるものだし、こういうのも含めて面白みなのかなと。
ただ、最初にこんなワインにあたったら嫌だろうな…。飲み慣れててもこの匂いはきつい。
この日もう一本開けてみたけど、前の匂いの印象が残ってて全然進まなかった。
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をちらほらと見ているんだけど、
在庫や値段の動きがちらほらある感じがする。
どうせすぐに使うものでもないし、何かのセールのタイミングで良いかなとか考えていただけど、
値上がり傾向な感じもしてたため、購入することにした。ちょうど年末年始に届く予定。
AVRでSPIを使いたいと思っていじってるんだけど、うまくいかない。
ライタと信号を共有しているので、それが原因かなとか思って外してみるも、これも効果なし。
プログラムが間違っているのかもだけど、仕様書の通りの手順でやってるだけなんだよね…。
うーん、また時間をあけて考えてみよう。。。
今日は休暇だったので、家でいろいろと作業。
以前aliexpressで買ったMH-Z19をようやく動かしてみる気になり、
コネクタをはんだ付けしたりしてRaspberry Piに接続できるようにした。
Pythonのライブラリを使って、特に問題もなくセンサの値が取得できた。
グラフを見ていると在室状況によって変動するので面白い。
あとはこの値から部屋の中の換気が適切かどうか判断したい。
今回少し工夫したのは、ストレージへの書き込み回数を減らすこと。
1秒おきにロギング&グラフ出力をするようにしていて、
そのまま出力するとSDカードの書き込み回数上限に達してしまう可能性があり、
代わりにramfsに出力するようにしてram上で完結させるようにした。
再起動するとログも飛ぶものの、過去のデータは無くても良いかな。
必要なら1日おきとかにバックアップ取れば良さそう。
やらないと…と先延ばしにしていたサーバのアップデート、ようやく完了。
今回はOSをDebian 10にしました。
railsで動いているアプリケーションも何とか6.0にしました。
ところどころ動かないところは諦めたりとかしましたが、
主要なものはあまり手を入れずに動かせて良かったです。
基板を作成してみました。
昨日FusionPCBで発注、そんなに急ぎではなかったのでShigapore Postで配送にしました。
3週間後ぐらいに届くのが楽しみです。
今回作った基板は、USBで接続をして、UART、I2C、GPIOをそれぞれコネクタから出します。
メインはUSB-シリアル変換として使うため、ついでに今後その他のIOで遊ぼうと思っています。
最初、いろいろなところで使えると良いなと思い、MCP2221Aを表面実装とDIPとそれぞれ切り替えて使えるよう設計していました。
ただ、USBの基板設計ガイドラインを確認していて、明確には書いてないものの分岐はダメな気がしてきてやめました。
表面実装とDIP、どちらかは未実装になるので動作としての影響はないのですが、分岐していることで反射の影響とか受けそうだなぁ…と。
ということで、表面実装だけ残してあとはすべて削除。すっきりとした基板になりました。