XML ファイルからシステム データを読み取ることができません

最近、デバッグ シミュレーションに ccs を使用すると、エラーが報告され続ける理由がわかりません。または、プログラムが正常にダウンロードできる場合もあります。いくつかのエラーケースは次のとおりです。

プログラムの 1 つ以上のセクションが書き込み不可能なメモリ領域に分類されます。 

無効なターゲット構成ファイル 

デバッグにまったくアクセスできない場合があります。

または、デバッグ インターフェイスに入った後、シミュレーションを開始するボタンとシミュレーションを一時停止するボタンが灰色になります。

 しかし、どこに問題があるのか​​わかりません。浦中のカスタマーサービスに相談したところ、ファイルの場所が異常である可能性がありますが、以前はプログラムは正常にダウンロードできていたと思います。さらに、以前の経験では、場所に問題がある場合、コンパイル時にヘッダー ファイルが見つからないことが通知されます。次に、2 番目の方法は、開発ボードの電源を切り、ダウンローダーを開発ボードとコンピューターから外し、次に開発ボードの電源を入れ、インジケーター ライトが点滅しているかどうかを確認してから、ダウンローダーを開発ボードに接続します。最後にダウンローダーをコンピュータに接続しますが、この方法を始めた当初は正常にプロジェクトをダウンロードできたのですが、何度か試してもダウンロードできず、長年悩まされてきた問題です。インターネット上にもいくつかの指摘があります。たとえば、cmd ファイルの一部の領域のメモリが十分に大きくありません。試してみましたが、それでも動作しません。最も重要な点は、この問題が言及されていることです。以前ブログで大きな配列の使い方を書きましたが、メモリの割り当てが無理だとコンパイル時に通りません。

今日プロジェクトを再構築して一番単純なウォーターランプのプログラムをインポートしたところ、何度か試した結果正常にダウンロードできることが分かりましたので、以前ダウンロードできなかったプロジェクトもコード自体には問題がないのではないかと思います。ダウンロードの失敗は、デバッグ設定に問題があるはずです。次に、2 つのプロジェクトのデバッグを比較します。(正常にダウンロードできるプロジェクトをプロジェクト1、正常にダウンロードできないプロジェクトをプロジェクト2と呼びます)

-------------------------------------------------- -------------------------------------------------- ------------------------

まず、比較のために設定のデバッグ ページに入ります。[プロジェクト] をクリックし、次に [プロパティ] をクリックします。次に、「デバッグ」をクリックします

 プロジェクト 1 のインターフェイスは次のとおりです。エミュレータの導入があることがわかります。

 ただし、プロジェクト 2 のインターフェイスは次のとおりです。 無効なターゲット構成ファイルというエラーが報告されていることは明らかです (多くの情報を確認しましたが、当時はこの問題を解決する方法がわかりませんでした。私は常に、新しいエミュレータ xxcml のデバイス モデルは正しいです)

-------------------------------------------------- -------------------------------------------------- ---------------------------- 

 次に、デバッグ設定を比較します。「実行」をクリックし、「デバッグ構成」をクリックして、それらを 1 つずつ比較します。

 プロジェクト 1 のインターフェイスは次のとおりです。

 

プロジェクト 2 のインターフェイスは次のとおりです。

-------------------------------------------------- -------------------------------------------------- ------------------------

 デバッグ設定に問題があることがわかります。以前に通常どおりダウンロードできるインターフェイスを開いて変更するか、以下の通常のインターフェイスと比較して変更し、デバッグを開始できます。

1. 冗長なデバッグシミュレーションを削除します。

 2. ターゲット構成を次のように変更します: ${target_config_active_default:Example24_DSP2833x_SCI_echoback}

${target_config_active_default: 次の内容はプロジェクト名です。これは上のボックス内の名前です。直接コピーできます。

3. プログラムを設定する

 4. 次に、「適用」をクリックし、「デバッグ」をクリックして通常のシミュレーションを開始します。

ps: 戻ってこの時点でプロジェクトのプロパティを見てみましょう。デバッグ ページが正しいことがわかります。

------------------------------------------------2023.5。 24 新規 ------------------------------------------------ -- -----------

プログラムの 1 つ以上のセクションが書き込み不可能なメモリ領域に分類されます。 

このエラーに関しては、上記の手順に従っても完全に成功していないことがわかりました。最後に、突然配列を小さくしたくなり、ダウンロードできることがわかりました。ここで報告されたエラーを詳しく見てみましょう。実際、これは一部のメモリ アドレスの書き込みに失敗したことを意味します。つまり、書かれたプログラムは大きなメモリ領域またはデータ領域を占有しますが、実際にはコンパイル時にエラーは報告されませんが、書き込みできないメモリ アドレスが入力される可能性があります。したがって、メモリ割り当てを再統合したり、メモリ割り当てを少し拡張したり、冗長アドレスをもう少し増やしたりすることができます。

アドレスが継続的に利用可能ではないことがわかります。

 以下で正式なアドレス割り当てを確認できます。

MEMORY
{
PAGE 0 :
   /* BEGIN is used for the "boot to SARAM" bootloader mode      */

   BEGIN      : origin = 0x000000, length = 0x000002     /* Boot to M0 will go here                      */
   RAMM0      : origin = 0x000050, length = 0x0003B0
   RAML0      : origin = 0x008000, length = 0x001000
   RAML1      : origin = 0x009000, length = 0x001000
   RAML2      : origin = 0x00A000, length = 0x001000
   RAML3      : origin = 0x00B000, length = 0x001000
   ZONE7A     : origin = 0x200000, length = 0x00FC00    /* XINTF zone 7 - program space */
   CSM_RSVD   : origin = 0x33FF80, length = 0x000076     /* Part of FLASHA.  Program with all 0x0000 when CSM is in use. */
   CSM_PWL    : origin = 0x33FFF8, length = 0x000008     /* Part of FLASHA.  CSM password locations in FLASHA            */
   ADC_CAL    : origin = 0x380080, length = 0x000009
   RESET      : origin = 0x3FFFC0, length = 0x000002
   IQTABLES   : origin = 0x3FE000, length = 0x000b50
   IQTABLES2  : origin = 0x3FEB50, length = 0x00008c
   FPUTABLES  : origin = 0x3FEBDC, length = 0x0006A0
   BOOTROM    : origin = 0x3FF27C, length = 0x000D44


PAGE 1 :
   /* BOOT_RSVD is used by the boot ROM for stack.               */
   /* This section is only reserved to keep the BOOT ROM from    */
   /* corrupting this area during the debug process              */

   BOOT_RSVD  : origin = 0x000002, length = 0x00004E     /* Part of M0, BOOT rom will use this for stack */
   RAMM1      : origin = 0x000400, length = 0x000400     /* on-chip RAM block M1 */
   RAML4      : origin = 0x00C000, length = 0x001000
   RAML5      : origin = 0x00D000, length = 0x001000
   RAML6      : origin = 0x00E000, length = 0x001000
   RAML7      : origin = 0x00F000, length = 0x001000
   ZONE7B     : origin = 0x20FC00, length = 0x000400     /* XINTF zone 7 - data space */
}


SECTIONS
{
   /* Setup for "boot to SARAM" mode:
      The codestart section (found in DSP28_CodeStartBranch.asm)
      re-directs execution to the start of user code.  */
   codestart        : > BEGIN,     PAGE = 0
   ramfuncs         : > RAML0,     PAGE = 0
   .text            : > RAML1,     PAGE = 0
   .cinit           : > RAML0,     PAGE = 0
   .pinit           : > RAML0,     PAGE = 0
   .switch          : > RAML0,     PAGE = 0

   .stack           : > RAMM1,     PAGE = 1
   .ebss            : > RAML4,     PAGE = 1
   .econst          : > RAML5,     PAGE = 1
   .esysmem         : > RAMM1,     PAGE = 1

   IQmath           : > RAML1,     PAGE = 0
   IQmathTables     : > IQTABLES,  PAGE = 0, TYPE = NOLOAD

   /* Uncomment the section below if calling the IQNexp() or IQexp()
      functions from the IQMath.lib library in order to utilize the
      relevant IQ Math table in Boot ROM (This saves space and Boot ROM
      is 1 wait-state). If this section is not uncommented, IQmathTables2
      will be loaded into other memory (SARAM, Flash, etc.) and will take
      up space, but 0 wait-state is possible.
   */
   /*
   IQmathTables2    : > IQTABLES2, PAGE = 0, TYPE = NOLOAD
   {

              IQmath.lib<IQNexpTable.obj> (IQmathTablesRam)

   }
   */

   FPUmathTables    : > FPUTABLES, PAGE = 0, TYPE = NOLOAD

   DMARAML4         : > RAML4,     PAGE = 1
   DMARAML5         : > RAML5,     PAGE = 1
   DMARAML6         : > RAML6,     PAGE = 1
   DMARAML7         : > RAML7,     PAGE = 1

   ZONE7DATA        : > ZONE7B,    PAGE = 1

   .reset           : > RESET,     PAGE = 0, TYPE = DSECT /* not used                    */
   csm_rsvd         : > CSM_RSVD   PAGE = 0, TYPE = DSECT /* not used for SARAM examples */
   csmpasswds       : > CSM_PWL    PAGE = 0, TYPE = DSECT /* not used for SARAM examples */

   /* Allocate ADC_cal function (pre-programmed by factory into TI reserved memory) */
   .adc_cal     : load = ADC_CAL,   PAGE = 0, TYPE = NOLOAD

}

実際、実際に使用できる 3 つのブロックは RAMM、RAML、SARAM なので、次のようにそれらのアドレスをつなぎ合わせることができます。

MEMORY
{
PAGE 0 :
   /* BEGIN is used for the "boot to SARAM" bootloader mode      */

   BEGIN      : origin = 0x000000, length = 0x000002     /* Boot to M0 will go here                      */
   ZONE7A     : origin = 0x200000, length = 0x00FC00    /* XINTF zone 7 - program space */
   CSM_RSVD   : origin = 0x33FF80, length = 0x000076     /* Part of FLASHA.  Program with all 0x0000 when CSM is in use. */
   CSM_PWL    : origin = 0x33FFF8, length = 0x000008     /* Part of FLASHA.  CSM password locations in FLASHA            */
   ADC_CAL    : origin = 0x380080, length = 0x000009
   RESET      : origin = 0x3FFFC0, length = 0x000002
   IQTABLES   : origin = 0x3FE000, length = 0x000b50
   IQTABLES2  : origin = 0x3FEB50, length = 0x00008c
   FPUTABLES  : origin = 0x3FEBDC, length = 0x0006A0
   BOOTROM    : origin = 0x3FF27C, length = 0x000D44


PAGE 1 :
   /* BOOT_RSVD is used by the boot ROM for stack.               */
   /* This section is only reserved to keep the BOOT ROM from    */
   /* corrupting this area during the debug process              */

   BOOT_RSVD  : origin = 0x000002, length = 0x00004E     /* Part of M0, BOOT rom will use this for stack */


	RAMM1      : origin = 0x000050, length = 0x0007B0
	RAML4      : origin = 0x008000, length = 0x008000
	ZONE7B     : origin = 0x20FC00, length = 0x002000
}


SECTIONS
{
   /* Setup for "boot to SARAM" mode:
      The codestart section (found in DSP28_CodeStartBranch.asm)
      re-directs execution to the start of user code.  */
   codestart        : > BEGIN,     PAGE = 0
   ramfuncs         : > RAMM1,     PAGE = 1   //RAML0
   .text            : > RAML4,     PAGE = 1   //RAML1
   .cinit           : > RAMM1,     PAGE = 1   //RAML0
   .pinit           : > RAMM1,     PAGE = 1  //RAML0
   .switch          : > RAMM1,     PAGE = 1   //RAML0

   .stack           : > RAMM1,     PAGE = 1
   .ebss            : > RAML4,     PAGE = 1
   .econst          : > RAMM1,     PAGE = 1   //RAML5
   .esysmem         : > RAMM1,     PAGE = 1

   IQmath           : > RAMM1,     PAGE = 1   //RAML1
   IQmathTables     : > IQTABLES,  PAGE = 0, TYPE = NOLOAD

   /* Uncomment the section below if calling the IQNexp() or IQexp()
      functions from the IQMath.lib library in order to utilize the
      relevant IQ Math table in Boot ROM (This saves space and Boot ROM
      is 1 wait-state). If this section is not uncommented, IQmathTables2
      will be loaded into other memory (SARAM, Flash, etc.) and will take
      up space, but 0 wait-state is possible.
   */
   /*
   IQmathTables2    : > IQTABLES2, PAGE = 0, TYPE = NOLOAD
   {

              IQmath.lib<IQNexpTable.obj> (IQmathTablesRam)

   }
   */

   FPUmathTables    : > FPUTABLES, PAGE = 0, TYPE = NOLOAD

//   DMARAML4         : > RAML4,     PAGE = 1
//   DMARAML5         : > RAML5,     PAGE = 1
//   DMARAML6         : > RAML6,     PAGE = 1
//   DMARAML7         : > RAML7,     PAGE = 1

   ZONE7DATA        : > ZONE7B,    PAGE = 1

   .reset           : > RESET,     PAGE = 0, TYPE = DSECT /* not used                    */
   csm_rsvd         : > CSM_RSVD   PAGE = 0, TYPE = DSECT /* not used for SARAM examples */
   csmpasswds       : > CSM_PWL    PAGE = 0, TYPE = DSECT /* not used for SARAM examples */

   /* Allocate ADC_cal function (pre-programmed by factory into TI reserved memory) */
   .adc_cal     : load = ADC_CAL,   PAGE = 0, TYPE = NOLOAD

}

おすすめ

転載: blog.csdn.net/qq_43811597/article/details/130820628