- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dear supporter
I want to translate the following KBA. Please confirm to my work.
Configuring the PSoC 6 MCU Startup Time from Reset - KBA232330
Regards,
Nino
Solved! Go to Solution.
- Labels:
-
PSoC 6
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dear Jenna
The following shows the translation in Japanese for targeted KBA.
Please confirm and double check.
Regards,
Nino
------------------------------------------------------------------------------
リセットからのPSoC 6 MCUのスタートアップ時間の設定 – KBA232330
Version: **
リセット後、最初にブートコードが実行され、以下の動作シーケンスを行います。
- 任意のハードウェア固有の初期設定コードを実行します。
- ユーザーflashのTOC2(Table of Contents)が有効かどうかを確認します。
- App0リセットハンドラーを入手します。
- SWD/JTAGピンを設定します。
- 実行を一定時間遅らせます(Wait Window / Listen Window)
- ユーザーアプリケーションを起動します。
ブートコードに関する詳細は、PSoC 6 Architecture TRMの「ブートコード」の章を参照してください。
リセット動作のタイミングダイアグラムを以下に示します。
図1. セットアップタイミングダイアグラム(PSoC 6 Programming Specificationsを参照)
このように、全体のスタートアップ時間は tstartup = tlite_up + tboot + tlisten
以下の表は、様々な時間ラベルと、その期間に実行した値および動作を示しています。(これらの値に関してはPSoC 6 Programming Specificationを参照してください。):
名前 |
時間ラベル |
値 |
概要 |
ライトアップ時間 |
tlite_up |
最大250 µs |
リセットリリースからCPUがブートコードを実行し始めるまでの時間 |
ブートアップ時間 |
tboot |
0.7 – 600 ms |
手順1から4までのブートコードによって実行される動作に掛かる時間 |
Listen Window / Wait time |
tlisten |
20 ms (0 ~ 100msの間でばらつきます) |
Listen windowのデフォルト値は20 msです。(ブートコードの手順5) プログラマーを接続してプログラミングモードに入るのに使用します。MCUは、ホストがSWJコマンドの正しいシーケンスを送信するのをListenします。 |
リセット後、アプリケーションの開始にどれぐらいかかるかを確認するために、CM0+アプリケーションでピンをトグルさせる簡単なアプリケーションを作れます。これは、リセットからユーザーアプリケーションを実行するのに掛かるトータル時間のスコープショットです。:
値はおよそ21msです(値は変動します)。このスタートアップ時間は、リセット後にデバイスが迅速に応答することを求められるアプリケーションでは適さないかもしれません。
スタートアップ時間が21ms前後なのは何故ですか?
多くに時間がListen window(~20ms)によることを確認できます。
PSoC 6 MCUでは、Listen windowはTOC2(Table of Contents)によって制御されています。それは、セキュリティイメージ、ユーザーアプリケーション、およびフラッシュブートパラメータなどのユーザーフラッシュにある特定の内容の場所についての情報を提供するデータ構造です。詳細なTOC2フォーマットは、以下に示します。
詳細は、PSoC 6 Architecture TRMの「ブートコード」の章を参照してください。:
Listen windowを継続するには、bit 2:4(LISTEN WINDOW)を修正します。
Listen windowを0msに設定、または他のビットを変更した場合(例えばSWJを無効にしたSWJ_PINS_CTL)、デバイスを再度プログラムする事はできない事に注意してください。LISTEN_WINDOWビットのみ変更するようにしてください。
Listen windowを1msに設定し、ほとんどのアプリケーションに適応させる必要があります。添付されたプロジェクトでは、TOC2構造は、FLASHBOOT_WAIT_1MSマクロを使用してLISTEN_WINDOW を1 ms (値= 2)に設定する事で修正されます。CY8CKIT-062-WIFI-BTキットは、テストに使用されました。
/** Flashboot parameters */
#define FLASHBOOT_FLAGS ((FLASHBOOT_VALIDATE_NO << TOC_FLAGS_APP_VERIFY_POS) \
| (FLASHBOOT_WAIT_1MS << TOC_FLAGS_DELAY_POS) \
| (FLASHBOOT_CLK_50MHZ << TOC_FLAGS_CLOCKS_POS))
/** TOC2 in SFlash */
CY_SECTION(".cy_toc_part2") __USED static const cy_stc_toc_t cy_toc2 =
{
.objSize = sizeof(cy_stc_toc_t) - sizeof(uint32_t), /**< Object Size (Bytes) excluding CRC */
.magicNum = 0x01211220, /**< TOC2 ID (magic number) */
.appAddr1 = 0x10000000u, /**< Application start address */
.tocFlags = FLASHBOOT_FLAGS, /**< Flashboot flags stored in TOC2 */
.crc = 0UL /**< CRC populated by cymcuelftool */
};
TOC2の値が変更される場合、TOC2を検証するために使用されるCRC値も、修正する必要があります。これは、PSoC Creatorでビルドを完了する時にCyMCUElfToolによって自動的に行われます。
ModusToolboxでは、以下のポスト-ビルドコマンドをMakefileに追加し、TOC2 CRCを生成するためにアプリケーションに署名します。
- ModusToolboxインストールディレクトリに、tools_2.xフォルダからcymcuelftool.exeをコピーし、アプリケーションディレクトリ内にペーストします(添付のプロジェクトではすでに完了しています)。
- ビルドを実行する前に、アプリケーションに絶対パスを指定するために、このコマンドを修正します。
POSTBUILD=./cymcuelftool.exe --sign "<path_to_application>/mtb-psoc6-reduce-startup-time/build/CY8CKIT-062-WIFI-BT/Debug/mtb-psoc6-reduce-startup-time.elf" --output "<path_to_application>/mtb-psoc6-reduce-startup-time/build/CY8CKIT-062-WIFI-BT/Debug/mtb-psoc6-reduce-startup-time.elf" --hex "<path_to_application>/mtb-psoc6-reduce-startup-time/build/CY8CKIT-062-WIFI-BT/mtb-psoc6-reduce-startup-time.hex"
添付のアーカイブには、ModusToolboxとPSoC Creatorプロジェクトの両方が含まれています。
- ModusToolbox project: CM4アプリケーションのピン10.1をトグルし、listen windowを1msに設定します。事前ビルドのCM0pイメージを使用します。
CM0pアプリケーションは最初に起動するので、dual-CPUアプリケーションテンプレートを使用し、CM0pアプリケーションのピンをトグルすることができます。これは、CM4アプリケーションがCM0pアプリケーションから開始される時に基づいて、CM0pの開始からCM4までの間の数μ秒の遅延が通常あるので、精度が向上します。
- PSoC Creator project: CM0pおよびCM4アプリケーションのピン10.0および10.1それぞれをトグルさせ、listen windowを1msに設定します。
ロジックアナライザを接続し、キットのリセットスイッチを押します。アプリケーションを実行するXRESからCM0pまでのスタートアップ時間が約2msになり、21msから大きな改善を確認できます。
ModusToolboxアプリケーションでは、リセットからCM4アプリケーションの開始までを読み取ることができます。
プロジェクトには、実験できる他のマクロが含まれています。不適切な値は、デバイスが動作しなくなる場合がある事に注意してください。
これは、マクロの異なる値のスコープショットです。:
FLASHBOOT_WAIT_20MS:
FLASHBOOT_WAIT_10MS:
Labels MCU & PSoC: PSoC 6 Other
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi, Nino-san
Confirm to work this KBA.
THanks.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dear Jenna
The following shows the translation in Japanese for targeted KBA.
Please confirm and double check.
Regards,
Nino
------------------------------------------------------------------------------
リセットからのPSoC 6 MCUのスタートアップ時間の設定 – KBA232330
Version: **
リセット後、最初にブートコードが実行され、以下の動作シーケンスを行います。
- 任意のハードウェア固有の初期設定コードを実行します。
- ユーザーflashのTOC2(Table of Contents)が有効かどうかを確認します。
- App0リセットハンドラーを入手します。
- SWD/JTAGピンを設定します。
- 実行を一定時間遅らせます(Wait Window / Listen Window)
- ユーザーアプリケーションを起動します。
ブートコードに関する詳細は、PSoC 6 Architecture TRMの「ブートコード」の章を参照してください。
リセット動作のタイミングダイアグラムを以下に示します。
図1. セットアップタイミングダイアグラム(PSoC 6 Programming Specificationsを参照)
このように、全体のスタートアップ時間は tstartup = tlite_up + tboot + tlisten
以下の表は、様々な時間ラベルと、その期間に実行した値および動作を示しています。(これらの値に関してはPSoC 6 Programming Specificationを参照してください。):
名前 |
時間ラベル |
値 |
概要 |
ライトアップ時間 |
tlite_up |
最大250 µs |
リセットリリースからCPUがブートコードを実行し始めるまでの時間 |
ブートアップ時間 |
tboot |
0.7 – 600 ms |
手順1から4までのブートコードによって実行される動作に掛かる時間 |
Listen Window / Wait time |
tlisten |
20 ms (0 ~ 100msの間でばらつきます) |
Listen windowのデフォルト値は20 msです。(ブートコードの手順5) プログラマーを接続してプログラミングモードに入るのに使用します。MCUは、ホストがSWJコマンドの正しいシーケンスを送信するのをListenします。 |
リセット後、アプリケーションの開始にどれぐらいかかるかを確認するために、CM0+アプリケーションでピンをトグルさせる簡単なアプリケーションを作れます。これは、リセットからユーザーアプリケーションを実行するのに掛かるトータル時間のスコープショットです。:
値はおよそ21msです(値は変動します)。このスタートアップ時間は、リセット後にデバイスが迅速に応答することを求められるアプリケーションでは適さないかもしれません。
スタートアップ時間が21ms前後なのは何故ですか?
多くに時間がListen window(~20ms)によることを確認できます。
PSoC 6 MCUでは、Listen windowはTOC2(Table of Contents)によって制御されています。それは、セキュリティイメージ、ユーザーアプリケーション、およびフラッシュブートパラメータなどのユーザーフラッシュにある特定の内容の場所についての情報を提供するデータ構造です。詳細なTOC2フォーマットは、以下に示します。
詳細は、PSoC 6 Architecture TRMの「ブートコード」の章を参照してください。:
Listen windowを継続するには、bit 2:4(LISTEN WINDOW)を修正します。
Listen windowを0msに設定、または他のビットを変更した場合(例えばSWJを無効にしたSWJ_PINS_CTL)、デバイスを再度プログラムする事はできない事に注意してください。LISTEN_WINDOWビットのみ変更するようにしてください。
Listen windowを1msに設定し、ほとんどのアプリケーションに適応させる必要があります。添付されたプロジェクトでは、TOC2構造は、FLASHBOOT_WAIT_1MSマクロを使用してLISTEN_WINDOW を1 ms (値= 2)に設定する事で修正されます。CY8CKIT-062-WIFI-BTキットは、テストに使用されました。
/** Flashboot parameters */
#define FLASHBOOT_FLAGS ((FLASHBOOT_VALIDATE_NO << TOC_FLAGS_APP_VERIFY_POS) \
| (FLASHBOOT_WAIT_1MS << TOC_FLAGS_DELAY_POS) \
| (FLASHBOOT_CLK_50MHZ << TOC_FLAGS_CLOCKS_POS))
/** TOC2 in SFlash */
CY_SECTION(".cy_toc_part2") __USED static const cy_stc_toc_t cy_toc2 =
{
.objSize = sizeof(cy_stc_toc_t) - sizeof(uint32_t), /**< Object Size (Bytes) excluding CRC */
.magicNum = 0x01211220, /**< TOC2 ID (magic number) */
.appAddr1 = 0x10000000u, /**< Application start address */
.tocFlags = FLASHBOOT_FLAGS, /**< Flashboot flags stored in TOC2 */
.crc = 0UL /**< CRC populated by cymcuelftool */
};
TOC2の値が変更される場合、TOC2を検証するために使用されるCRC値も、修正する必要があります。これは、PSoC Creatorでビルドを完了する時にCyMCUElfToolによって自動的に行われます。
ModusToolboxでは、以下のポスト-ビルドコマンドをMakefileに追加し、TOC2 CRCを生成するためにアプリケーションに署名します。
- ModusToolboxインストールディレクトリに、tools_2.xフォルダからcymcuelftool.exeをコピーし、アプリケーションディレクトリ内にペーストします(添付のプロジェクトではすでに完了しています)。
- ビルドを実行する前に、アプリケーションに絶対パスを指定するために、このコマンドを修正します。
POSTBUILD=./cymcuelftool.exe --sign "<path_to_application>/mtb-psoc6-reduce-startup-time/build/CY8CKIT-062-WIFI-BT/Debug/mtb-psoc6-reduce-startup-time.elf" --output "<path_to_application>/mtb-psoc6-reduce-startup-time/build/CY8CKIT-062-WIFI-BT/Debug/mtb-psoc6-reduce-startup-time.elf" --hex "<path_to_application>/mtb-psoc6-reduce-startup-time/build/CY8CKIT-062-WIFI-BT/mtb-psoc6-reduce-startup-time.hex"
添付のアーカイブには、ModusToolboxとPSoC Creatorプロジェクトの両方が含まれています。
- ModusToolbox project: CM4アプリケーションのピン10.1をトグルし、listen windowを1msに設定します。事前ビルドのCM0pイメージを使用します。
CM0pアプリケーションは最初に起動するので、dual-CPUアプリケーションテンプレートを使用し、CM0pアプリケーションのピンをトグルすることができます。これは、CM4アプリケーションがCM0pアプリケーションから開始される時に基づいて、CM0pの開始からCM4までの間の数μ秒の遅延が通常あるので、精度が向上します。
- PSoC Creator project: CM0pおよびCM4アプリケーションのピン10.0および10.1それぞれをトグルさせ、listen windowを1msに設定します。
ロジックアナライザを接続し、キットのリセットスイッチを押します。アプリケーションを実行するXRESからCM0pまでのスタートアップ時間が約2msになり、21msから大きな改善を確認できます。
ModusToolboxアプリケーションでは、リセットからCM4アプリケーションの開始までを読み取ることができます。
プロジェクトには、実験できる他のマクロが含まれています。不適切な値は、デバイスが動作しなくなる場合がある事に注意してください。
これは、マクロの異なる値のスコープショットです。:
FLASHBOOT_WAIT_20MS:
FLASHBOOT_WAIT_10MS:
Labels MCU & PSoC: PSoC 6 Other
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi, Nino-san
Confirm to receive this translation of KBA.
Thank you for your work, if there is any concerns, let you know.
Thanks.