質問: index; index ^= 1; // DMAバッファインデックスの切替 // この区間で他の割込み処理が入るとオーバーランが発生しそうなので全割込み禁 // 止にしておいた方がよい? setDMABuffer(duble_buffer[index]); UART割込み有効; if (count > 0) { // ダブルバッファとは別に用意したメインのバッファの末尾にコピーする。 memcpy(main_buffer + last, duble_buffer[prev], count); last += count; } } } ``` こういう処理ってほとんどやることは決まっていると思うので、定石みたいな実装があると思うのですが、何か実装の参考になる文献や入手可能なソースコードはないでしょうか。Linuxカーネルのソースもちょっと覗いてみましたが、該当しそうな部分が見つけれらませんでした。
回答: PCの事は良くわかってない組込み屋です。 部分的な回答ですみません。 UART割込み無効;〜UART割込み有効;の間は全割り込み禁止ではなくて、 割り込みコントローラをいじって割り込み優先度を調整する方が定石的に感じます。 同じように、UARTの受信を妨害してしまう割り込み禁止区間をできるだけ削って、 割り込み優先度を調整して対処してはどうでしょうか?