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を有効にするようにプロジェクトを変更します。
#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
#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_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-b... からパッケージをダウンロードできます
ブリッジプロジェクトは 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 消去