摘要
恩智浦的MPC架構的微控制器使用的開發(fā)環(huán)境IDE是S32DS ,該IDE使用的GNU GCC工具鏈沒有提供對編譯結果的CRC校驗和自動生成工具,所以需要我們制作一個腳本自動生成和填充,腳本調用Srecord工具執(zhí)行。
Srecord簡介
為了實現(xiàn)對S32DS IDE應用工程編譯結果生成的S19文件進行數(shù)據(jù)填充和CRC校驗和自動生成,滿足bootloader開發(fā)需求,我們借助功能強大的嵌入式MCU Flash編程文件編輯處理工具--Srecord, 制作一個bat的批處理腳本,腳本中調用的命令請參照srecord的文檔說明,這里不在贅述。
腳本制作
登錄官網下載最新版本1.65的srecord工具,解壓到電腦的任意目錄
所有要調用的工具都在bin文件夾下。根據(jù)說明文檔制作腳本 EPS_Fill_And_CRC_Gen_Command.bat ,腳本中調用的解壓目錄如果不相同,請更改為相應目錄,本文以我電腦的目錄為準,腳本全文如下:
@echo off
REM enter current path
cd /d %~dp0
REM add the srecord utility tools folder to path
set path= D:softwaresrecord-1.65.0-win64srecord-1.65.0-win64
REM set input file
SET SRC=*.srec
REM set the output file
SET APP=EPS_App_Flash_Fill_Add_CRC.srec
REM set the output file
SET FILL_VAL=0xAA
REM set the MCU app flash start address
SET START_ADDR=0x01000000
REM set the MCU app flash end address
SET END_ADDR=0x010FFFFC
REM set the MCU flash address to store the checksum/CRC result
REM it's usually the end of MCU app Flash end address/the end of APP Flash
SET CRC_ADDR=0x010FFFFC
REM set expected checksum/CRC method
SET CRC_method=CRC32_Big_Endian
REM delete the last copy result if it exit
if exist %APP% del %APP%
REM call srec_cat to execute memory fill and checksum auto-generate and store to specified address
srec_cat %SRC% -fill %FILL_VAL% %START_ADDR% %END_ADDR% -%CRC_method% %CRC_ADDR% -o %APP%
echo All commands have been executed successfuly!
pause
如果只想填充不想計算CRC,則刪除掉腳本中的計算CRC行即可。
將制作完成的腳本放入工程的編譯目錄下,如debug目錄下,雙擊腳本即可完成填充,
如果想自動讓IDE調用腳本生成填充值,需要做一些配置,這部分功能還在測試中,目前只支持手動雙擊調用腳本。如果有的電腦因為權限問題不能正確執(zhí)行腳本,請將制作的腳本放入srecord的解壓bin目錄下,將編譯的.srec或者s19文件也放入bin目錄下,雙擊腳本即可完成生成填充好的文件。
可以試用hexview或者支持hex文件查閱的軟件查看生成填充的文件,可以看到未用的已經全部填充為0xAA,填充值可以自己在腳本中設置。
審核編輯:湯梓紅
-
微控制器
+關注
關注
48文章
7649瀏覽量
152107 -
恩智浦
+關注
關注
14文章
5879瀏覽量
108433 -
crc
+關注
關注
0文章
199瀏覽量
29574 -
腳本
+關注
關注
1文章
391瀏覽量
14938
原文標題:如何使用腳本完成CRC和填充值的自動完成
文章出處:【微信號:InterruptISR,微信公眾號:嵌入式程序員】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
Linux中執(zhí)行shell腳本的兩種方式
![Linux中執(zhí)行shell<b class='flag-5'>腳本</b>的兩種方式](https://file.elecfans.com/web2/M00/7C/AB/pYYBAGN3Rb-ACiyxAAASXapqq1o726.png)
怎么使用hal accumulate函數(shù)完成crc分塊校驗與整體校驗crc值相等?
在網頁充值后自助設備如何給卡寫入值
CAN通信控制的CRC校驗
dsPIC33EP256MU806 CRC模塊的累加何時完成?
如何停止評論的自動完成連字號?
CNCnetIP電話遠程自動充值系統(tǒng)
蘋果軟件工程師對安全碼自動填充功能進行介紹
什么是腳本?腳本程序學習
![什么是<b class='flag-5'>腳本</b>?<b class='flag-5'>腳本</b>程序學習](https://file.elecfans.com/web1/M00/BB/EB/o4YBAF64ujyAbXUPAAAnMUTOv9o174.png)
如何創(chuàng)建自動化腳本
![如何創(chuàng)建<b class='flag-5'>自動</b>化<b class='flag-5'>腳本</b>](https://file.elecfans.com/web2/M00/88/82/poYBAGO1PXuAR_LjAADOOtZen7I082.jpg)
評論