CodeWarrior IDE使用Tips之利用Hiwave讀取S12(X)系列MCU片上NVM命令腳本

內容提要

引言

1. Hiwave調試軟件中的command窗口和save命令介紹

1.1 Hiwave調試軟件中的command窗口介紹

1.2 查看Hiwave命令窗口所支持的命令

1.3 瞭解命令用途和具體使用方法

1.4 save命令詳解

2. 通過CALL命令調用cmd腳本實現NVM讀取

2.1 CMD命令腳本和CALL命令詳解

2.2 讀取S12G128的片上NVM數據

2.3 讀取S12XEP100的片上NVM數據

總結

 

引言

 

本公衆號之前的文章(點擊標題即可快速跳轉閱讀):

 S12(X)系列MCU的片上存儲器資源與分頁訪問機制詳解(一) 

        S12(X)系列MCU的片上存儲器資源與分頁訪問機制詳解(二)

詳細介紹了S12(X)的片上NVM(非易失性存儲器--包括EEPROM/D-Flash和P-Flash)以及RAM資源的分頁訪問機制是具體使用和編程方法。

 

而在實際工作中,如果遇到ECU功能異常,需要做失效分析(FA-Failure Analysis)時,爲了排除NVM中的程序代碼和數據被意外修改(比如程序跑飛,運行Bootloader中的NVM驅動程序,導致NVM擦除或編程爲非預期值)的因素,我們常常需要在重新下載應用程序或者外設測試程序之前,將失效ECU的MCU的NVM內容讀出(所謂dump out)與下載的原始應用工程編譯結果S19文件或者正常ECU中讀出的內容進行對比;或者時在開發bootloader時,完成APP下載之後,檢查APP通過bootloader下載的完整性和正確性,也需要讀出NVM的內容。

 

本文針對這一需求,介紹如何利用BDM調試器,在CW5.x IDE自帶的Hwave調試軟件中,通過command命令窗口save命令完成S12(X)系列NVM讀出的方法和步驟,希望對大家有所幫助。

 

1. Hiwave調試軟件中的command窗口和save命令介紹

 

CW 5.x IDE自帶的調試軟件Hiwave位於其安裝目錄下的Prog子目錄下,雙擊即可打開:

 

 

1.1 Hiwave調試軟件中的command窗口介紹

 

按照《CodeWarrior IDE使用tips之bug定位絕技--hotsync與attach調試》(點擊標題即可快速跳轉閱讀)介紹的方法鏈接和配置連接好目標MCU之後界面如下圖:

 

其中:

源代碼窗口(Source):加載應用工程ABS文件和源代碼之後,可以在該窗口中看到應用程序的C語言源代碼;

 

函數列表窗口(Procedure):在該窗口中會列出當前斷點所在的函數及其地址信息;

 

全局變量窗口(Data1):在該窗口中會自動列出當前應用工程的所有全局變量,在該窗口中,可以查看全局變量的地址和賦值情況;

 

局部變量窗口(Data2):在該窗口中會自動列出當前應用工程的所有局部變量,在該窗口中,可以查看局部變量的地址和賦值情況;

 

彙編代碼窗口(Assembly):正常調試時,該窗口將自動顯示與源代碼窗口對應的彙編代碼;

 

CPU內核寄存器窗口(Register):該窗口可以查看和修改CPU內核寄存器;

 

存儲器查看窗口(Memory):通過在窗口可以查看任意合法的MCU存儲器內容;

 

command命令窗口(Command):位於調試界面的右下角,可以在其中輸入命令控制調試過程,比如設置斷點,查看變量等,以及打印輸出命令執行結果和調試log信息;

在command命令窗口的命令提示符in>之後輸入想要執行的命令,然後回車即可執行該命令。

 

Tips:以上窗口其實都是Hiwave的窗口組件(window component),可以將其單獨最大化、最小化或者關閉。如果不小心關閉了某一窗口,可以通過菜單Component-->Open..-->在Open Window Component對話框中選擇相應的組件重新打開或者另外打開一個新的組件窗口,如下爲打開command命令窗口的過程:

 

 

Tips:通過打開對個窗口組件,比如打開3個memory窗口,可以同時查看本地址地址、邏輯地址和全局地址或者不同存儲器--EEPROM、RAM和P-Flash中的數據變化,從而全面掌握調試信息,功能十分強大,使用也十分方便快捷。但是每一個BDM連接,只能打開一個command窗口;

 

1.2 查看Hiwave命令窗口所支持的命令

 

在command窗口中輸入命令help即可查看到所有可在該窗口中執行的命令及其功能介紹:

 

 

Tips:command窗口中輸入的命令不區分大小寫,比如命令help,輸入help或者HELP都可以被Hiwave識別:

 

 

1.3 瞭解命令用途和具體使用方法

 

通過Hiwave的菜單Help-->Help Topics-->打開HC(S)S12(X) Debugger 幫助,在其中搜索欄輸入命令作爲關鍵詞,即可查到該命令的使用說明,比如搜索本文要使用的save命令,其結果如下:

 

 

1.4 save命令詳解

 

save命令用於將指定地址範圍的存儲器數據保存(讀出)到指定的S19文件中,其用法如下:

 

SAVE range fileName [offset][;A]

 

range:指定要讀出的存儲器地址範圍:在起始地址和結束地址之間用英文輸入法輸入的兩個小數點".."進行區分:<起始地址>..<結束地址>;

 

fileName :指定用於保存數據的文件名,可以包含具體路徑或者直接文件名,前者將自動在指定的目錄下創建該文件用於保存存儲器數據,後者由於爲指定保存路徑,所以其默認會在當前工程的project.int所在目錄下創建S19文件:

 

 

[offset]:可選選項,用於指定保存到S19文件時是否進行地址偏移,默認爲偏移爲0,即保存時使用的地址與save命令range中指定的地址一致;

 

[;A]:可選選項,用戶將當前目錄輸出的數據疊加(append)到已有S19文件,比如要將多次save命令導出的不連續地址數據放在同一個S19文件中時,就可以使用這個選項了。

 

典型應用例子如下:

 

①:in>SAVE 0x400..0x13FF S12G_EEPROM.s19

作用:將S12G系列MCU位於地址0x400到0x13FF之間的4KB EEPROM數據讀出保存到當前工程目錄下的S12G_EEPROM.s19中;

 

②:in>save 0x88000..0x8BFFF D:\S12G128_NVM.s19 ;A

作用:將位於地址0x88000到0x8BFFF 之間的16KB S12G128的0x8 的P-Flash分頁數據讀出疊加保存到D:\S12G128_NVM.s19中;

 

2. 通過CALL命令調用cmd腳本實現NVM讀取

 

2.1 CMD命令腳本和CALL命令詳解

 

Hiwave調試軟件支持調用命令腳本文件方式實現多條命令的一次性調用和執行;其目錄腳本文件類似於Window的命令行批處理文件,用戶可以通過新建文本文件(*.txt)然後將其後綴手動修改爲.cmd的方式創建其腳本文件。

 

使用任意文本編輯器即可打開和編輯器中內容,所有可以在Hiwave調試軟件command窗口中正常執行的命令都可以添加帶.cmd腳本文件中。

 

通過以下命令CALL即可調用已經創建好的cmd腳本文件。

 

CALL FileName [;C][;NL]

 

其中,FileName 爲所要執行得cmd腳本文件,其可以指定具體的cmd保存路徑以執行其他非當然工程目錄下的cmd腳本文件;

 

CALL 命令的典型用法如下:

 

CALL D:\S12G128_NVM_Read.cmd

 

作用:調用並執行保存在D盤根目錄下的S12G128_NVM_Read.cmd腳本文件。

 

2.2 讀取S12G128的片上NVM數據

 

S12G128的片上NVM資源如下:

器件(part)

存儲器資源類型

大小

分頁寄存器

分頁窗口地址

分頁號

頁數

S12G128

EEPROM

4KB

-

-

-

P-Flash

128KB

PPAGE

0x8000~0xBFFF

0x08~0x0F

8

由於S12G系列MCU在Hiwave調試軟件中的memory窗口無法通過全局地址查看其P-Flash空間數據,比如輸入地址0x3C000'G--S12G128的page F P-Flash所對應的全局地址,其中數據爲未知狀態(-):

 

而輸入地址0xF8000'L--S12G128的page F P-Flash所對應的邏輯地址,則可以正常查看到P-Flash中的數據:

 

只能通過分頁的邏輯地址來查看和讀取其P-Flash的數據,而save目錄只能讀取合法的聯繫地址數據,所以如果在command命令窗口通過save命令讀取,則需要執行9次(其中包含讀取EEPROM的數據)save命令。

 

所以爲了簡化操作,我們在D盤根目錄下創建一個cmd腳本文件--S12G128_NVM_Read.cmd,並編輯輸入以下命令:

 

save 0x400..0x13FF D:\S12G128_NVM.s19 ;A

save 0x88000..0x8BFFF D:\S12G128_NVM.s19 ;A

save 0x98000..0x9BFFF D:\S12G128_NVM.s19 ;A

save 0xA8000..0xABFFF D:\S12G128_NVM.s19 ;A

save 0xB8000..0xBBFFF D:\S12G128_NVM.s19 ;A

save 0xC8000..0xCBFFF D:\S12G128_NVM.s19 ;A

save 0xD8000..0xDBFFF D:\S12G128_NVM.s19 ;A

save 0xE8000..0xEBFFF D:\S12G128_NVM.s19 ;A

save 0xF8000..0xFBFFF D:\S12G128_NVM.s19 ;A

 

 

Tips:由於S12G系列MCU在Hiwave中不支持全局地址,所以在memory窗口或者save命令中使用0x88000和0x88000'L都是指向邏輯地址空間。

 

然後,在Hiwave調試軟件的command命令窗口中輸入以下CALL命令調用該腳本:

CALL D:\S12G128_NVM_Read.cmd

執行結果如下:

 

此時,我們就可以在D盤根目錄下看到讀取結果S19文件--S12G128_NVM.s19:

 

 

 

2.3 讀取S12XEP100的片上NVM數據

 

S12XEP100的片上NVM資源如下:

器件(part)

存儲器資源類型

大小

全局地址

S12XEP100

EEPROM/D-Flash

32KB

0x138000~0x13FFFF

P-Flash

1MB

0x70000~0x7FFFFF

由於Hiwave調試軟件支持S12XE系列MCU的全局地址,所以可以通過以下save命令完成S12XEP100的片上NVM資源數據的讀取:

 

①讀取32KB D-Flash數據

save 0x138000'G..0x13FFFFD'G:\S12XEP100_NVM.s19 ;A

 

②讀取1MB P-Flash數據

save 0x700000'G..0x7FFFFFD'G:\S12XEP100_NVM.s19 ;A

 

Tips:當然,用戶也可以使用P-Flash的邏輯地址來訪問和讀取其數據。

 

總結

 

Hiwave調試器軟件的command命令窗口中的命令可以完成的功能十分豐富和強大,大家可以參考本文介紹的方法自己學習。

 

 

以上就是今天跟大家分享的內容。希望對大家有用。

 

 

本微信公衆號已經發布的個人原創精品----嵌入式系統技術文章鏈接如下,歡迎大家參考學習,並轉發分享(可直接點擊下列文章題目跳轉閱讀):

 

  • 1. 汽車電子ECU bootloader開發系列

     

        汽車電子ECU bootloader開發要點詳解

        汽車電子ECU BootLoader開發之基於CAN總線通信的MPC574xP系列MCU bootloader開發詳解

        汽車電子ECU BootLoader開發之基於CAN總線通信的S12(X) 系列MCU獨立NVM驅動安全bootloader

Qorivva MPC56xx系列MCU啓動過程全解析(基於CW IDE應用工程--EAB I、鏈接文件、啓動文件和map文件)

《汽車電子ECU BootLoader開發》系列相關文章鏈接與資源彙總

 

  • 2. 淺談嵌入式MCU開發系列

     

        淺談嵌入式MCU開發中的三個常見誤區

        淺談嵌入式 MCU 軟件開發之應用工程的堆與棧

        淺談嵌入式MCU軟件開發之中斷優先級與中斷嵌套

        淺談嵌入式MCU軟件開發之代碼風格與代碼優化

        淺談嵌入式MCU軟件開發之startup過程詳解(從復位向量到main函數之前的準備工作)

淺談嵌入式軟件開發之Qorivva MPC56/57xx系列MCU的Power e200內核寄存器功能和內核調試技巧介紹

        淺談嵌入式MCU軟件開發之startup過程詳解(在CodeWarrior 5.1 中實現RAM自定義初始化)

        淺談嵌入式MCU軟件開發之S12(X)系列MCU 中斷ISR在CodeWarrior 5.1 IDE 中的三種寫法

        淺談嵌入式MCU硬件設計之MCU最小系統電路

 

  • 3.   外設使用Tips系列

     

        S12(X)系列MCU的片上存儲器資源與分頁訪問機制詳解(一)   

        S12(X)系列MCU的片上存儲器資源與分頁訪問機制詳解(二)

        S12(X)系列MCU的加密(Secure)原理和解密(Unsecure)方法

       使用 Cyclone 離線編程器對 S12(X)和 MagniV S12Z 系列 MCU 片上 NVM 編程

        S32K1xx系列MCU使用Tips--功能介紹及軟件開發和硬件設計FAQ

        S32K1xx系列MCU使用Tips--Flash加密後不斷復位無法連接調試器的問題解決

外設使用Tips之Qorivva MPC56xx_57xx系列MCU內核異常(IVORx)與IRQ中斷處理詳解

外設使用Tips之Qorivva MPC56xx/57xx系列MCU的模式控制與切換(片上外設資源使能與功耗控制)

外設使用Tips之S12G系列MCU Startup之前的復位過程詳解(COP看門狗復位和時鐘監測復位中斷識別與處理)

       外設使用Tips之MPC57xx系列MCU C55 Flash模塊詳解及其SSD(標準軟件驅動)使用

       外設使用Tips之MSCAN接收ID濾波器設置

       外設使用Tips之TIM定時器使用FAQ和使用經驗

      外設使用Tips之MPC574xP系列汽車級MCU的SWT看門狗定時器配置與使用

 

  • 4. S32DS 使用Tips系列

 

S32DS使用Tips--S32DS for Power V1.2 鏈接文件和啓動過程詳解

       S32DS 使用Tips之S32DS for Power不同版本之間的GNU工具鏈差異與外設寄存器位域訪問問題總結

       S32DS使用Tips之S32DS for Power v1.1應用工程升級到v1.2重新編譯運行程序跑飛問題解決

       S32DS 使用tips--S32DS for ARM v1.3工程到S32DS for ARM V2.0遷移升級方法和注意事項

       S32DS 使用 tips--工程屬性配置(編譯選項和C編譯器、彙編器及鏈接器設置)

       S32DS使用Tips--如何編譯生成和調用靜態庫

       S32DS使用Tips--如何通過創建新的編譯目標(Build Target)在同一個S32DS工程中同時編譯靜態庫和應用程序

        S32DS使用Tips--如何配置和使能Attach功能定位軟件程序bug和完成bootloader與應用程序工程的聯合調試

        S32DS 使用 tips--使用Flash from file下載S19或elf文件

 

  • 5. CodeWarrior IDE使用Tips系列

   

        CodeWarrior IDE使用tips之bug定位絕技--hotsync與attach調試

CodeWarrior IDE使用Tips之Qorivva MPC56xx新建應用工程選項、調試高級選項及下載過程控腳本詳解

CodeWarrior IDE使用tips之prm鏈接文件詳解(自定義存儲器分區以及自定義RAM數據初始化與在RAM中運行函數)

CodeWarrior IDE使用Tips-Qorivva MPC56xx應用工程map文件全解析(CW 2.10/10.x )

        CodeWarrior IDE使用tips之map文件詳解

        CodeWarrior IDE 版本選擇與 License功能(feature)和價格,授權形式差異、激活方法與安裝使用

        CodeWarrior IDE使用Tips-如何編譯生成和調用靜態庫

        CodeWarrior與S32DS IDE使用 Tips之如何在應用工程中保留定義但未使用的全局常量、變量(用於參數標定)

        CodeWarrior IDE使用Tips之如何通過prm文件指定彙編代碼函數、全局變量和常量的儲存地址

        CodeWarrior IDE使用Tips之burner工具使用詳解(實現不同類型存儲器地址間的轉換和NVM編程格式文件的輸出)

CodeWarrior IDE使用Tips--使用burner將elf文件轉換生成HEX和BIN文件的方法和步驟詳解

 

原創寫作不易, 如果大家覺得本文對你的工作和學習有幫助,也歡迎大家打賞鼓勵----我將堅持寫作,給大家帶來更多精彩的原創文章。

 

Tips:使用Android手機的讀者直接點擊文末的打賞鏈接進行打賞;使用iPhone的讀者由於蘋果公司關閉了微信打賞功能,請通過微信長按以下二維碼打賞鼓勵作者。

Thank you!

 

如果你喜歡本公衆號的文章,請點擊文章最開始的公衆號關注或微信直接長按掃描識別下方二維碼關注,你也可以在微信添加朋友-->公衆號-->輸入"汽車電子expert成長之路"搜索-->點擊關注。若對本文觀點有任何意見和建議也歡迎留言指出。

 

您的關注、點贊、轉發分享是對我辛勤寫作的最大肯定!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章