ホーム › フォーラム › Texas Instruments › マイコン › C2000 › F021 フラッシュについて
このトピックには6件の返信が含まれ、2人の参加者がいます。4 年、 6 ヶ月前に uchidaK さんが最後の更新を行いました。
-
投稿者投稿
-
F021 フラッシュについて
デバイス型番:F2837xD何度も申し訳ございません。
F2837xDでF021のフラッシュライブラリを使おうとしています
1.フラッシュ初期化 Fapi_InitializeAPI
2.FMC初期化バンク0 Fapi_setActiveFlashBank( Fapi_FlashBank0 )
3.消去コマンド発行 Fapi_issueAsyncCommandWithAddress( Fapi_EraseSector, 0x088000)
4. Fapi_checkFsmForReady
5.ブランクチェック
oReturnCheck = Fapi_doBlankCheck( 0x088000, 0x4000, &oFlashStatusWord )の順にFLASH書込みの前処理を行っているのですが
5項のブランクチェックにて戻り値oReturnCheckがFapi_Status_Successが
帰ってこず、Fapi_Status_FsmReadyが返ってきますこれにはどういった原因が考えられるでしょうか?
追記いたします
1項~3項のoReturnCheckの値は基板によって
0x3E8,Fapi_Status_FsmReadyになるのですが
(上記Expression WindowでWatchした結果)
その後の if( oReturnCheck != Fapi_Status_Success )
には入らず、あたかもFapi_Status_Successが返ってきているかのような動きをしておりますttkkttkk様
お世話になっております。
Fapi_doBlankCheckについては、Fapi_Status_FsmReadyの戻り値は返さないAPIであるため、Fapi_doBlankCheck自体が実行されていない可能性が考えられます。
下記のサンプルコードでは、貴社が実施されているコードと同様の内容が実行されているかと思います。
こちらのサンプルコードでも同様の問題は発生しますでしょうか?
C2000Ware_x_xx_xx_xx\device_support\f2837xd\examples\cpu1\flash_programming_dcsm\cpu01
問題が発生しない場合、ソフトウェアとしてどのような差分があるかを確認いただくと、原因究明の参考になるものと考えます。
また、カスタムボードで動作を見られている場合は評価ボードと動作を比べていただき、問題が再現するかどうか、ハードウェアについて何か原因が考えられないか、という点についても確認いただけますと幸いです。
以上、参考になれば幸いです。
uchidaK
回答ありがとうございます。
提示頂いたほうのflash_programming_dcsm_cpu01では
doBlankCheckでもsuccessが戻り値として返ってきましたGROUP
{
.TI.ramfunc
{ -l F021_API_F2837xD_FPU32.lib}} LOAD = FLASHD,
RUN = RAMLS03,cmdファイルの上の部分において
LOADやRUNの場所は変更していますが、それが何か関係しているのでしょうか?また、素朴な疑問でもうしわけないのですが
flash_programming_dcsm_cpu01とflash_programming_cpu01ではどんな違いがあるのでしょうか?ttkkttkk様
ご連絡が遅くなり申し訳ございません。
記載いただいている内容自体は問題ないかと思います。
下記サンプルコードは動作しないということでしょうか?
動作は評価ボードで確認いただいておりますでしょうか?
C:\ti\c2000\C2000Ware_2_00_00_02\device_support\f2837xd\examples\dual\flash_programming\cpu01\flash_programming_cpu01.c
また、双方のサンプルコードの違いですが、”flash_programming_dcsm_cpu01″ は 名前の通りdcsm(dual core security module)を使用しております。
DCSMについての詳細は下記159ページから記載がございます。
https://www.tij.co.jp/jp/lit/ug/spruhm8i/spruhm8i.pdf?&ts=1589246105249
以上、参考になれば幸いです。
uchidaK
回答ありがとうございます
サンプルコードではoReturnCheckで正常(Fapi_Status_Success)が
戻り値として返ってくるのに対し、
自作で作ったほうのコードではoReturnCheckが他の値(0x3E8,Fapi_Status_FsmReady)で帰ってきている理由が
知りたいということです動作は評価用ボードF2837xDのControlCardを使用しております
ちなみにですが、
Fapi_doBlankCheckまでは同じ値を返してきています。すみませんが、よろしくお願いいたします。
ttkkttkk様
お世話になっております。
恐れ入りますが、現時点までの頂いた情報では、理由の判断は難しいと考えております。
動作するサンプルコードの差分はリンカーコマンドファイルのみでしょうか?
また、動作するサンプルコードから具体的にどこを変更すると現象が再現するかを、確認いただけませんでしょうか。
お手数をお掛けし申し訳ございませんが、よろしくお願いします。
uchidaK
-
投稿者投稿