29-Apr-2024
[はじめてのRISC-Vボード(2)]

17-Dec-2023の続き。とりあえず(OpenSBIに組み込まれた)U-bootだけ手に入れば良いのですが、duo-buildroot-sdkIntroductionに書かれた手順だとLinuxカーネルも含んだ一切合切になってしまいます。また、このSDKはビルド用のコマンドをbashの関数の形で定義しているため、何かを探すにしてもfind+grepではなく使用したbuild/milkvsetup.sh等のスクリプトを見るなりsetで表示されたものを読む方が早いです。

Milk-V Duo(64MB)の場合であれば、

これでfip.binは得られます。ただし、clean_allはU-bootとLinuxカーネルに対してmake distcleanを行う点に注意が必要です。milkvsetup.shの


  -------------------------------------------------------------------------------------------------------
    Usage:
    (1) menuconfig - Use menu to configure your board.
        ex: $ menuconfig

    (2) defconfig $CHIP_ARCH - List EVB boards($BOARD) by CHIP_ARCH.
       ** cv181x ** -> ['cv181x', 'cv1811h', 'cv1811c', 'cv1810c', 'cv1810h', 'cv1812cp', 'cv1812h', 'cv1813h']
       ** cv180x ** -> ['cv180x', 'cv1800b', 'cv1800c', 'cv1801b', 'cv1801c', 'cv180zb']
        ex: $ defconfig cv183x

    (3) defconfig $BOARD - Choose EVB board settings.
        ex: $ defconfig cv1835_wevb_0002a
        ex: $ defconfig cv1826_wevb_0005a_spinand
        ex: $ defconfig cv181x_fpga_c906
  -------------------------------------------------------------------------------------------------------

この表示に釣られてmenuconfig(_uboot)→defconfigの順に実行したくなったとしても、menuconfig(_uboot)はclean_allの後に実行しないと意味がありません。

デフォルトの設定ではU-bootのEFI_LOADERが無効なので、必要な人はmenuconfig_ubootで設定するか、(cv1800b_milkv_duo_sdの場合なら)build/boards/cv180x/cv1800b_milkv_duo_sd/u-boot/cvitek_cv1800b_milkv_duo_sd_defconfigにCONFIG_EFI_LOADER=yを追加してください。

あとはbootriscv64.efiを読んでもらうように指示を出す方法を調べるのと、OpenBSD/riscv64は(arm64も)ブートローダがカーネル用に64MBのメモリを確保するので256MB版のMilk-V Duoを買ってこないといけない問題が残っています。58.4kg(15:00)

04-May-2024補足:Milk-V Duo(256MB)の場合、fip.binを得るには

という手順になります(下線の部分が変わります)。CONFIG_EFI_LOADER=yを追加する対象も、build/boards/cv181x/cv1812cp_milkv_duo256m_sd/u-boot/cvitek_cv1812cp_milkv_duo256m_sd_defconfigに変わります。

28-Apr-2024
[今更気付いたのですが(2)]

発注していたPCIe延長ケーブルが届いたもののマシンのふたを開けてごそごそする気になれないなあということで、再度JMHを受信して様子を見ることにしました。無線機(IC-7200)のAGCの設定、前回はAGC fastで受信していた気がするのですがちゃんと覚えていないので全部の設定を試してみます。

AGC fastAGC slowAGC off
tagc-fast.giftagc-slow.giftagc-off.gif

FWPN(12)(AGC slow)→FSAS24(12)(AGC off)→FSAS48(12)(AGC fast)の順に受信していますが、一枚の画像伝送にかかる時間がそれなりにある以上同じ伝搬状態で受信できている訳ではありません(伝送途中であっても伝搬状態は変化します)。とりあえず、AGC fastの設定で良好に受信できているので、マシンのUSB周りの問題ではないと言えそうです。疑ってすまん。

それにしても、ラジオFAXの受信ってこんなにシビアだとは思いませんでした。人間の耳には十分な強度がある信号に聞こえていたとしても、デコードしてみるとこんなに画質が変わるとは…57.6kg(12:35)

29-Apr-2024補足:フィルターの設定も変えることにしました。今まではNarrow(1800Hz), Middle(2400Hz), Wide(3000Hz)のうちMiddleを使っていたのですが、Wikipediaのラジオファクシミリの記述では1500Hz〜2300Hzの範囲を使っているとあるため、今後はWideで受信してみます(細かく設定することも可能なのですが、面倒なので)。

21-Apr-2024
[今更気付いたのですが]

予定が合ったので久々にJMH(船舶向け天気図)の電波予報の受信。21-Dec-2023以来ですね…画質の悪さをこの時も書いていますが、なんか今回も画質悪いです。13988.5kHzでの受信画像なんですけど。

tjmh-202404210229.jpg

画質がマシだった頃(20-Nov-2022)はASUS H110M-K + Pentium G4600だったので、マシンの違いが原因じゃないかなーと考えています。IC-7200をUSB2.0ハブ経由ではなくマザーボード側のコネクタに繋ぎ直すことで若干の改善があるようなないようなでも微妙に減った気がしなくもない(画像下側の黒い帯の波打ち具合で評価しています)…ああそういえばマシン組み替えてたっけ?チップセット変わってるし、と。

PCIeのUSB3.0ホストコントローラカードが転がっているのでこれを挿して状況が変わるかを試したいところですが、PCIeの空きがArc A770に阻まれて挿せないのが何とも。PCIe延長ケーブルを買うか、あるいはIntel HD Audio越しに使うためのあれこれを買うか…面倒なのでこのまま放置でも良いかなあ。58.5kg(22:00)

18-Apr-2024
[意外と忘れてる。]

z88dkのfopen()のモード指定、バイナリファイルを扱うときは"wb"ないし"rb"、テキストファイルを扱う場合は"w"ないし"r"と…イマドキのPOSIX環境みたいになんでもかんでも"w"もしくは"r"でおっけーじゃんとはいかないんですよね。

あと、CP/Mの場合はファイルサイズが128byte単位。128byteに満たない部分は^Z(0x1a)でパディングされることも注意が必要です。場合によってはこのパディングを削らないとちゃんと動かないこともあるでしょう。

なので、LinuxとCP/M両方で動くコードを書くのは、思っている以上にめんどい。57.9kg(21:15)

15-Apr-2024
[前から気になっていた箇所二つ。]

横浜水道みちを行く 其の933 長徳寺の結界石と謎の石塔・神奈川県相模原市緑区大島を見て、そういえばあそこにも「不許葷酒入山門」と書かれた結界石があったな…ということで、簡単に覗いてきました。

timg_20240411_170006_487.jpg timg_20240411_170029_749.jpg

場所は福寿院、高田橋から愛川へ向かう長い長い坂の途中にあります。側面には「天保十三壬寅年九月吉日 當院慈海代」と書かれているのかなーという気がするのですが、読解力が無いので自信がありません。

もいっちょ。

瀬谷変電所、仕事場からそんなに遠くないことが分かったのでちょっと行ってきました。

timg_20240413_133533_657.jpg timg_20240413_133949_476.jpg timg_20240413_134249_652.jpg

境川の向こう側にある瀬谷線26号は大和市。市の境からほんの少し入っただけではありますが、実際に来てみると横浜ってこんなところにもあるのだなーという謎の感動があります。

なかなかお休みが取れず出かけることもままならない状況なのですが、隙を見てどこか気になるところへ行ってみようと企んでいます。さて、次は…?58.2kg(06:35)

14-Apr-2024
[この辺が限界かな…]

相変わらずz88dkでIchigoJam-BASICを試していますが、なかなか厳しいです。これもz88dk-sccz80の制約(というかバグ?)なのか、グローバル変数の宣言において

はerror: Expecting constant expressionを起こし、

はそうならないというものがあったり(計算の要不要というよりは()の有無で判断している?)、デバッグプリントを入れると何故か正しく動くという謎挙動を回避するために最適化を-O0で無効化する必要があったりと、マトモそうなバイナリを手に入れるにしてもなかなか厄介な問題が多いです。

z88dk-sdccも試してはいるのですが、こっちもこっちでどう追いかければ良いものやら。


uaa@framboise:~/z/ichigojam-firm/console$ TOOLCHAIN=z88dk-sdcc gmake
zcc +cpm -lm -clib=sdcc_iy -v -I../IchigoJam_BASIC -I./src/ ../IchigoJam_BASIC/
main.c -o IchigoJam_BASIC

PROCESSING ../IchigoJam_BASIC/main.c
z88dk-ucpp -I"../IchigoJam_BASIC" -I"./src/"  -iquote"." -D__CPM -DCPM -D__CPM_
_ -DZ80 -D__Z80 -D__SDCC_IY -D__Z88DK_NEWLIB -isystem"/usr/local/share/z88dk/li
b/config/../..//include/_DEVELOPMENT/sdcc" -D__Z88DK  -D__SDCC  "../IchigoJam_B
ASIC/main.c" "/tmp/tmpcJwJTCjR.i2"
z88dk-zpragma -zcc-opt="/tmp/tmpzcc16DQ4c4G/zcc_opt.def" < "/tmp/tmpcJwJTCjR
.i2" > "/tmp/tmpcJwJTCjR.i"
z88dk-zsdcc --constseg rodata_compiler   --reserve-regs-iy -mz80 --no-optsdcc-i
n-asm --c1mode --emit-externs  --no-c-code-in-asm   --no-peep --peep-file "/usr
/local/share/z88dk/lib/config/../..//libsrc/_DEVELOPMENT/sdcc_peeph.2"  < "/
tmp/tmpcJwJTCjR.i" -o "/tmp/tmpcJwJTCjR.opt"
../IchigoJam_BASIC/ram.h:106: warning 278: return type of function omitted, ass
uming int
../IchigoJam_BASIC/ram.h:106: error 1: Syntax error, declaration ignored at 'ui
nt8'
../IchigoJam_BASIC/ram.h:106: syntax error: token -> 'ram' ; column 9
z88dk-zsdcc: Inappropriate ioctl for device
gmake: *** [Makefile:9: IchigoJam_BASIC] Error 1
uaa@framboise:~/z/ichigojam-firm/console$

typedef uint8_t uint8;はmain.cの最初の方にある#include "ichigojam-stddef.h"でやっているにもかかわらず、uint8なんざ知らぬわ、というのは流石に嫌な予感しかありません。

まだ試してはいないのですが、LLVM+SDCCに頼るしかないのでしょうか…?57.9kg(07:55)

15-Apr-2024補足:最適化を無効にすると動くという謎の現象、z88dk-sccz80の問題ではなくプログラムリスト等を格納するために確保したメモリのアドレスが奇数から始まっていたことによる問題でした。修正を行い、現在は最適化の有無に関わらず動くようになっています。

07-Apr-2024
[ままなりませんな…]

IchigoJamのコア部分(IchigoJam-BASIC)のソースがGitHub上で公開されたので、じゃあZ80で動かせるか試してみようじゃないということでz88dkをインストールした訳ですが…考え、甘かったです。

z88dkの、Small-C由来のコンパイラ(z88dk-sccz80)の制約だと思うのですが、

という問題に対処する必要があります。これらへの対応は手間をかければどうにかなるとして、

については厄介そうです。単に#include <stdint.h>してint32_t等を使う、だけで解決するのかどうかは分かりません。

basic.hを見るに、中間コード等に落として解釈するのではなく文字列解析をひたすら行うような作りになっているように見えます。なので仮にコンパイルが通ったとしてもZ80/3.58MHzでのパフォーマンスは厳しくて、MSXturboR(R800/7.16MHz)やAgon Light2(eZ80/18MHz)が必要になる気がします。

パソコン通信(NIFTY-Serve)を始めるためにクレジットカードを作り、特にカード会社を変えることなく25年以上使い続けていたのですが…なにやらシステム統合を進める際において、今後のシステム構造等の理由から現在使用しているカードの取り扱いを終了せざるを得なくなった、といったお手紙が来ておりまして。一応現在使用中の兄弟分(?)となるカードへの移行を勧められてはいるものの、番号変わるんですよね。

カード番号流出による不正利用を喰らった影響で、利用中の各種サービスに対するクレジットカード番号の一斉変更は一度やったことがあります。でもこれって本っ当に面倒で。今回は会社都合によるカードの変更により、電気・ガス・水道・電話・携帯(大手キャリアに限る)・NHK・保険・新聞といったいわゆる公共料金的なものは会社側で面倒見てくれるそうですが、でもそれだけです。あとは自分でやれ、と。

長期間会費を払って使い続けてそれなりに信用情報はあるはずなのにこの扱いはなんなのさと思ったものの、ステータスの低い会員なんてそんなものなのでしょう。「システム構造等の理由」によりサービスを継続できなくなったなんて表向きには言っていますが、利益を見込めず管理コストのかかる質の低い会員はこの際一掃します、というのが実際の意図なのかもしれません(これがただの妄想であれば良いのですがね)。

という訳で、向こうのお望み通りに動くのは不本意なのですが、他のカード会社へ移るのが良さそうです。信用情報をゼロから構築することになり、その影響が今後長期間にわたって続くことになったとしても。57.1kg(22:10)

04-Apr-2024
[z88dk覚え書き(2)]

12-Aug-2021の続き。

z88dkもgmpを使うようになったのか(mpfrは使っていない様子)、ヘッダとライブラリを探し出せるようbuild.shに指示を出さないといけません。という訳で、

でビルドします。ビルド後はgmake installで/usr/local/binと/usr/local/share/z88dkに一式がインストールされます。export ZCCCFG=/usr/local/share/z88dk/lib/configを.bashrc等に入れておくと良さそうです。56.3kg(07:00)

10-Apr-2024補足:デフォルトではsdccのビルドが行われないため、export BUILD_SDCC=1; export BUILD_SDCC_HTTP=1; CC=cc CXX=c++ CPPFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib ./build.shとするのが良さそうです。