Multi Source Translation Content

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

Multi Source Translation Content

ディスカッション

ソート順:
KSDK 1.1.0を搭載したFRDM-KL03Zボード上の低消費電力デモアプリケーション <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> このドキュメントでは、KDS 2.0.0 と最新バージョンの KSDK 1.1.0 で低電力デモ アプリケーション (FRDM-KL03Z ボード上の低電力デモ アプリケーション ) を作成する方法について説明します。KSDK 1.1.0インプリメンテーションには、低消費電力デモ・アプリケーションの設計をより複雑にする新機能があります。 このドキュメントでは、次の低電力デモ アプリケーションの作成について説明します。 アプリケーションが緑色のLEDの点滅を1回起動すると、RTCデバイスアラームが15秒(外部発振器32768Hzを使用)に設定されてCPUがウェイクアップし、CPUはVLLS1モードになります(VLLS0モードは外部発振器では使用できません)。 CPU のウェイクアップは、次の方法で可能です。 - SW2ボタンを押すと、プロセッサがウェイクアップし、緑色のLEDが点滅し始めます(5回)。 - ピンPTB6をアースに5回短絡すると(ピンは8ピンヘッダーコネクタ(ピン番号4)にあり、たとえばボタンをピン番号4とアースに接続できます)、プロセッサがウェイクアップし、緑色のLEDが点滅し始めます(5回)。 - 選択したRTCタイムアウトが期限切れ(15秒)すると、アラーム割り込みによってプロセッサがウェイクアップされ、緑色のLEDが点滅し始めます(5回)。 アプリケーションが再度初期化され、VLLS1 モードからのリカバリーが実行されます。アラームは再び 15 秒に設定され、CPU は再び VLLS1 モードに入ります。 準備 まず、KDS 2.0.0 と KSDK 1.1.0をインストールする必要があります。手順については、ドキュメント「 KDS 2.0.0にKinetis SDK 1.1.0サポートをインストールする方法」を参照してください。 新規プロジェクト すべてのソフトウェアを適切にインストールして更新すると、低電力デモアプリケーションを作成する準備が整います。 新しいKinetis design Studioプロジェクトを作成します。 FRDM-KL03Zボードを選択します KSDK 1.1.0へのKinetis SDKパスを選択します。をクリックし、[Processor Expert] を選択します。 アプリケーションが作成され、[問題] ウィンドウに警告は報告されません。 しかし、別の問題があります。OSグループのfsl_os_abstractionコンポーネントがアプリケーションに追加され(KSDK 1.0.0にはありませんでした)、継承されたfsl_lptmr_halコンポーネントにLPTMRデバイスが割り当てられます。 この競合の唯一の解決策は、このコンポーネントを削除することです (低電力デモには OS は必要なく、単純なアプリケーションのみです)。ただし、このコンポーネントは fsl_clock_manager によって使用され、fsl_clock_managerは PinSettings コンポーネントによって使用されます。したがって、これらすべてのコンポーネント(fsl_os_abstraction、fsl_clock_manager、PinSettings)を削除する必要があります。 PinSettings がプロジェクトから削除されると、すべての信号名も削除されるため、CPU コンポーネントでピンを再度選択する必要があります。 PinSettings コンポーネントはInit_GPIO配線や電気的プロパティなどの GPIO ピンの設定を可能にするコンポーネントに置き換える必要があります。 Init_GPIOコンポーネントをプロジェクトに追加し、次のプロパティを設定します(詳細ビューに切り替えます)。 デバイスの選択 - GPIOB Settings/Clock GateをEnabledに設定します。 [Settings/Pin 0] グループを [Initialize] に設定し、このピン (LLWU_P4) の次のプロパティを選択します。 ピンの方向 – 入力 プル抵抗 – 有効 プル選択 - プルアップ [Settings/Pin 6] グループを [Initialize] に設定し、このピン (LPTMR_ALT3) の次のプロパティを選択します。 ピンの方向 – 入力 プル抵抗 – 有効 プル選択 - プルアップ Settings / Pin 11グループをInitializeに設定し、このピンの次のプロパティを選択します(PTB11 – GREEN LED)。 ピン方向 – 出力 出力値 – 1 Pin selection/routing/Pin 11をEnabledに設定します。ピン 11 グループが開いており、PTB11 がピン (GPIO 機能) として選択されています。 これらの設定には、選択したピンの配線のための初期化コードと、フリーダムボード上のRGB LEDの緑色LEDの駆動に使用されるPTB11のGPIO機能が提供されます。 また、新しいバージョンのGCCツールをインストールした場合は、リンカの設定を変更する必要があります (ドキュメント「 KDS 2.0.0にKinetis SDK 1.1.0サポートをインストールする方法 - Kinetis Lファミリの追加手順」の章を参照) プロジェクトのコンテキスト メニューを開き、[プロパティ] 項目を選択し、C/C++ ビルド/設定の [ツール設定] タブの [Cross ARM C++ Linker/Miscellaneous] で [その他のリンカー フラグ] 設定を "-specs=nano.specs -specs=nosys.specs" に変更します。 Tip: コンパイルされたコードとコードサイズの詳細を知りたい場合は、次のオプションを使用して拡張リストファイルを作成し、次の ツールチェーン タブでコードサイズ情報を印刷できます。 Processor Expertコードを生成し、エラーや警告なしにアプリケーションのビルドを処理できます。 ビルドが完了すると、コンソールウィンドウに次の情報が表示されます。 '呼び出し: Cross ARM GNU Create Listing' arm-none-eabi-objdump --source --all-headers --demangle --line-numbers --wide "低電力デモ KL03.elf" > "低電力デモ KL03.lst" 「完成した建物:低電力デモKL03.lst」 ' ' 「呼び出し:クロスARM GNU印刷サイズ」 arm-none-eabi-size --format=berkeley "低電力デモKL03.elf" テキストデータ BSS DEC HEX ファイル名 1480 108 876 2464 9a0低電力デモKL03.elf 「完成した建物:低電力デモKL03.siz」 ' ' 注記: すべての SDK コンポーネントが削除されているため、メモリ フットプリントが非常に小さいことがわかります。 ピンの配線 ピンの配線は、プロジェクト内のInit_GPIOおよびその他のコンポーネントによって提供されます。次のピンが使用されます。 SW2 - ADC0_SE9/PTB0/IRQ_5/LLWU_P4/EXTRG_IN/SPI0_SCK/I2C0_SCL – ボード上の SW2 ボタンの入力ピン (LLWU ウェイクアップ ピン) GPIOピン– PTB6 / IRQ_2 / LPTMR0_ALT3 / TPM1_CH1 / TPM1_CLKIN1 – LPTMRデバイスの入力ピン LED_GREEN - PTB11/TPM0_CH0/SPI0_MISO - ボード上のRGB LEDの緑色LEDを駆動する出力ピン Processor Expert コンポーネントの追加 これで、低電力デモアプリケーションのすべてのコンポーネントを追加できます。 GPIOピンを制御するfsl_gpio_hal LLWUデバイスを制御するためのInit_LLWUおよびfsl_llwu_halコンポーネント RTCデバイスを制御するためのInit_SRTCとfsl_rtc_hal LPTMRデバイスの制御Init_LPTMRとfsl_lptmr_hal SMC(システムモードコントローラー)デバイスを制御するfsl_smc_hal CPUデバイス 外部発振器32768Hzを使用し、Very Low Leakage Stopモードを許可するようにデバイスを構成する必要があります。そこで、CPU のコンポーネントインスペクターで次のプロパティを設定します (アドバンスビューに切り替えます)。 Clock settings / Clock Sources / System oscillator 0がEnabledになっていることを確認し、EnableinstopをEnabledに設定します。 クロックソース、クロックピン、およびクロック周波数は、FRDM-KL03Zボードにプリセットされています Clock configuration/Clock Configuration 0 に移動し、次のように設定します。 内部リファレンスクロック/2MHzまでの低速IRC周波数 (デモアプリケーションには十分であり、消費電力も削減します)。 MCGライト設定/MCGモードをLIRC_2Mに設定 非常に低電力モード を有効 にします(VLLS1モードは点滅した後に入るため、 VLPモードエントリ の設定は ユーザー のままにします。VLLS1モードに入るためのコードを書きます) システムクロック/コアクロックを0.5Mhzに設定 システムクロック/バスクロック を 0.5Mhzに設定(これにより、非常に低いリークストップモードに入ることができます) 低電力モードの設定/分離の確認を [許可されていない値] に設定します (ユーザー コードで行います) GPIOピン fsl_gpio_halコンポーネントのコンポーネントインスペクターを開き、 詳細 ビューに切り替えて、次のプロパティを設定します。 デバイスの選択 - GPIOB LLWU(Low-Leakage Wakeup unit)デバイス Init_LLWU のコンポーネントインスペクターを開き、 詳細 ビューに切り替えて、次のプロパティを設定します。 Settings / External Source / Pin 4をAny edge valueに設定します(SW2ボタンに接続されているこのピンを使用します) Pins/Pin 4 を Enabled に設定し、下の項目で Pin ADC0_SE9/PTB0/IRQ_5/LLWU_P4/EXTRG_IN/SPI0_SCK/I2C0_SCL を選択します リセット後の初期化/使用の値を no に設定します LLWUを使用してCPUをウェイクアップし、割り込みは必要ありません。 RTC(リアルタイムクロック)デバイス Init_SRTC のコンポーネントインスペクターを開き、 詳細 ビューに切り替えて、次のプロパティを設定します。 設定/クロックゲートを有効に設定します 設定/オシレーター設定/オシレーターの状態を有効に設定します(停止モードでも外部オシレーターを有効にします) 設定/時刻設定/アラーム時間[s]を15 に設定します(VLLS1モードからウェイクアップするまでに15秒のタイムアウト) 割り込み/RTC割り込み/割り込み要求を有効に設定します 割り込み/RTC割り込み/タイムオーバーフロー割り込みを無効に設定する 割り込み/RTC割り込み/時間無効割り込みを無効に設定 Initialization/Time counter を Enabled に設定します。 リセット後の初期化/使用の値を no に設定します LPTMR(Low-Power Timer)デバイス Init_LPTMR のコンポーネントインスペクターを開き、 詳細 ビューに切り替えて、次のプロパティを設定します。 設定/クロックゲートを有効に設定します 設定/クロック設定/クロック選択を内部1kHz LPOに設定します(このクロックソースはVLLS1モードで有効になります) 設定/クロック設定/プリスケール値/グリッチフィルターをプリスケーラー/64に設定します。グリッチフィルター32(パルスの生成に使用される接続されたボタンのグリッチを排除します) [Settings/Compare value] を 4 に設定します (LPTMR 割り込みは、比較値がカウンタと等しく、カウンタ値が増加すると、つまり、入力ピンの 5 パルスが LPTMR 割り込みを呼び出すときに呼び出されます) 設定/タイマーモードをパルスカウンターに設定します(タイマーを使用して入力ピン3の外部パルスをカウントします) Set Settings/Pin SelectをInput 3に設定します。 Settings/Pin polarityをActive Lowに設定 Pins/Input pin 3をEnabledに設定し、Pin 3の項目でPTB6/IRQ_2/LPTMR0_ALT3/TPM1_CH1、TPM_CLKIN1を選択します。 割り込み/割り込み要求を有効に設定します 割り込み/タイマー割り込みを有効に設定します(タイマー割り込みを使用して、入力3ピンで5パルス後にCPUをVLLS1モードからウェイクアップします) 「Initialization/Timer enable」を「yes」に設定します。 リセット後の初期化/使用の値を no に設定します Processor Expertコンポーネントの設計時設定が完了し、アプリケーションコードを作成する準備が整いました。 コードを生成してアプリケーションをビルドすると、エラーや警告は発生しません。Processor Expert プロジェクトは、次のようになります。 アプリケーション・コード コンポーネント設定では、RTC割り込みとLPTMR割り込みの2つの割り込みを有効にしました。したがって、これらの割り込みサービスルーチンを書く必要があります。たとえば、RTC.hファイルでは、RTC_IRQHandler割り込みルーチンの宣言を見つけることができます。したがって、宣言を使用して、main.c にルーチンの定義を書き込むことができますプログラムモジュール: #define RTC_ALARM_TIMEOUT_SEC 15 /* RTC割り込みサービスルーチン */ PE_ISR(RTC_IRQHandler) { if (RTC_HAL_HasAlarmOccured(RTC_BASE)) { 次のアラームを RTC_ALARM_TIMEOUT_SEC 秒で設定します (TAF フラグもクリアします)   RTC_HAL_SetAlarmReg(RTC_BASE,RTC_HAL_GetAlarmReg(RTC_BASE) + RTC_ALARM_TIMEOUT_SEC); } if (RTC_HAL_IsTimeInvalid(RTC_BASE)) {        /* カウンターの停止とTSR レジスタ の設定によりTIF(Time Invalid Flag)をクリア */ RTC_HAL_EnableCounter(RTC_BASE, false);        RTC_HAL_SetSecsReg(RTC_BASE, 0);        /* イネーブルカウンター */ RTC_HAL_EnableCounter(RTC_BASE, 真); } } この割り込みルーチンは、実行モードで緑色のLEDが点滅しているときにアラーム割り込みが呼び出された場合(フラグをクリアして新しいアラーム時間を設定)にアラーム割り込みを処理し、VLLS1モードからの回復中に発生する可能性のある無効な時間割り込みも処理します。RTCモジュールは少し特殊で、すべての実行、待機、および停止モードで動作し、リセットによりTime Invalid割り込みビット(TIIEビットRTC_IER)が有効になり、リセット時にTime Invalid割り込み(PORまたはソフトウェアリセット)が呼び出されることに注意してください。したがって、Invalid Timeフラグをクリアしないと、アプリケーションは無限サイクルでRTC割り込みを呼び出し続け、アプリケーションはまったく機能しません(これは、簡単な解決策がない問題の1つでもあります)。RTC割り込みルーチン(上記で定義)は、アプリケーションで必要なすべてのケースを適切に処理します。 RTC割り込みは、常に低リークストップモードからのウェイクアップを引き起こすことに注意してください(KL03派生物のLLWUでは設定できません–チップ固有のLLWU情報を参照)。また、レジスタのリセット後の値が0x01 RTC_SR(TIFフラグがセットされている)です。そのため、RTCが初期化されず、低リークストップモードに入ると、RTCモジュールの割り込みフラグ(TIFフラグがセットされる)により、CPUは直ちにウェイクアップします。つまり低リーク停止モードに入る前に、常にRTCモジュールを適切に初期化し、すべてのフラグをクリアする必要があります。 また、VLSS1 モードからのウェイクアップに使用される LPTMR デバイスのサービス ルーチンも必要です。これは、LPTMR 割り込みフラグをクリアするだけの単純な割り込みサービス ルーチンです。 /* LPTMR 割り込みサービスルーチン */ PE_ISR(LPTMR0_IRQHandler) { /* LPTMR割り込みフラグをクリアする */   LPTMR_HAL_ClearIntFlag(LPTMR0_BASE); } これで、main 関数を記述できます。点滅するための一時的なカウント変数が必要になります。 /* ここにローカル変数の定義を記入してください */ 揮発性uint32_t i; 待機用 uint8_t blink_count; また、緑色のLEDを駆動するピンPTB11の定義も必要です /* PTB11 - LEDグリーンピン */ #define LED_GREEN_PIN 11 また、点滅しているLEDの数: #define LED_BLINK 5 PE_low_level_init() でデバイスを初期化した後、リセットの理由を確認する必要があります (POR リセットまたは VLLS1 リカバリ)。したがって、次のコードを書くことができます。 /* ここにコードを書きます */   if (RCM_SRS0 == 0x01) { /* リセットの理由をテストします - VLLSでの ウェイクアップ */     if(PMC->REGSC &  PMC_REGSC_ACKISO_MASK) {       PMC->REGSC |= PMC_REGSC_ACKISO_MASK; /* VLLSx recovery */     }     for (blink_count = 0; blink_count < LED_BLINK; blink_count++) {        緑色のLEDが点滅 GPIO_HAL_ClearPinOutput(GPIOB_BASE,LED_GREEN_PIN);        for (i = 0; i<40000; i++);     GPIO_HAL_SetPinOutput(GPIOB_BASE,LED_GREEN_PIN);         for (i = 0; i<40000; i++);   }     次のアラームを「RTC_ALARM_TIMEOUT_SEC」秒で設定します(TAFフラグもクリアします)     RTC_HAL_SetAlarmReg(RTC_BASE,RTC_HAL_GetAlarmReg(RTC_BASE)+RTC_ALARM_TIMEOUT_SEC);   } else {       /* パワーオンリセット */       / *緑色のLEDをオンにします* / GPIO_HAL_ClearPinOutput(GPIOB_BASE,LED_GREEN_PIN);        /* しばらく待つ */        for (i = 0; i<40000; i++);        / *緑色のLEDをオフに切り替えます* /     GPIO_HAL_SetPinOutput(GPIOB_BASE,LED_GREEN_PIN);   } VLLS1 リカバリの場合、PMC_REGSC レジスタのピン絶縁 ACKISO ビットを認識します。このビットをクリアすると、すべてのピンが通常の動作モードになります。次に、緑色のLEDが5回点滅します(これはデモ目的の単純なコードにすぎません。必要に応じて、Init_TPMコンポーネントを使用してTPMxデバイスで点滅するための独自のより洗練されたコードを書くことができます)。 PORリセットの場合、緑色のLEDが1回点滅します。 リセット/ワクアップ状態がアプリケーションコードによって提供されると、VLLS1モードに入ることができます。最初のステップとして、CPU を VLLS1 モードからウェイクアップするための割り込みフラグが設定されていないことを確認する必要があるため、LLWU および SW2 ピン (PTB0) 割り込みフラグをクリアし、enter_vllsx機能を使用して VLLS1 モードに入ります。 /* 選択したピン 4 - PTB0 の LLWU フラグをクリア */ LLWU_F1 |= LLWU_F1_WUF4_MASK; /* SW2 ピンの割り込みフラグをクリア - PTB0 */ PORTB_PCR0 |= PORT_PCR_ISF_MASK; VLLS3を入力してください enter_vllsx((smc_por_option_t)NULL,kSmcStopSub3); VLLS0 に入る - VLLS0 モードでは外部水晶クロック ソースが機能しない ため 、RTC と LPTMR が機能しない enter_vllsx(kSmcPorEnabled, kSmcStopSub0); VLLS1を入力してください enter_vllsx((smc_por_option_t)NULL,kSmcStopSub1); 緑色のLEDをオンに切り替えます-VLLSxモードに入っていないときはエラー状態です GPIO_HAL_ClearPinOutput(GPIOB_BASE,LED_GREEN_PIN); VLLS1モードが入っていない場合(エラー状態の表示)に緑色のLEDをオンにするためのコードもあります。 enter_vllsx関数は次のように定義されます (デモ KSDK デモ例の既存の関数を使用します)。 /* * VLLSxモードエントリー ルーチン */ スタティックボイドenter_vllsx(smc_por_option_t PORPOValue, smc_stop_submode_t VLLSValue) {        smc_power_mode_config_t smcConfig;        /* 電源モードを特定のVLLSxモードに設定する */ smcConfig です。porOption = true;        smcConfig.porOptionValue = (smc_por_option_t) PORPOValue; smcConfig です。powerModeName = kPowerModeVlls;        smcConfig.stopSubMode = (smc_stop_submode_t) VLLSValue;        SMC_HAL_SetMode(SMC_BASE, &smcConfig); } これは、低電力デモアプリケーションに必要なすべてのコードです。これで、アプリケーションをビルドして実行できます。 '呼び出し: Cross ARM GNU Create Listing' arm-none-eabi-objdump --source --all-headers --demangle --line-numbers --wide "低電力デモ KL03.elf" > "低電力デモ KL03.lst" 「完成した建物:低電力デモKL03.lst」 ' ' 「呼び出し:クロスARM GNU印刷サイズ」 arm-none-eabi-size --format=berkeley "低電力デモKL03.elf" テキストデータ BSS DEC HEX ファイル名 7828 112 896 8836 2284低電力デモKL03.elf 「完成した建物:低電力デモKL03.siz」 ' ' 注記: アプリケーションでSDK関数が使用されているため、コードサイズが大きくなっていることがわかります。 これは、標準ライブラリを使用してエラーを報告できる assert 関数の使用によるところもあります。この機能が不要で、コンパクトなコード(消費電力を減らすため)だけが必要な場合は、次の方法で実行できます。 Low Power デモ KL03 アプリケーションの [プロパティ] を開き、[C/C++Build/Settings] を選択し、[Tool Settings] タブで [Cross ARM C Compiler/Preprocessor] を選択し、[ Defined symbols ] リストに NDEBUG シンボルを追加します。 アプリケーションを再びクリーンにしてビルドすると、コードサイズは縮小されます。 「呼び出し:クロスARM GNU印刷サイズ」 arm-none-eabi-size --format=berkeley "低電力デモKL03.elf" テキストデータ BSS DEC HEX ファイル名 3192 108 876 4176 1050低電力デモKL03.elf 「完成した建物:低電力デモKL03.siz」 ' ' 08:20:28 ビルド完了 (15s.886ms を要) また、アプリケーションのコードサイズを縮小するための追加の手順もあります。GNU Cツールの最適化レベルを設定できます。 低電力デモ KL03 アプリケーションの [プロパティ] を開き、[C/C++Build/Settings] を選択し、[Tool Settings] タブで [Optimization] を選択し、[Optimization Level] を要求された値に設定します (一部のレベルはデバッグに適していないことに注意してください)。 デバッグ アプリケーションには、デフォルトで事前定義されたデバッグ接続が含まれています。.Project Explorer ウィンドウでプロジェクトのコンテキスト メニューを開き、[Debug As/Debug Configurations...] を選択すると、[デバッグ構成] ウィンドウが開き、すべての事前定義済みデバッグ構成 (OpenOCD、PE Micro、Segger J-link) を選択して構成できます。デフォルト設定は、Freedomボード(OpenSDAインターフェース– j-linkまたはPE Micro)で簡単に使用できます。 適切なデバッグ接続を選択し、アプリケーションのデバッグのためにデバッグをクリックするだけです。 [Debug Configuration] ウィンドウで [GDB SEGGER J-Link Debugger] グループを開き、[Low power demo KL03 Debug] コンフィギュレーションを選択します。[デバッガー]タブを見ると、MKL03Z32xxx4デバイス名がすでに入力されています。セミホスティングとSWOのコンソールの割り当てのチェックを外します(SWOはOpenSDA SEGGER J-linkではサポートされていません)。 [スタートアップ]タブに移動し、[SWOを有効にする]オプションのチェックを外します(SWOはOpenSDA SEGGER J-linkではサポートされていません)。 [Apply and Debug] ボタンをクリックすると、デバッガが起動します (FRDM-KL03Z ボードをワークステーションに接続する必要があります)。 これで、アプリケーションを起動し( [再開 ]ボタンをクリック)、機能を確認できます。VLLS1 モード エントリのため、デバッガーが切断されます。ただし、アプリケーションは実行され、使用できます。 LPTMRパルスを生成するためのボタンを接続する場合は、ボタンの1つのピンを8ピンコネクタJ1のピン#4のPTB6に接続し、ボタンの2番目のピンをGNDの10ピンコネクタJ2のピン#7に接続できます。 このデモ・アプリケーションは、実際の低消費電力アプリケーションの出発点として使用できます。それがあなたを助け、プロセッサエキスパートでの最初の低電力アプリケーションの実装の時間を節約することを願っています。 VLLS1モードでCPUの消費電力を測定することもできます。これは、FRDM-KL03ユーザーガイドに記載されています。R27とR28をはんだ付けし、ヘッダーピンをボードのJ10位置にはんだ付けするだけです。ここで J10 のジャンパーを使用して CPU の電源を接続する必要があり、ジャンパーを取り外すと、これらの 2 つのピンを使用して CPU のエネルギー消費量を測定できます (マルチメーターなど)
記事全体を表示
S32K3の低消費電力管理ANとデモ @S32kUser  この S32K3 ファミリは、シングルコア、デュアルコア、およびロックステップコア構成を含む、高い拡張性を持つMCUです。一方、NXPは豊富なエコソフトウェアを提供しています。たとえば、NXPは設定、構成、コンパイル、デバッグに使用できる強力なIDEであるS32 Design Studio(S32DS)を提供しています。そして、 RTD (リアルタイム・ドライバ)はソフトウェア開発パッケージであり、多くのデフォルトのサンプルプロジェクトが含まれています。 車載製品はバッテリー駆動であるため、常に低消費電力管理が必要です。K3の電力管理はK1とは大きく異なります。自動車業界のお客様がアプリケーションや製品の市場投入までの時間を短縮できるように、S32K3xxファミリMCUの電源管理機能に関するワンストップのアプリケーション情報を提供します。 さらに、このページのソフトウェアパッケージには、 ウェイクアップユースケースの追加プロジェクト例が含まれています。このページに記載されているウェイクアップのサンプルプロジェクトはすべてRTD/HLDに基づいて開発されており、設定ツールはEB tresos StudioおよびS32 CTです。ハードウェアは S32K344 WhiteboardとS32K3X4EVB-Q172に基づいています。ソフトウェアはRTD V2.0とS32DS3.4に基づいています。 ウェイクアップサンプルのパッケージについては、非常に多くのウェイクアップの例が提供されています。 以下の画像は、パッケージの内容をまとめたものです。 サンプルプロジェクト: アプリケーション・ノート: ご不明な点がございましたら、当方までご連絡ください。 Re: S32K3の低消費電力管理のANとデモ なるほど、それが必要だったですね。例について他にも質問があります。  CANとPITの例でテストしていると、PITの例が一貫して動作しません。スタンバイ状態になると電流が下がるのを確認していますし、時々(電源オフ/オンのサイクルごとに)PITでCPUを起動し、電流が増加するのも確認できます。これが2回だけサイクルしてから低め電流で安定します。スタンバイに入る時とスタンバイを終了する時のいずれかでハードフォールトになっていると思うのですが、低消費電力モードで再接続した後JLINKに表示される内容は信じがたいです。 どこを探せば一貫して起動しない理由が分かりますか?   変更しました  Re: S32K3の低消費電力管理のANとデモ こんにちは、Dtyreeさん 時計設定を追加するには、以下の方法をご参照ください。 以下は、例の説明とその設定方法です。 Re: S32K3の低消費電力管理のANとデモ S32k322を起動ビルドできるようにこれをビルドする際に問題が発生しています。S32K344_FlexCAN_Wkup_S32DS_3_4_RTD_LLD_2_0 プロジェクトに基づいてS32K322用の新しいプロジェクトを作成しました。 clock_ip_config.c のクロックテーブルに問題があります。only : “const Clock_Ip_ClockConfigType Clock_Ip_aClockConfig[1U]”に含まれているクロックプロファイルは1つだけです。ClockYaml.txtにもエントリが1つしかありません。  プラットフォームPOWERドライバはリファレンスと同じ構成ですが、2つの追加テーブルは存在しないようです。 さらに、ファストスタンバイのテーブルがPOWERドライバで設定されていても、リファレンスプラットフォームコードには存在しません。Clock_Ip_aClockConfig[2U]またはClockYaml.txtにはclock_Cfg_0とclock_Cfg_1しかありません。現在のs32kデザインスタジオでビルドされたまま実行すると、Wkup_EnterStandby()でクラッシュします。 これらのエントリはどのように作成されていますか?何か手順が足りないのでしょうか?例「S32K3xx Low Power Management.pdf」のドキュメントでは、この点について説明されていません。  POWERドライバの「s32kドライバーGUI」で定義されている場合、これを手動でコーディングする必要がありますか? Re: S32K3の低消費電力管理のANとデモ Hi, ありがとうございます。しかし、プロジェクトをデバッグしようとすると、大きな問題が発生します。問題は、プロジェクトをデバッグすると、メモリフラッシュで起動するはずなのに、プロジェクトがSRAMで開始され、何が問題なのかわからないことです。とても心配していますので、助けていただけませんか。 よろしくお願いいたします Re: S32K3の低消費電力管理のANとデモ S32K3X4EVB-Q172でテストするために、最新のアップデートを適用した現在のS32DSのバージョン3.5でANを実行しようとしましたが、以下のメッセージが表示されました。 更新されたバージョンはありますか? Re: S32K3の低消費電力管理のANとデモ S32K344_RTC_StandbyRAM_Wkup_S32DS_3_4_RTD_MCAL_2_0とS32K344_FlexCAN_Wkup_S32DS_3_4_RTD_MCAL_2_0をテストしました。パスをローカルのRTD2.0.0パスを変更して正常にビルドしましたが動作しませんでした。mcu_initを実行したらクラッシュしました。 プロジェクトには.sおよび.ldファイルがないため、RTDドライバのものを使用していると思いますが変更されましたね。 Re: S32K3の低消費電力管理のANとデモ これらのデモを参照する際の注意事項 「S32K344_GPIO_Wkup_S32DS_3_4_RTD_LLD_2_0」の場合 1. このデモを正しく動作させるために、PMCの設定を変更する必要がありました。 2.S32K3X4EVB-Q257 このデモのジャンパー設定。 J25を削除します J23-2 を J23-3 に接続 (3.3V) J24-2をTest+、J24-3をTest-に、回路計または直流電流計を接続します J30-3 は J375-2 に接続します テスト結果:スタンバイモードでの現在の消費電流は約60μAです。  
記事全体を表示
iMX8MのCPU周波数を下げる方法   一部のアプリケーションではCPU周波数を下げる必要がありますが、当社のBSPやデバイスに慣れていない方は設定の際にサポートが必要かもしれません。   この投稿では、iMX8MP、iMX8MN、iMX8MMで低周波数(100MHz、200MHz、400MHz、600MHz、800MHz、1000MHz)を設定するための構成を共有します。   注意:カーネル6.1.xxで動作します(最も古いBSPではテストされていません)   1- 低い周波数に適切なパラメータを設定するために、PLLドライバーを変更する必要があります。 修正するファイルは「clk-pll14xx.c」です。次の行を追加します:   https://github.com/nxp-imx/linux-imx/blob/770c5fe2c1d1529fae21b7043911cd50c6cf087e/drivers/clk/imx/clk-pll14xx.c#L57   static const struct imx_pll14xx_rate_table imx_pll1416x_tbl[] = { PLL_1416X_RATE(1800000000U, 225, 3, 0), PLL_1416X_RATE(1600000000U, 200, 3, 0), PLL_1416X_RATE(1500000000U, 375, 3, 1), PLL_1416X_RATE(1400000000U, 350, 3, 1), PLL_1416X_RATE(1200000000U, 300, 3, 1), PLL_1416X_RATE(1000000000U, 250, 3, 1), PLL_1416X_RATE(800000000U, 200, 3, 1), PLL_1416X_RATE(750000000U, 250, 2, 2), PLL_1416X_RATE(700000000U, 350, 3, 2), PLL_1416X_RATE(600000000U, 300, 3, 2), + PLL_1416X_RATE(400000000U, 200, 3, 2), + PLL_1416X_RATE(200000000U, 200, 3, 3), + PLL_1416X_RATE(100000000U, 200, 3, 4), };   2- pllドライバーを変更したら、使用するデバイスに応じてoppテーブルに値を追加するだけです。   2.1- iMX 8MPの場合:   https://github.com/nxp-imx/linux-imx/blob/lf-6.1.y/arch/arm64/boot/dts/freescale/imx8mp.dtsi         a53_opp_table: opp-table { compatible = "operating-points-v2"; opp-shared; + opp-100000000 { + opp-hz = /bits/ 64 <100000000>; + opp-microvolt = <850000>; + opp-supported-hw = <0x8a0>, <0x7>; + clock-latency-ns = <150000>; + opp-suspend; + }; + opp-200000000 { + opp-hz = /bits/ 64 <200000000>; + opp-microvolt = <850000>; + opp-supported-hw = <0x8a0>, <0x7>; + clock-latency-ns = <150000>; + opp-suspend; + }; + opp-400000000 { + opp-hz = /bits/ 64 <400000000>; + opp-microvolt = <850000>; + opp-supported-hw = <0x8a0>, <0x7>; + clock-latency-ns = <150000>; + opp-suspend; + }; + opp-600000000 { + opp-hz = /bits/ 64 <600000000>; + opp-microvolt = <850000>; + opp-supported-hw = <0x8a0>, <0x7>; + clock-latency-ns = <150000>; + opp-suspend; + }; + opp-800000000 { + opp-hz = /bits/ 64 <800000000>; + opp-microvolt = <850000>; + opp-supported-hw = <0x8a0>, <0x7>; + clock-latency-ns = <150000>; + opp-suspend; + }; + opp-1000000000 { + opp-hz = /bits/ 64 <1000000000>; + opp-microvolt = <850000>; + opp-supported-hw = <0x8a0>, <0x7>; + clock-latency-ns = <150000>; + opp-suspend; + }; opp-1200000000 { opp-hz = /bits/ 64 <1200000000>;   2.2 iMX8MMの場合:   https://github.com/nxp-imx/linux-imx/blob/lf-6.1.y/arch/arm64/boot/dts/freescale/imx8mm.dtsi     a53_opp_table: opp-table { compatible = "operating-points-v2"; opp-shared; + opp-100000000 { + opp-hz = /bits/ 64 <100000000>; + opp-microvolt = <850000>; + opp-supported-hw = <0xe>, <0x7>; + clock-latency-ns = <150000>; + opp-suspend; + }; + opp-200000000 { + opp-hz = /bits/ 64 <200000000>; + opp-microvolt = <850000>; + opp-supported-hw = <0xe>, <0x7>; + clock-latency-ns = <150000>; + opp-suspend; + }; + opp-400000000 { + opp-hz = /bits/ 64 <400000000>; + opp-microvolt = <850000>; + opp-supported-hw = <0xe>, <0x7>; + clock-latency-ns = <150000>; + opp-suspend; + }; + opp-600000000 { + opp-hz = /bits/ 64 <600000000>; + opp-microvolt = <850000>; + opp-supported-hw = <0xe>, <0x7>; + clock-latency-ns = <150000>; + opp-suspend; + }; + opp-800000000 { + opp-hz = /bits/ 64 <800000000>; + opp-microvolt = <850000>; + opp-supported-hw = <0xe>, <0x7>; + clock-latency-ns = <150000>; + opp-suspend; + }; + opp-1000000000 { + opp-hz = /bits/ 64 <1000000000>; + opp-microvolt = <850000>; + opp-supported-hw = <0xe>, <0x7>; + clock-latency-ns = <150000>; + opp-suspend; + }; opp-1200000000 { opp-hz = /bits/ 64 <1200000000>;   2.3- iMX8MNの場合:   https://github.com/nxp-imx/linux-imx/blob/lf-6.1.y/arch/arm64/boot/dts/freescale/imx8mn.dtsi   compatible = "operating-points-v2"; opp-shared; + opp-100000000 { + opp-hz = /bits/ 64 <100000000>; + opp-microvolt = <850000>; + opp-supported-hw = <0xb00>, <0x7>; + clock-latency-ns = <150000>; + opp-suspend; + }; + + opp-200000000 { + opp-hz = /bits/ 64 <200000000>; + opp-microvolt = <850000>; + opp-supported-hw = <0xb00>, <0x7>; + clock-latency-ns = <150000>; + opp-suspend; + }; + + opp-400000000 { + opp-hz = /bits/ 64 <400000000>; + opp-microvolt = <850000>; + opp-supported-hw = <0xb00>, <0x7>; + clock-latency-ns = <150000>; + opp-suspend; + }; + + opp-600000000 { + opp-hz = /bits/ 64 <600000000>; + opp-microvolt = <850000>; + opp-supported-hw = <0xb00>, <0x7>; + clock-latency-ns = <150000>; + opp-suspend; + }; + + opp-800000000 { + opp-hz = /bits/ 64 <800000000>; + opp-microvolt = <850000>; + opp-supported-hw = <0xb00>, <0x7>; + clock-latency-ns = <150000>; + opp-suspend; + }; + + opp-1000000000 { + opp-hz = /bits/ 64 <1000000000>; + opp-microvolt = <850000>; + opp-supported-hw = <0xb00>, <0x7>; + clock-latency-ns = <150000>; + opp-suspend; + }; + opp-1200000000 { opp-hz = /bits/ 64 <1200000000>; opp-microvolt = <850000>;   その後、Linuxでの変更点を記録してください。   これらのコマンドはシステムおよび現在の設定に関する情報を返します。   • カーネルは特定周波数のみに対応するように事前構成されています。現在サポートされている周波数一覧の 入手先: cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies   • 利用可能なスケーリングガバナーを取得するには: cat /sys/devices/system/cpu/*/cpufreq/scaling_available_governors   • 現在のCPU周波数を確認する: cat /sys/devices/system/cpu/*/cpufreq/cpuinfo_cur_freq   周波数は、ガバナーの設定に応じて表示されます。   ・最大周波数を確認するには: cat /sys/devices/system/cpu/*/cpufreq/cpuinfo_max_freq   ・最小周波数を確認するには: cat /sys/devices/system/cpu/*/cpufreq/cpuinfo_min_freq   一定CPU周波数を設定するコマンド:   • 最大周波数を使用する: echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor   • 現在の周波数を一定周波数として使用する: echo userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor   • 以下2つのコマンドは、スケーリング・ガバナーを指定の周波数に設定します(その周波数がサポートされている場合)。   その周波数がサポートされていない場合、サポートされている周波数で最も近いものが使用されます:   echo userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor echo > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed i.MX 8M | i.MX 8M Mini | i.MX 8M Nano Linux Re: iMX8MのCPU周波数を下げる方法 これは本当に有用で役立つ情報です。 同様の方法を使ってIMX8M CPUで800 MHz、1 GHz、1.5 GHzを有効化しました。 異なる周波数で動作させた場合、消費電力に変化はありましたか?私の方では変化していません。
記事全体を表示
GoKit WIFIアプリケーションとKL02 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 中国には「GoKit」と呼ばれる人気のWIFIプラットフォームがあります。このテストキットは、カスタマイズされたアプリケーションを実行するために使用できます。WIFI通信だけでなく、キットは他の機能もサポートしています。インターフェイスは、以下に記載されています。 GoKitインターフェース: FRDM-KL02を使用してこのキットと通信し、WIFI通信アプリケーションを実行しようとしています。ボード接続は以下のようにします。 このプラットフォームには 2 つの実行モードがあります。1つはAirLinkモード、もう1つは通常の実行モードです。AirLinkモードは、WIFI通信またはペアリングに使用されます。 AirLinkモードの手順に移動します。 FRDM-KL02の電源を入れます key1を長押しして、WIFIモジュールをリセットします。REDが点灯するまで待ちます。 キー2を短く押して構成モードに入り、WIFIモジュールのREDLEDが点滅するまで待ちます。 デモアプリを開き、「デバイスの追加」を選択し、SSIDパスワードを入力します。 構成の完了を待っています。 コマンド・フォーマット HOF:2バイト、値0xFFFF 長さ:2バイト Cmd:1byte SN:1byte フラグ:2バイト データ:Xbytes チェックサム:1バイト WIFIはデバイス情報を取得します MCUはWIFIを構成モードに通知します MCUリセットWIFI WIFIはMCUのステータスを通知します WIFIはリセットを求めます 不正コマンド 詳細なコードについては、参考のために別のスレッドを投稿します。 Kinetis Lシリーズ・マイクロコントローラ
記事全体を表示
S32K-フラッシュドライバイメージの作成方法。 「Flashドライバ」とは (以下の内容は、Klaus Emmertの「FLASH Bootloader User Manual Version 2.7」からの抜粋です) 「フラッシュ・ドライバ(実体はフラッシュ・アルゴリズム)は、フラッシュ関数を実行するためのハードウェア依存コードです。通常、フラッシュ・メモリのプログラミングをフラッシュから行うことはできません。そこで、フラッシュ・ドライバをRAMにダウンロードして実行することで、アプリケーションのプログラミングが可能になります。フラッシュ・アルゴリズムをRAMにダウンロードする利点は、プライマリ・ブートローダを再プログラムすることなくフラッシュ・アルゴリズムを更新できることです。ダウンロードが完了すると、アルゴリズムはRAMからクリアされ、アプリケーションの実行中にフラッシュ関数が誤って呼び出されるのを防ぎます。 特別なケースでは、フラッシュ・アルゴリズムはフラッシュ・メモリに保持されており、必要に応じてRAMにコピーされます。もちろん、この構成を使用した場合、フラッシュ・アルゴリズムの変更は不可能になります。さらに、これらの関数が誤って呼び出されることで、フラッシュ・メモリが意図せず消去される危険性があります。これを緩和するための対策としては、例えばXORなどの処理により、対応するプログラム・コードを暗号化することが考えられます」 デモについて - ソフトウェアは「S32 Design Studio for S32 Platform V3.4」を使用しており、SDKは「RTM 4.0.3」です。 - S32K142-EVBを基にしたハードウェア - 2つのデモが提供されています。1つは「フラッシュ・ドライバ」の作成用、もう1つはフラッシュ・ドライバのイメージのテスト用です。     ·「Flash_Driver_Source_Project」:このルーチンはドライバ・イメージの作成に使用されます。     ·「Flash_Driver_Source_Project_Test」:このルーチンはフラッシュ・ドライバ・イメージのテストに使用されます。   ·フラッシュ・ドライバのイメージ作成のプロセス 1. 新規プロジェクトを作成し、フラッシュ・コンポーネントを追加します。       提供されたデモを参照し、main.cファイルを修正します。 注1 main.cで関数インデックステーブルを定義 2. リンク・ファイルを修正します。 注2 修正後のS32K142_32_flash.ldファイル 注3 修正後のS32K142_32_flash.ldファイル 3. フラッシュの操作に必要な関数に「attribute」コマンドを追加します。 注4 関数に「attribute」をこのように追加       関数内で別の関数を参照している場合は、参照先の関数にも「attribute」を追加する必要があります。 4. プロジェクトをコンパイルし、xx.map ファイルを確認して、割り当てられたアドレス空間が正しいかどうかを確認してください。 注5 Flash_Driver_Source_Project.mapを確認してください 5. フラッシュ・ドライバを作成します。 注6 フラッシュ・イメージを作成 注7 画像フォーマットを選択 注8 フラッシュ・ドライバ・イメージを作成       「xx.s19」ファイルを新規作成し、0x1fffe000~0x1ffffffffの範囲のデータをこのファイルにコピーします。 注9 必要に応じてリンクの順序を変更       一部の関数が別のファイルに分散している場合は、リンクの順序を変えることで、関数アドレスの割り当てを変更できます。 フラッシュドライバイメージをテストするプロセス 1. フラッシュ・コンポーネントを追加せずに、新しいプロジェクトを作成します。 新しいプロジェクトを作成する必要がありますが、Flash コンポーネントを追加する必要はありません。 2. 前に示したのと同様にリンク・ファイルを修正します。 3. 提供されたデモを参照し、main.cファイルを修正します。 4. プロジェクトをコンパイルし、.mapファイルをチェックして、割り当てられた配列の位置のアドレス空間が正しいかどうかを確認します。 注 10 Function_TABLEがすでに正しい場所に配置されていることを確認してください 5.デバッグセクションに入り、準備したフラッシュドライバーイメージをインポートします。 注12 フラッシュ・モジュールを操作する前にフラッシュ・ドライバ・イメージをインポート 6. フラッシュ・ドライバが正常に動作するかどうかをテストします。 注13 テスト結果を確認してください こうして、フラッシュ・ドライバ・イメージの作成方法とテスト方法がわかりました。この方法は、フラッシュ操作に関連する関数の作成に限らず、他の関数にも同じように適用できます。ただし、そのようなシナリオを必要とするアプリケーションはほとんどありません。 回答: S32K-フラッシュ ドライバー イメージの作成方法。 こんにちは。ご指定の方法で設定しましたが、生成されたマップファイルのアドレスが間違っています。リンクファイルのコンパイル順序を変更するにはどうすればよいですか? Re: S32K-フラッシュドライバーイメージの作成方法。 新しいRTD 3.0.0に対応したS32K3XX用の更新版はありますか?
記事全体を表示
操作指南:将 S32K1xx SDK 项目从 SDK v4.0.1 迁移至 v4.0.2 在 SDK v4.0.1 和 v4.0.2 之间迁移 S32K1xx 器件的 SDK 项目,并非简单地附加和分离 SDK 即可。其复杂性在于,SDK v4.0.1 仅支持 S32DS v3.3,而 SDK v4.0.2 仅支持 S32DS v3.4。这意味着在一个 S32DS 版本中,不会同时存在这两个 SDK。此外,SDK v4.0.1 和 v4.0.2 之间附加 SDK 的方法也有所不同。在 v4.0.1 中,SDK 是通过链接添加到 S32DS 项目中的;而在 v4.0.2 中,SDK 文件是通过将实际文件复制到项目中添加到 S32DS 项目的。 为解决这一问题,需要执行一些手动操作。本文档详细介绍了所需的步骤,以及适配包含 S32 配置工具设置的 .mex 文件的必要步骤。 由于基于创建方法的不同,项目存在差异,这里涵盖了 3 种最常见的场景: 该项目是通过“从示例创建新项目”向导创建的,并选择了一个SDK示例项目。 通过 “New Application Project” 向导创建项目,并在向导中选择了要附加的 SDK。 项目已存在,且通过 SDK 管理工具附加了 SDK。 由于后两种项目之间有足够多的相似之处,将它们合并为一个场景,在 “New Application Project” 标题下介绍。第一种场景在 “New Project from Example” 标题下介绍。 前提条件 安装 S32 Design Studio IDE 3.4 安装 S32K1xx 开发包和 S32SDK S32K1XX RTM 4.0.2 包 步骤 从示例新建项目 为了这次演示,将使用 S32K1xx SDK v4.0.1 示例项目“flexio_i2s_master_s32k144”。 在 S32DS 3.3 中打开或创建项目。 在项目资源管理器中展开项目目录,查找 .mex 文件 如果没有 .mex 文件,右键单击项目名称,然后选择 “'S32 Configuration Tool -> Open Pins”(可以选择 S32 配置工具中的任何工具)。尽管 .mex 文件包含 S32 配置工具的设置,但相同的设置也保存在 YAML 代码中,这些代码位于 S32 配置工具生成的每个 .c 文件的头部,这些文件位于项目的 “board” 文件夹中。打开 S32 配置工具后,它会检测到没有 .mex 文件,并扫描生成的文件以查找 YAML 代码。如果找到 YAML 代码,会生成一个新的 .mex 文件并将其放置在项目中。 视角会切换到引脚工具,无需其他操作,.mex 文件已从 YAML 代码创建完成。如果未找到 YAML 代码,会向用户显示一个菜单,用于选择目标器件和 SDK。切换回 C/C++ 视角进行确认。 打开 S32DS 3.4 并导入项目。需要注意的是,S32DS 3.3 和 S32DS 3.4 应使用不同的工作区。项目应导入到 S32DS 3.4 工作区,因此应勾选 “Copy projects into workspace” 复选框。 右键单击 Project -> Properties -> C/C++ Build -> Settings -> Standard S32DS C Compiler -> Includes,然后删除所有包含 “S32_SDK_PATH” 的路径 对 Standard S32DS Assembler -> General 执行相同操作 点击应用并关闭。 SDK 文件夹中的文件是以链接的形式包含在项目中的,而非实际文件,且由于 SDK 4.0.1 未安装到 S32DS 3.4 中,这些链接指向不存在的文件。这意味着 SDK 管理器中的附加功能无法用 SDK 4.0.2 中的相应文件替换它们,因为它不知道如何替换不存在的文件。在项目资源管理器中,从项目中删除 “SDK” 文件夹。 现在,项目已准备好使用 SDK 管理器分离旧 SDK 并附加新 SDK。在项目资源管理器中,右键单击 Project -> SDKs。 启动 SDK 管理器后,它会扫描项目以查找任何附加的 SDK。在本示例中,检测到附加了一个 SDK,但由于它与任何已安装的 SDK 都不匹配,会出现一条消息,询问是否分离 SDK 4.0.1。由于这是预期操作,点击 “OK”。 成功分离 SDK 4.0.1 后,选择 SDK 4.0.2,点击 “Attach/Detach...” 点击“Select All”以将 SDK 附加到所有构建配置。这会为每个构建配置设置 SDK 的包含路径和链接器路径。如果需要,也可以单独选择构建配置。点击 “OK” 完成选择。 要应用更改并退出 SDK 管理器,点击 “Apply and Close”。 SDK 管理器会检测到新 SDK 中的一些文件正在替换项目中的现有文件。默认情况下,所有冲突文件都设置为替换现有文件。如果需要,可以取消选择个别文件。请注意,勾选 “Backup project files” 复选框后,所有被替换的文件都会保存在备份文件夹中,以便将来恢复、比较等。通常,允许替换文件并在之后与备份文件夹中的自定义内容合并可能是明智的。在本示例中,未做任何修改,因此保留默认设置。点击 “OK” 完成该过程。 新的 SDK 已附加,并且可以识别新的 SDK 文件夹。 .mex 文件包含 S32 配置工具的设置,但它仍针对 SDK 4.0.1 进行设置。必须手动更新它,以便 S32 配置工具可用于为 “board” 文件夹生成新代码。右键单击 .mex 文件,然后选择 “Open With -> Text Editor”。 只需修改包含 SDK 名称的 mcu_data 部分:将 “s32sdk_s32k1xx_rtm_401” 改为 “s32sdk_s32k1xx_rtm_402” 保存更改。 接下来,必须从 S32 配置工具重新生成 “board” 文件夹中的文件,以反映新的 SDK。右键单击 .mex 文件,然后选择 “Open With -> S32 Configuration Tools”。 会出现一条警告消息,表明检测到 mex 文件是在旧版本的工具中创建的,一旦在当前工具中保存 mex 文件,它可能无法在旧版本的工具中打开。这是正常现象。点击 “OK”。 注意到错误符号。鼠标悬停查看详细信息。这是与 “Peripherals tool” 相关的错误。选择 “Peripherals tool”。 问题出在 edma_config_1 上,因为它被标为红色。点击它查看界面。从之前的版本到现在,界面发生了变化,以前只支持一种配置,现在允许多种配置。要解决此错误,必须向列表中添加一个新配置。如所示,点击 “+” 添加新配置。此特定错误仅会在包含 EDMA 模块的项目中出现。 问题指示器现在为绿色,这意味着没有警告或错误。现在可以生成代码了,点击 “Update Code” 会出现一个菜单,显示新的和/或更新的文件。如果需要,在一行上选择 “change” 将打开一个比较工具,显示相关文件的现有版本和新版本之间的差异。点击 “OK” 继续。 切换到 C/C++ 视图 项目上的错误现在已消失。如果项目在转换前成功构建,再次构建以确认所有内容都已正确转换。 新应用项目 本演示中,将在 S32DS 3.3 中使用 “New Application Project ” 向导创建一个新项目,并在项目创建过程中选择 S32K1xx SDK 4.0.1。 将项目导入 S32DS 3.4 使用 SDK 管理器分离旧 SDK,然后附加新 SDK。在项目资源管理器中,右键单击 “Project -> SDKs”。 启动 SDK 管理器后,它会扫描项目以查找任何附加的 SDK。在本示例中,检测到附加了一个 SDK,但由于它与任何已安装的 SDK 都不匹配,会出现一条消息,询问是否分离 SDK 4.0.1。由于这是预期操作,点击 “OK”。 成功分离 SDK 4.0.1 后,选择 SDK 4.0.2,点击 “Attach/Detach...” 点击“Select All”以将 SDK 附加到所有构建配置。这会为每个构建配置设置 SDK 的包含路径和链接器路径。如果需要,也可以单独选择构建配置。点击 “OK” 完成选择。 要应用更改并退出 SDK 管理器,点击 “Apply and Close”。 SDK 管理器会检测到新 SDK 中的一些文件正在替换项目中的现有文件。默认情况下,所有冲突文件都设置为替换现有文件。如果需要,可以取消选择个别文件。请注意,勾选 “Backup project files” 复选框后,所有被替换的文件都会保存在备份文件夹中,以便将来恢复、比较等。通常,允许替换文件并在之后与备份文件夹中的自定义内容合并可能是明智的。在本示例中,未做任何修改,因此保留默认设置。点击 “OK” 完成该过程。 .mex 文件包含 S32 配置工具的设置,但它仍针对 SDK 4.0.1 进行设置。必须手动更新它,以便 S32 配置工具可用于为 “board” 文件夹生成新代码。右键单击 .mex 文件,然后选择 “Open With -> Text Editor”。 只需修改包含 SDK 名称的 mcu_data 部分:将 “s32sdk_s32k1xx_rtm_401” 改为 “s32sdk_s32k1xx_rtm_402” 保存更改。 接下来,必须从 S32 配置工具重新生成 “board” 文件夹中的文件,以反映新的 SDK。右键单击 .mex 文件,然后选择 “Open With -> S32 Configuration Tools”。 会出现一条警告消息,表明检测到 mex 文件是在旧版本的工具中创建的,一旦在当前工具中保存 mex 文件,它可能无法在旧版本的工具中打开。这是正常现象。点击 “OK”。 通过查找感叹号图标检查是否有任何错误或警告。它会根据情况改变颜色:绿色表示无问题,黄色表示警告,红色表示错误。将鼠标悬停在图标上,可获取有关错误位置的更多信息。除了解决警告和错误外,由于保留了原始项目的设置,无需进行其他更改。在本示例中,没有警告或错误,因此可以继续更新生成的文件。点击 “Update Code”。 会出现一个菜单,显示新的和/或更新的文件。如果需要,在一行上选择 “change” 将打开一个比较工具,显示相关文件的现有版本和新版本之间的差异。点击 “OK” 继续。 切换回 C/C++ 视图。项目上的错误现在已消失。如果项目在转换前成功构建,再次构建以确认所有内容都已正确转换。 新建项目向导 - 项目管理和设置 SDK
記事全体を表示
电机控制的高效热管理 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 为电机驱动器引入与温度相关的电流限制。这种热管理方案通过减少电机在重载或卡住时开关损耗来确保高效运行。在演示中,我们将讨论决定电机驱动器集成电路中功率耗散的因素,检查动态和稳定状态运行及其对结温的影响。我们将回顾如何使用典型电机驱动器数据表中提供的信息来计算功耗估计值。通过了解电机驱动器中的功率耗散方式,我们将介绍一种使用温度相关电流限制的新系统,该系统可以保护驱动器和电机。 由 Thomas Zemites 呈现 2015 年 3 月 26 日在 DwF 硅谷发表 Session ID: AMF-IND-T0987 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 为电机驱动器引入与温度相关的电流限制。这种热管理方案通过减少电机在重载或卡住时开关损耗来确保高效运行。在演示中,我们将讨论决定电机驱动器集成电路中功率耗散的因素,检查动态和稳定状态运行及其对结温的影响。我们将回顾如何使用典型电机驱动器数据表中提供的信息来计算功耗估计值。通过了解电机驱动器中的功率耗散方式,我们将介绍一种使用温度相关电流限制的新系统,该系统可以保护驱动器和电机。 由 Thomas Zemites 呈现 2015 年 3 月 26 日在 DwF 硅谷发表 Session ID: AMF-IND-T0987
記事全体を表示
ADC peripheral S32K116チップを使用する場合、マニュアルには13個のADCチャネルがあると記載されていますが、PINピンにマッピングされているのは9チャネルだけで、残りは内部ADCです。これらの内部ADCは、PINを介した外部データ取得に使用されていない場合、どのように使用されるのでしょうか?また、どのような機能を持つのでしょうか? Re: ADC peripheral もちろんユーザーはそれを使用できますが、内部電圧を収集するために内部チャネルを使用できないのはなぜでしょうか? Re: ADC peripheral つまり、これらの内部 ADC はユーザーが呼び出し可能なモジュールではなく、チップの内部構造にすぎないと理解していますね? Re: ADC peripheral Hi@Embedded_novice 収集される電圧はチップ内部の電圧であり、外部のPINピンは必要ありません。
記事全体を表示
MPC5744P PIT触发中断示例 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ******************************************************************************** * 详细说明: * 此示例显示如何使用 PIT 模块在超时时触发中断。 * * 此示例显示如何使用 PIT 模块在超时时触发中断。 * 有关 PIT 如何工作的更多详细信息,我建议您查看参考手册,因为这是一个非常简单的计时器。 * 此示例将 PIT 定时器 0 通道 0 设置为 5000000 个周期。 * 一旦超过,就会触发中断。 * 引脚状态在 ISR 中切换 * * ------------------------------------------------------------------------------ * Test HW:  MPC57xx Motherboard + MPC5744PE257DC minimodule, MPC5744P, * 硅掩模套装 1N65H * 目标:internal_FLASH* ******************************************************************************** 概述
記事全体を表示
如何下载S32M27x AMMCLIB 1.1.36 我试图找到S32M27x AMMCLIB 1.1.36,但S32M2x唯一可下载的版本是1.1.37。我如何下载 1.1.36? 回复:如何下载S32M27x AMMCLIB 1.1.36 这是因为我使用的RTD版本是s32m276 D2303 3.0.0版本,而与此RTD版本兼容的AMMClib是1.1.36。但是我正在尝试寻找1.1.36,因为1.1.37无法在RTD 3.0.0版本中安装。 如果我将其安装为带有 RTD 4.0.0 版本的 AMMClib 1.1.37,它是否与 RTD 3.0.0、AMMClib 1.1.36 兼容? 回复:如何下载S32M27x AMMCLIB 1.1.36 Hello, 您可以从 NXP 网站上的 NXP SW 帐户下载以前的版本。 http://www.nxp.com/webapp/swlicensing/sso/downloadSoftware.sp?catid=SW32K11-MMCL1D 但我没有看到此 AMMClib 的任何可用选项卡。 我可以将它添加到您的帐户中,但请求以前版本的目的是什么?它们与最新版本兼容。 顺祝商祺! Peter
記事全体を表示
イーサネット拡張 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi, i.mx6QのEIMまたはPCIEを使用してさらに1000M / sイーサネットを拡張したいのですが、問題ありませんか?どうすればいいですか? 全般
記事全体を表示
[LPC55]:コード保護を利用するためにISPとSWDを無効化 一部の初期のLPC製品、例えばLPC11xx、LPC17xx、LPC18xx、LPC40xx、LPC43xx、LPC8xxなどでは、コード保護を利用するためにCRPが使用されています。CRPには3つの異なるセキュリティ・レベルがあります。図1は、CRP1、CRP2、CRP3のセキュリティ・レベルを示しています。 図1 LPC55シリーズ(LPC55(S)0x、1x、2x、および 6x)は、セキュリティ保護のためにCRPではなくセキュア・ブートおよび保護フラッシュ領域(PFR)構成を使用します。Sが付いている部品番号(例:LPC55S)はセキュア・ブートをサポートしています。例えばLPC55S28およびLPC55S06です。ただし、LPC5506、LPC5528などのSシリーズ以外の製品では、FPR関連フィールドを構成することによってのみコード保護を利用できます。 CRP2は最も一般的に使用される保護レベルです。CRP2では、SWDアクセスがブロックされるため、ユーザーはSWDまたはISP経由でフラッシュの読み取り、書き込み、消去ができません。さらに、ユーザーはフラッシュの一部を消去して既存のコードを変更することはできません。CRP2モードになると、フラッシュはフラッシュ大量消去によってのみ回復可能であり、これにより攻撃者がフラッシュコードを読み取ったり変更したりすることが効果的に防止されます。 残念ながら、LPC55(S)0x、1x、2x、6x などの LPC5500 デバイスは CRP2 とまったく同じ機能メカニズムを持っていないため、多くのユーザーから疑問が寄せられています。しかし、CRP2と同じ機能を達成する必要がある場合は、CMPAを設定してISPおよびSWDデバッグポートを無効にすることができます。 1. ISPを無効にする 顧客製造/工場構成領域(CMPA)は PFR の一部であり、BOOT_CFG を設定して ISP モードを有効にするかどうかを選択します。表1は、CMPAの9E40ワードアドレスから始まるフィールドテーブルを示しています。ISP 制御ドメインは赤でマークされています(表1に示されています)。表2はISPドメインのモード選択を示しています。111はISPが無効です。ISP モードが無効になっている場合は、BOOT_CFG を 0b1110000 に設定します。 ワードアドレス(HEX) バイト・アドレス フィールドの説明 6 5 4 3 2 1 0 9E40 9E400 BOOT_CFG Default ISP mode 0 0 0 0 9E404 SPI_FLASH_CFG 0 0 0 0 0 0 0 9E408 USB_ID USB Vendor ID 9E40C SDIO_CFG 0 0 0 0 0 0 0 9E41 9E410 CC_SOCU_PIN ISP_CMD_EN MCM33_DBGEN 0 0 0 0 0 9E414 CC_SOCU_DFLT ISP_CMD_EN MCM33_DBGEN TAPEN SPIDEN SPNIDEN DBGEN NIDEN 表1 Default ISP mode Bit 【6:4】 Auto ISP 000 USB_HID_MSC 001 UART ISP 010 SPI Slave ISP 011 I2CスレーブISP 100 Disable ISP 111 表2 2. SWD を無効にする DCFG_CC_SOCUは、デバッグ・ドメインごとにデバッグ・アクセス制限を指定する構成です。これらのアクセス制限は、このセクションでは制約属性とも呼ばれます。デバッグ・サブシステムは、より細かいアクセス制御を可能にするために、複数のデバッグ・ドメインに細分化されています。図2は、デバッグ・ドメインとDCFG_CC_SOCU内の対応する制御ビットの位置を示しています。論理的に、DCFG_CC_SOCUにはSOCU_PINとSOCU_DFLTの2つのコンポーネントがあります。SOCU_PINレジスタとSOCU_DFLTレジスタは、モジュールのSWDデバッグ・アクセスを定義するために一緒に使用されます。これは論理的に2つのコンポーネントで構成されています。 SOCU_PIN: デバイス構成によって事前に決定されるデバッグドメインを指定するビットマスクです。 SOCU_DFLT: SOCU_PIN フィールドがデバイス構成によって事前に決定されているビットの最終アクセスレベルを提供します。 言い換えると、モジュールを有効にするには、SOCU_PINレジスタとSOCU_DFLTレジスタの対応するビットを同時に1に設定してください。このモジュールは、SOCU_PINレジスタとSOCU_DFLTレジスタの対応するビットを同時に0に設定することで無効化されます。図2参照。 図2 LPC55 PFRのCC_SOCU_PINとCC_SOCU_DFLTのデフォルト値はすべてゼロであることにご注意ください。したがって、この場合、SOCU_PINとSOCU_DFLTは両方とも0ですが、ビット反転ルールは満たされません(以下の図3参照)。したがって、CC_SOCU_PINとCC_SOCU_DFLTがすべて0の場合、すべてのデバッグ権限がデフォルトで有効になります。 図3 注:CC_SOCU_PIN(CC_SOCU_DFLT)とSOCU_PIN(SOCU_DFLT)の違い。CC_を含む前者には、後者のビット反転が含まれています。 たとえば、SOCU_PINとSOCU_DFLTがすべてゼロに設定され、反転ビットが1に設定されている場合、すべてのSWDモジュールが無効になります。 図4 3. 実装 以下では、LPC5506を例にしてCMPAフィールドを設定します: 3.1 ISPおよびSWDを無効化 図5 図5で赤く強調表示されている2つを除き、デフォルトのCMPA値を維持してください。 1)BOOT_CFGを0x70に設定し、ISPを無効にします。 2)すべてのSOCU_PINとSOCU_DFLTを0に設定し、すべてのリバースビットを1に設定します。つまり、サブドメインにアクセスするすべてのデバッグを無効にします。 3.2 ISPおよびSWDを有効にする 図6 図6で赤く強調表示されている2つを除き、デフォルトのCMPA値を維持してください。 1)自動ISPを有効にするには、BOOT_CFGを0x00に設定します。 2)DCFG_CC_SOCUのデフォルト値、すなわちCC_SOCU_PINとCC_SOCU_DFLTをすべてゼロに戻します。この場合、ビット反転のルールが満たされていないため、すべてのデバッグ権限が復元されます(オンになります)。詳細はこの記事の第2部を参照してください。 3.3 コード実装 シリアルコマンド(1 または 0)で SWD および ISP 機能を有効または無効にします。 図7 デモ・コードが添付されています。このルーチンは、LPCXpresso55S06開発ボードでテストされました。 NOTE: システムのセキュリティ要件と攻撃対象領域が進化する中で、NXPが防御を主張していない、または強力に軽減していない攻撃(特に高度な物理攻撃)の種類をお客様が理解することが重要です。これにより、必要に応じてシステムレベルで適切な緩和策を講じることができます。 LPC55xx Re:[LPC55]:コード保護を利用するためにISPとSWDを無効化 これは、SWDによるフラッシュの一括消去が将来完全に無効になるように見えます(上記の例の有効化コードが何らかの方法で実行されない限り)。これは正しいでしょうか、それとも間違っているのでしょうか? 私たちはプロダクションボードをプログラムするためにSWDインターフェース(LPC5528ボード上)しか持っていないため、SWDを介してフラッシュを読み取り保護し(どのインターフェースからも読み取りを許可しない)、どのインターフェースからでも大量消去のみを許可する方法が必要です。これは可能ですか?
記事全体を表示
i.MX 8/8X 系列 DDR 工具发布 重要提示:如果您对 DDR 工具或支持文档有任何疑问,或想报告相关问题,请在 i.MX 社区创建支持工单。请注意,任何私人消息或直接电子邮件均不会被监控,也不会收到回复。 i.MX 8/8X DDR 工具概览 此页面包含 i.MX 8/8X DDR 工具的最新发布版本。本页面所述工具适用于以下配备系统控制器单元(SCU)的 i.MX 8/8X 系列 SoC: i.MX 8QuadMax 及其衍生产品 i.MX 8QuadPlus i.MX 8QuadXPlus 及其衍生产品 i.MX 8DualXPlus 和 i.MX 8DualX i.MX 8DXL (i.MX 8XLite) 及其衍生产品 i.MX 8SXL 注意:有关 i.MX 8M 系列的 DDR 工具,请参考:i.MX 8M 系列 DDR 工具发布说明                          i.MX 8/8X DDR 工具的用途是让用户能够根据其设备配置(密度、片选数量等)和电路板布局(数据总线位交换等)生成并测试自定义的 DRAM 初始化程序。此过程使用户能够继续进行引导加载程序和操作系统的启动工作。操作系统启动后,建议运行基于操作系统的内存测试(如 Linux memtester),以进一步验证和测试 DDR 内存接口。 i.MX 8/8X DDR 工具包括: DDR 寄存器编程辅助工具 (RPA) DDR 压力测试 有关这些 DDR 工具及其用法的更多详细信息,请参阅本页附带的 MX8X_DDR_Tools_quickstart_guide.pdf。 i.MX 8/8X DDR 寄存器编程辅助工具 (RPA) i.MX 8/8X DDR RPA(简称 RPA)是一个 Excel 电子表格工具,用于根据用户特定的 DDR 配置(DDR 设备类型、密度等)开发 DDR 初始化程序。RPA 以两种格式生成 DDR 初始化程序(在单独的 Excel 工作表标签中): DDR 压力测试脚本:此格式专门用于 DDR 压力测试,方法是先复制此工作表标签中的内容,然后将其粘贴到文本文件中,并将该文档命名为带有 “.ds” 文件扩展名的文件。用户在执行 DDR 压力测试时将选择此文件。 DCD CFG 文件:此格式是系统控制器单元固件 (SCFW) 专门使用的配置文件。在这种情况下,用户复制此工作表标签中的内容,将其粘贴到文本文件中,将该文档命名为带有 “.cfg” 文件扩展名的文件,并将此文件放置在适当的 SCFW 板文件目录中。 i.MX 8/8X DDR 寄存器编程辅助工具 (RPA):当前版本 注意:在所有情况下,RPA 版本都与最低 SCFW 版本对齐,如下表所示。在某些情况下,提供 BSP 对齐作为额外细节,但是,RPA 工具专门与最低 SCFW 版本及更高版本对齐。 要获取最新的 RPA,请参考以下链接(注意,现有的 RPA 已从本主页面移除,并移至下方特定于 SoC)的链接中): i.MX8QM: https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/i-MX8QM-DDR-Register-Programming-Aid-RPA/ta-p/1166307 i.MX8QXP/QXP/DX: https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/i-MX8QXP-DXP-DX-DDR-Register-Programming-Aid-RPA/ta-p/1166302 i.MX8DXL/SXL: https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/i-MX8DXL-DDR-Register-Programming-Aid-RPA/ta-p/1602262 处理器 掩模版本 支持的存储器 最新 RPA 版本 * 说明 i.MX 8QM B0 LPDDR4 版本 23*** 启示录 22** 版本 21** 版本 20** 版本 19** 版本 23:重要提示:此版本与 SCFWv1.7.0(及更高版本的 SCFW)对齐。使用 SCFWv1.7.0(及更高版本的 SCFW)时,必须使用此版本或更高版本的 RPA,不能使用早期版本的 RPA。请参见表格末尾的注释。 版本 22:以下更改对 DDR IO 接口没有影响。此更新设置主要是在 DCD 文件中添加了一个由 RPA 配置的总 DDR 密度的定义。该定义由 SCFW 使用。 版本 21:修复了 1 个 DRC 操作,将对 VREF 训练的调用注释掉以用于 DRC1,并添加了 DDRC_SCHED 寄存器编程,以与最新的 SCFW 编程对齐(有关更多详细信息,请参考 RPA 修订历史)。 Rev 20:与 SCFW 1.4.0 和 NXP BSP GA 版本 L5.4.3_2_0_0 及更高版本一起使用(以支持 SW VREF 训练规避命令) 版本 19:与 SCFW 1.3.1 和 NXP BSP GA 版本 L5.4.3_1_0_0 一起使用 i.MX 8QXP C0、B0 LPDDR4 版本 16*** 版本 15** 版本 14** 版本 13** 版本 16:重要提示:此版本与 SCFWv1.7.0(及更高版本的 SCFW)对齐。使用 SCFWv1.7.0(及更高版本的 SCFW)时,必须使用此版本或更高版本的 RPA,不能使用早期版本的 RPA。请参见表格末尾的注释。 版本 15:以下更改对 DDR IO 接口没有影响。此更新设置主要是在 DCD 文件中添加了一个由 RPA 配置的总 DDR 密度的定义。该定义由 SCFW 使用。 版本 14:与 SCFW 1.4.0 和 NXP BSP GA 版本 L5.4.3_2_0_0 及更高版本一起使用(以支持 SW VREF 训练变通命令) 版本 13:与 SCFW 1.3.1 和 NXP BSP GA 版本 L5.4.3_1_0_0 一起使用 i.MX 8QXP C0、B0 DDR3L 启示录 23 版本 22*** 版本 21 版本 20 版本 23: -修正了寄存器配置 DDR_PHY_PTR4.tDINIT1 位域编程。以前,计算仅基于 tRFC,但是,计算应该基于 “tRFC + 10ns”。此问题已得到纠正。 -将 DDRC_INIT4、DDR3 MR2.ASR = 1 设置为默认设置,以允许 DRAM 根据其外壳温度自动选择自刷新速率(但用户可以通过下拉菜单选择禁用)。此外,删除了 DTCR0.DTRDBITR 的条件设置,因为 DDR3 不支持 DBI,所以不需要该设置。此设置的默认值为零,并将保持不变。 -为用户提供了根据 DDR3L 设备的预期最高温度(1X、2X、4X)选择自动刷新速率的选项。用户应参考 DDR3L 数据表以了解支持的温度范围和相关的刷新速率。 版本 22:重要提示:此版本与 SCFWv1.7.0(及更高版本的 SCFW)对齐。使用 SCFWv1.7.0(及更高版本的 SCFW)时,必须使用此版本或更高版本的 RPA,不能使用早期版本的 RPA。请参见表格末尾的注释。 版本 21:以下更改对 DDR IO 接口没有影响。此更新设置主要是在 DCD 文件中添加了一个由 RPA 配置的总 DDR 密度的定义。该定义由 SCFW 使用。 - 与 SCFW 1.1.10 及更高版本兼容 -此版本所做的更改不会影响基于 v19 的 DCD CFG 文件输出 -在 DDR 压力测试脚本中发现问题,即某些命令没有根据寄存器配置工作表中的 ECC 设置进行正确配置;此问题已得到解决(单元格 A84、A87、A90、A93) -此外,在 DCD CFG 和 DDR 压力测试脚本工作表中,所有依赖于 ECC 配置的命令都已更新,以包括与数据总线是否配置为 16 位的 “或” 运算(ECC 仅支持全 32 位数据总线宽度配置) i.MX 8DualX C0、B0 LPDDR4 版本 16*** 版本 15* 版本 14** 版本 13** 版本 16:重要提示:此版本与 SCFWv1.7.0(及更高版本的 SCFW)对齐。使用 SCFWv1.7.0(及更高版本的 SCFW)时,必须使用此版本或更高版本的 RPA,不能使用早期版本的 RPA。请参见表格末尾的注释。 版本 15:以下更改对 DDR IO 接口没有影响。此更新设置主要是在 DCD 文件中添加了一个由 RPA 配置的总 DDR 密度的定义。该定义由 SCFW 使用。 版本 14:与 SCFW 1.4.0 和 NXP BSP GA 版本 L5.4.3_2_0_0 及更高版本一起使用(以支持 SW VREF 训练变通命令) 版本 13:与 SCFW 1.3.1 和 NXP BSP GA 版本 L5.4.3_1_0_0 一起使用 i.MX 8DualX C0、B0 DDR3L 版本 21 版本 20*** 版本 19 版本 18 版本 21: -修正了寄存器配置 DDR_PHY_PTR4.tDINIT1 位域编程。以前,计算仅基于 tRFC,但是,计算应该基于 “tRFC + 10ns”。此问题已得到纠正。 -将 DDRC_INIT4、DDR3 MR2.ASR = 1 设置为默认设置,以允许 DRAM 根据其外壳温度自动选择自刷新速率(但用户可以通过下拉菜单选择禁用)。此外,删除了 DTCR0.DTRDBITR 的条件设置,因为 DDR3 不支持 DBI,所以不需要该设置。此设置的默认值为零,并将保持不变。 -为用户提供了根据 DDR3L 设备的预期最高温度(1X、2X、4X)选择自动刷新速率的选项。用户应参考 DDR3L 数据表以了解支持的温度范围和相关的刷新速率。 版本 20:重要提示:此版本与 SCFWv1.7.0(及更高版本的 SCFW)对齐。使用 SCFWv1.7.0(及更高版本的 SCFW)时,必须使用此版本或更高版本的 RPA,不能使用早期版本的 RPA。请参见表格末尾的注释。 版本 19:以下更改对 DDR IO 接口没有影响。此更新设置主要是在 DCD 文件中添加了一个由 RPA 配置的总 DDR 密度的定义。该定义由 SCFW 使用。 - 与 SCFW 1.1.10 及更高版本兼容 *有关 RPA 以前版本的历史记录,请参考相应 RPA 的 “修订历史” 标签。 ** 一般来说,即使使用预发布的 BSP,也建议使用最新的 RPA 工具,因为它确保您使用最新的修复程序和功能进行测试。可能会提供较旧版本的 RPA 以支持 BSP 的现有/已发布版本。这仅适用于那些与预发布 BSP 兼容但可能与 BSP 的已发布版本不兼容的 RPA 工具。 ***重要提示:如表格上方所述,对于所注明的 RPA 版本,它与 SCFWv1.7.0(及更高版本的 SCFW)对齐。旧版本的 RPA 与 SCFWv1.7.0(及更高版本的 SCFW)不对齐。如果尝试将旧版本的 RPA 与 SCFWv1.7.0(及更高版本的 SCFW)一起使用,将导致 SCFW 无法启动。DCD 输出中的问题行如下: 对于 MX8QXP/DualX: 数据 4 0xff190000 0x00000CC8 /* DRC0 启动 */ 对于 MX8QM: 数据 4 0xff148000 0x00000885 /* DRC0 启动 */ 数据 4 0xff1a0000 0x00000885 /* DRC1 启动 */ 如果用户希望使用带有 SCFW 1.7.0(及后续版本)的较旧 RPA(不推荐),则必须从较旧 RPA DCD 文件输出中删除上述行。此外,这些行被以下预处理命令包裹:"#ifndef SCFW_DCD"、"#else" 和 "#endif"。这些也应该被移除。例如 MX8QXP: [移除] ifndef SCFW_DCD [移除] /* 对于 1200MHz DDR,DRC 600MHz 操作 */ [移除] DATA 4 0xff190000 0x00000CC8 /* DRC0 启动 */ [移除] #else [移除] #endif 注意:当提到 “SCFWv1.7.0(及更高版本的 SCFW)” 时,它指的是 SCFWv1.7.0、1.7.1、1.7.2……1.8.0、1.9.0、1.10.0…… 等,其中 “……” 是次要版本 / 补丁,因此当您看到 1.7.2…… 时,它指的是 1.7.3、1.7.4 等)。除非另有说明,表格上方所示的最新 RPA 与最新的 SCFW 版本对齐。 i.MX 8/8X DDR 压力测试 i.MX 8/8X DDR 压力测试工具是一个基于 Windows 的软件工具,用于在构建用于 u-boot 和操作系统启动的 SCFW 之前,验证 DDR 初始化程序是否可运行。DDR 压力测试使用从 RPA 工具生成的 .ds DDR 压力测试脚本以及 SCFW 的特殊构建版本,该版本使用以下选项构建: DDR_CON=ddr_stress_test_parser 或者在 i.MX 8QuadMax 的情况下使用一个 DDR 控制器: DDR_CON=ddr_stress_test_parser_DRC0_only DDR 压力测试提供了一个 “Target” 选项,用于指定正在测试的 SoC。以下是可供选择的目标选项: MX8QM – 用于测试 i.MX 8QuadMax 及其衍生产品 i.MX 8QuadPlus MX8QX – 用于测试 i.MX 8QuadXPlus 及其衍生产品 i.MX 8DualXPlus/DualX MX8DXL – 用于测试 i.MX 8DXL 及其衍生产品 i.MX8 SXL   要安装 DDR 压力测试工具,请保存并解压 zip 文件 mx8_ddr_stress_test_ERxx_installation.zip(其中 “xx” 是当前版本号),然后按照屏幕上的安装说明进行操作。 注意,解压 DDR 压力测试工具 .zip 文件时,建议执行 “在此处解压” 操作。某些系统不允许从另一个文件夹运行解压后的安装可执行文件,只有从与原始下载的 zip 文件相同的位置执行时才能工作。 有关 DDR 压力测试使用方法的更多详细信息,请参考 DDR 压力测试工具交付内容中的 MX8_DDR_Tool_User_Guide。 注意:在新的自定义板上使用 DDR 工具之前,用户应正确地将系统控制器单元固件(SCFW)移植到此新板上。没有正确移植且可工作的 SCFW,DDR 工具将无法运行。          i.MX 8/8X DDR 压力测试 要求 该工具需要访问Windows注册表,因此用户必须以管理员模式运行它。 该工具不能在需要由客户签名的镜像的 OEM 封闭设备上运行。 当用户设计新的 i.MX 8/8X 板时,请确保遵循相应的硬件开发指南和 MX8_DDR_Tool_User_Guide 中概述的规则,这可以帮助用户在其各自的 i.MX 8/8X 板上启动 DDR 设备。   i.MX 8/8X DDR 压力测试 SECO 固件 通常不建议更新 DDR 压力测试默认附带的 SECO (ahab) 固件。不建议这样做是因为 DDR 压力测试的目的是测试 DDR 内存接口,而非整个 SCFW 到 SECO 固件的操作,即便较新版本的 SCFW 可能会提示 SECO 固件版本不是最新的。DDR 压力测试附带的 SECO 固件版本在 DDR 压力测试发布前已通过工厂测试并证实可用;将 SECO 固件更新为其他版本可能会导致意外后果,使 DDR 压力测试无法运行。在大多数情况下,仅更新 SCFW 而不更新 SECO 固件是允许的。 如果用户希望更新 DDR 压力测试中的 SECO 固件版本,则需要重命名该固件,去掉芯片版本(例如,更新 MX8QM SECO 固件时,用户需要将 mx8qmb0-ahab-container.img 重命名为 mx8qm-ahab-container.img,主要是去掉 “b0”)。MX8QXP 是个例外,如果更新 C0 芯片版本的 SECO 固件,用户应保留 C0 这一命名。 如果用户发现更新后的 SECO 固件导致 DDR 压力测试无法运行,建议恢复为 DDR 压力测试发布时附带的默认 SECO 固件版本。 i.MX 8/8X DDR压力测试用户指南 i.MX 8/8X DDR 压力测试工具包含文档:MX8_DDR_Tool_User_Guide.pdf 注意:使用本工具前,请仔细阅读包内的 MX8_DDR_Tool_User_Guide。 DDR 压力测试修订历史 版本 主要变更(功能) NXP BSP软件版本 ER 14 已更新以支持解析 DDR 压力测试脚本中的 VREF 训练命令 此版本与 NXP BSP GA 版本 L5.4.3_2_0_0 及更高版本对齐。 ER15 - 支持 i.MX 8Lite(又名 DXL) - 在数据训练失败时提供更详细的输出,特别是指出哪些字节通道失败 - 有助于调试电路板布局问题 此版本与 NXP BSP GA 版本 Linux 5.15.71_2.2.0 及更高版本保持一致。  相关资源链接: i.MX 8ULP DDR 工具:i.MX 软件和开发工具 | NXP Semiconductors 向下滚动到“其他资源 --> 工具 --> DDR 工具” i.MX 8M 系列 DDR 工具发布 i.MX 6/7 DDR 压力测试 GUI 工具 i.MX 8QM RPA: https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/i-MX8QM-DDR-Register-Programming-Aid-RPA/ta-p/1166307 i.MX 8QXP/DXP/DX RPA: https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/i-MX8QXP-DXP-DX-DDR-Register-Programming-Aid-RPA/ta-p/1166302 i.MX 8DXL (i.MX 8XLite) RPA: https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/i-MX8DXL-DDR-Register-Programming-Aid-RPA/ta-p/1602262 常见问题: 问:DDR 压力测试运行时,会显示先测试区域 1,然后测试区域 2。什么是区域 1 和区域 2? 答:i.MX8X 系列中有两个不同的 DDR 内存区域,这是由于 Cortex A 内核的架构以及 i.MX8X 相关的内存映射所致。 区域 1 是 32 位区域,起始地址为 0x080000000,结束地址为 0x0FFFFFFFF(共 2GB) 区域 2 是 64 位区域(针对 Cortex A 内核架构),起始地址为 0x880000000,结束地址取决于剩余密度: •对于板载总密度为 4GB 的情况,区域 1 为 2GB,区域 2 为 2GB,因此区域 2 的结束地址为 0x8FFFFFFFF(0x900000000 减 1) •对于总密度为 6GB(NXP 板卡密度)的情况,区域 1 为 2GB,区域 2 为 4GB,因此区域 2 的结束地址为 0x97FFFFFFF(0x980000000 减 1) •对于总密度为 8GB 的情况,区域 1 为 2GB,区域 2 为 6GB,因此区域 2 的结束地址为 0x9FFFFFFFF(0xA00000000 减 1) 因此,区域 1 和区域 2 之间的内存映射存在一个 “空洞”。因此,DDR 压力测试首先测试较低的区域(区域 1),直到该区域测试完毕(最多 2GB),如果 DDR 密度超过 2GB,测试将在区域 2 中测试剩余密度。 问:i.MX8X 系列片上系统是否支持具有 17 个行地址 (R [16:0]) 的 LPDDR4 存储器? 答:i.MX8QM、i.MX8QXP 和 i.MX8DXP 片上系统及其衍生产品不支持较新的 17 行地址 LPDDR4 存储器。这意味着,为了支持最大 4GB(32Gb)的 LPDDR4 密度,配置必须为 16 行、2 秩(而非不支持的 17 行、1 秩)。即将推出的 i.MX8DXL 计划支持 17 行地址的 LPDDR4 设备。 问:运行 DDR 压力测试时,我可以选择不同的 i.MX8X AP UART 端口吗? 答:强烈建议遵循 NXP 板卡设计,包括选择相同的 UART 端口;这将减轻用户的软件移植工作,并最大限度地减少不必要的调试问题。DDR 压力测试需要使用 USB OTG 端口和 AP UART 端口(强烈建议连接 SCFW UART 端口以获取 SCFW 调试信息)。到目前为止,工厂认为用户没有理由选择与 NXP 板卡上使用的不同的 AP UART 端口。选择相同的 AP UART 端口可确保 DDR 压力测试更快启动,而不是不必要地调试为什么不同的 UART 端口无法工作。 无论如何,有些人出于某种原因希望使用不同的 UART 端口,因此,NXP 提供了变通方法以允许选择不同的 UART 端口。要选择不同的 UART 端口(0、1 或 2),用户只需在 DDR 压力测试 DDR 初始化(.ds)脚本的末尾添加以下行: memory set  0x5C01042C 32   内存设置 0x5C01042C 32 0x00000000 # UART0 端口选择用于 AP UART(默认) 内存设置 0x5C01042C 32 0x00000001 # UART1端口选择用于AP UART 内存设置 0x5C01042C 32 0x00000002 # UART2端口选择用于AP UART 请注意,UART 端口 0、1 和 2 具有作为默认 UART 引脚的焊盘名称(IOMUX ALT0 配置)。到目前为止,DDR 工具不支持在其他非默认 UART 引脚上多路复用的其他 UART 端口。不过,i.MX8QXP/DXP 和即将推出的 i.MX8DXL 是个例外,它们可以使用在 FLEXCAN2 上多路复用的 UART3。要选择此端口,请在 .ds 文件的末尾添加以下内容: 内存设置 0x5C01042C 32 0x00000003 # UART3 端口选择用于 AP UART(i.MX8QXP/DXP 和 i.MX8DXL 除外) 有些 RPA 内置了支持(通过下拉菜单)来选择 UART 端口。对于那些没有此功能的 RPA,这是因为这些 RPA(恩智浦板卡)未使用不同的 UART 端口进行测试,因为板卡需要切割线路并重新连接 UART 信号,而且有些板卡可能没有现成的这些 UART 线路。不过,用户仍然可以手动添加此 UART 端口选择。参考以下 RPA 以查看 UART 端口选择选项: MX8QXP DDR3 MX8DXP DDR3 问:测试 [8GB(64Gb)的 MX8QM 或 4GB(32Gb)的 MX8QXP] 的 LPDDR4 内存时,DDR 压力测试为何似乎挂起? 答:此问题并非由 DDR 压力测试本身引起,而是由所使用的 SCFW 版本导致。默认版本的 SCFW 二进制文件早于 SCFW 所做的一项更改,即当检测到 DDR 压力测试正在运行时忽略 DRAM 密度限制。与 DDR 压力测试 ER14 相关联的此版本 SCFW 将可测试的 DRAM 密度限制为 [MX8QM:6GB,MX8QXP:3GB],因为此版本的 SCFW 配置为在恩智浦板卡上运行作为基础。如 DDR 压力测试用户指南中所述,建议用户在使用 DDR 压力测试之前,先将最新的 SCFW 移植到其板卡上,以考虑恩智浦板卡与其板卡之间的差异。此外,用户有以下选项可启用超出 [MX8QM:6GB,MX8QXP:3GB] 的测试;请注意,在运行 DDR 压力测试之前,用户有责任确保 SCFW 有一个正常工作的移植版本。 1.最新的 SCFW 应包含一项更新,即如果检测到 SCFW 是为与 DDR 工具一起使用而构建的,则设置无密度限制 —— 用户可以尝试获取最新的移植工具包并构建新的固件。这是推荐的更改。 2. 如果使用早于此更改的现有/较旧版本的 SCFW,在 board.c 的 board_system_config () 函数中,有以下代码块(显示 MX8QM 示例): /* Board has 6GB memory so fragment upper region and retain 4GB */         BRD_ERR(rm_memreg_frag(pt_boot, &mr_temp, 0x980000000ULL,             0xFFFFFFFFFULL)); 用户可以按如下方式进行修改:     if (ddrtest == SC_FALSE)     {         sc_rm_mr_t mr_temp;         /* Board has 6GB memory so fragment upper region and retain 4GB */         BRD_ERR(rm_memreg_frag(pt_boot, &mr_temp, 0x980000000ULL,             0xFFFFFFFFFULL));         BRD_ERR(rm_memreg_free(pt_boot, mr_temp));     } 如果 SCFW 是为 DDR 工具构建的,这将禁用此部分代码的执行(与 1 相同,但使用较早的固件版本时需要用户手动完成)。 3. 在上述代码块中,将 0x980000000 更改为 0xA00000000。这应该允许上述 MX8QM 示例支持 8GB 密度(对于 MX8QXP,将 0x8C0000000ULL 更改为 0x900000000ULL 以支持 4GB 密度)。 i.MX 8 系列 | i.MX 8QuadMax (8QM) | 8QuadPlus
記事全体を表示
如何使用 gpio-hog 演示 i.MX 8 系列 | i.MX 8QuadMax (8QM) | 8QuadPlus i.MX 8M | i.MX 8M Mini | i.MX 8M Nano i.MX6 全部 i.MX6SL i.MX7 双核 i.MX7 单核 i.MX7ULP Linux SCM-i.MX6DQ
記事全体を表示
Kinetis M0+ FAQ_软件开发环境 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Common: 1. 如何在IAR、Keil和Codewarrior中禁止掉Kinetis的NMI脚 2. 使用Codewarrior、IAR和Keil三大IDE配置生成bin文件 3. Codewarrior、IAR和Keil三大IDE局部优化指令 Kinetis Design Studio 1. 飞思卡尔免费开发环境KDS调试时显示外设寄存器内容​ CodeWarrior: 1. Codewarrior中如何查看Flash和RAM占用Size大小, include路径如何配置? 2. Codewarrior10.5低功耗模式唤醒后保持调试功能 3. 浅谈Codewarrior局部优化技巧 4. 在Codewarrior10.x调试模式下导出内存数据到s19文件 5. CodeWarrior10.x中英文系统界面切换 6. CodeWarrior10.x新建Kinetis工程方法 7. Codewarrior10.x下使用ewl_noio库以节省代码空间 8. Codewarrior10.x下生成的image文件后缀都是.hex 9.代码重定位-CodeWarrior/KDS-kineits L 系列 IAR: 1. 利用IAR Timeline工具测试delay函数执行时间 2. 使用老版本IAR支持新器件 3. IAR环境下Flash loader工作原理 4. IAR环境下Flash调试和RAM调试的区别 5. IAR环境下更改ARM大小端存储模式 6. 简单移植Kinetis IAR开发框架模板的方法 7. Kinetis图形化显示stack堆栈使用情况 8. IAR使用小技巧(常用快捷键,LiveWatch配置方法,修改调试模式入口地址) 9. 实现IAR下S19、Bin、Hex文件格式转换 10. IAR生成和调用Kinetis函数库 11. 批处理查找添加IAR工程头文件 12. 通过IAR MAP文件查看目标文件内存分配 13. 解析IAR的ILINK链接器icf配置文件 14. 重定向printf输出到IAR虚拟终端 15. 解决双击eww文件无法同时打开多个IAR工程的问题 16. IAR下使用noinit段的方法和指定地址的变量分配 Keil: 1. Keil编译器ARMCC中添加对GCC扩展格式的支持 2. 关于Keil无法正确下载程序问题的总结 Re: Kinetis M0+ FAQ_软件开发环境 So like, could you put this in English so we could all appreciate your input?
記事全体を表示
FS26 在调试模式下读取 FS_STATE 寄存器,它始终为 0x14。没有关于此的描述 FS26在调试模式下读取FS_STATE寄存器一直是0x14,手册上没有改变返回值的描述,按照手册中的流程图,上电之后应该要经过OTP程序才会进入01001处的Init FS,然后就可以写入初始化寄存器的数据流了,但是目前由于FS_STATE的问题,无法进入init FS。在社区里我找到了这样的帮助,但是遗憾的是没有具体的说明和解决办法,链接如下: Fs26 使用函数 Sbc_fs26_initDevice() 初始化失败 回复:FS26 在调试模式下读取 FS_STATE 寄存器,它始终为 0x14。没有描述 你好,托马斯 我已成功找出原因并进入正常模式。感谢你的回复。 BRs,zyg 回复:FS26 在调试模式下读取 FS_STATE 寄存器,它始终为 0x14。没有描述 Hello, 您的上电序列是否已成功完成并且 RSTB 引脚是否已释放?如果没有,请参阅下面的 RSTB 低原因清单。 如有必要,请用示波器检查 RSTB 低时的调节器输出,同时请检查是否有报告 OV/UV 标志。 BRs, Tomas
記事全体を表示
MPU6050をAndroidに移植して画面の自動回転を実現     テスト環境:MPU6050モジュール、i.MX8MP、Android11_2.4.0 このソリューションは、MPU6050モジュールをAndroidに移植して、画面の自動回転を実現します。 Android i.MX 8ファミリ | i.MX 8QuadMax (8QM) | 8QuadPlus i.MX 8M | i.MX 8M Mini | i.MX 8M Nano
記事全体を表示
Kinetis M0+ FAQ_软件开发环境 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Common: 1. 如何在IAR、Keil和Codewarrior中禁止掉Kinetis的NMI脚 2. 使用Codewarrior、IAR和Keil三大IDE配置生成bin文件 3. Codewarrior、IAR和Keil三大IDE局部优化指令 Kinetis Design Studio 1. 飞思卡尔免费开发环境KDS调试时显示外设寄存器内容​ CodeWarrior: 1. Codewarrior中如何查看Flash和RAM占用Size大小, include路径如何配置? 2. Codewarrior10.5低功耗模式唤醒后保持调试功能 3. 浅谈Codewarrior局部优化技巧 4. 在Codewarrior10.x调试模式下导出内存数据到s19文件 5. CodeWarrior10.x中英文系统界面切换 6. CodeWarrior10.x新建Kinetis工程方法 7. Codewarrior10.x下使用ewl_noio库以节省代码空间 8. Codewarrior10.x下生成的image文件后缀都是.hex 9.代码重定位-CodeWarrior/KDS-kineits L 系列 IAR: 1. 利用IAR Timeline工具测试delay函数执行时间 2. 使用老版本IAR支持新器件 3. IAR环境下Flash loader工作原理 4. IAR环境下Flash调试和RAM调试的区别 5. IAR环境下更改ARM大小端存储模式 6. 简单移植Kinetis IAR开发框架模板的方法 7. Kinetis图形化显示stack堆栈使用情况 8. IAR使用小技巧(常用快捷键,LiveWatch配置方法,修改调试模式入口地址) 9. 实现IAR下S19、Bin、Hex文件格式转换 10. IAR生成和调用Kinetis函数库 11. 批处理查找添加IAR工程头文件 12. 通过IAR MAP文件查看目标文件内存分配 13. 解析IAR的ILINK链接器icf配置文件 14. 重定向printf输出到IAR虚拟终端 15. 解决双击eww文件无法同时打开多个IAR工程的问题 16. IAR下使用noinit段的方法和指定地址的变量分配 Keil: 1. Keil编译器ARMCC中添加对GCC扩展格式的支持 2. 关于Keil无法正确下载程序问题的总结 Re: Kinetis M0+ FAQ_软件开发环境 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 那么,您能否用英语表达出来,以便我们都能理解您的意见?
記事全体を表示
NXP基于模型的S32M2xx设计工具箱——版本1.0.0 产品发布公告 汽车处理 恩智浦基于模型的设计工具箱 适用于 S32M2xx – 版本 1.0.0树脂经延展 恩智浦半导体汽车处理基于模型的设计工具团队很高兴地宣布发布适用于 S32M2xx 版本 1.0.0 的基于模型的设计工具箱。此版本支持从 MATLAB/Simulink 为 NXP S32M2xx 汽车微处理器自动生成 S32M2xx 外设的代码和应用程序原型。该新产品基于 RTD MCAL 组件(ADC、AE、DIO、CAN、DPGA、GDU、GPT、MCL、PWM、MCU、PORT、QDEC、UART)增加了对 S32M41、S32M242、S32M43、S32M244、S32M274、S32M276 MCU 及其部分外设的支持。在此版本中,我们还添加了对 FreeMASTER、AMMCLib 和 MATLAB 最新版本的支持。该产品附带 60 多个示例,涵盖所有支持的外设,以及 Simulink 仿真模式软件在环、处理器在环和外部模式。 目标受众: 该产品是汽车软件 - S32M2 标准软件包的一部分。 FlexNet 位置: https://nxp.flexnetoperations.com/control/frse/download?element=3785898 技术支持: 针对 S32M2xx 问题的 NXP 基于模型的设计工具箱将通过 NXP 基于模型的设计工具社区空间进行跟踪。 https://community.nxp.com/community/mbdt     版本内容 针对 NXP S32M2xx 衍生产品,从 MATLAB ®自动生成 C 代码: S32M241 S32M242 S32M243 S32M244 S32M274 S32M276 支持以下外设(MCAL 组件): ADC AE DIO CAN DPGA GDU GPT MCL PWM MCU PORT QDEC UART 提供两种操作模式: 基础模式——使用外设的预配置配置;适用于快速硬件评估和测试 高级——使用 S32 配置工具或 EB Tresos 配置外设/引脚/时钟 集成汽车数学和电机控制库版本 1.1.34: 汽车数学和电机控制函数库v1.1.34 中的所有函数作为模拟和嵌入式目标代码生成的块来支持。 与 FreeMASTER 集成 我们提供了多个 Simulink 示例模型和相关的 FreeMASTER 项目,以演示我们的工具箱如何与实时数据可视化工具交互,以及如何用于调整嵌入式软件应用。 支持 MATLAB ®版本 R2021a R2021b R2022a R2022b R2023a R2023b 支持自定义板初始化 Toolbox 按照 Board Initialization 窗口中的配置生成组件的外围设备初始化函数调用,这些函数调用可以根据每个 Simulink 模型进行定制。此功能允许用户为组件初始化、自定义代码序列的插入设置自定义顺序,或通过导出和导入功能与多个 Simulink 模型共享自定义初始化。     支持自定义默认项目配置 该工具箱为用户创建自定义默认项目配置提供支持。这在定制电路板设计时非常有用——只需要创建一次硬件配置。将其保存为自定义默认项目后,它可以用于正在开发的每个模型。 与S32配置工具版本v1.7集成:     与 S32 Design Studio 集成 该工具箱会自动在 Simulink 模型位置旁边生成 _Config 文件夹,让用户可以轻松地将 Simulink 生成的代码导入 S32 Design Studio。每次生成代码时, _Config 文件夹都会根据新的更改进行更新。该工具箱还提供了一种启动 S32 Design Studio 实例的机制,并在 S32DS 的 Project Explorer 选项卡中导入生成的代码项目。 仿真模式: 我们支持以下仿真模式(每种模式均有助于验证和确认): 软件在环 (SIL) 处理器在环 (PIL) 外部模式 支持 PIL 模式下的分析: 每个受支持的外设/功能的示例: 我们添加了60 多个示例,包括: CDD 块(Ae、Dpga、Gdu、Mcl、Qdec) 通信(CAN、UART) AMMCLib IO Blocks (Adc, Dio, Pwm) ISR 块(硬件中断处理程序) MCAL 块(Gpt) 实用程序块(FreeMASTER) 软件在环/处理器在环/外部模式 有关更多详细信息、功能以及如何使用新功能,请参阅随附的《版本说明》文档。   MATLAB® 集成 NXP 基于模型的设计工具箱扩展了 MATLAB ®和 Simulink ®体验,允许客户评估和使用 NXP 的 S32M2xx MCU 和开箱即用的评估板解决方案: 基于模型的设计工具箱 S32M2xx 版本 1.0.0在安装方面与 MATLAB ®环境完全集成:   目标受众 此版本(1.0.0)旨在用于技术演示、评估目的以及 S32M2xx MCU 和评估板的原型设计。   有用的资源 示例、培训和支持: https://community.nxp.com/community/mbdt 回复:基于 NXP 模型的 S32M2xx 设计工具箱 - 版本 1.0.0 当我点击以下“转到 NXP 下载站点”按钮时: 它将我重定向到以下页面: 您能提供我可以下载 S32M2xx 基于模型的设计工具箱的位置吗? 回复:基于 NXP 模型的 S32M2xx 设计工具箱 - 版本 1.0.0 S32M2,不带外部升压电源吗? 回复: NXP 基于模型的设计工具箱(适用于 S32M2xx)– 版本 1.0.0 当我点击这个 Matlab 脚本上的链接时,我仍然找不到正确的 URL。 回复: NXP 基于模型的设计工具箱(适用于 S32M2xx)– 版本 1.0.0 你好,我也遇到了同样的问题。点击这个链接https://nxp.flexnetoperations.com/control/frse/download?element=3785898还是会跳转到账户信息界面,我找不到正确的网址。而且,在此之前我已经登录过我自己的账户。 首先,我点击这个链接: 然后, 结果是无法重定向正确的 URL。 回复:基于 NXP 模型的 S32M2xx 设计工具箱 - 版本 1.0.0 你好@SmallWhite , 发布后我们需要花一点时间来更新 NXP.com 网站上的所有文档。FlexNET 位置网址上提供了适用于 S32M2xx 的 MBDT 的发行说明以及快速入门指南:此处: https://nxp.flexnetoperations.com/control/frse/download ?element=3785898 请在访问此链接之前登录 NXP.COM。 回复: NXP 基于模型的设计工具箱(适用于 S32M2xx)– 版本 1.0.0 当我点击这段文字中的网址时,我总是会重定向到我的个人页面,而无法转到真正的网址。 我想知道是否有类似的 s32m244 快速参考指南?
記事全体を表示
罐头连接 Hi , 我有一块 IMX6 ULL evk 板。我的理解是它具有 CAN 功能。 有人可以告诉我将 DB-9 连接器连接到电路板的连接器吗?另外,如果盒子附带的基本图像启用了 CAN,如果没有,如何启用它。 提前致谢, 阿苏尔 i.MX6UL 回复:CAN 连接 Hello,  如果您要查找确切的零件编号,则是 WF1250801200,但它似乎已不再生产。 您可以参考此链接查看9 针 D 型连接器的引脚排列。 顺祝商祺! Salas. 回复:CAN 连接 Hi @Manuel_Salas , 如果您不能给我提供连接器。您能告诉我8针端口中每个针脚的用途吗?例如 CAN0_H 代表哪个引脚、CAN0_L 代表哪个引脚等等。 谢谢! 阿苏尔 回复:CAN 连接 Hi @Manuel_Salas , 谢谢您的回复。我希望使用连接器将 imx6ull 板端口连接到 DB-9 连接器,因为电路板的包装中没有附带连接器。 提前感谢! 阿苏尔 回复:CAN 连接 你好@athul_am 所有 i.MX 6 均支持一个 CAN,并在 i.MX 6SABRE-AI 上使用默认设备树。支持使用 FlexCAN 设备树的两种 CAN,但与 FEC 存在引脚冲突。支持 i.MX 6SoloX-SD、7Dual SABRE-SD、6Ultre Lite EVK 和 6ULL EVK 上的默认设备树。通过支持FlexCAN模块的平台,FlexCAN支持CANFD模式。 您还可以查看表格 42。IMX 参考手册上的 FlexCAN 驱动程序文件。 此外,i.MX6ULL 通过 J1201 端口提供 CAN 访问。 顺祝商祺! Salas.
記事全体を表示