Arm 4 マイクロコントローラーのハード フォールト エラー

エサム・イード

Tiva C コントローラーに問題があり、これは非常に奇妙で、何か助けが欲しいのですが、基本的にsprintf、明確な理由もなくライン上でクラッシュします。私のアプリケーションは、Bluetooth を介してさまざまなモードで制御できるスマート トイです。モードの場合、有限状態マシン コードを使用し、おもちゃの現在の加速度を監視するためだけに読み取り、値を更新するために数秒ごとに定期的な割り込みを生成する定期的なタイマーを使用して、定期的に送信されます。加速度

現在、加速度の読み取りは単純な関数によって行われます。読み取りは、その読み取りを文字列内に格納しようとするまでうまくいき、プログラムがハード フォールトをスローするだけです。この関数 (加速度を読み取る) は、常にクラッシュしてハードフォールトエラーをスローするこの新しいモードを除いて、おもちゃの車の他のすべてのモードで正常に機能します。私の現在の考えでは、関数呼び出しが多すぎてスタックがいっぱいになっている可能性がありますが、スタックがいっぱいかどうかをどのように知ることができますか?

これがクラッシュする行です:

sprintf(acceleration,"x%.2f y%.2f z%.2f", X_Axis1, Y_Axis1, Z_Axis1); 

それは簡単ですsprintf加速軸からの値の読み取りを格納しxyそしてzその後、加速変数に格納なぜこれが起こっている任意のアイデアを?

これは、タイマー ハンドラー内の keil に関する障害レポートでもあります。これは、ReadAccel()私が作成し関数を呼び出すために使用したもので、最新のものを除くすべてのモードで動作するため、タイマー ハンドラー内の関数内のコードを移動して少し節約すると思いました。スタックからですが、それでもハード フォールトが発生しましたここに画像の説明を入力してください

これがスタック フル エラーかどうかを判断する方法を教えてくれる人がいたら、これが本当のことだと思うので、とても感謝しています。

void TIMER2A_Handler(void)
{
        char acceleration[22];
        RawX_Axis1=ReadAccelX();
        X_Axis1 = RawX_Axis1 * 0.00390625+0.35;
        RawY_Axis1=ReadAccelY();
        Y_Axis1 = RawY_Axis1 * 0.00390625+0.08;
        RawZ_Axis1=ReadAccelZ();
        Z_Axis1 = (RawY_Axis1 *  0.00390625)+1.08;
        sprintf(acceleration,"x%.2f y%.2f z%.2f",X_Axis1,Y_Axis1,Z_Axis1); 
        UARTSend(UART3_BASE,acceleration);
        UARTCharPut(UART3_BASE,'\n');
        TIMER2_RIS_R = 0xFFFFFFFF;
        TIMER2_ICR_R = 0xFFFFFFFF;  
}
ジェレミーP

まず、sprintf を呼び出さずに、ハードコードされた文字列をUARTSend. これでクラッシュが停止した場合は、クラッシュのsprintf原因を突き止める必要があります私は 2 つの問題を認識しています。

sprintf に 22 バイトのバッファーを割り当てますが、これは各加速に 6 文字しか許可されないため (マイナス記号と小数点を含む)、小さすぎる可能性があります。各アクセラレータを個別にフォーマットして送信してみてください。また、sprintf での潜在的なスタック オーバーフローを軽減する可能性があります。

また、簡略化されたインライン文字列変換を使用してみてください。たとえば、各数値を 100 倍した後 (2 dp の固定小数点数が得られます) int にキャストし、単純な除算と 10 による mod を使用し、0x30 (ASCII 0) に加算して文字列を作成します。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ARM マイクロコントローラー用の #define

分類Dev

角度4のグローバルエラーハンドラー

分類Dev

サブフォルダー内のSymfony4コントローラーがエラーを生成する

分類Dev

エラー:Intelのデフォルトプレフィックス(/ usr / local)のARMプロセッサのHomebrewにインストールできません

分類Dev

arm-none-eabi-gccを使用してマイクロコントローラー用のTensorFlowLiteプロジェクトをコンパイルします

分類Dev

Linux C++ の ARM プロセッサ + zynq-7000 コンパイル プラットフォーム?

分類Dev

ローカルブートストラップ4cssファイルへのフォールバック

分類Dev

4kセクターのハードドライブをフォーマットする方法は?

分類Dev

4kセクターのハードドライブをフォーマットする方法は?

分類Dev

クライアントシークレットを使用したIdentityServer4ハイブリッドフローエラー

分類Dev

コントローラーを追加した後のMVC4コントローラーエラー

分類Dev

ARM用のクロスコンパイルブースト1.69.0

分類Dev

ConqueGDBを使用してOpenOCDでARMマイクロコントローラーをデバッグする

分類Dev

Angular4 / 5でのイベントハンドラーのパフォーマンスの問題

分類Dev

GCC arm-none-eabiを使用したSTM32F0プログラミング:__ libc_init_arrayのハードフォールト

分類Dev

Matrix4の「ワールドトランスフォーム」と「ローカルトランスフォーム」の違いは何ですか?

分類Dev

ARM用のマイクロ最適化Cコード

分類Dev

Laravel 4コントローラー、デフォルトルートを処理しますか?

分類Dev

Laravel 4コントローラー、デフォルトルートを処理しますか?

分類Dev

ARM64ビットプラットフォームでのx264のコンパイル中にエラーが発生しました

分類Dev

サーブレット/ RESTコントローラーのダウンロードlog4jログファイルの内容が正常に終了しない

分類Dev

Rails4のajaxコントローラーのデフォルトのrespond_to

分類Dev

デフォルトのIdentityServer4クライアントをオーバーライドする

分類Dev

launch4j:コマンドラインを介してデフォルトのJVMヒープサイズをオーバーライドする

分類Dev

ブループリントを介してラクダhttp4コンポーネントのデフォルトプロパティをオーバーライドする

分類Dev

Symfony4でコントローラーのフロントエンドとバックエンドを配置する正しい方法は何ですか

分類Dev

ブートストラップ4の背景画像フルハイト、ナビゲーションバーなしスクロールなし

分類Dev

Aureliaでのブートストラップv4ランタイム/ロードエラー

分類Dev

CodeIgniter4のルートでサブフォルダーコントローラーメソッドを呼び出す方法

Related 関連記事

  1. 1

    ARM マイクロコントローラー用の #define

  2. 2

    角度4のグローバルエラーハンドラー

  3. 3

    サブフォルダー内のSymfony4コントローラーがエラーを生成する

  4. 4

    エラー:Intelのデフォルトプレフィックス(/ usr / local)のARMプロセッサのHomebrewにインストールできません

  5. 5

    arm-none-eabi-gccを使用してマイクロコントローラー用のTensorFlowLiteプロジェクトをコンパイルします

  6. 6

    Linux C++ の ARM プロセッサ + zynq-7000 コンパイル プラットフォーム?

  7. 7

    ローカルブートストラップ4cssファイルへのフォールバック

  8. 8

    4kセクターのハードドライブをフォーマットする方法は?

  9. 9

    4kセクターのハードドライブをフォーマットする方法は?

  10. 10

    クライアントシークレットを使用したIdentityServer4ハイブリッドフローエラー

  11. 11

    コントローラーを追加した後のMVC4コントローラーエラー

  12. 12

    ARM用のクロスコンパイルブースト1.69.0

  13. 13

    ConqueGDBを使用してOpenOCDでARMマイクロコントローラーをデバッグする

  14. 14

    Angular4 / 5でのイベントハンドラーのパフォーマンスの問題

  15. 15

    GCC arm-none-eabiを使用したSTM32F0プログラミング:__ libc_init_arrayのハードフォールト

  16. 16

    Matrix4の「ワールドトランスフォーム」と「ローカルトランスフォーム」の違いは何ですか?

  17. 17

    ARM用のマイクロ最適化Cコード

  18. 18

    Laravel 4コントローラー、デフォルトルートを処理しますか?

  19. 19

    Laravel 4コントローラー、デフォルトルートを処理しますか?

  20. 20

    ARM64ビットプラットフォームでのx264のコンパイル中にエラーが発生しました

  21. 21

    サーブレット/ RESTコントローラーのダウンロードlog4jログファイルの内容が正常に終了しない

  22. 22

    Rails4のajaxコントローラーのデフォルトのrespond_to

  23. 23

    デフォルトのIdentityServer4クライアントをオーバーライドする

  24. 24

    launch4j:コマンドラインを介してデフォルトのJVMヒープサイズをオーバーライドする

  25. 25

    ブループリントを介してラクダhttp4コンポーネントのデフォルトプロパティをオーバーライドする

  26. 26

    Symfony4でコントローラーのフロントエンドとバックエンドを配置する正しい方法は何ですか

  27. 27

    ブートストラップ4の背景画像フルハイト、ナビゲーションバーなしスクロールなし

  28. 28

    Aureliaでのブートストラップv4ランタイム/ロードエラー

  29. 29

    CodeIgniter4のルートでサブフォルダーコントローラーメソッドを呼び出す方法

ホットタグ

アーカイブ