71235


Spresense SDK チュートリアルの、[17. ローダブルELFチュートリアル] の通りに  
ローダブルELF を作成しましたが、作成した nuttx.spk をSpresenseに書き込むと  
Reboot後、直ぐコアダンプとなります。(helloファイルもSDカードへ入れています)

チュートリアル通りに、nuttx.spk ファイル、ELFファイル hello も作成され  
ビルドエラーもありません。何か足りない作業があるのでしょうか？  
誰か成功した方がいましたら、注意点などを教えて頂けないでしょうか？  
他のサンプルは問題なく動作します。

Windows10, SDK2.0.1, NUTTX8.2 の環境で  
VSCode1.50.0のターミナル(bash)より作成しました。

追加情報として  
SDK のコンフィグレーション時に  
feature/loadable を入れてビルドした nuttx.spk はコアダンプするみたいです。

**loadable なしの場合:**

[code]

    tools/config.py device/sdcard examples/hello
    NuttShell (NSH) NuttX-8.2
    nsh>
    
[/code]

**loadable を入れた場合:**

[code]

    tools/config.py feature/loadable device/sdcard examples/hello
    00013620: up_hardfault: PANIC!!! Hard fault: 40000000
    up_assert: Assertion failed at file:armv7-m/up_hardfault.c line: 148 task:
    up_registerdump: R0: 00000080 0d001a41 00000080 0d027f74 0d007461 00000000 0d027fa0 0d027fa0
    up_registerdump: R8: 0d00747d 00000000 0d027fa0 0d002487 0d000305 0d027f74 0d000305 0d000305
    up_registerdump: xPSR: 0d000333 BASEPRI: 0d027fa8 CONTROL: 00000000
    up_registerdump: EXC_RETURN: 0d023290
    up_dumpstate: sp:     0d027fa8
    up_dumpstate: IRQ stack:
    up_dumpstate:   base: 0d028000
    up_dumpstate:   size: 00000800
    up_dumpstate:   used: 00000148
    
[/code]


CC BY-SA 4.0
2020-10-14T08:01:54.543
71188
2020-10-16T02:36:06.457
2020-10-16T02:36:06.457
3060
42312
question
spresense
Spresense SDKで、ローダブルELFがチュートリアル通りに動作しない。


自分はVirtualBox経由でUbuntu環境を使うことが多いですが(その方が圧倒的に速いので)、Windows
MSYS環境でも[ローダブルELFチュートリアル](https://developer.sony.com/develop/spresense/docs/sdk_tutorials_ja.html#_%E3%83%AD%E3%83%BC%E3%83%80%E3%83%96%E3%83%ABelf%E3%83%81%E3%83%A5%E3%83%BC%E3%83%88%E3%83%AA%E3%82%A2%E3%83%AB)
の通りに実行できています。

SDKv2.0.2、VSCode IDE v1.2.1 の最新版を使用しています。

### ビルド

[code]

    $ make distclean
    $ ./tools/config.py device/sdcard feature/loadable examples/hello
    $ ./tools/config.py -m
    menuconfigを開いて、"EXAMPLES_HELLO=m" に変更する
    (VSCodeであればSDKコンフィグを開いて"EXAMPLES_HELLO=M"に変更して保存する)
    $ make
    (VSCodeであればアプリケーションビルドを実行する)
    
[/code]

### ロード

[code]

    $ ./tools/flash.sh -c COM12 nuttx.spk
    $ ./tools/flash.sh -c COM12 -w apps/bin/hello
    (helloを/mnt/spifへロードしてます)
    
[/code]

### 実行

Flash上のhelloを実行

[code]

    NuttShell (NSH) NuttX-8.2
    nsh> /mnt/spif/hello
    Hello, World!!
    
[/code]

SDカードへコピーして、SDカードからも実行できています。

[code]

    nsh> cp /mnt/spif/hello /mnt/sd0
    nsh> /mnt/sd0/hello
    Hello, World!!
    
[/code]

手順は間違ってなさそうな気がするのでどこに問題があるのか分かりませんが、  
もし実施していなければ一旦`make distclean`をしてからコンフィグレーションし直してみると改善するかもしれません。


CC BY-SA 4.0
2020-10-15T23:33:31.987
71235
2020-10-15T23:33:31.987
31378
71188
answer