2179758_ja-JP

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

2179758_ja-JP

2179758_ja-JP

最新バージョンのLPC1758のフラッシュの問題

NXPコミュニティの皆様、こんにちは。

最近、古い LPC1758FBD80 ( SKB283.1 10 ZSD1810A ) を交換するために、新しいバージョンの LPC1758FBD80 ( AZC39200 11 SSD2347C ) を購入しました。

次の 2 つの問題が発生しています。

  • IAR 経由のフラッシュは次のエラーで失敗します。
Error while calling macro execUserFlashInit Failed to load flash loader: FlashNXPLPC512K_Cortex.flash Could not start CPU core. (ErrorCode: -2)

同じ IAR セットアップは、古いLPC1758FBD80でも完璧に動作します。
最新バージョンの IAR ARM ツールチェーンですでに試しましたが、同じエラーが発生して失敗します。

  • J-Flash を使用するとバイナリがチップに正しくロードされるようですが、アプリケーションは最近のLPC1758FBD80では実行されないようです。一方、同じバイナリは古いバージョンでは完璧に動作します。

質問:

  • 最近のLPC1758FBD80 ( AZC39200 11 SSD2347C)をサポートするために、IAR フラッシュローダー マクロまたは設定に推奨される更新はありますか?

  • 最近のLPC1758FBD80 ( AZC39200 11 SSD2347C ) について、ブート ROM、フラッシュ、または PLL 初期化の違いを指定したエラッタ/変更ログが公開されていますか?

  • 最近のLPC1758FBD80でアプリケーションを実行するために必要な既知の変更はありますか?

古いLPC1758FBD80から新しいものにアプリケーションを移行する方法について、アドバイスや推奨事項をいただければ幸いです。

よろしくお願い申し上げます。

LPC17xxRe: Flashing issues with recent version of LPC1758

こんにちは@Tay33

とても嬉しいです!発見したことや結果を共有していただきありがとうございます。きっと他の人にも役立つと思います!

ディエゴ

Re: Flashing issues with recent version of LPC1758

@diego_charlesさん、返信ありがとうございます。

ISP ピンを確認しましたが、それでもアプリケーションを起動できませんでした。

しかし、IAR フラッシュ ローダーがもう動作していないのではないかと疑っていたので、プロジェクト → オプション → デバッガー → ダウンロードの下にある「フラッシュ ローダーを使用する」オプションのチェックを外したら、J-Link プローブから新しい LPC1758 を正常にデバッグできるようになりました。

デバッグ中に、MCUがChip_SetupXtalClocking()関数(sysinit_17xx_40xx.c内)でスタックしていることがわかりました。SCS レジスタの SYSCTL_OSCSTAT ビットが低く固定されていたため、ファイルでエラーが発生しました。

外部発振器を調べたところ、発振するのではなく安定した電圧レベルを生成していることに気付きました。チップの交換中に何か問題が発生し、外部発振器が損傷した可能性があります。

一時的な修正として、内部 RC 発振器を使用するように切り替えたところ、アプリケーションが正常に起動しました。

私は間違いなく IAR にお問い合わせして、LPC1758 用のフラッシュ ローダーの更新バージョンを入手するつもりですが、今のところは先に進むことができます。

サポートありがとうございます!

Re: Flashing issues with recent version of LPC1758

こんにちは@Tay33

お問い合わせいただきありがとうございます!2 番目のデバイス リビジョンから 3 番目のデバイス リビジョンに移行していると理解しています。

diego_charles_0-1759859041637.png

最新版では、以前の版からのいくつかの誤りが修正されています。表 2 の機能上の問題表によると、変更点をさらに説明する別のエラッタ バージョンは用意されていません。

確認したところ、このリビジョンでは新しいソフトウェアはリリースされておらず、IAR のフラッシュローダーを更新するためのガイドラインもありません。

J-Link でプログラミングした後でも起動に失敗するとのことでした。CAN ISP ピンを確認できますか?最新リビジョンを使用した場合、このピンの測定電圧はどれくらいですか?

よろしくお願いします、

ディエゴ



Re: Flashing issues with recent version of LPC1758

こんにちは、
次のエラーが発生するため、IAR は LPC17xx.mac ファイルを最新の LPC1758 バージョンで動作するように更新していないと思われます。

C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.4\arm/config/flashloader/NXP/LPC17xx.mac(40,17): Error: Operation error.  


しかし、これを機能させるために何を変更する必要があるかはわかりません。
誰かこれについてCAN助けてくれませんか?

__var FLASHCFG;
__var MEMMAP;
__var CLKSRCSEL;
__var SCS;
__var CCLKSEL;
__var PLL0CON;

execUserFlashInit()
{
  // Save registers contents
  FLASHCFG  = __readMemory32(0x400FC000, "Memory");
  MEMMAP    = __readMemory32(0x400FC040, "Memory");
  CLKSRCSEL = __readMemory32(0x400FC10C, "Memory");
  SCS       = __readMemory32(0x400FC1A0, "Memory");
  CCLKSEL   = __readMemory32(0x400FC104, "Memory");
  PLL0CON   = __readMemory32(0x400FC080, "Memory");

  // Disable the PLL.
  __writeMemory32(0x00000000, 0x400FC080, "Memory"); // PLL0CON = 0
  // Qualify the PLL change.
  __writeMemory32(0x000000AA, 0x400FC08C, "Memory"); // PLL0FEED = 0xAA
  __writeMemory32(0x00000055, 0x400FC08C, "Memory"); // PLL0FEED = 0x55

  __writeMemory32(0x00000000, 0x400FC104, "Memory"); // CCLKSEL=0
  // Enable main clock
  __writeMemory32(0x00000020, 0x400FC1A0, "Memory"); // SCS.OSCEN = 1
    
  __delay(1); //Reading status is unstable
  // Wait on OSCSTAT bit, set when oscillator is ready.
  //while(!(__readMemory32(0x400FC1A0, "Memory") & 0x40))
    
  // Switch to main clock instead of internal RC for stable JTAG auto-speed
  __writeMemory32(0x00000001, 0x400FC10C, "Memory"); // CLKSRCSEL = 1
    
  // Make sure that the flash memory system is correctly setup.
  __writeMemory32(0x3A      , 0x400FC000, "Memory"); // FLASHCFG = 0x3A;
  
  // If the MAM values was wrong, a dummy read is necessary to get the flash memory in sync.
  __writeMemory32(0x00000001, 0x400FC040, "Memory"); // MEMMAP = 1
  __readMemory32(0x00000000, "Memory");
}

execUserFlashExit()
{
  // Restore modified registers
  __writeMemory32(CLKSRCSEL, 0x400FC10C, "Memory");
  __writeMemory32(PLL0CON, 0x400FC080, "Memory");
  // Qualify the PLL change.
  __writeMemory32(0x000000AA, 0x400FC08C, "Memory");
  __writeMemory32(0x00000055, 0x400FC08C, "Memory");
  __writeMemory32(CCLKSEL, 0x400FC104, "Memory");
  __writeMemory32(SCS, 0x400FC1A0, "Memory");
  
  if (SCS & 0x20)
  {
    __delay(1); //Reading status is unstable
    // Wait on OSCSTAT bit, set when oscillator is ready.
    //while(!(__readMemory32(0x400FC1A0, "Memory") & 0x40));
  }
  
  __writeMemory32(FLASHCFG, 0x400FC000, "Memory");
  __writeMemory32(MEMMAP, 0x400FC040, "Memory");
    
  // Dummy read to get the flash memory in sync
  __readMemory32(0x00000000, "Memory");
}

タグ(1)
評価なし
バージョン履歴
最終更新日:
‎11-22-2025 08:31 AM
更新者: