2016-08-27 3 views
0

私はRAMが不足しているため、クリティカルではないスピードコードをフラッシュする必要があります。 フラッシュを選択するには、リンカー '属性'コマンドを知る必要があります。RAMではなくフラッシュにコードを入れるリンカ属性コマンドは何ですか?

私はmbedオンラインIDEを使ってNUCLEO(STM32)f091RCをビルドしています。

しかし、mbedはflashに共通の属性設定を使用している可能性があります。

mbedリンカーに関するヘルプが見つかりません。

+0

_embedオンラインIDE_の経験はありませんが、デフォルトではすべての機能がフラッシュすることを理解しています。ほとんどのコンパイラにはRAMから実行されるデザインコード用の特別な属性があります。ブート時にコンパイルされたファームウェアをフラッシュからRAMに移動するための特別なローダが必要です。このような機能はコンパイラによって自動的に作成されます。だから、あなたのコードがRAMで動作することは確かですか? – imbearr

答えて

0

あなたのリンカーのファイル構造はわかりませんが、たぶんあなたが.textセクションをFLASH(99%の確信度)で書いていることがあります。 __attribute__ ((long_call, section (".text"))) あなたはまた、そのようなこれまでマクロを行うことができます:あなたはあなたの関数のセクションを強制したい場合は、あなただけの宣言と定義する前にこの属性を使用する必要があります

#define FLASH_FUNC __attribute__ ((long_call, section (".text"))) 

をし、このようにそれを使用します。

.hファイル内:

FLASH_FUNC void MyFoo(void); 

int型の.cファイル

FLASH_FUNC void MyFoo(void) 
{ 
    //foo 
} 
関連する問題