(toppers-users 4574) SafeG - ノントラストOSの再起動について

Yoshitaka Takebe takebe @ sec.co.jp
2016年 7月 15日 (金) 11:12:01 JST


セックの建部です。

最近、多投しており、申し訳ございません。

再度、SafeGまわりで質問させて頂きたいと思います。


"safeg_syscall_restarnt()"をトラスト側から呼ぶと、
ノントラスト側のアプリケーションを再起動できると思いますが、
この機能を試してみたところ、ノントラスト側が再起動いたしません。

使い方や前提条件が誤っているでしょうか?
チェックポイントなど、教えて頂ければ幸いです。


実行環境:i.MX6のCPUボード(MCIMX6-SDB)

実行しているプログラムの内容:

  ・"shared_mem"サンプルを拡張して試しました。

  ・トラスト側で、起動後10秒後(10回目の周期タスク起動時)に、
    "safeg_syscall_restartnt()"、"target_do_reboot()"を呼び出す
    ようにしました。
  
    ※ "target_do_reboot()"関数は、空関数ですが、ここに何か実装する必要は
       ありましたでしょうか?
  
  ・safeg_syscall_restartnt()の呼び出しまでは、NT側で書き込みを行う
    メモリ領域の内容が改変されましたが、
    safeg_syscall_restartnt()呼び出し以降、その領域が"0"になりました。
    
    ※ この領域がなぜ"0"になるのか、も疑問となっている点です。
       メモリマップとしては、マニュアルの手順に沿って、以下のように配置しています。
       
       ノントラスト: 0x17800000
       monitor     : 0x4f000000
       トラスト    : 0x4f100000
       共有メモリ  : 0x4f800000 (=TARGET_COM_SHMEM_ADDRESS)
       
  
  ・トラスト側のプログラムは、"safeg_syscall_restartnt()"呼び出し後も動作しています。
    (UARTのコンソールで確認)
  


すみませんが、よろしくお願いします。

以上です。