コグノスケ


link 未来から過去へ表示(*)  link 過去から未来へ表示

link もっと前
2023年12月29日 >>> 2023年12月16日
link もっと後

2023年12月29日

VSCodeでRISC-Vボードをデバッグその1 - SSH Remote Extensionの設定

目次: Linux

Visual Studio Code(以降VSCode)のSSH Remote Extensionを使って、LinuxマシンのGDBを起動、OpenOCDに接続、RISC-Vボードをデバッグする方法をメモしておきます。

以前紹介した方法(2021年3月3日の日記参照)と似ていますがWindows用のGDBバイナリをビルドする必要がないという利点があります。

今回はSSH Remote Extensionのインストールと設定です。


SSH Remote Extensionのインストール

最初にExtensionsからSSH Remoteをインストールします。


SSH Remote接続先の指定

REMOTE EXPLORER(矢印1)からNew Remoteを選択して(矢印2)GDBがインストールされているLinuxマシンを指定します(矢印3)。指定方法は例にある通りusername@hostnameです。


SSH設定を保存するファイル名の指定

SSHの接続先設定を保存するファイル名を指定します。私は特にこだわりがないので、デフォルトのC:\Users\(ユーザー名)\.ssh\configを使いました。


SSHで接続

SSHの設定を追加したら、REMOTES (TUNNELS/SSH)のRefreshを押します(矢印1)。追加した設定が表示されたらConnect in Current Windowを押します(矢印2)。


SSH接続先のPlatform指定

接続先のマシンはLinuxか?Windowsか?macOSか?と聞かれます。今回はLinuxを使っているのでLinuxを選択します。


SSH Fingerprintの表示と確認

接続しようとしているホストのfingerprintが表示され、本当に接続するか?と質問されます。初めて接続するホストの場合は必ず聞かれます。continueを押してください。

もしこの質問が2回目以降の接続で表示される場合は、異なるホストが同じIPアドレスを使用しているなど何らかの異常が発生している可能性があります。迂闊にcontinueを押さず、本当に接続して良いか確認してください。


SSHパスワードの入力

パスワードを入力してください。


SSH接続先のディレクトリ指定

接続に成功するとWelcome画面が表示されるはずなので、Open Folder(矢印1)を押して、デバッグしたいソースコードがあるディレクトリのパスを指定(矢印2)します。

続きはまた今度。

編集者:すずき(2024/01/05 16:00)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2023年12月28日

帰省

今年は奥さんの実家である鳥取に帰省しました。

夫婦お互いの実家が近ければそれぞれ3日ずつ滞在などできますが、我が家の場合は結構遠い(奥さんは鳥取、私は北海道)のです……。仕方ないので帰省のルールとして、

  • 正月、GW、お盆の年3回帰省する
  • 夫婦一緒に帰省する
  • 行き先は毎回変える(GW: 鳥取、お盆: 北海道、正月: 鳥取、GW: 北海道、、、のように)

というルールで運用していました。なので鳥取での年越しは2年に1回となりますが、近年はCOVID-19騒ぎで帰れなかったり、自分達もCOVIDに感染したりでルール運用が乱れ、鳥取での年越しのチャンスがありませんでした。

たぶん2019年末以来じゃないかな?つまり4年ぶり?

編集者:すずき(2024/01/05 16:16)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2023年12月27日

Hello! Zephyr OS!!(2023年版)

目次: Zephyr

Zephyr RTOSのインストール、ビルドの手順が少し変わったので改めて紹介したいと思います。

基本的にはZephyrのGetting Startedに記載の通りですが、実行する上での補足や引っかかるところを説明したいと思います。

Zephyr開発環境のセットアップ

以降、作業するディレクトリは~/workとします。

ZephyrのGetting Startedを順に実行します。既存のPython環境を壊さないようにInstall within virtual environmentの手順を使うことをお勧めします。

依存ツールインストールとPython venv環境の作成

# apt-get install git cmake ninja-build gperf \
    ccache dfu-util device-tree-compiler wget \
    python3-dev python3-pip python3-setuptools python3-tk python3-wheel xz-utils file \
    make gcc gcc-multilib g++-multilib libsdl2-dev libmagic1

# apt-get install python3-venv

$ cd ~/work/zephyr-sdk-0.16.4/
$ python3 -m venv _venv
$ source ~/work/zephyr-sdk-0.16.4/_venv/bin/activate

Python venvを有効にするとシェルのプロンプトの頭に(_venv)のような環境名が付くようになります。venv用のディレクトリはどこに作成しても良いです。私はZephyr SDKの下に作ることが多いです。作成済みのvenvを再度使うときはsource ~/work/zephyr-sdk-0.16.4/_venv/bin/activateを実行します。

続きを実行しましょう。westを使ってZephyrと周辺ツール群をダウンロードします。

Zephyrと周辺ツール群をダウンロード
$ pip install west
$ cd ~/work
$ west init zephyr

=== Initializing in /home/katsuhiro/work/zephyr
--- Cloning manifest repository from https://github.com/zephyrproject-rtos/zephyr
Cloning into '/home/katsuhiro/work/zephyr/.west/manifest-tmp'...
remote: Enumerating objects: 968377, done.
remote: Counting objects: 100% (17/17), done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 968377 (delta 8), reused 8 (delta 4), pack-reused 968360
Receiving objects: 100% (968377/968377), 600.07 MiB | 20.80 MiB/s, done.
Resolving deltas: 100% (733897/733897), done.
Updating files: 100% (31355/31355), done.
--- setting manifest.path to zephyr
=== Initialized. Now run "west update" inside /home/katsuhiro/work/zephyr.

$ cd ~/work/zephyr
$ west update

(大量にリポジトリがクローンされますのでしばし待ちます)


$ west zephyr-export

Zephyr (/home/katsuhiro/work/zephyr/zephyr/share/zephyr-package/cmake)
has been added to the user package registry in:
~/.cmake/packages/Zephyr

ZephyrUnittest (/home/katsuhiro/work/zephyr/zephyr/share/zephyrunittest-package/cmake)
has been added to the user package registry in:
~/.cmake/packages/ZephyrUnittest


$ pip install -r ~/work/zephyr/zephyr/scripts/requirements.txt

(大量にモジュールがインストールされますのでしばし待ちます)

基本的にはコマンドを実行して待つだけです。たぶん。

SDKをインストールします。アーカイブはGitHubのreleaseページから取得できます。特にこだわりがなければ、現状の最新版である0.16.4を使ってください。

アーカイブがたくさんあって迷うと思いますが、今回はサイズが小さくてインストールするツールチェーンを選択できるzephyr-sdk-0.16.4_linux-x86_64_minimal.tar.xzを使います。

Zephyr SDKのインストール
$ wget https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.16.4/zephyr-sdk-0.16.4_linux-x86_64_minimal.tar.xz
$ tar xf zephyr-sdk-0.16.4_linux-x86_64_minimal.tar.xz
$ cd ~/work/zephyr-sdk-0.16.4/

$ ./setup.sh -c -t riscv64-zephyr-elf

Zephyr SDK 0.16.4 Setup

Installing 'riscv64-zephyr-elf' toolchain ...
toolchain_linux-x86 100%[===================>] 105.07M  24.7MB/s 時間 4.3s

All done.

何も引数を付けずにすべてインストールしても良いです(が、結構時間が掛かります)。今回はRISC-V向けのツールチェーンがあれば良いので-t riscv64-zephyr-elfを付けることで時間短縮しました。注意点としては-cオプションを忘れないようにしてください。Zephyrビルド時にエラーが発生します。

次にhosttoolsをインストールします。要らない場合もありますが、今回はQEMUを使って動作確認したいのでインストールしましょう。

hosttoolsのインストール
$ ./zephyr-sdk-x86_64-hosttools-standalone-0.9.sh

Zephyr Yocto Toolchain SDK installer version 0.9
================================================
Enter target directory for SDK (default: /opt/zephyr-sdk/0.9): /home/katsuhiro/work/zephyr-sdk-0.16.4/host
You are about to install the SDK to "/home/katsuhiro/work/zephyr-sdk-0.16.4/host". Proceed [Y/n]? y
Extracting SDK..................done
Setting it up...done
SDK has been successfully set up and is ready to be used.
Each time you wish to use the SDK in a new shell session, you need to source the environment setup script e.g.
 $ . /home/katsuhiro/work/zephyr-sdk-0.16.4/host/environment-setup-x86_64-pokysdk-linux

上記の作業を全て終えた後のディレクトリ構造はこんな感じです。

Zephyr開発環境のディレクトリ構成
$ tree -L 2 ~/work

/home/katsuhiro/work
|-- zephyr
|   |-- bootloader
|   |-- modules
|   |-- tools
|   `-- zephyr                ★Zephyr RTOSのコード
|-- zephyr-sdk-0.16.4
|   |-- _venv
|   |-- cmake
|   |-- host                  ★hosttools
|   |-- riscv64-zephyr-elf    ★RISC-V用ツールチェーン
|   |-- sdk_toolchains
|   |-- sdk_version
|   |-- setup.sh
|   `-- zephyr-sdk-x86_64-hosttools-standalone-0.9.sh
`-- zephyr-sdk-0.16.4_linux-x86_64_minimal.tar.xz

Zephyr開発環境はセットアップ手順は短くなったとは思うんですけど、中身は複雑になってトラブルが起きたときの解決が困難になった印象です。昔より依存するツールが増えているのかな……?

Zephyr開発環境への入り方

使用したいツールに応じて環境を有効化すると良いです。

Zephyr開発環境への入り方の例
#### Python venv環境を有効化

$ source ~/work/zephyr-sdk-0.16.4/_venv/bin/activate

#### QEMUなどhosttoolsを使う場合、hosttoolsを有効化

$ source ~/work/zephyr-sdk-0.16.4/host/environment-setup-x86_64-pokysdk-linux

#### デバッガなどを直接実行するならばツールチェーンにパスを通す

$ export PATH=~/work/zephyr-sdk-0.16.4/riscv64-zephyr-elf/bin:$PATH

私はいちいち選ぶのが面倒なので、全部有効にしております。

Zephyrのビルドと実行

Zephyr開発環境が正常にセットアップできたかどうか確かめるため、QEMU向けにビルドしましょう。

Zephyrのビルド(west版)
$ cd ~/work/zephyr/zephyr
$ west build -p always -b qemu_riscv64 samples/hello_world/

(ログは省略)

ビルドできたので実行したいところですが、なぜかwestを使ってQEMUで実行する方法が見当たりません。仕方ないのでcmakeでビルド&実行します。こちらのやり方も覚えておいて損はないでしょう……。

Zephyrのビルド(cmake版)
$ cd ~/work/zephyr/zephyr
$ rm -r build
$ cmake -B build -G Ninja -DBOARD=qemu_riscv64 samples/hello_world

Loading Zephyr default modules (Zephyr repository).
-- Application: /home/katsuhiro/work/zephyr/zephyr/samples/hello_world
-- CMake version: 3.22.1
-- Found Python3: /home/katsuhiro/work/zephyr-sdk-0.16.4/_venv/bin/python (found suitable version "3.10.12", minimum required is "3.8") found components: Interpreter
-- Cache files will be written to: /home/katsuhiro/.cache/zephyr
-- Zephyr version: 3.5.99 (/home/katsuhiro/work/zephyr/zephyr)
-- Found west (found suitable version "1.2.0", minimum required is "0.14.0")
-- Board: qemu_riscv64
-- ZEPHYR_TOOLCHAIN_VARIANT not set, trying to locate Zephyr SDK
-- Found host-tools: zephyr 0.16.4 (/home/katsuhiro/work/zephyr-sdk-0.16.4)
-- Found toolchain: zephyr 0.16.4 (/home/katsuhiro/work/zephyr-sdk-0.16.4)
-- Found Dtc: /home/katsuhiro/work/zephyr-sdk-0.16.4/host/sysroots/x86_64-pokysdk-linux/usr/bin/dtc (found suitable version "1.6.0", minimum required is "1.4.6")
-- Found BOARD.dts: /home/katsuhiro/work/zephyr/zephyr/boards/riscv/qemu_riscv64/qemu_riscv64.dts
-- Generated zephyr.dts: /home/katsuhiro/work/zephyr/zephyr/build/zephyr/zephyr.dts
-- Generated devicetree_generated.h: /home/katsuhiro/work/zephyr/zephyr/build/zephyr/include/generated/devicetree_generated.h
-- Including generated dts.cmake file: /home/katsuhiro/work/zephyr/zephyr/build/zephyr/dts.cmake
Parsing /home/katsuhiro/work/zephyr/zephyr/Kconfig
Loaded configuration '/home/katsuhiro/work/zephyr/zephyr/boards/riscv/qemu_riscv64/qemu_riscv64_defconfig'
Merged configuration '/home/katsuhiro/work/zephyr/zephyr/samples/hello_world/prj.conf'
Configuration saved to '/home/katsuhiro/work/zephyr/zephyr/build/zephyr/.config'
Kconfig header saved to '/home/katsuhiro/work/zephyr/zephyr/build/zephyr/include/generated/autoconf.h'
-- Found GnuLd: /home/katsuhiro/work/zephyr-sdk-0.16.4/riscv64-zephyr-elf/bin/../lib/gcc/riscv64-zephyr-elf/12.2.0/../../../../riscv64-zephyr-elf/bin/ld.bfd (found version "2.38")
-- The C compiler identification is GNU 12.2.0
-- The CXX compiler identification is GNU 12.2.0
-- The ASM compiler identification is GNU
-- Found assembler: /home/katsuhiro/work/zephyr-sdk-0.16.4/riscv64-zephyr-elf/bin/riscv64-zephyr-elf-gcc
-- Using ccache: /usr/bin/ccache
-- Configuring done
-- Generating done
-- Build files have been written to: /home/katsuhiro/work/zephyr/zephyr/build


$ ninja -C build

ninja: Entering directory `build'
[1/99] Preparing syscall dependency handling

[2/99] Generating include/generated/version.h
-- Zephyr version: 3.5.99 (/home/katsuhiro/work/zephyr/zephyr), build: zephyr-v3.5.0-3603-g603c3af895b0
[98/99] Linking C executable zephyr/zephyr.elf
Memory region         Used Size  Region Size  %age Used
             RAM:       36140 B       256 MB      0.01%
        IDT_LIST:          0 GB         2 KB      0.00%
Generating files from /home/katsuhiro/work/zephyr/zephyr/build/zephyr/zephyr.elf for board: qemu_riscv64
[99/99] cd /home/katsuhiro/work/zephyr.../zephyr/zephyr/build/zephyr/zephyr.elf


$ ninja -C build run

ninja: Entering directory `build'
[0/1] To exit from QEMU enter: 'CTRL+a, x'[QEMU] CPU: riscv64
*** Booting Zephyr OS build zephyr-v3.5.0-3603-g603c3af895b0 ***
Hello World! qemu_riscv64

実行できました。もしエラーが出る場合は次のトラブルシューティングもご参照ください。

トラブルシューティング

Zephyr SDKセットアップ時に-cオプションを付けない = Zephyr SDK cmake packageのインストールを忘れていると、Zephyrのビルド時に長々とエラーが出て怒られます。

Zephyr SDK cmake packageをインストールしていないと発生するエラー
CMake Error at /home/katsuhiro/work/zephyr/zephyr/cmake/modules/FindZephyr-sdk.c
make:109 (find_package):
  Could not find a package configuration file provided by "Zephyr-sdk"
  (requested version 0.16) with any of the following names:

    Zephyr-sdkConfig.cmake
    zephyr-sdk-config.cmake

  Add the installation prefix of "Zephyr-sdk" to CMAKE_PREFIX_PATH or set
  "Zephyr-sdk_DIR" to a directory containing one of the above files.  If
  "Zephyr-sdk" provides a separate development package or SDK, be sure it has
  been installed.
Call Stack (most recent call first):
  /home/katsuhiro/work/zephyr/zephyr/cmake/modules/FindHostTools.cmake:53 (find_package)
  /home/katsuhiro/work/zephyr/zephyr/cmake/modules/dts.cmake:9 (find_package)
  /home/katsuhiro/work/zephyr/zephyr/cmake/modules/zephyr_default.cmake:129 (include)
  /home/katsuhiro/work/zephyr/zephyr/share/zephyr-package/cmake/ZephyrConfig.cmake:66 (include)
  /home/katsuhiro/work/zephyr/zephyr/share/zephyr-package/cmake/ZephyrConfig.cmake:92 (include_boilerplate)
  CMakeLists.txt:5 (find_package)

Zephyr SDKのセットアップは2回実行しても問題ないので-cオプションを付けてやり直しましょう。

編集者:すずき(2024/01/05 02:39)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2023年12月25日

クロスビルド用ツールチェーン - なぜか必要なsysroot/usr/lib

目次: GCC

最近はRISC-V向けのクロスコンパイラをビルドすることが多かったのですが、昔を思い出してARM向けも作るか〜と気軽にやってみたらハマりました。

最初にトライしたのはarm-unknown-linux-gnueabi(昔の32bit ARM向け、ARM9とか)で、特に問題なくビルドできました。次にトライしたのはaarch64-unknown-linux-gnu(64bit ARM向け、最近のCortexとか)ですが、リンクエラーが発生してcrt1.oやcrti.oが見つからないと言ってきます。

AArch64向けクロスGCCのリンクエラー
$ aarch64-unknown-linux-gnu-gcc -Wall -O2 -g -static a.c

/path/to/aarch64-unknown-linux-gnu/lib/gcc/aarch64-unknown-linux-gnu/12.0.1/../../../../aarch64-unknown-linux-gnu/bin/ld: cannot find crt1.o: No such file or directory
/path/to/aarch64-unknown-linux-gnu/lib/gcc/aarch64-unknown-linux-gnu/12.0.1/../../../../aarch64-unknown-linux-gnu/bin/ld: cannot find crti.o: No such file or directory
/path/to/aarch64-unknown-linux-gnu/lib/gcc/aarch64-unknown-linux-gnu/12.0.1/../../../../aarch64-unknown-linux-gnu/bin/ld: cannot find -lc: No such file or directory
collect2: error: ld returned 1 exit status

最初はglibcのビルドに失敗したのかと思いましたが、crt1.oはsysroot/usr/lib64ディレクトリの下に存在していました。

glibcのファイル(crt1.o)は存在している
$ find -name crt1.o

./aarch64-unknown-linux-gnu/sysroot/usr/lib64/crt1.o

ファイルが存在しているのに見つからないのは、GCCが自動的に付与する-Lオプションが間違っている可能性大です。-vオプションでGCCのオプションを調べます。

うまくいかないときのGCC -vオプションの出力(一部抜粋)
--sysroot=/path/to/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/sysroot 
-Bstatic 
-X 
-EL 
-maarch64linux 
crt1.o 
crti.o 
/path/to/aarch64-unknown-linux-gnu/lib/gcc/aarch64-unknown-linux-gnu/12.0.1/crtbeginT.o 
-L/path/to/aarch64-unknown-linux-gnu/lib/gcc/aarch64-unknown-linux-gnu/12.0.1 
-L/path/to/aarch64-unknown-linux-gnu/lib/gcc/aarch64-unknown-linux-gnu/12.0.1/../../../../aarch64-unknown-linux-gnu/lib/../lib64 
-L/path/to/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/sysroot/lib/../lib64     ★★相対パスが入っている★★
-L/path/to/aarch64-unknown-linux-gnu/lib/gcc/aarch64-unknown-linux-gnu/12.0.1/../../../../aarch64-unknown-linux-gnu/lib 
-L/path/to/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/sysroot/lib 
/tmp/ccQ9tEVu.o 
--start-group 
-lgcc 
-lgcc_eh 
-lc 
--end-group 
/path/to/aarch64-unknown-linux-gnu/lib/gcc/aarch64-unknown-linux-gnu/12.0.1/crtend.o 
crtn.o

困ったことにsysroot/usr/lib64を指定する-Lオプションがありません。なぜでしょう。

手掛かりになりそうなのは、sysroot/lib64ディレクトリの指定の仕方で、lib/../lib64のように一度libを経由しています。実はsysroot/usr/lib64も同じでsysroot/usr/libを経由している可能性があります。

ディレクトリの構造を調べるとsysroot/libは存在するものの、sysroot/usr/libは存在しませんでした。試しに空のsysroot/usr/libディレクトリを作成し、再度コンパイルするとエラーが解消しました。やったー。エラーだった時と何が違うか知るために-vオプションでGCCのオプションを調べます。

うまくいったときのGCC -vオプションの出力(一部抜粋)
--sysroot=/path/to/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/sysroot 
-Bstatic 
-X 
-EL 
-maarch64linux 
/path/to/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/sysroot/usr/lib/../lib64/crt1.o 
/path/to/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/sysroot/usr/lib/../lib64/crti.o 
/path/to/aarch64-unknown-linux-gnu/lib/gcc/aarch64-unknown-linux-gnu/12.0.1/crtbeginT.o 
-L/path/to/aarch64-unknown-linux-gnu/lib/gcc/aarch64-unknown-linux-gnu/12.0.1 
-L/path/to/aarch64-unknown-linux-gnu/lib/gcc/aarch64-unknown-linux-gnu/12.0.1/../../../../aarch64-unknown-linux-gnu/lib/../lib64 
-L/path/to/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/sysroot/lib/../lib64 
-L/path/to/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/sysroot/usr/lib/../lib64     ★★やっぱりlib/../lib64になっている★★
-L/path/to/aarch64-unknown-linux-gnu/lib/gcc/aarch64-unknown-linux-gnu/12.0.1/../../../../aarch64-unknown-linux-gnu/lib 
-L/path/to/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/sysroot/lib 
-L/path/to/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/sysroot/usr/lib 
/tmp/ccLe9HUo.o 
--start-group 
-lgcc 
-lgcc_eh 
-lc 
--end-group 
/path/to/aarch64-unknown-linux-gnu/lib/gcc/aarch64-unknown-linux-gnu/12.0.1/crtend.o 
/path/to/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/sysroot/usr/lib/../lib64/crtn.o

やはりsysroot/usr/lib64を指定するパスにはsysroot/usr/libが含まれていました。原因は「最終のディレクトリに辿り着く途中のパスが存在しないから」と言えそうです。しかしどうしてGCCが勝手に-Lオプションを消すのかは謎のままで、若干スッキリしません。うーん。

編集者:すずき(2023/12/25 02:08)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2023年12月24日

サンタがマッハ5で街にやってくる(2023年)

目次: サンタ

去年(2022年12月24日の日記参照)と同様に、飛行機の位置をリアルタイムに表示するFlightradar24というサービス(サイトへのリンク)にてサンタが出現しました。クリスマス・イブの日にサンタが出現するのは毎年恒例のお約束演出です。私が見たときはインド上空を飛んでいました。

2021年のサンタは表示された対地速度は40ktsなのに、サンタの位置から計算した速度はマッハ2 = 1300ktsと変な状態でしたが、2023年と今年は対地速度の表示は727kts(1346.4km/h, マッハ1.1くらい)です。


00:32:10時点の位置(緯度27.15451度、経度76.90161度)


00:33:10時点の位置(緯度26.26621度、経度76.42773度)

去年同様、ある程度の時間をあけ(今回は1分間)でどれくらい進んだか計算します。今回も距離の計算には国土地理院のページを使いました、緯度経度から距離を一発で計算してくれて便利です(サイトへのリンク)。


緯度、経度から距離と方位角を計算(国土地理院のサイト)

2地点間の距離は約109.1km、時間差は60秒から計算すると、対地速度は約6,540km/hです。地上でのマッハ5(ただし、サンタが飛んでいる高さ38,000ftsだとマッハ数はもっと高く出る)です。世界最速の飛行機であるロッキードSR-71ブラックバードでさえマッハ3.3といわれているので、サンタさんバチクソ速いですね。

  • 2021年: マッハ2
  • 2022年: マッハ1.3
  • 2023年: マッハ5

推測ですが24日、25日で北極から世界一周してまた北極へ行くために、緯度、経度は対地速度に関係なく適当に変えているんじゃないか?という気がしてきました。別の時間に測ったら全然違う速度になってませんかね?面倒なので検証しませんけど……。来年の速度も気になります。覚えていたらまた計算してみましょう。

編集者:すずき(2024/01/04 03:17)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2023年12月23日

サンタ - まとめリンク

目次: サンタ

一覧が欲しくなったので作りました。

編集者:すずき(2024/10/24 23:28)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2023年12月21日

Twitterのトラブル

昼頃だったか?Twitterで何かトラブルが起きていたらしくて、初ログインしたときのような画面になっていました。


Twitterのようこそ画面

Twitterの使い始めがどんな画面だったか全く覚えていませんが、たぶんこんな画面なんでしょう。今だと別アカウントを登録しない限り、見る機会がない画面でしょうね。

編集者:すずき(2023/12/22 22:54)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link もっと前
2023年12月29日 >>> 2023年12月16日
link もっと後

管理用メニュー

link 記事を新規作成

<2023>
<<<12>>>
-----12
3456789
10111213141516
17181920212223
24252627282930
31------

最近のコメント5件

  • link 21年9月20日
    すずきさん (11/19 01:04)
    「It was my pleasure.」
  • link 21年9月20日
    whtさん (11/17 23:41)
    「This blog solves my ...」
  • link 24年10月1日
    すずきさん (10/06 03:41)
    「xrdpで十分動作しているので、Wayl...」
  • link 24年10月1日
    hdkさん (10/03 19:05)
    「GNOMEをお使いでしたら今はWayla...」
  • link 24年10月1日
    すずきさん (10/03 10:12)
    「私は逆にVNCサーバーに繋ぐ使い方をした...」

最近の記事3件

  • link 23年4月10日
    すずき (12/04 01:40)
    「[Linux - まとめリンク] 目次: Linux関係の深いまとめリンク。目次: RISC-V目次: ROCK64/ROCK...」
  • link 24年11月18日
    すずき (12/04 01:39)
    「[nvJPEGとNVJPGとJetson APIその1 - nvJPEG decoupled API] 目次: Linux半年...」
  • link 24年11月28日
    すずき (12/01 00:53)
    「[BIOS/UEFI画面に入る方法] PCは起動時にあるキーを押すとBIOS/UEFIの設定画面に遷移します。良く見るパターン...」
link もっとみる

こんてんつ

open/close wiki
open/close Linux JM
open/close Java API

過去の日記

open/close 2002年
open/close 2003年
open/close 2004年
open/close 2005年
open/close 2006年
open/close 2007年
open/close 2008年
open/close 2009年
open/close 2010年
open/close 2011年
open/close 2012年
open/close 2013年
open/close 2014年
open/close 2015年
open/close 2016年
open/close 2017年
open/close 2018年
open/close 2019年
open/close 2020年
open/close 2021年
open/close 2022年
open/close 2023年
open/close 2024年
open/close 過去日記について

その他の情報

open/close アクセス統計
open/close サーバ一覧
open/close サイトの情報

合計:  counter total
本日:  counter today

link About www.katsuster.net
RDFファイル RSS 1.0

最終更新: 12/04 01:40