78205


SDK(NuttX)の関数内でアプリを呼ぶ方法はありますでしょうか？

例えば、  
１．sdk/apps/examples/helloをコピーして、hello2を作成  
２．hello2_main.cにて、

[code]

    int main(int argc, FAR char *argv[])
    {
      printf("Hello2, World!!\n");
      /*  ここで、「nsh> hello」と同じような事を実行したい */
      return 0;
    }
    
[/code]


CC BY-SA 4.0
2021-07-15T08:28:44.730
78201
2021-07-15T12:12:34.030
47303
question
spresense
SDK(NuttX)の関数内でアプリを呼ぶ方法


いくつか方法があって、  
(1) アプリケーションの関数を直接呼び出す

[code]

    #include <nuttx/config.h>
    #include <stdio.h>
    
    // helloアプリケーション関数のプロトタイプ宣言
    int hello_main(int argc, FAR char *argv[]);
    
    int main(int argc, FAR char *argv[])
    {
      printf("Hello2, World!!\n");
      hello_main(0, NULL); // 関数呼び出し
      return 0;
    }
    
[/code]

(2) もしくは、SDKコンフィグレーションで、  
systemコマンドを有効にすれば(CONFIG_SYSTEM_SYSTEM=y)、  
system()関数を使って"hello"コマンドを呼び出すこともできます。

[![画像の説明をここに入力](https://i.stack.imgur.com/hpaAe.png)](https://i.stack.imgur.com/hpaAe.png)

[code]

    #include <nuttx/config.h>
    #include <stdio.h>
    #include <stdlib.h>
    
    int main(int argc, FAR char *argv[])
    {
      printf("Hello2, World!!\n");
      system("hello"); // system関数
      return 0;
    }
    
[/code]


CC BY-SA 4.0
2021-07-15T12:12:34.030
78205
2021-07-15T12:12:34.030
31378
78201
answer