中古住宅リホーム(物置)その2

最初、切り株はそのままにして、ギリギリまで寄せるつもりだったが、最近天気が良い日が続いていて、時間もある事から、切り株を取り除こうと思い作業を開始した。
まず、切り株の周りを掘ってみたー、それなりに掘ったら、末広がりで、頑丈な根があり、とても全体を取り除く事は出来ない事が判った。

また、この「木」は何の木か知らないけど、目が詰まって、非常に堅い。
とりあえず、ノコギリを買ってきて、切ってみようとしたが、硬くて、手動では到底無理で断念したー、次に電動ドライバーに木工ドリルを付けて穴を開けてみたが、硬くて、崩せる程穴あけするには無理がある、次に丸ノコで切れそうな部分を切ってみたが、丸ノコでは、中心部まで刃が届かないので、これも駄目、本来ならチェーンソーが必要なとこだが、切り株を一つ処理するだけなのにチェーンソーを買うのも気がひける・・

最後は、地道にノミとトンカチで少しづつ切り崩してみた。
どうやらこれが「正解」のようで、時間と手間がかかるが、そこそこの労力で何とかなる事が判った。

切り株の周りを少し掘った状態

ノコギリで根を少し分解する過程で、「石」を噛んだ根をノコで引いてしまい、一瞬で刃が鈍ってしまったようだー(切れ味が一瞬で悪くなった・・・)

とりあえず、地道ではあるが少しづつ崩して(30センチ弱は崩した)、ここまでになったが、あと7センチくらいは崩さないと・・・
トンカチを振り下ろすのは、それなりに大変なので、1日数時間くらい作業をしている。(3日くらい)
とりあえず、ここまでー

RX65N Envision Kit、DRW2D エンジンの仕様?不具合?

先日、RX65N に内臓の描画エンジンを使ってみたが、描画の管理を色々テスト、評価する段階で暗礁に乗り上げた。
RX65Nの場合、内臓メモリは限られているので、ダブルバッファとフリッピングによる手法を行うには無理がある。
そこで、とりあえず、シングルバッファによる方法で、描画と表示を最適化して、何とかならないかと試行錯誤してみたが、「問題」に当たった。

予定では、画面表示と描画を細かく管理する事で、高速な描画エンジンとの連携で何とかなると思っていたが、思っていたように動作せず、悩んでいる。

まず、問題をシンプルにする為、簡単な描画シーケンスを実行してみた。

    d2_startframe(d2_);
    d2_clear(d2_, 0x000000);
    d2_setcolor(d2_, 0, col);
    d2_rendercircle(d2_, 480/2*16, 272/2*16, rad*16, 0);
    d2_endframe(d2_);

上記のプログラムでは、画面全体を消去して、中心に円を描画する、描画の半径は、フレーム毎に変えるようにしている。
※実際に描画にかかる実時間は、半径が最大でも1ms程度と思われる。

普通に考えると、「描画中」は、描画アクセスが優先されるので正しい表示にならないのは判る。
しかし、実際にこのプログラムを走らせると、描画が終わってからも、正しい表示がされない。
※正しい表示がされるのは、次のフレームからになり、毎フレームこの処理を繰り返すと、ほとんど何も表示出来ない常態になってしまう。
ここからは想像なのだが、DRW2Dエンジンにディスプレイリストを渡して描画すると、DRW2Dエンジンがメモリバスを奪い取って放さず、GLCDCの読み出しが無効になってしまい、表示の読み出しが失敗しているように見える。
DRW2Dのキャッシュをフラッシュするとか、描画領域を変更するとか色々考え付く方法を試したが、一旦描画を始めてしまうと、描画の終了に関わらず、メモリバスを占有して離さないようだ、この状態は、垂直同期信号のトリガーでリセットされる。
これは、参った、この状況では、いくらパフォーマンスが高くても、リアルタイム性を要求するような描画を行えない。

何か不足している設定があるのでは?

もしかして、「バス」の優先度を設定するレジスターがあるのでは?
ハードウェアーマニュアルを良く見て、「あーーー」と唸ってしまった、「拡張バスマスタ優先度制御レジスタ (EBMAPCR)」というのがあった・・・
ヨクヨク、サンプルソースコードを見ると、GLCDC、DRW2Dの初期化時にこのレジスターにプライオリティーを設定してる・・

    {  // メインバス2優先順位設定(GLCDC、DRW2D)
        device::BUS::EBMAPCR.PR1SEL = 0;
        device::BUS::EBMAPCR.PR2SEL = 3;
        device::BUS::EBMAPCR.PR3SEL = 1;
        device::BUS::EBMAPCR.PR4SEL = 2;
        device::BUS::EBMAPCR.PR5SEL = 4;
    }

それに習って、上記のように優先順位を設定してみたら、思った通りの表示が行えた~

この問題解決に随分時間をかけてしまったようだ・・・

上の黒い「帯」でDRW2Dエンジンが描画を行っている・・