LPC54XXXがISPモードに入った後、UART/I2C/SPI/USBを介してアプリケーションをアップグレードするには、2つの方法があります。1つは、電源投入時にISPピンの状態を変更する方法であり、もう1つは、コード実行中にソース・コードでISP Boot ROMを再度呼び出す方法です。最初の方法は、ユーザーがコードを書く必要がなく、操作も簡単ですが、柔軟性に欠け、現場での運用には適さないという欠点があります。2番目の方法はより柔軟で、ユーザー自身が開発したセカンダリ・ブートローダ・アプリケーションで広く使用されていますが、自分でコードを書く必要があります。
実際の開発において、パーソナル・コンピュータのUSBポートが使いやすいため、アプリケーションのアップグレードにUSBポートを使用する方法がますます普及しています。残念ながら、ISPモードでUSBポートからアプリケーションをアップグレードする方法は、現在のところありません。そのため、ここで方法を共有するためにこの記事が用意されました。
ISPモードに入るには、以下の2つの方法があります。
ハードウェア側では、電源投入またはリセットの前に ISP0~2ピンを設定すると、MCUはISPモードに入り、アプリケーションをアップグレードします。ピンの構成方法は以下のとおりです。
図1.
ISPモードでは、アプリケーションはUART/I2C/SPI/USBを介してアップグレードされます。この記事は、USB方式に焦点を当てています。USBについては、LPC54XXXのUSB0(全速力)とUSB1(高速)の両方をアプリケーションのアップグレードに使用できます。USBのアップグレード・モードには、次の2種類があります。それは、DFU(デバイス・ファームウェア・アップデート)とMSC(マス・ストレージ・デバイス・クラス)です。
図2.
ISPパラメータ配列のバイト0とバイト1を変更して、アプリケーション・アップグレード・モードを選択します。キー・コードは以下のとおりです
図3.
図3には、注意すべき3つの重要な点があります。
- isp_mode[0]が0xAAとして設定されている場合、DFUモードです。それ以外の場合、MSCモードです(たとえば、isp_mode[0]が0xFFとして設定されている場合)。
-isp_mode[1]が8に設定されている場合、USB FSが使用され、9に設定されている場合、USB HSが使用されます。
- Chip_IAP_ReinvokeISP関数を介してISPモードに入ります。
2.1 DFUを利用してアプリケーションをアップグレードする
ツールの準備:
DFU を使用するには、アプリケーションをアップグレードするために dfu-util ツールが必要です。DFU ツールは DFU の公式ウェブサイトからダウンロードできます。リンクは以下の通りです。
http://dfu-util.sourceforge.net/
さらに、NXPはLPCScryptにdfu-utilツールを組み込んでいます。LPCScrypt をダウンロードした場合は、binディレクトリで直接使用できます。
DFUによるアプリケーションの更新手順:
LPC54628を例にとると、ISPはDUFモードとして設定され、USB1を使用してアプリケーションをアップグレードします。
isp_mode[0] = 0xAA; isp_mode[1] = SL_USBHS;
アプリケーションをビルドして MCU にダウンロードし、再度電源を入れ、USB1をコンピュータに接続します。ここで、
次のコマンドを使用します。./dfu-util -l DFUデバイスを見つけます。
次のコマンドを使用します。./dfu-util -D .\lpcxpresso54628_gpio_led_output.bin -a 0
alt番号0のデバイスにlpcxpresso54628_gpio_led_output.binファイルをダウンロードします。alt0は「FLASH」、alt1は「RAM」で、具体的な操作は以下のとおりです。
図4。
アプリケーションのダウンロードに成功したら、MCUをリセットし、開発ボード上のLEDの点滅現象を観察します。
2.2 アプリケーションのアップグレードにMSCを使用する
LPC54628を例にとると、ISPはMSCモードとして設定され、USB1を使用してアプリケーションをアップグレードします。図3の関連コードを次のように変更します。
isp_mode[0] = 0xFF; isp_mode[1] = SL_USBHS;
アプリケーションをビルドして MCU にダウンロードし、再度電源を入れ、USB1をコンピュータに接続します。コンピュータには、次のように別のディスクが見つかります。
図5。
次に、以下の手順を実行してファームウェアを更新します。
- CRP DISABLDディスク内の元のfirmware.binを削除します。
アプリケーションの名前を変更してください(例:lpcxpresso54628_gpio_led_output.bin をfirmware.bin に変更してください)。
- アプリケーションのfirmware.binをCRP DISABLDディスクにコピーします。
- MCU をリセットし、LED が点滅しているのを確認できれば、アプリケーションが正常にアップグレードされたことが証明されます。
注:アプリケーションの名前を変更する必要がありますが、CRP DISABLDディスクでは名前の変更は実行できません。
Demo project:lpcxpresso54628_flashiap.zip
アプリケーションアップグレードファイル:lpcxpresso54628_gpio_led_output.bin(SDKデモコードによって生成された)