ホーム › フォーラム › Texas Instruments › マイコン › MSP430 › ファーム書き換えでベリファイエラー
このトピックには3件の返信が含まれ、2人の参加者がいます。4 年、 2 ヶ月前に umamiti さんが最後の更新を行いました。
-
投稿者投稿
-
ファーム書き換えでベリファイエラー
デバイス型番:MSP430FR2355CCSでビルドしたファームを書き換えようとすると
MSP430: File Loader: Verification failed: Values at address 0x081B0 do not match Please verify target memory and memory map.
とエラーが発生し、デバッグができない状態となってしまいます手順としては
・CCSでソースコードをビルド
・デバッグボタン(虫マーク)押下してデバッグ開始
ですボードはMSP-EXP430FR2355 LaunchPad の評価基板を使用し、ボード上に実装されているeZ-FET Debug Probeの
USBコネクタとPCを接続しています
CCSのバージョンは最新の10.1.0 ですエラーが発生した状態でBSLツールを接続すると、BSL Password is error! 状態となっています
再度BSLツールを接続し、BSL Password is correct!と書き換えたあとは、CCSで再度ファームの書き込みが可能となりますが、
コードを変更し、再度書き込みを行おうとすると、ベリファイエラーが発生しますこのため、CCSを使って効率よく評価実験ができない状態となっております
解決方法をご教示願いますikeda777様
今回のエラーの内容は、CCSが指定された実行ファイルを使用してターゲットメモリの内容を検証し、ターゲットメモリにロードしようとしたときに、不一致が発生していることが考えられます。
(今回、不一致が発生しているアドレス0x081B0は、Main: code memory領域となります。)
一般的な原因として、CCSが実行ファイルをターゲットに正常にロードできなかったことが考えられます。詳細につきましては、Data Verification Errorsをご参照下さい。まずは次の項目についてご教示頂けますでしょうか?
・リンカーコマンドファイルは、デフォルトから変更されていますでしょうか
→リンカーコマンドファイルは、プロジェクト内の.cmdファイルから確認することが出来ます。・デバッガーのメモリマップは、デフォルトから変更されていますでしょうか
→デフォルトでは無効になっております。デバック画面のメニューバー->Tools->On-chip Flashで開かれたWindow内のMemory Mapを選択することで確認方法出来ます。・デバイスに接続し、実際の0x081B0アドレスのデータをご確認頂けますでしょうか?
→エディット画面のメニューバー->View->Target Configurationsで開かれたWindow内の、.ccxmlファイルを右クリックし、Launch Selected Configurationを選択します。デバック画面に切り替わった後、メニューバー->Connect Targetでデバイスに接続後、メニューバー->View->Memory Browserで特定のアドレスのデータが確認出来ます。・書き込みを行なうファームの中で、FRAM領域の書き込み保護機能を使用されていますでしょうか。
・新たにCCS Projectを作成(main関数のみのシンプルなものなど)し、書き込みが可能かお試し頂けますでしょうか?
・「BSL Password is error!」と表示された際のBSLの送信コマンドは、「RX Password」コマンドになりますでしょうか?
→「RX Password」コマンド送信時に、パスワードが不一致の場合は、FRAM領域がMass Eraseされます。結果として、FRAM領域が初期状態となり、新たにファームを書き込むことが可能になっている可能性があり、BSLツール接続時の実施内容について確認させていただければと思います。以上、よろしくお願い致します。
早速の回答ありがとうございます。
以下、確認事項の回答となります。ご確認お願いします。
> ・リンカーコマンドファイルは、デフォルトから変更されていますでしょうか
> →リンカーコマンドファイルは、プロジェクト内の.cmdファイルから確認することが出来ます。
変更なしです。プロジェクトを新規作成したものと一致してます。> ・デバッガーのメモリマップは、デフォルトから変更されていますでしょうか
> →デフォルトでは無効になっております。デバック画面のメニューバー->Tools->On-chip Flashで開かれたWindow内のMemory Mapを選択することで確認方法出来ます。
Start: 0x0, End: 0xFFFFFFFFFFFFFFFF, Attributes: RAM
特に設定してません。> ・デバイスに接続し、実際の0x081B0アドレスのデータをご確認頂けますでしょうか?
作成した関数をコールする際の引数の数値を変更し、FW のバイナリが意図通りに変化していることを確認してます。(バイナリの差分は1byteのみ)> ・書き込みを行なうファームの中で、FRAM領域の書き込み保護機能を使用されていますでしょうか。
CCS General > FRWP は無効にしてます。> ・新たにCCS Projectを作成(main関数のみのシンプルなものなど)し、書き込みが可能かお試し頂けますでしょうか?
新規プロジェクトを New CCS Project から Target を MSP430FR2355 とし、Compiler は TI v20.2.0.LTS を、Templates から Empty Project (with main.c) を選択して作成しました。
この FW を問題発生後のターゲットに CCS の Debug でロードしましたが、
`
MSP430: File Loader: Verification failed: Values at address 0x08000 do not match Please verify target memory and memory map.
MSP430: GEL: File: C:\(…省略…)\Empty.out: a data verification error occurred, file load failed.
`
となり、プログラム先頭から FRAM 更新が失敗するようです。別の未使用ターゲットに対して、上記の新規プロジェクトの FW をロードすると、
`
MSP430: Error initializing emulator: A firmware update is required for the MSP430 Debug Interface (MSP-FET430UIF / MSP-FET / eZ-FET). Click the “Update” button to update the firmware and launch your debug session (this may require several update steps). DO NOT UNPLUG THE INTERFACE DURING THE UPDATE.
`
と初回 eZ-FET の更新が求められますが、もちろん問題なく FRAM 更新でき、プログラムを多少変更してからの FRAM 再更新もできてます。また、問題が発生するプロジェクトは MSP430Ware から作成していたため、
再度 MSP430Ware 3.80.10.09 の Example Projects > 00_EMPTYPROJECT > emptyProject を Import してみましたが、こちらも問題なく FRAM 更新できてます。
(プロジェクトのプロパティ > CCS General で Variant を FR4133 から FR2355 に変更し、また、driverlib をコンパイルするために CCS Build > MSP430 Compiler > Processor Options で data model を small から large に変更してます)> ・「BSL Password is error!」と表示された際のBSLの送信コマンドは、「RX Password」コマンドになりますでしょうか?
「BSL Password is error!」は RX Password コマンドで初期パスワードを送信した際に表示されておりました。
こちらはパスワードを一致させると後続の RX Data Block コマンドで FRAM を更新できることを確認しており、
また、TX Data Block で更新後の FRAM を取得できることも確認しております。BSL は問題なく動作してそうです。問題発生後のターゲットに対してブレイクポイントの設定や、Register、Memory にアクセスすることは可能なため、単純に FRAM の更新ができなくなっているように見えます。
また、BSL でパスワード不一致させて初期化させた後は再度 FRAM の更新ができております。以上、宜しくお願い致します。
ご確認いただきまして、ありがとうございます。
リンカーコマンドファイル、デバッガーのメモリマップはデフォルトから変更していないとのこと、承知いたしました。
>作成した関数をコールする際の引数の数値を変更し、FW のバイナリが意図通りに変化していることを確認してます。(バイナリの差分は1byteのみ)
→エラーが発生した際の、エラー内容に表示されているアドレスにある実際のデータの内容は、0xFFFFが表示されますでしょうか?もしくは、0または特定のデータが表示されますでしょうか?
前回は0x81B0となり、今回は0x8000となっておりましましたが、FW更新が出来ない際には、以前のFWのデータが格納されているか、別のデータが格納されているのか確認できればと思っております。>別の未使用ターゲットに対して、上記の新規プロジェクトの FW をロードすると、
>と初回 eZ-FET の更新が求められますが、もちろん問題なく FRAM 更新でき、プログラムを多少変更してからの >FRAM 再更新もできてます。→未使用ターゲットにつきましては、今までと同様にFWの内容を変更しようと、問題なく書き込みが可能という認識で合っていますでしょうか。
別のターゲットでも同様の書き込みエラーが出ない場合は、ボード自体に問題がある可能性がございます。BSL でパスワード不一致させて初期化させた後は、再度 FRAM の更新ができていることから、何らかの理由で、FRAMメモリがEraseされていない可能性がございます。ですので、お手数ですが以下の項目についてお試し頂けますでしょうか?
・コネクト時にFRAM領域をEraseし、プロジェクトの書き込みをお試し頂けますでしょうか。
プロジェクトのProperties->Debug->MSP43x Optionを選択し、Connention Optionsにて「On conect, erase main, information~~」にチェックを入れることで設定可能です。・FRAM更新が出来ないターゲットに接続し、手動でFRAM領域をEraseした後、再度プロジェクトの書き込みをお試し頂けますでしょうか。
フラッシュメモリを手動で消去してみてください。デバック画面のメニュー->Tools->On-Chip Flashを選択し、Erase Settingにて0x8000~0xFFFFの範囲をMase Eraseすることが可能です。以上、よろしくお願い致します。
-
投稿者投稿