Code Monkey home page Code Monkey logo

athrill-target-v850e2m's People

Contributors

esm-tmori avatar hisatsugushiine avatar mitsut avatar monaka avatar takasehideki avatar tmori avatar ytoi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

athrill-target-v850e2m's Issues

HALT命令実行後、HALT状態が解除されない

toppers/ev3rt-athrill-v850e2mのarch/v850_gcc/prc_support.Sのidle_loop:でhalt命令を実行後、HALT状態が解除されない。
以下のようにデバッグモードで起動し、cコマンドで実行させ、qコマンドでデバッグモードに移行し、halt命令実行の直後の状態で止まっていることを確認しました。
ここからcコマンドやiコマンドを使っても状態は変化しませんでした。

athrill2 -c1 -i -m ../common/memory.txt -d ../common/device_config.txt -t -1 asp

HALT状態を解除する例外要求が発生しないのか、発生しても解除されないかは未確認です。

EV3RT向けの仮想デバイスを athrill-device向けに移行する

EV3RT向けの仮想デバイス vdevは,様々なCPUアーキに対応できるように,athrillデバイスプラットフォームのプラグインとして利用できるようにする.
https://github.com/toppers/athrill-device/tree/main/device/ev3com

現状は,ETロボコン側が vdev を利用していているため,vdev自体を削除してしまうと影響が大きいと思われるため,vdev を無効化するマクロでくくるものとする.

makeのオプション指定でV850版必須の設定をMakefile内で指定して欲しい

以下のQiitaの記事で説明されているように、V850版ではmakeにtimer32=trueという引数を指定する必要があります。

make timer32=true clean
make timer32=true

qiita.com/kanetugu2018/items/0e521f4779cd680dab18

ただこのリポジトリはV850版専用のリポジトリですので、makeを引数をつけずに、Makefile中にデフォルトの設定が指定されるようにしてほしい。

CPUがHALT状態の時のシミュレーション時間の進みがおかしい問題の修正コードの追加

本不具合は,タイマが適切に動いている間は問題でない.

CPU/タイマが以下の状態に陥ったとき,シミュレーション時間が進まなくなる.
①CPUがHALT状態になる
②タイマ割り込みが発生しない設定となっている

本修正はシミュレーション時間のセンシティブな個所の修正となるため,CPUEMU_CLOCK_BUG_FIXにて,現状のコードを維持する.

品質が安定したタイミングで,本修正をFIXさせる.

ETロボコンシミュレータ向け時刻同期用パラメータの追加

下記から転記
tmori/athrill-target#3

@tmori commented on 28 Apr
現状,athrillからUnityに送信する時刻同期およびアクチュエータ情報の通知タイミングはEV3RTからAPI呼び出しを契機としている.

EV3RT側の変更があった場合,時刻同期タイミングが変わってしまうため,athrill側で時刻同期タイミングを調整できるようにすべきと考えている.

外部デバイスの仕様変更対応

外部デバイスの仕様変更内容は以下の通り.
①外部デバイスのバージョン番号,マジック番号チェック機能を追加
②外部デバイスの初期化タイミングをデフォルトデバイス初期化終了後に変更
③外部デバイス登録用の構造体を定義

ETロボコン向けシミュレータ時刻同期周りのスレッド競合の可能性

下記から転記
tmori/athrill-target#4

@tmori commented on 28 Apr
Unityからの時刻同期およびセンシング情報は,athrill内のスレッドでUDPパケット受信し,そのデータをレジスタ用のバッファにコピーしている.

このUDPスレッドは,CPU駆動で実行するスレッドと排他していないので,競合する可能性がある.修正方法は単純で,これらのスレッド間で共有データアクセスする際に排他をかければよい.

athrill側がbusyループした際でも実時間で通知を行う仕組みの導入

現状EV3RTl側でbusyループを行うと、Unity側に10msec通知ではなく、PCの速度によって通知に数百msecかかってしまう。
Unity側を止める場合でも、時間での差が大きくなるため、一定時間EV3RTトリガの通知がない場合には、athrill側に用意した通知補完用スレッドにて通知を行うようにする。
送られるデータセットはEV3RT側の時間軸で10msec毎に設定されるため、補完される通知ではしばらく同じ内容(シミュレーション時間含む)のデータが送信されることになる。Unity側では通知に対して時間が進んでいないことを検出してタイムスケールを調整することでBusyループでも時間差の補完を少なくすることができる。

本機能はdevice_configで有効化できる。
以下の指定が必要。これらの指定がない場合は従来の動作で動作する。

DEVICE_CONFIG_COMPLEMENTAL_TX_SENDING 1
DEVICE_CONFIG_RESET_AREA_OFFSET 68
DEVICE_CONFIG_RESET_AREA_SIZE 20

  • DEVICE_CONFIG_COMPLEMENTAL_TX_SENDING
    これを1にした場合、補完タスクによる実時間の通信が送出される

  • DEVICE_CONFIG_RESET_AREA_OFFSET
    RESET_ANGLE_A〜DやRESET_GYROなど、一度送出したら0にクリアするデータの先頭オフセットを指定する。これは現状EV3RT側から行なっているが、athrill側でクリアできるようにした。RESET系の領域は連続しているようにすること。この指定を使えばEV3RTで行っているクリア処理は不要となる(まだ残している)。通信仕様のオフセット値をそのまま入れること。現状の仕様では68(= RESET_ANGLE_A)のオフセットを指定する

  • DEVICE_CONFIG_RESET_AREA_SIZE
    DEVICE_CONFIG_RESET_AREA_OFFSETに対してクリアする領域のサイズをbyteで指定する。現状ではRESET_ANGLE_A〜DとRESET_GYROの5つなので、4byte x 5 = 20byteを指定する。

従来モードでCPU Busyにした場合の通信。ひしがたのマークがathrill側からUnityへの通信回数。1秒間に2回くらいしか通信できていない。
別スレッド モードOFF  cpu busy fps可変

今回の動作モードでCPU Busyにした場合の通信。CPU Busyでも1秒間に90回くらいの通信ができるようになっている。
別スレッド モードON  cpu busy fps可変

--

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.