XDAのSM-T800 LinageOS 20 のページをみると、MindTheGapps13 がインストールできないとの投稿があり、その対策版情報がありました。MindTheGapps_Legacy-13.0.0-arm64-20231025_200931.zip です。試したところ、前回の「Could not mount ...」は発生しないもののGoogleサービスはインストールされません。何も作用がありません。インストール自体1秒もかからず早すぎです。
ls-1R ${SYSTEM_OUT} > $TMP//MindGappCpBefore.txtcp-pr./*"${SYSTEM_OUT}/"ls-1R ${SYSTEM_OUT} > $TMP/MindGappCpAfter.txt# show number of copy files.diff-w/tmp/MindGappCpBefore.txt/tmp/MindGappCpAfter.txt | grep^+[a-zA-Z]> $TMP/MindGappCpList.txtrm-f$TMP//MindGappCpBefore.txt$TMP/MindGappCpAfter.txtCOPY_COUNT=`cat$TMP/MindGappCpList.txt |wc-l`ui_print"$COPY_COUNT files has copied."
CAN ID 一つづつに受信ルール を割当てれば、 F1KH の176pinなら 256の CAN ID+データ を受信できそうですが、後述する 受信Buffer の制約を受けます。 むろんCAN ID MASK値を絞って一つの受信ルール で複数のCAN IDでを受信してもOKですが、CANデータは素早くRAMに退避する必要があります。
CAN ID に一つづつ受信Buffer を割当てれば、 F1KH の176pinなら 128コの CAN ID+データ を同時期に受信でき、最新のそれぞれのCANデータ内容をSFRに保持でき、最も効率的といえます。むろん受信Buffer を複数のCAN IDで使いまわしてもOKですが、CANデータは素早くRAMに退避する必要があります。
受信Buffer は 送信と異なり CAN Channel の割当てはなく、一つの CAN UNIT 内で自由です。 受信ルール が 1つにつき、受信Buffer を一つ割当てます。上記のコード例では以下のように割当てています。
CAN受信側のソフトはオープンソースのBUSMATER を用います。CAN DBを定義でき、CANシグナルに分けてサンプリングとログができます。CANLayzer の CAN DB のコンバートも可。しかし数年間、UPDATEがありません。のでCAN-FDには未対応です。過去職場でも紹介し導入し、割と評判が良かったですが、世間的には知名度が低いのでしょうか? (リリース当時ETASさんもアピールしていましたが) にしてもKavaer CAN King ( 全然Kingじゃない )は使い物にならないと思うのですが…
送信完了割込みは、エラー割込みや送信前のSFRチェックを行えば特に不要です。割込が多発すると、組込みでは貴重な処理能力を食います。今のところは余裕があるため検出しておきました。弊方での実装例は以下のとおりです。実装先は自動コード生成された r_smc_intprg. c です。
/* CAN0 TRANSMIT INTERRUPT */#ifdefined (__CCRH__)#pragmainterruptIntCAN0Tx(enable=false, channel=26, fpu=true, callt=false)#elifdefined (__ghs__)#pragmaghsinterrupt#elifdefined (__ICCRH850__)#pragmatype_attribute=__interrupt#else#errorUnknown Compiler#endifvoidIntCAN0Tx(void){/* Start user code for IntCAN0Tx. Do not edit comment generated here */R_CAN_DispatchEevent( 0 /*unit*/, 0 /* ch.*/, CAN_EVENT_SEND_COMPLATE );/* End user code. Do not edit comment generated here */}