目次: Arduino
エアガン的当てゲームを作り始めたとき(1月くらいかな?)から気になっていたのですが、ROCK 3C上でJavaを使って画面を描画すると妙に描画速度が遅いです。もうひとつ不思議なことに、マウスカーソルをぐりぐり動かすと描画が止まります。なんで?
最初はJava側の問題か?と思ったものの、秋葉原のTARGET-1に置いている機体はJava側のプログラムは全く同じなのに、描画速度がメチャ速いです(マウスカーソルを動かしても画面描画が止まらない)。ROCK 3C側(というかメインSoCであるRockchip RK3566)のグラフィック関連がどこかおかしいんでしょう。たぶん。
描画が遅い機体と速い機体で大きな違いがあるとするとaptでアップデートしたくらいです。描画速度が遅い機体を持ち帰ってきてアップデートしました。結果だけ先に言ってしまうと、描画速度はやや改善したものの全く同じにはなりませんでした。何が違うんだろう?
描画速度に効いていると思われるのは下記の2つです。
アップデート方法はapt-get updateとapt-get upgradeですが、下記のようにchanged its 'Origin' value from 'AAAA' to 'BBBB'エラーが出る場合があります。
Reading package lists... Done E: Repository 'https://radxa-repo.github.io/bullseye rockchip-bullseye InRelease' changed its 'Origin' value from 'rsdk-local rockchip-bullseye' to 'Radxa' E: Repository 'https://radxa-repo.github.io/bullseye rockchip-bullseye InRelease' changed its 'Label' value from 'rsdk-local rockchip-bullseye' to 'Freight' N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details. E: Repository 'https://radxa-repo.github.io/bullseye bullseye InRelease' changed its 'Origin' value from 'rsdk-local bullseye' to 'Radxa' E: Repository 'https://radxa-repo.github.io/bullseye bullseye InRelease' changed its 'Label' value from 'rsdk-local bullseye' to 'Freight' N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details. Reading package lists... Done Building dependency tree... Done Reading state information... Done Calculating upgrade... Done
これはリポジトリのReleaseファイルが変わっているが良いのか?と確認してくれているためで、今回は無視して良いので--allow-releaseinfo-changeを付けてapt-get updateすれば先に進みます。
# apt-get update --allow-releaseinfo-change (...略...) # apt-get dist-upgrade Hit:1 https://download.vscodium.com/debs vscodium InRelease Hit:2 https://deb.debian.org/debian bullseye InRelease Hit:3 https://deb.debian.org/debian bullseye-backports InRelease Hit:4 https://deb.debian.org/debian-security bullseye-security InRelease Hit:5 https://deb.debian.org/debian bullseye-updates InRelease Hit:6 https://radxa-repo.github.io/bullseye rockchip-bullseye InRelease Hit:7 https://radxa-repo.github.io/bullseye bullseye InRelease Reading package lists... Done Reading package lists... Done Building dependency tree... Done Reading state information... Done Calculating upgrade... Done The following NEW packages will be installed: librtui linux-headers-5.10.160-34-rk356x linux-image-5.10.160-34-rk356x r8125-dkms radxa-system-config-r8125-dkms The following packages will be upgraded: aic8800-firmware aic8800-sdio-dkms aicrf-test linux-headers-rock-3c linux-image-rock-3c radxa-firmware radxa-overlays-dkms radxa-system-config-aic8800-sdio-dkms radxa-system-config-bullseye radxa-system-config-common radxa-system-config-kernel-cmdline-ttyfiq0 radxa-system-config-rockchip radxa-udev rsetup rsetup-config-aic8800-ttys1 task-rock-3c
描画速度はやや改善したものの全く同じにはなりません。描画速度が速い機種と改善後の機種を比べると、
描画が速い機種 | 描画が遅い機種(改善後) | |
---|---|---|
マウスカーソル | ちらつく | ちらつかない |
マウスカーソルを動かし続ける | 描画が止まらない | 描画が止まる |
描画速度 | 16ms〜32ms(たまに1フレームスキップ) | たまに16ms、ほぼ32ms〜64ms(ほぼ1フレームスキップ) |
うーん?何が違うんだろう?
目次: Arduino
前回(2024年3月24日の日記参照)発注して燃えた(2024年4月3日の日記参照)PCBの設計を改修して発注しました。前回と同様にJLPCBにお願いしています。
JLPCBはドル決済なので円安だと支払いが増えて結構痛いんですよね……。円安がマシにならないかなーと思って1ヶ月くらい待ったんですが、特に良くなる傾向がなかったので諦めました。
目次: Yocto
Yocto Scarthgap(5.0.1)のメモです。前回同様、コードを読んで依存関係を調べるのは大変時間が掛かるので、簡易的な調査手法として全ファイルを消してエラーを観察し、エラーの原因となるファイルを復活させて次ステップに進める手段を用います。
引き続きBitbakeを実行してエラーを見て、足りないファイルを元に戻していく方法で各パーツや設定の動作を見ます。
$ bitbake core-image-sato ERROR: Unable to parse /home/katsuhiro/share/projects/oss/poky/bitbake/lib/bb/parse/parse_py/BBHandler.py Traceback (most recent call last): File "/home/katsuhiro/share/projects/oss/poky/bitbake/lib/bb/parse/parse_py/BBHandler.py", line 71, in inherit(files=['base'], fn='configuration INHERITs', lineno=0, d=<bb.data_smart.DataSmart object at 0x7f7a85863c50>, deferred=False): if not os.path.exists(file): > raise ParseError("Could not inherit file %s" % (file), fn, lineno) bb.parse.ParseError: ParseError in configuration INHERITs: Could not inherit file classes/base.bbclass
なにやらclassesディレクトリと*.bbclassファイルが出てきました。これはクラス(Classes - The Yoct Project)といってレシピ間で処理を共有するための仕組みです。ドキュメントによると3種類あるそうです。
Yoctoのクラス(*.bbclassファイル)は全部meta/classes-globalかと思ったらそうでもなく、一部のクラスはmeta/classesディレクトリに配置されています。
エラーメッセージはmeta/classes/base.bbclassがないと言っていますが、ファイルの実際の在処はmeta/classes-global/base.bbclassです。どういうことでしょう?Bitbakeのソースコードを見ると、
# bitbake/lib/bb/parse/parse_py/BBHandler.py
def inherit(files, fn, lineno, d, deferred=False):
__inherit_cache = d.getVar('__inherit_cache', False) or []
#if "${" in files and not deferred:
# bb.warn("%s:%s has non deferred conditional inherit" % (fn, lineno))
files = d.expand(files).split()
#★★files配列には'base'だけが入っている★★
for file in files:
classtype = d.getVar("__bbclasstype", False) #★★classtype = global★★
origfile = file
#★★classes-global/base.bbclassがなければ、classes/base.bbclassを探す★★
for t in ["classes-" + classtype, "classes"]:
file = origfile
#★★パスと拡張子を連結★★
if not os.path.isabs(file) and not file.endswith(".bbclass"):
file = os.path.join(t, '%s.bbclass' % file)
if not os.path.isabs(file):
bbpath = d.getVar("BBPATH")
abs_fn, attempts = bb.utils.which(bbpath, file, history=True)
for af in attempts:
if af != abs_fn:
bb.parse.mark_dependency(d, af)
if abs_fn:
file = abs_fn
if os.path.exists(file):
break
#★★どちらもないと最後に探したパス名でエラーメッセージを出してくる★★
if not os.path.exists(file):
raise ParseError("Could not inherit file %s" % (file), fn, lineno) #★★エラーメッセージを発生させる行★★
Bitbakeはclasses-globalとclassesの両方を探し、どちらにも目当てのクラスがない場合は最後に探したパス名でエラーメッセージを出力します。従ってエラーメッセージのパスは必ずmeta/classesになります。
今回登場したファイル、ディレクトリは、
こんなとこ。次回はディストリビューションを見ます。
< | 2024 | > | ||||
<< | < | 06 | > | >> | ||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
- | - | - | - | - | - | 1 |
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | - | - | - | - | - | - |
合計:
本日: