About PSoC4S Bootloader

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

cross mob
hiyac_351831
Level 3
Level 3
25 replies posted 10 replies posted 10 questions asked

To whom it may concern,

Device:CY8C4025AZI-S403

I have a question about PSoC4S Bootloader.
I checked application-note AN84401.
http://www.cypress.com/documentation/application-notes/an84401-psoc-3-and-psoc-5lp-spi-bootloader

My apology for writing this case in Japanese.

質問1.コマンドでのチェックサムの検証について
コマンド0x31(Verify Checksum)はチェックサムが
一致するか否かを返すコマンドであると認識していますが、
・こちらは何と何を比較しているのでしょうか?
・特に、比較元のデータはどこに格納されているのでしょうか?

質問2.メタデータ領域のチェックサムについて
フラッシュメモリ内のメタデータの配置について、
アドレス0x00にアプリケーションチェックサムが格納される事は分かりますが、
・アプリケーションチェックサムが更新されるタイミングはいつですか?
・アプリケーションチェックサムには何の情報が格納されますか?

質問3.PSoC Creatorの生成するHexからアプリケーションチェックサムを算出する方法について
アプリケーションチェックサム値がどのようなルールに基づいて計算されるのか、
情報を見つけられませんでした。
・情報を公開していただく事は可能でしょうか?
(例えば、Hex先頭からBootloader領域(サイズ既知)を除いて計算がされるなどの
ルールが存在しますか?)

0 Likes
1 Solution
Anonymous
Not applicable

Hi Yamashita-san,

Please find my answers to your queries below:

回答1.コマンドは内部的にBootloader_ValidateBootloadable()関数を呼び出します。この関数の機能としてはアプリケーションイメージのチェックサムを計算し、メタデータセクションのBootloadable Application Checksumフィールドに格納されているチェックサム値と比較することによって、Bootloadableアプリケーションの検証を実行します。

Answer 1. The command internally calls the function Bootloader_ValidateBootloadable().What this function do is Performs the Bootloadable application validation by calculating the application image checksum and comparing it with the checksum value stored in the Bootloadable Application Checksum field of the metadata section.

回答2.   チェックサムは更新されません。 メタデータのチェックサムは、PSoC Creatorによって.cyacdファイルの一部として生成されます。 ブートローダブルアプリケーションを変更すると、メタデータのチェックサムが.cyacdファイル内で変更されます。 更新されたアプリケーションをブートロードすると、チェックサムを含むメタデータ全体が変更されます。 基本的に、メタデータのチェックサム値は、ブートロード操作があるときだけ変更されます。

Answer 2. Checksum will not be updated at all. The checksum at the metadata is generated as a part of .cyacd file by PSoC Creator. If you make changes in the bootloadable application , then the checksum at the metadata will change in the .cyacd file. Now when you bootload this new application, then whole metadata including checksum would change. So essentially the checksum value at the metadata changes only when there is a bootload operation.

回答3.   Hexファイルからチェックサムを直接計算する簡単な方法はありません。 PSoCがチェックサムをどのように計算しているかを理解するには、関数Bootloader_ValidateBootloadable()をご参照してください。 Hexファイルのデータに同じ手順を実行し、チェックサムを計算することができます。

Answer 3. There is no easy way to directly calculate the checksum from hex file. You can have a look at the function Bootloader_ValidateBootloadable() to understand how PSoC is calculating checksum. You can follow same steps on the appropriate data in the hex file and calculate checksum.

Thanks,

Nada

View solution in original post

0 Likes
6 Replies
Anonymous
Not applicable

Hi Yamashita-san,

Please find my answers to your queries below:

回答1.コマンドは内部的にBootloader_ValidateBootloadable()関数を呼び出します。この関数の機能としてはアプリケーションイメージのチェックサムを計算し、メタデータセクションのBootloadable Application Checksumフィールドに格納されているチェックサム値と比較することによって、Bootloadableアプリケーションの検証を実行します。

Answer 1. The command internally calls the function Bootloader_ValidateBootloadable().What this function do is Performs the Bootloadable application validation by calculating the application image checksum and comparing it with the checksum value stored in the Bootloadable Application Checksum field of the metadata section.

回答2.   チェックサムは更新されません。 メタデータのチェックサムは、PSoC Creatorによって.cyacdファイルの一部として生成されます。 ブートローダブルアプリケーションを変更すると、メタデータのチェックサムが.cyacdファイル内で変更されます。 更新されたアプリケーションをブートロードすると、チェックサムを含むメタデータ全体が変更されます。 基本的に、メタデータのチェックサム値は、ブートロード操作があるときだけ変更されます。

Answer 2. Checksum will not be updated at all. The checksum at the metadata is generated as a part of .cyacd file by PSoC Creator. If you make changes in the bootloadable application , then the checksum at the metadata will change in the .cyacd file. Now when you bootload this new application, then whole metadata including checksum would change. So essentially the checksum value at the metadata changes only when there is a bootload operation.

回答3.   Hexファイルからチェックサムを直接計算する簡単な方法はありません。 PSoCがチェックサムをどのように計算しているかを理解するには、関数Bootloader_ValidateBootloadable()をご参照してください。 Hexファイルのデータに同じ手順を実行し、チェックサムを計算することができます。

Answer 3. There is no easy way to directly calculate the checksum from hex file. You can have a look at the function Bootloader_ValidateBootloadable() to understand how PSoC is calculating checksum. You can follow same steps on the appropriate data in the hex file and calculate checksum.

Thanks,

Nada

0 Likes

回答ありがとうございます。

回答1について:
すなわち、チェックサムの比較は『メタデータセクションのBootloadable Application Checksumフィールドに
格納されているチェックサム値』と『Bootloader_ValidateBootloadable()関数でその都度計算した値』を
比較していると考えてよろしいでしょうあか?

回答2について:
理解しました。

回答3について:
チェックサムの計算方法に関する情報をCDC上で発見しました。
https://community.cypress.com/docs/DOC-10562

内容を整理すると、下記の認識でよろしいでしょうか?
・チェックサム算出方法は2種類(Basic Summation, CRC-16-CCITT)
・チェックサムの算出はData Recordの1byteチェックサム以外の全バイトを使用する(2種の方法どちらも)

0 Likes
Anonymous
Not applicable

お世話になっております。

回答1:

はい、ご理解の通りです。

回答3:

ご参照いただいたKBAは、Rowチェックサムの計算方法について記載されていますが、

アプリケーションチェックサムとは異なります。

よろしくお願いいたします。

Nada

0 Likes

早速の返信、ありがとうございます。

では、アプリケーションチェックサムの計算方法は、

"関数Bootloader_ValidateBootloadable()をご参照してください。"

が回答と考えてよろしいでしょうか?

(すなわち、詳細は非公開という認識で正しいでしょうか)

0 Likes
Anonymous
Not applicable

はい、ご認識の通りです。

よろしくお願いいたします。

Nada

0 Likes

迅速な回答、ありがとうございました。

すべて理解しました。

0 Likes