2016-11-04 18 views
0

基本的に、ARM Cortex M3用の単純なカーネルと呼ばれるユーザーアプリケーションを作成する必要があります。 カーネルとユーザアプリケーションは、現在は異なるuVisionプロジェクトです。 カーネルはすべてのHW例外(SVC、PendSV、Hardfaultなど)を処理します。armccを使用したARM Cortex M3のHW例外ハンドラを使用しないイメージの作成

ユーザアプリケーションはstartup.sファイルを使用して特定のアドレスにあり、カーネルは静的アドレス内でこのユーザアプリケーションを開始できます。

一方、ユーザーアプリのstartup.sファイルにはHW例外ハンドラの定義も含まれていますが、ユーザーアプリケーションはhw例外を処理しないか、処理しないでください。カーネルの責任の下にあるべきです。

プロジェクトまたはビルドのHW例外処理を無効/無視/回避できますか? (ユーザーアプリケーションの作成時には、コード、スタック、データセクションのアドレスのみがわかるはずです)

+1

私は明らかな質問をしなければなりません。 HW例外ハンドラ定義を削除するために、ユーザーアプリケーションのstartup.sファイルを編集しようとしましたか? –

+1

アプリケーションに独自のスタートアップコードを使用し、ベクタテーブル(ほぼ?)を完全に削除します。 –

答えて

0

ご回答ありがとうございます。はい、あなたが示唆したように、私はstartup.sからベクタテーブルを削除したとき、それは仕事のようです。

また、私はReset_Handlerの代わりにmain関数を置き換えました。私はmain関数を開始点として見つけることができました。 (カーネルが既にシステム全体を初期化する) 最初の単語がSPを示しているが、第二の番組コード開始点(メイン)

マイ単純startup.sファイルが今

; Vector Table Mapped to Address 0 at Reset 

       AREA RESET, DATA, READONLY 
       EXPORT __Vectors 
       IMPORT __main 

__Vectors  DCD  __initial_sp   ; Top of Stack 
       DCD  __main     ; Start Point 

おかげです。

+0

注:このコードはデータセグメントを初期化しませんが、ここでカーネルがすでに行っている可能性があります。 –

関連する問題