Community Translation - Defining Const Variables for Fixed Address in PSoC 4 - KBA229222

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
MotooTanaka
Level 9
Level 9
Distributor - Marubun (Japan)
First comment on blog Beta tester First comment on KBA

Hi,

I'd like to translate KBA229222 into Japanese.

moto

Original KBA: KBA229222

Defining Const Variables for Fixed Address in PSoC 4 - KBA229222

Translated by: MoTa_728816

==============================

タイトル: PSoC 4 で定数を固定アドレスに配置する方法 - KBA229222

ヴァージョン:**

質問:

PSoC® 4 で定数を固定アドレスに配置するのにはどうしたら良いですか?

回答:

定数はフラッシュメモリの固定アドレスに配置することが可能です。その為にはリンカコントロールファイル (リンカスクリプト) を変更する必要があります。

アプリケーションのメモリ領域と定数を保存するストレージ領域が重複しないように、アプリケーションの最終アドレスを算出して目的の定数を置くアドレスを決定する必要があります。

以下の手順にしたがって PSoC 4 用の GCC と MDK コンパイラ のリンカコントロールファイルを更新して定数を定義してください:

1. プロジェクトを開いてビルドします。これはリンカスクリプトを生成するために必要です。

2. リンカスクリプトのあるディレクトリ  \<プロジェクト名>.cydsn\Generated_Source\POC<4, 5>\.  へ移動します。

GCC コンパイラでは、リンカコントロールファイルは cm0gcc.ld\cm0plusgcc.ld という名称です。

MDK コンパイラでは、リンカコントロールファイルは Cm0RealView.scat / Cm0plusRealView.scat という名称です。

3. 対象となるリンカスクリプトを選択して同じディレクトリ内に複製後、名称を変更します。たとえば cm0gcc.ld custom_cm0gcc.ld と名称変更します。 (同様に Cm0RealView.scat Custom_Cm0RealView.scat と名称変更します。)

4. Build Settings ダイアログを開きます。左側の枠から、選択したコンパイラの下にある Linker を展開します。General を選択します。そして Custom Linker Script の横にある [...] ボタンをクリックして、適切なファイルを選択してください。

GCC では、custom_cm0gcc.ld を選択します。

MDK では、ファイルタイプを *.scat に変更してから Custom_Cm0RealView.scat を選択します。

5. OK をクリックします。

6. GCC コンパイラでは、カスタムリンカスクリプト ( custom_cmogcc.ld ) を開いて以下の記述を見つけてください:

.cy_checksum_exclude : { KEEP(*(.cy_checksum_exclude)) } >rom

a. 下記のコードをコピーし上記の記述の直後に張り付けてください:

#define   MY_VAR_START_ADDRESS      <フラッシュ内の絶対アドレス>

.my_emulated_eeprom MY_VAR_START_ADDRESS :

{

     KEEP(*(.my_var_fix_addr))

} >rom

b. 変更結果を保存して、ファイルを閉じてください。

 MDK コンパイラでは、カスタムリンカスクリプト ( Custom_CmoRealView.scat ) を開いて以下の記述を見つけてください:

APPLICATION APPL_START (CY_FLASH_SIZE - APPL_START)

{

    ...

}

a.下記のコードをコピーし上記の記述の直後に張り付けてください:

#define   MY_VAR_START_ADDRESS      <フラッシュ内の絶対アドレス>

EM_EEPROM ( MY_VAR_START_ADDRESS )

{

       . my_var_fix_addr+0

{

            *(.my_var_fix_addr)

       }

}

b. 変更結果を保存して、ファイルを閉じてください。

7. 新規に作成されたセクションに定数を宣言します。それのためには、フラッシュに配列を宣言します。下記が配列宣言の例です:

const uint8 Test[512]

CY_SECTION(".my_var_fix_addr") = {0xFFu,0xAA,0xBB,0xCC,0xDD,0xEE,0xFF,0x55};

==============================

20-Apr-2020

moto

0 Likes
1 Reply
JennaJo
Moderator
Moderator
Moderator
1000 replies posted 750 replies posted 500 replies posted

Hello, Tanaka-san

We receive your translation, it will be published to KBA to Community.

After upload, You will receive the points as the word of KBA.

Due to the current volume of works , Please bear with me for the delayed the response.

It could be delayed, but it will be processed soon.

Thanks for your contribution to CDC!

Will keep you update the status.

Thanks,

Jenna Jo

Jenna Jo