CANからK64ブートローダーへの移植 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
1. はじめに MCUbootは、ほとんどのKinetisおよび i.mx RTデバイスで一般的に使用されるブートローダです。UART / USB / CAN / I2C / SPIを介したダウンロードアプリケーションをサポートできます。これにより、アプリケーション開発、最終製品製造など、製品ライフサイクル全体を通じて、Kinetisマイクロコントローラと i.mx RT MPUのプログラミングを迅速かつ容易に行うことができます。 K64は、Kinetisファミリで非常に人気のあるデバイスです。M4コア、512k以上のフラッシュ、120Mのメイン周波数、I2C / SPI / UART / CAN / USB / ENETなどの豊富なインターフェースを備えています。しかし、K64のMCUbootデモにCANが含まれていないのは少し厄介です。K64のCANはブートローダーアプリケーションをサポートできませんか?いいえもちろんそうじゃないです。ここでは、CAN機能をK64ブートローダーに移植します。 Kinetisファミリには、FlexCANとMSCANの2種類のCANペリフェラルがあります。FlexCANはMSCANよりも複雑です。K64にはFlexCANがあります。作業をスピードアップするために、FlexCANドライバと関連コードをTWR-KV46ブートローダから移植できます。 ハードウェア: TWR-SERボード2枚 TWR-ELEV2セット TWR-K65F150M TWR-K64F120M ソフトウェア: MCUXpresso 11.0 MCUBoot 2.0.0 パッケージ SDK_2.6.0_TWRのK64F120M 2. ソフトウェアの移植 ステップ1、以下のファイルをプロジェクトにコピーしますtwrk64f120m_tower_bootloader。 \drivers\fsl_flexcan.c \drivers\fsl_flexcan.h \ソース\ブートローダー\src\flexcan_peripheral_interface.c ステップ2、FlexCANを有効にするようにプロジェクトを変更します。 bootloader_config.hでは、[定義BL_CONFIG_CAN 1 に変更します。 peripherals_MK64F12.c で、 #if BL_CONFIG_CAN CAN0の {.typeMask = kPeripheralType_CAN、 .instance = 0 の場合、 .pinmuxConfig = can_pinmux_config, .controlInterface = &g_flexcanControlInterface, .byteInterface = &g_flexcanByteInterface, .packetInterface = &g_framingPacketInterface }、 #endif // BL_CONFIG_CAN ピンマルチプレクサ設定。peripherals_pinmux.hでは、足す #define BL_ENABLE_PINMUX_CAN0 (BL_CONFIG_CAN) //!CAN ピンマルチプレクサ 構成 #define CAN0_RX_PORT_BASE PORTB PTAグループの #define CAN0_RX_GPIO_PIN_NUM 18 PIN 13 #define CAN0_RX_FUNC_ALT_MODE kPORT_MuxAlt2 ALT モードの CAN0 RX 機能 (ピン 13) #define CAN0_TX_PORT_BASE PORTB PTAグループの #define CAN0_TX_GPIO_PIN_NUM 19 PIN 12 #define CAN0_TX_FUNC_ALT_MODE kPORT_MuxAlt2 ALT モードの CAN0 TX 機能 (ピン 12) 時計を設定します。FlexCANクロック・ソースは、OSCERCLKまたはバス・クロックです。ここでは、48Mhzで動作するバスクロックを使用します。flexcan_peripheral.cでは、これらのコードを追加します。 定数 flexcan_timing_config_t bit_rate_table48m[] = { { 23, 3, 4, 4, 4 }, /* 125 kHz */ { 11, 3, 4, 4, 4 }, /* 250 kHz */ { 5, 3, 4, 4, 4 }, /* 500 kHz */ { 3, 3, 4, 4, 4 }, /* 750 kHz */ { 2, 3, 4, 4, 4 } /* 1 MHz */ }; 変更行621 FLEXCAN_SetTimingConfig((CAN_Type *)baseAddr, &bit_rate_table48m[s_flexcanInfo.baudrate]); ステップ3、プロジェクトをコンパイルします。 3.機能テスト ソフトウェアの準備 CANバス経由でブートローダーを接続するために、NXPはブリッジとしてTWR-K65を持っています。ただし、そのソースコードはK64SDKにありません。MCUBoot2.0.0 パッケージに入っています。ユーザーは https://www.nxp.com/design/software/development-software/mcuxpresso-software-and-tools/mcuboot-mcu-bootloader-for-nxp-microcontrollers:MCUBOOT からパッケージをダウンロードできます ブリッジプロジェクトは buspal と呼ばれ、NXP_Kinetis_Bootloader_2_0_0\apps\bus_pal\MK65F18 にあります。BusPalは、blhostのコンパニオンとして利用できる組み込みソフトウェアツールです。このツールは、バストランスレータとして機能します。 UARTを介したblhostおよびI2C、SPI、またはCANを介したターゲットデバイスとの接続を確立し、blhostがUSBターゲットデバイスからのコマンドと応答を実行するのを支援します。BusPal は、一部のプラットフォームで使用できます。BusPalのソース・コードは、Kinetisブートローダ・リリースに付属しており、FRDM-KL25、TWR-KV46F150M、TWR-K65F180Mをサポートしており、他のプラットフォームで実行するようにカスタマイズできます。 buspalの詳細については、Kinetis blhost User's Guideの付録Cを参照してください。 ハードウェア接続 TWR-SERはトランシーバーとしてTJA1050されています。両方のボードでJ7を接続できます。タワーシステムを構築するときは、ユーザーは電力に注意する必要があります。パワーツリーは非常に柔軟です。設定が不適切な場合、TJA1050が機能しない場合があります。 TWR-K65F180MのBuspalプロジェクトは、UART1を使用してコンピュータと接続します。ポートは TWR-SER 上にあります。接続を簡単にするために、openSDA UARTポートを共有できます。openSDA UARTはUART2を使用しており、K65タワーボード上のJ33およびJ34にUART1信号をジャンプできます。 テスト: コマンド ウィンドウを開き、次のように入力します。 >blhost -p com4,57600 –buspal can,0,321,123 – get-property 10 このコマンドは、システム全体が正しく機能しているかどうかを確認できます。 その後、今すぐコードをK64にダウンロードできます。入力してください >blhost -p com4,57600 –buspal can,0,321,123 – flash-image xxxxxx.s19 消去 Kinetis KシリーズMCU
記事全体を表示