Home | Notifications | New Note | Local | Federated | Search | Logout
SASANO Takayoshi@uaa@social.mikutter.hachune.net
OpenBSD(uaa@), Ham(JG1UAA), Ingress(Lv14, RES), Japanese(Sagamihara-city, Kanagawa)
Another side: https://social.tchncs.de/@uaa
npub1rarr265r9f9j6ewp960hcm7cvz9zskc7l2ykwul57e7xa60r8css7uf890
Messages from this Mastodon account can read via mostr.pub with npub1j3un8843rpuk4rvwnd7plaknf2lce58yl6qmpkqrwt3tr5k60vfqxmlq0w
Joined: 2026-01-01 23:18:25
387 notes, 1 following, 0 followers
SASANO Takayoshi@uaa@social.mikutter.hachune.net (2026-02-14 22:13:17)
@teobot thumb/thumb-2命令で、即値をpushする命令は無いですよね?
SASANO Takayoshi@uaa@social.mikutter.hachune.net (2026-02-14 21:19:19)
うがー(分からん…
Reply to @uaa@social.mikutter.hachune.net
SASANO Takayoshi@uaa@social.mikutter.hachune.net (2026-02-14 20:56:05)
@teobot 2)
register int r0 asm ("r0") __attribute__((unused));
register int r1 asm ("r1") __attribute__((unused));
register int r2 asm ("r2") __attribute__((unused));
r2 = (int)bitbuffer_decode;
r0 = (int)currentWaveBuffer;
r1 = (int)ambebuffer_decode;
asm volatile ("PUSH {R4-R11}\n"
"SUB SP, SP, #0x10\n"
"STR R1, [SP, #0x08]\n"
"LDR R1, =1\n"
"STR R1, [SP, #0x04]\n"
"LDR R1, =0\n"
"STR R1, [SP, #0x00]\n"
"LDR R3, =0\n"
"LDR R1, =80\n"
"BL " QU(AMBE_DECODE)
"ADD SP, SP, #0x10\n"
"POP {R4-R11}");
SASANO Takayoshi@uaa@social.mikutter.hachune.net (2026-02-14 20:53:59)
@teobot 1)
asm volatile (
"MOV R2, %0\n"
"MOV R0, %1\n"
"MOV R1, %2\n"
"MOV R12, %3\n"
"PUSH {R4-R11}\n"
"SUB SP, SP, #0x10\n"
"STR R1, [SP, #0x08]\n"
"LDR R1, =0\n"
"STR R1, [SP, #0x04]\n"
"LDR R1, =0\n"
"STR R1, [SP, #0x00]\n"
"LDR R3, =0\n"
"LDR R1, =80\n"
"BLX R12\n"
"ADD SP, SP, #0x10\n"
"POP {R4-R11}"
:
: "r"(bitbuffer_decode),
"r"(currentWaveBuffer),
"r"(ambebuffer_decode),
"r"(AMBE_DECODE)
: "memory"
);
SASANO Takayoshi@uaa@social.mikutter.hachune.net (2026-02-14 20:52:01)
@teobot どちらが拾えませんか?
SASANO Takayoshi@uaa@social.mikutter.hachune.net (2026-02-14 20:50:29)
@teobot 次の2つのソースコードを比較してください。どちらもbinary blobを呼び出すものであり、同一の動作をするはずであると人間は考えているものの、実際の動作が異なっています。機械の目で、違いを見てください。
1) http://ik1-342-31132.vs.sakura.ne.jp/%7euaa/temp/codec_interface.c
2) https://raw.githubusercontent.com/open-ham/OpenGD77/refs/heads/main/firmware/source/dmr_codec/codec.c
2)の方が正しく動きます。
SASANO Takayoshi@uaa@social.mikutter.hachune.net (2026-02-14 20:44:48)
@teobot webサイトにあるコードの比較ってできます?URL貼ったら読み込んで評価、ってやつなのですが。
SASANO Takayoshi@uaa@social.mikutter.hachune.net (2026-02-14 19:05:38)
オリジナルのcodec_interfaceは動く、ただし最適化は切らないとダメ…最適か書けても動くように改造したやつ(自分の)だと動かなくなるから、直し方に問題があるってことだな。
SASANO Takayoshi@uaa@social.mikutter.hachune.net (2026-02-14 18:58:37)
gcc-12.3にして、codec_interfaceの
- 最適化を切ると
・受信時は落ちる(再起動する)
・送信はできる
- 最適化すると
・送受信で音が鳴らない
という所までは分かったから…確実にcodec_interface周りに何か問題があるってことは確かなんだよな。
Reply to @uaa@social.mikutter.hachune.net
SASANO Takayoshi@uaa@social.mikutter.hachune.net (2026-02-14 18:38:28)
違う、v24.12 or olderだから古いのを使え、という話だな。
SASANO Takayoshi@uaa@social.mikutter.hachune.net (2026-02-14 18:34:50)
OpenGD77の最新版、MCUXpresso v24.12以降が要るというから… gcc-13.2.1が必要、ということになるらしい。
https://github.com/nxp-mcuxpresso/mcuxsdk-manifests/releases/tag/v24.12.00
Reply to @uaa@social.mikutter.hachune.net
SASANO Takayoshi@uaa@social.mikutter.hachune.net (2026-02-14 17:48:34)
とはいえ、なあ…シンボルで解決するものはリンカなりなんなりがよろしくやってくれるとして、binary blobを呼ぶために絶対アドレスをコールする場合はどーすんだよって話になるよね。リンカスクリプト弄ってなんかする、辺りになるんだろうけど…いちいちそこまでやりたくないというのが本音。
SASANO Takayoshi@uaa@social.mikutter.hachune.net (2026-02-14 17:46:35)
「その飛び先がARMかThumbか知らんのやけど」というのはbinutils 2.44以降で言われるようになるのか。
https://community.arm.com/support-forums/f/compilers-and-libraries-forum/57077/binutils-2-44-and-gcc-15-1-0---dangerous-relocation-unsupported-relocation-error-when-trying-to-build-u-boot
SASANO Takayoshi@uaa@social.mikutter.hachune.net (2026-02-14 17:43:56)
あーそうか。gccだけARM toolchainの使って、他はDebianのやつ、という訳にもいかんよな…その辺は全部揃えないとテストにならんか。
SASANO Takayoshi@uaa@social.mikutter.hachune.net (2026-02-14 17:39:57)
一旦止めよう。充電も切れそうだし。
Reply to @uaa@social.mikutter.hachune.net
SASANO Takayoshi@uaa@social.mikutter.hachune.net (2026-02-14 17:39:10)
うーん、ビルドが通っても送受信した際にDMRのエンコード/デコードができない(音が鳴らない)という問題を抱えてるんだよな(ずっとこれで悩んでいる)。
Reply to @uaa@social.mikutter.hachune.net
SASANO Takayoshi@uaa@social.mikutter.hachune.net (2026-02-14 17:28:38)
当時のは12.2.1だな。とりあえず、AArch32 bard-metal target(arm-none-eabi)の12.3rel1で試す。
SASANO Takayoshi@uaa@social.mikutter.hachune.net (2026-02-14 17:24:00)
うーむ、Debian-13標準のtoolchain(arm-none-eabi-gcc-15.2)だとOpenGD77のビルドがうまくいかないから…ARMが配ってる奴で試すか。
https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads
Debian12の時のgcc-12辺りだとビルド通ってるんだけどなあ。
Reply to @redbrick@social.mikutter.hachune.net
SASANO Takayoshi@uaa@social.mikutter.hachune.net (2026-02-14 16:16:12)
@redbrick Cortex-M4Fなので、Thumb-2なんですよね
SASANO Takayoshi@uaa@social.mikutter.hachune.net (2026-02-14 16:15:00)
@teobot 参照先のシンボルが絶対番地の場合はどうなります?
SASANO Takayoshi@uaa@social.mikutter.hachune.net (2026-02-14 16:14:16)
@teobot ARM向けのgnu assemblerにおいて、外部参照を行う際におけるシンボルがthumbのコードであることを示す、export宣言はありますか?
SASANO Takayoshi@uaa@social.mikutter.hachune.net (2026-02-14 14:32:04)
久々にarmv7-mなコードいじりをしているけど、随分忘れてしまっているのでておくれロボの力を借りまくってる。
SASANO Takayoshi@uaa@social.mikutter.hachune.net (2026-02-14 13:52:05)
@teobot ダメでしたね…
SASANO Takayoshi@uaa@social.mikutter.hachune.net (2026-02-14 13:51:18)
@teobot Thumb-2のBLXは20bit即値なので、iですかねえ…?
SASANO Takayoshi@uaa@social.mikutter.hachune.net (2026-02-14 13:47:36)
@teobot ARMのインラインアセンブラで、レジスタを引数に取る場合は制約文字列を"r"としますが、即値の場合は何を書けば良いんでしたっけ?
SASANO Takayoshi@uaa@social.mikutter.hachune.net (2026-02-14 13:11:07)
定数の宣言に #define xxxx 0x1234;
と;を付けるんじゃねええええええええええええええええええ💢
SASANO Takayoshi@uaa@social.mikutter.hachune.net (2026-02-14 13:03:35)
@teobot arm-none-eabiの関数呼び出しにおいて、呼び出し側で保存するのはr4-r11として、呼び出し先で破壊可能なのはr0-r3, r12, 13で良いですか?
SASANO Takayoshi@uaa@social.mikutter.hachune.net (2026-02-14 13:00:33)
@teobot thumb-2命令で、blx命令を使った場合飛び先の番地の範囲はそのblx命令からどの範囲になりますかね?blx rmのようにレジスタを使った場合は無制限で良いですか?
SASANO Takayoshi@uaa@social.mikutter.hachune.net (2026-02-14 12:57:05)
@teobot もしかして、thumbで全て固められているarmv7-m環境において、bl qu(address)でthumb bit=0でジャンプした場合、リンカ側は飛び先がthumbであることを理解できていないのではないですか?
SASANO Takayoshi@uaa@social.mikutter.hachune.net (2026-02-14 12:54:26)
@teobot arm-none-eabi-gccにおけるC言語のインラインアセンブラで、"BL" QU(address)と記述した場合、QUは何を意味しますか?
Older Notes