91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

雅特力AT32 IEC 60730 Class B軟件庫使用指南

雅特力 AT32 MCU ? 2024-05-20 08:15 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

概述

IEC60730的附錄H(H.2.22)中對軟件進行了分類
A類軟件:軟件僅實現(xiàn)產(chǎn)品的功能,不涉及產(chǎn)品的安全控制。B類軟件:軟件的設(shè)計要防止電子設(shè)備的不安全操作。C類軟件:軟件的設(shè)計為了避免某些特殊的危險。本文主要介紹針對其中B類軟件而開發(fā)的CLASSB軟件包,安全庫相關(guān)代碼基本是獨立于芯片外設(shè)IP,軟件包中各型號的example都是基于AT-START開發(fā)板,其余暫未支持型號用戶可自行參考移植。

軟件庫總體架構(gòu)

Class B檢測診斷庫軟件包,基于AT32芯片的V2版本固件庫的文件夾結(jié)構(gòu),刪除了原固件庫中的demo、middlewares、dsp lib等IEC60730不需要的部分,添加集成IEC60730安全檢測相關(guān)代碼。軟件包文件夾總體結(jié)構(gòu)框架如下表:
表1.Class B軟件包文件夾結(jié)構(gòu)0a693ddc-163e-11ef-bebc-92fbcf53809c.pngSTL軟件由芯片外設(shè)驅(qū)動libraries、class b STL和user application組成,其中class b STL分為兩個主要部分:啟動時檢測和運行時周期檢測,架構(gòu)整體框圖如下:表2.軟件架構(gòu)整體框圖0a908586-163e-11ef-bebc-92fbcf53809c.png

軟件庫設(shè)計

本章節(jié)介紹STL例程通用的基本原理,并對工程結(jié)構(gòu)以及配置和調(diào)試相關(guān)信息進行說明。各個開發(fā)環(huán)境(IAR、Keil、AT32IDE)會有一些差別,也進行了說明。

故障安全處理

當(dāng)自檢程序檢測到故障時,故障安全處理函數(shù)selftest_fail_handle()被調(diào)用。at32_selftest_startup.c文件中定義了該函數(shù)。該程序的目的是提供自定義故障處理接口并允許用戶立即做出反應(yīng)。例程內(nèi)部對該函數(shù)沒有特定處理,只輸出調(diào)試打印信息,然后執(zhí)行系統(tǒng)復(fù)位。該程序的內(nèi)容由用戶根據(jù)實際應(yīng)用自行開發(fā),在該函數(shù)執(zhí)行應(yīng)用必須的操作,以保證應(yīng)用處于安全的狀態(tài)。該函數(shù)從程序的不同故障位置進行調(diào)用,為判斷故障問題的嚴(yán)重程度,用戶可以重新定義該函數(shù),添加一個特定的輸入?yún)?shù)(預(yù)先定義好的簡單常量)用于區(qū)分不同的故障。

程序RAM分布

為便于描述,將IEC60730必須用到的相關(guān)變量命名為Class B變量,用戶應(yīng)用相關(guān)的變量命名為Class A變量。每個Class B變量都使用一對互補值儲存在兩個單獨的RAM區(qū)。正常值和補碼值始終放在不相鄰的內(nèi)存位置。指定具體內(nèi)存地址的變量定義根據(jù)開發(fā)編譯環(huán)境的不同而寫法不同,具體的實現(xiàn)代碼通過宏定義區(qū)分,定義在at32_selftest_startup.c文件。

  • IAR通過修改xxx.icf鏈接文件指定固定地址
  • Keil通過修改xxx.sct分散加載文件指定固定地址
  • AT32 IDE通過修改xxx.ld鏈接文件指定固定地址

每次使用Class B變量數(shù)值前,用戶必須確保比較每一個數(shù)值對(正常值和補碼值)的完整性。如果發(fā)現(xiàn)任何數(shù)值對的完整性被損壞,應(yīng)調(diào)用故障安全處理函數(shù)。如果變量值變化,需要同步更新存儲位置的補碼值以保持正確的數(shù)值對。下圖是STL程序中對于RAM區(qū)域使用情況的分布圖:圖1.RAM分布圖

0ab6ecb2-163e-11ef-bebc-92fbcf53809c.png

工具特定集成設(shè)置

目前STL支持IAR、Keil和AT32 IDE三種IDE,對于不用的IDE,以下事項需注意:

  • 修改鏈接腳本文件*.icf(IAR)、*.sct(Keil)、*.ld(AT32 IDE),定義RAM區(qū)域的使用分布情況和CRC checksum位置。
  • 啟動時的自檢代碼函數(shù)selftest_startup_check(),需要進入主程序前,進行處理調(diào)用。IAR和AT32 IDE編譯器都是通過修改固件庫內(nèi)對應(yīng)的原始啟動文件startup_at32xxx.s,Keil編譯器通過修改$Sub$$main()程序。
  • 執(zhí)行完啟動時的自檢程序后,需要跳轉(zhuǎn)進入標(biāo)準(zhǔn)C的main主函數(shù),因為不同編譯器方式不同,所以用宏goto_compiler_startup()進行定義。
  • 在Keil中調(diào)用goto_compiler_startup()時,通過ENTER_MAIN_FLAG宏定義的CRC外設(shè)的CDT寄存器值,來判斷是進入啟動自檢程序還是真正的mian主程序。

程序執(zhí)行流程

Class B軟件包程序檢測內(nèi)容分為兩個主要部分:啟動時的自檢和運行時的周期自檢,總體流程框圖如下,圖中藍色框圖是相對于原應(yīng)用程序,執(zhí)行Class B需添加的部分。圖2.程序流程總框圖0ad80be0-163e-11ef-bebc-92fbcf53809c.png啟動時的自檢必須在應(yīng)用啟動之前執(zhí)行,調(diào)用函數(shù)selftest_startup_check(),在進入主循環(huán)前先調(diào)用函數(shù)selftest_runtime_init()做周期自檢初始化配置,然后函數(shù)selftest_runtime_check()進行周期自檢。例程中周期性自檢時基是采用1ms的systick中斷,根據(jù)變量time_base_flag判斷是否進行檢測,檢測時間間隔由宏定義SYSTICK_10MS_TB決定,用戶可以根據(jù)自己應(yīng)用進行調(diào)整,例程中是每10ms執(zhí)行一次周期自檢。注意:運行時如果自檢程序耗時太長,會影響正常應(yīng)用程序的進行,可以將自檢流程進行拆分,用systick中斷進行周期性的自檢。理論上,自檢模塊集成添加到應(yīng)用程序中時,用戶需要提供以下步驟:

  • 在用戶程序啟動之前,執(zhí)行啟動前的初始檢測
  • 在用戶程序執(zhí)行過程中,進行周期性的檢測
  • 程序運行時,設(shè)置看門狗并及時喂狗防止復(fù)位
  • 對RAM和Flash在初始階段和運行階段的測試,設(shè)置合適的測試區(qū)域
  • 對于自檢測試發(fā)生的錯誤,以及其他hardfault等錯誤,需要進行合理的安全處理

注意:當(dāng)在啟動時的測試期間,如果程序啟用了調(diào)試信息,因為一些外設(shè)接口驅(qū)動程序可能會用到一些變量,在進行完內(nèi)存測試后,內(nèi)存中的內(nèi)容可能會丟失,所以需要用戶保證恢復(fù)這些變量。

啟動時檢測流程

啟動時檢測包括:

  • CPU檢測
  • 看門狗檢測
  • 系統(tǒng)時鐘檢測
  • Flash完整性檢測
  • RAM功能檢測
  • 控制流檢測

下圖是執(zhí)行啟動時自檢的流程框圖。圖3.啟動時自檢流程結(jié)構(gòu)0b0092e0-163e-11ef-bebc-92fbcf53809c.png

一、CPU啟動時檢測

進行CPU寄存器的相關(guān)檢測,主要檢查內(nèi)核標(biāo)志、寄存器和堆棧指針等是否正確。如果發(fā)生錯誤,就會調(diào)用故障安全處理函數(shù)Selftest_fail_handle()。該部分檢測源代碼是用匯編所寫,在KEIL、IAR以及AT32 IDE等不同的編譯環(huán)境下有差異,另外不同CPU內(nèi)核調(diào)用的指令可能也有差異,具體查看代碼。Cortex-M4內(nèi)核的MCU系列流程框圖如下圖4.cpu啟動時檢測流程0b2b9f26-163e-11ef-bebc-92fbcf53809c.png

二、看門狗啟動時檢測

驗證看門狗復(fù)位功能是否正常,保證后續(xù)運行中如果因為程序計數(shù)器出現(xiàn)非預(yù)期異常情況導(dǎo)致程序跑飛時可以通過看門狗復(fù)位恢復(fù)。例程中為方便用戶參考,宏定義開啟了wwdt和wdt,實際應(yīng)用中,根據(jù)需求選擇開啟某一個或兩個都開啟。看門狗測試通過判斷復(fù)位狀態(tài)寄存器的復(fù)位標(biāo)識來判斷是否測試成功,測試流程如下:
A. 判斷wdt reset flag和wwdt reset flag是否都沒有置起,如果是則執(zhí)行步驟B開始wdt測試,如果不是則跳轉(zhuǎn)到步驟CB. 配置wdt并使能,然后不喂狗,等待wdt計數(shù)器超時而復(fù)位回到步驟AC. 判斷wdt reset flag是否置起,并且wwdt reset flag沒有置起,如果是則表明wdt測試通過,執(zhí)行步驟D開始wwdt測試,如果不是則跳轉(zhuǎn)到步驟ED. 配置wwdt并使能,然后不喂狗,等待wwdt計數(shù)器超時而復(fù)位回到步驟AE. 判斷wdt reset flag和wwdt reset flag是否都置起,如果是,則表明wdt和wwdt都測試通過,完成整個測試,如果不是則表明測試過程中有未知異常情況,清除所有reset flag,然后執(zhí)行軟件復(fù)位,回到步驟A重新開始測試。注意:為減少啟動階段的測試時長,啟動時的看門狗超時時間配置為最小值,運行時的超時時間需要根據(jù)實際應(yīng)用喂狗間隔時間配置。注意:測試過程中正常情況會有多次系統(tǒng)復(fù)位發(fā)生,測試完成后需清除所有的復(fù)位標(biāo)志位。流程框圖如下圖5.看門狗啟動時檢測流程0b6978e6-163e-11ef-bebc-92fbcf53809c.png

三、時鐘啟動時檢測

啟動階段的時鐘檢測通過內(nèi)部低速時鐘源(LICK)和系統(tǒng)時鐘的交叉測量結(jié)果來驗證。系統(tǒng)時鐘頻率作為基準(zhǔn)頻率,采用外部高速時鐘源(HEXT)或者內(nèi)部高速時鐘源(HICK)。啟動階段的時鐘檢測盡量使測試時間短,例程中MCU通常是通過專用的定時器TMR(時鐘源為系統(tǒng)時鐘)的某個通道輸入捕獲LICK邊沿頻率,定時器兩次捕獲時數(shù)據(jù)寄存器計數(shù)值之間的差值進行計算得到LICK實際測量值,與芯片數(shù)據(jù)手冊上列出的LICK規(guī)格的典型值進行比較。如果LICK實際測量值在規(guī)格范圍的最大和最小范圍內(nèi),則測試成功;如果超出了規(guī)格范圍值,則測試失敗。圖6.時鐘啟動時檢測流程0b88aea0-163e-11ef-bebc-92fbcf53809c.png四、Flash啟動時檢測Flash自檢是存儲器檢測的一部分,程序中測試范圍內(nèi)的Flash數(shù)據(jù)用CRC外設(shè)的算法計算,將結(jié)果值跟編譯時已存儲在Flash指定位置的預(yù)先計算好的CRC值進行比較。Flash的CRC值需要在調(diào)試或者燒錄階段跟正常應(yīng)用代碼一起下載到芯片F(xiàn)lash,所以需要在集成開發(fā)環(huán)境(IDE)編譯生成的HEX或者BIN檔中進行添加,下面分別介紹Keil、IAR、AT32 IDE,如何增加CRC到已編譯的HEX或者BIN文件中,因為Flash CRC運行時周期檢測是每次128字節(jié),所以該處設(shè)置的CRC地址范圍需128字節(jié)對齊。圖7.Flash啟動時CRC檢測流程0ba36614-163e-11ef-bebc-92fbcf53809c.png注意:CRC計算的Flash范圍需根據(jù)整個程序的實際情況進行配置,配置方法在各個IDE上有所不同。KEIL:使用雅特力自己的工具AT32_SelfTest_CRC,將Keil生成的hex檔添加CRC值另存為新的hex檔(也支持bin檔),程序代碼中使用硬件CRC進行計算,描述設(shè)置CRC檢測方法如下:1) 將執(zhí)行文件AT32_SelfTest_CRC.exe和參數(shù)文本SelfTest_CRC_Initparam.txt放在keil工程目錄中的同一個文件夾,程序例程是放在crc_tool文件夾中2) 工程中配置選擇對應(yīng)的文件夾路徑調(diào)用AT32_SelfTest_CRC.exe,將KEIL編譯生成的classb_demo.hex文件中的數(shù)據(jù)進行CRC計算,生成CRC chec_sum,合并到新的classb_demo_checked.hex文件中圖8.keil選項中添加AT32_SelfTest_CRC.exe0be46fba-163e-11ef-bebc-92fbcf53809c.pngSelfTest_CRC_Initparam.txt用于配置參數(shù)1) input file:原始hex文件的名稱和地址,地址為hex文件相對Kei工程文件的路徑2) output file:添加CRC的hex文件的名稱和地址,地址為hex文件相對Kei工程文件的路徑3) start addr:計算CRC范圍的開始地址4) end addr:計算CRC范圍結(jié)束,CRC checksum放置地址5) fill blanks:CRC范圍內(nèi)原始hex文件的空白位置填充值,可以設(shè)置0xFF或者0x00圖9.配置文件內(nèi)容0c084d90-163e-11ef-bebc-92fbcf53809c.png在下載或者調(diào)試中,都需要用最終生成的classb_demo_checked.hex代替原始的classb_demo.hex,所以在Keil配置選項中需添加crc_load.ini文件用于加載新的hex文件0c33d302-163e-11ef-bebc-92fbcf53809c.pngIAR:IAR配置選項支持CRC計算,只需要配置好參數(shù),編譯生成的文件就會自動將CRC check_sum值添加到選定Flash計算范圍后面,Checksum參數(shù)配置是根據(jù)測試MCU型號的硬件CRC外設(shè)模塊來確定,目前雅特力不同型號MCU的硬件CRC外設(shè)都相同,配置參數(shù)如下。圖10.IAP配置CRC0c5858f8-163e-11ef-bebc-92fbcf53809c.pngAT32 IDE:使用雅特力自己的工具AT32_SelfTest_CRC,將AT32 IDE生成的hex檔添加CRC值另存為新的hex檔(也支持bin檔),程序代碼中使用硬件CRC進行計算,描述設(shè)置CRC檢測方法如下:1) 將執(zhí)行文件AT32_SelfTest_CRC.exe和參數(shù)文本SelfTest_CRC_Initparam.txt放在AT32 IDE工程目錄中的同一個文件夾,程序例程是放在crc_tool文件夾中2) 工程中配置選擇對應(yīng)的文件夾路徑調(diào)用AT32_SelfTest_CRC.exe,將AT32 IDE編譯生成的classb_demo.hex文件中的數(shù)據(jù)進行CRC計算,生成CRC chec_sum,合并到新的classb_demo_checked.hex文件中SelfTest_CRC_Initparam.txt用于配置參數(shù),具體參數(shù)內(nèi)容參考上文中Keil章節(jié)的介紹。圖11.AT32 IDE選項中添加AT32_SelfTest_CRC.exe0c797c5e-163e-11ef-bebc-92fbcf53809c.png在下載或者調(diào)試中,都需要用最終生成的classb_demo_checked.hex代替原始的classb_demo.hex,所以在AT32 IDE配置選項中需配置加載新的hex文件,采用AT-Link調(diào)試器時配置如下圖圖12.AT32 IDE debug選項加載新的有CRC checksum的hex檔0ca01468-163e-11ef-bebc-92fbcf53809c.png注意:計算CRC值的Flash范圍根據(jù)應(yīng)用程序的實際大小確定,生成的CRC32 check sum存儲地址需位于Flash空白區(qū),否則可能覆蓋修改到該存儲地址的原始數(shù)據(jù)從而導(dǎo)致異常。

五、RAM啟動時檢測

RAM自檢是存儲器檢測的一部分,支持和不支持硬件SRAM奇偶校驗功能的型號可以采用不同的方式檢測。對于支持硬件SRAM奇偶校驗功能的型號,如果使用硬件RAM檢測的方式,需使能芯片的硬件RAM校驗功能,該功能的開啟推薦在量產(chǎn)階段同代碼燒錄一起完成。前期開發(fā)設(shè)計階段,可以通過ICP等工具配置開啟。支持硬件SRAM奇偶校驗功能的型號硬件SRAM校驗功能開啟后,因為上電SRAM數(shù)據(jù)是隨機值,所以需要在程序啟動階段對SRAM數(shù)據(jù)進行初始化,對于Keil、IAR、AT32 IDE三種IDE,都是修改.s啟動進行SRAM數(shù)據(jù)初始化,代碼寫法可能稍有差異,下圖是Keil的.s啟動文件添加SRAM初始化為全0x00的代碼圖13.Keil啟動文件添加SRAM初始化0cbfe8f6-163e-11ef-bebc-92fbcf53809c.png使用硬件SRAM檢測功能,工程代碼有兩處宏定義修改:1) at32_selftest_param.h文件中開啟宏定義HW_RAM_CHECK2) 工程匯編配置中開啟宏定義HW_RAM_CHECK,下面分別是Keil、IAR、AT32 IDE配置截圖圖14.Keil匯編配置開啟HW_RAM_CHECK0ce1eece-163e-11ef-bebc-92fbcf53809c.png圖15.IAR匯編配置開啟HW_RAM_CHECK0d40a8a6-163e-11ef-bebc-92fbcf53809c.png圖16.AT32 IDE匯編配置開啟HW_RAM_CHECK0d5d24ae-163e-11ef-bebc-92fbcf53809c.png不支持硬件SRAM奇偶校驗功能的型號采用March C算法,用值0x55555555和0xAAAAAAAA逐字交替填充整個RAM并檢查,基本物理單元是4字,下圖單元格內(nèi)的編號代表測試填充的順序。圖17.RAM基本單元原理0d82b5fc-163e-11ef-bebc-92fbcf53809c.pngRAM采用March C算法測試時分6個步驟,前3個循環(huán)按照地址遞增執(zhí)行,后3個循環(huán)按照地址遞減執(zhí)行。測試步驟如下,如果采用March X算法則省略步驟3和4:1. 全部范圍寫0x55555555,按照地址遞增順序執(zhí)行2. 檢測是否全部范圍為0x55555555,然后全部范圍寫0xAAAAAAAA,按照地址遞增順序執(zhí)行3. 檢測是否全部范圍為0xAAAAAAAA,然后全部范圍寫0x55555555,按照地址遞增順序執(zhí)行4. 檢測是否全部范圍為0x55555555,然后全部范圍寫0xAAAAAAAA,按照地址遞減順序執(zhí)行5. 檢測是否全部范圍為0xAAAAAAAA,然后全部范圍寫0x55555555,按照地址遞減順序執(zhí)行6. 檢測是否全部范圍為0x55555555,按照地址遞減順序執(zhí)行流程框圖如下:圖18.RAM啟動時檢測流程0da37f30-163e-11ef-bebc-92fbcf53809c.png

六、控制流啟動時檢測

控制流檢測也屬于程序計數(shù)器檢測的一部分,啟動階段控制流檢測主要分為了兩個節(jié)點,因為RAM檢測會導(dǎo)致所有變量被清除,包括定義為控制流檢測相關(guān)的變量也會被清除,所以其中一個檢測節(jié)點是在RAM檢測之前,通過控制流變量值判斷是否前面所有測試項都正確完成,另外一個節(jié)點是在RAM檢測后,主要是運行階段檢測必須操作的流程的配置,比如CRC參考變量初始化、棧溢出pattern設(shè)置。對于控制流檢測,基本上每項檢測模塊都可以定義檢測兩層結(jié)構(gòu),其一是該項檢測模塊流程上是否正確調(diào)用(CALLER),其二是該項檢測模塊是否被正確執(zhí)行(CALLEE),檢測方法概述如下:1. 定義兩個變量指示控制流進度,設(shè)置初始值ctrl_flow_cnt為0x00000000,ctrl_flow_cnt_inv為0xFFFFFFFF,其初始狀態(tài)互為取反的2. 給每項測試模塊定義兩個固定數(shù)值分別表示CALLER和CALLEE,并賦予不同的值3. 調(diào)用一項檢測模塊前,將ctrl_flow_cn增加CALLER的固定值,標(biāo)示該模塊已經(jīng)調(diào)用4. 進入對應(yīng)檢測模塊內(nèi)部,將ctrl_flow_cn增加CALLEE的固定值,標(biāo)示該模塊正在執(zhí)行5. 執(zhí)行完對應(yīng)檢測模塊內(nèi)部,退出前ctrl_flow_cn_inv減少CALLEE的固定值,標(biāo)示該模塊執(zhí)行正確6. 完成對應(yīng)檢測模塊,進入下一項檢測模塊前,將ctrl_flow_cn_inv減少CALLER的固定值,標(biāo)示該模塊調(diào)用正確7. 檢測ctrl_flow_cnt和ctrl_flow_cnt_inv是否仍互為取反的,如果是則表明對應(yīng)檢測模塊流程上被正確調(diào)用,并且該檢測模塊被正確執(zhí)行

運行時周期檢測初始化

如果啟動時的自檢成功通過,并且標(biāo)準(zhǔn)初始化也完成了,運行時的周期自檢必須在進入主循環(huán)之前進行初始化。該部分主要是一些后續(xù)自檢會使用到的變量的初始化、中斷中可能用到的數(shù)據(jù)的同步處理以及看門狗的配置等。

運行時周期檢測流程

運行時的檢測是以systick作為時基,進行周期性的檢測。運行時周期檢測包括:

  • 局部CPU內(nèi)核寄存器檢測
  • 系統(tǒng)時鐘運行檢測
  • Flash CRC分段檢測
  • 堆棧邊界溢出檢測
  • 控制流檢測
  • 局部RAM自檢(在中斷服務(wù)程序中進行)
  • 看門狗喂狗

圖19.運行時周期自檢及中斷服務(wù)流程結(jié)構(gòu)0dc424c4-163e-11ef-bebc-92fbcf53809c.png

一、CPU運行時檢測

CPU運行時周期自檢跟啟動時的自檢類似,只是不檢測內(nèi)核標(biāo)志和堆棧指針。圖20.CPU運行時檢測流程0dffc34e-163e-11ef-bebc-92fbcf53809c.png

二、系統(tǒng)時鐘運行時檢測

運行時系統(tǒng)時鐘的檢測跟啟動時時鐘檢測原理相同。因為運行時的時鐘檢測會一直循環(huán)執(zhí)行,對某些用戶應(yīng)用,如果采用定時器捕獲LICK邊沿的方式,可能中斷頻率太高會有影響,所以也可以采用其他方式進行測試,測試原理不變?nèi)匀皇峭ㄟ^內(nèi)部低速時鐘源(LICK)和系統(tǒng)時鐘的交叉測量結(jié)果來驗證,AT32F403A和AT32F415例程分別采用了兩種不同的測試方法,供用戶參考。

  • 在AT32F403A例程中,跟啟動時時鐘檢測方法相同,仍然采用專用的定時器TMR輸入捕獲LICK邊沿頻率的方式進行測試,下圖是采用定時器捕獲LICK測試方式的流程。

圖21.系統(tǒng)時鐘運行時定時器捕獲LICK檢測方式流程0e2a1c8e-163e-11ef-bebc-92fbcf53809c.png

  • 在AT32F415的例程中,使用ERTC(時鐘源為LICK)和Systick定時器(時鐘源為系統(tǒng)時鐘)之間交叉測量,ERTC按照數(shù)據(jù)手冊上LICK典型值作為時鐘源配置秒中斷參數(shù),Systick定時器中斷配置為1毫秒,Systick中斷計數(shù)變量tick_cnt_val累加,ERTC秒中斷時獲得Systick的計數(shù)變量數(shù)值,以此計算得到LICK實際測試值,如果在規(guī)格范圍內(nèi)的最大和最小值之間,測試通過。下圖是采用ERTC獲取Systick變量值測試方式的流程圖。

圖22.系統(tǒng)時鐘運行時ERTC獲取Systick值檢測方式流程0e58a18a-163e-11ef-bebc-92fbcf53809c.png

三、Flash CRC運行時檢測

運行時進行Flash CRC的自檢,因為檢測范圍不同耗時不同,如果一次計算檢測全部范圍CRC可能耗時過長,影響正常應(yīng)用部分的執(zhí)行,所以可以根據(jù)用戶應(yīng)用程序大小配置分段CRC計算,當(dāng)計算到最后一段范圍時,再進行CRC值比較,如果不一致則測試失敗。圖23.Flash CRC運行時檢測流程0e7c89ce-163e-11ef-bebc-92fbcf53809c.png

四、棧邊界運行時溢出檢測

可驗證尋址和數(shù)據(jù)路徑測試相關(guān),定義特殊固定值的Magic Pattern數(shù)組,放置在棧區(qū)域最底部地址,通過運行中檢測Magic Pattern數(shù)組完整性來判斷棧是否溢出。如果原始Pattern被破壞,則表明棧溢出測試失敗,調(diào)用故障安全程序。這一區(qū)域根據(jù)設(shè)備及應(yīng)用有不同的配置。用戶必須為堆棧定義足夠的區(qū)域,并保證pattern正確放置。圖24.堆棧邊界溢出運行時檢測流程0e9843d0-163e-11ef-bebc-92fbcf53809c.png

五、RAM運行時檢測

對于不支持硬件SRAM奇偶校驗功能的型號,運行時的RAM自檢是在systick中斷函數(shù)中進行的。測試范圍可以根據(jù)用戶實際應(yīng)用需求調(diào)整,通過修改代碼中宏定義RUNTIME_RAM_START_ADDR和RUNTIME_RAM_END_ADDR來完成,需注意的是因為測試包括了測試區(qū)域前后相鄰的字,所以測試范圍前后要保留適當(dāng)余量,不要覆蓋臨時保存數(shù)據(jù)的緩沖塊(buffer block)和溢出芯片RAM范圍。測試流程方法概要描述如下:

  • 測試根據(jù)systick時基分批次進行,每次測試按照CLASS B部分4個字的區(qū)域偏移,為保障耦合故障覆蓋率,每次測試的實際內(nèi)存塊還包括測試區(qū)域前后各1個相鄰字,總共6個字。
  • 首先將待測試內(nèi)存塊(RAM block)的數(shù)據(jù)存儲到專門用于測試過程中臨時保存數(shù)據(jù)的緩沖塊(buffer block)
  • 然后跟啟動時檢測RAM類似,對測試內(nèi)存塊(RAM block)采用March C算法測試
  • 測試完成后將緩沖塊(buffer block)中保存的數(shù)據(jù)恢復(fù)至測試內(nèi)存塊(RAM block)

下圖描述了故障耦合的基本原理,圖中數(shù)據(jù)編號表示操作先后順序。圖25.局部RAM檢測故障耦合加擾模式原理0eb48842-163e-11ef-bebc-92fbcf53809c.png圖26.局部RAM運行時檢測流程0ed346ce-163e-11ef-bebc-92fbcf53809c.png

六、看門狗運行時刷新

作為程序計數(shù)器檢測的一部分,運行時需要定期喂狗保證系統(tǒng)正常運行,看門狗的刷新部分放置在每次檢測最后部分。注意:運行時的看門狗超時時間,根據(jù)用戶程序中刷新喂狗代碼的調(diào)用頻率配置,軟件庫源代碼通常采用的是10ms調(diào)用一次,所以源代碼中看門狗超時時間配置大于10ms。

注意事項

用戶使用中可能會根據(jù)實際情況對CLASSB代碼進行修改,如果改動不符合要求可能導(dǎo)致檢測失敗,本章節(jié)列舉了一些常見的注意事項。

一、程序中自定義參數(shù)修改

系統(tǒng)主頻根據(jù)實際應(yīng)用修改,函數(shù)為selftest_system_clock_config()。其余配置參數(shù)定義在at32_selftest_param.h文件以及各自集成開發(fā)環(huán)境的鏈接或者分散加載文件中,根據(jù)實際應(yīng)用進行修改,下面分別對Keil、IAR、AT32 IDE進行說明。at32_selftest_param.h文件中各個集成開發(fā)環(huán)境通用部分如下:圖27.通用可修改參數(shù)0efbe5c0-163e-11ef-bebc-92fbcf53809c.pngat32_selftest_param.h文件中跟各個集成開發(fā)環(huán)境相關(guān)寫法不一致的部分如下Keil:圖28.Keil可修改參數(shù)0f1ef8a8-163e-11ef-bebc-92fbcf53809c.pngIAR:圖29.IAR可修改參數(shù)0f419d18-163e-11ef-bebc-92fbcf53809c.pngAT32 IDE:圖30.AT32 IDE可修改參數(shù)0f6baeb4-163e-11ef-bebc-92fbcf53809c.png

二、Flash CRC檢測范圍設(shè)置

因為在Flash CRC運行時檢測是分段進行的,所以設(shè)置的總大小范圍需要跟代碼中的分段大小宏定義ROM_ONCE_VERIYF_SIZE成整數(shù)倍對齊,否則可能導(dǎo)致最后計算CRC失敗。

三、RAM檢測范圍設(shè)置

因為在運行時檢測是每次4個字,所以檢測范圍也需要保證4字對齊,并且因為檢測范圍前后還需2個字的空隙,所以設(shè)置范圍時要防止覆蓋到測試RAM時臨時保存數(shù)據(jù)的緩沖塊(buffer block)或者溢出芯片RAM范圍,導(dǎo)致在RAM測試時程序出錯。

四、編譯器影響

1. 編譯器的優(yōu)化不僅會導(dǎo)致程序分析調(diào)試?yán)щy,還可能導(dǎo)致程序出現(xiàn)非預(yù)期的結(jié)果,所以強烈建議在使用中針對CLASSB部分代碼不要進行優(yōu)化。2. 當(dāng)使用不同版本的編譯器時,程序可能有差異。新版CLASS軟件庫對于不同型號MCU的工程,為方便使用不同編譯器版本的用戶移植,可能使用了不同的編譯器版本。

軟件庫說明

一、軟件庫下載各個已支持型號對應(yīng)的軟件庫源代碼開放于Example Code中,用戶可以通過官網(wǎng)下載,官網(wǎng)中Example Code內(nèi)容的鏈接地址為https://www.arterytek.com/cn/support/index.jsp?index=2,可搜索關(guān)鍵字“60730”快速查找已支持型號MCU的軟件庫,例如AT32F403A的軟件庫文件為“AT32F403A 407 IEC 60730 CLASSB LIB”。二、軟件庫演示下面以SC0127 AT32F403A 407 IEC 60730 CLASSB LIB為例,AT32F403A安全庫的例程運行環(huán)境如下:

  • KEIL工程為V5.36版本,IAR工程為V8.2版本,AT32 IDE工程為V1.0.09版本。
  • Demo運行基于F403A芯片,運行在AT-START-F403A開發(fā)板。
  • 工程路徑為:utilities\classb_demo

圖31.運行打印信息0f8cfeca-163e-11ef-bebc-92fbcf53809c.png

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 軟件
    +關(guān)注

    關(guān)注

    69

    文章

    5152

    瀏覽量

    89210
  • IEC
    IEC
    +關(guān)注

    關(guān)注

    2

    文章

    212

    瀏覽量

    29563
  • AT32
    +關(guān)注

    關(guān)注

    1

    文章

    121

    瀏覽量

    2705
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    PSoC 4-IEC 60730 B級和IEC 61508 SIL安全軟件

    電子發(fā)燒友網(wǎng)站提供《PSoC 4-IEC 60730 B級和IEC 61508 SIL安全軟件
    發(fā)表于 04-19 17:05 ?0次下載

    首日速遞 | 閃耀2025慕尼黑上海電子展,全方位展現(xiàn)智能“芯”實力

    4月15日,慕尼黑上海電子展(electronicaChina2025)在上海新國際博覽中心盛大啟幕。攜多款AT32系列MCU新品及完整應(yīng)用方案矩陣,重磅亮相本屆展會,通過四大核
    的頭像 發(fā)表于 04-16 00:15 ?417次閱讀
    首日速遞 | <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b>閃耀2025慕尼黑上海電子展,全方位展現(xiàn)智能“芯”實力

    汽車芯片廠商芯弦半導(dǎo)體NSSineTM系列實時控制MCU通過IEC 60730 Class B功能安全認(rèn)證

    近日,芯弦半導(dǎo)體(蘇州)有限公司NS800RT3xxx/5xxx 系列的 MCU 安全成功通過IEC 60730 功能安全認(rèn)證,為家電等電子產(chǎn)品筑牢安全質(zhì)量防線。國際權(quán)威的測試、檢驗和認(rèn)證機構(gòu)
    的頭像 發(fā)表于 04-02 17:34 ?1316次閱讀
    汽車芯片廠商芯弦半導(dǎo)體NSSineTM系列實時控制MCU通過<b class='flag-5'>IEC</b> <b class='flag-5'>60730</b> <b class='flag-5'>Class</b> <b class='flag-5'>B</b>功能安全認(rèn)證

    AT32F402/F405入門使用指南

    搭建AT32開發(fā)環(huán)境一、調(diào)試工具及開發(fā)板目前AT32F402/AT32F405開發(fā)板都自帶AT-Link-EZ調(diào)試工具,AT-Link-EZ如下圖左邊紅框所示,它也可拆開后單獨搭配其他電路板使用,支持IDE在線調(diào)試、在線燒錄、USB轉(zhuǎn)串口等功能。圖1.AT-START
    的頭像 發(fā)表于 03-28 18:59 ?739次閱讀
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b>AT32F402/F405入門<b class='flag-5'>使用指南</b>

    AT32 Workbench煥“芯”升級!引入Middleware助力開發(fā)高效提速

    近日,AT32Workbench開發(fā)工具完成重大更新升級,新增對MiddlewareFreeRTOS,以及MiddlewaresUSB_DEVICE和USB_HOST的支持。此次升級致力于深度
    的頭像 發(fā)表于 03-07 18:46 ?471次閱讀
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b><b class='flag-5'>AT32</b> Workbench煥“芯”升級!引入Middleware助力開發(fā)高效提速

    AN136 基于GD32F30x系列的IEC60730 ClassB移植指南

    電子發(fā)燒友網(wǎng)站提供《AN136 基于GD32F30x系列的IEC60730 ClassB移植指南.pdf》資料免費下載
    發(fā)表于 01-17 16:22 ?1次下載
    AN136 基于GD32F30x系列的<b class='flag-5'>IEC60730</b> ClassB<b class='flag-5'>庫</b>移植<b class='flag-5'>指南</b>

    基于GD32F3x0系列的IEC60730 ClassB移植指南

    電子發(fā)燒友網(wǎng)站提供《基于GD32F3x0系列的IEC60730 ClassB移植指南.pdf》資料免費下載
    發(fā)表于 01-17 14:41 ?2次下載
    基于GD32F3x0系列的<b class='flag-5'>IEC60730</b> ClassB<b class='flag-5'>庫</b>移植<b class='flag-5'>指南</b>

    AT32F402/F405時鐘配置

    電子發(fā)燒友網(wǎng)站提供《AT32F402/F405時鐘配置.pdf》資料免費下載
    發(fā)表于 01-15 15:24 ?0次下載
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b>AT32F402/F405時鐘配置

    STM32應(yīng)用中UL/CSA/IEC 60730-1/60335-1的B類認(rèn)證獲取指南

    電子發(fā)燒友網(wǎng)站提供《STM32應(yīng)用中UL/CSA/IEC 60730-1/60335-1的B類認(rèn)證獲取指南.pdf》資料免費下載
    發(fā)表于 11-26 15:04 ?2次下載

    國民技術(shù)N32 MCU通過IEC/EN/UL 60730功能安全認(rèn)證

    近期,國民技術(shù)多個系列的N32MCU產(chǎn)品先后通過了全球領(lǐng)先的檢驗、鑒定、測試和認(rèn)證機構(gòu)SGS的IEC/EN/UL60730功能安全測試認(rèn)證,獲得SGS頒發(fā)的IEC/EN/UL60730
    的頭像 發(fā)表于 10-25 08:07 ?1008次閱讀
    國民技術(shù)N32 MCU通過<b class='flag-5'>IEC</b>/EN/UL <b class='flag-5'>60730</b>功能安全認(rèn)證

    AT32講堂088 | AT32F402/F405時鐘配置

    介紹如何結(jié)合提供的V2.x.x的板級支持包(BSP)來配置時鐘。以下介紹時鐘配置的方法主要分兩種:1、以手動編寫代碼調(diào)用BSP中提供的驅(qū)動函數(shù)接口來進行時鐘配
    的頭像 發(fā)表于 09-15 08:08 ?1020次閱讀
    <b class='flag-5'>AT32</b>講堂088 | <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b>AT32F402/F405時鐘配置

    AT32講堂087 | AT32 IDE快速入門指南

    新建項目新項目向?qū)T32ID提供支持MCU的C語言項目模板,方便用戶快速創(chuàng)建項目。菜單欄【File】>【New】>【CProject】。新建項目向?qū)У膶υ捒驅(qū)⒊霈F(xiàn)。在對
    的頭像 發(fā)表于 09-15 08:08 ?1405次閱讀
    <b class='flag-5'>AT32</b>講堂087 | <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b><b class='flag-5'>AT32</b> IDE快速入門<b class='flag-5'>指南</b>

    AT32 MCU的隨機數(shù)生成

    概述產(chǎn)品和生態(tài)系統(tǒng)安全性的需求比以往任何時候都更加重要。真隨機數(shù)是所有安全系統(tǒng)的核心,其質(zhì)量會影響設(shè)計的安全性。因此在沒有內(nèi)置硬件TRNG的AT32的微控制器系列中,如何提高隨機數(shù)的有效,來符合
    的頭像 發(fā)表于 08-30 12:26 ?1289次閱讀
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b><b class='flag-5'>AT32</b> MCU的隨機數(shù)生成

    AT32講堂085 | AT32 MCU HICK時鐘校準(zhǔn)

    簡介AT32系列MCU內(nèi)部都有提供適合運行的內(nèi)部高速時鐘(HICK),其本質(zhì)就是內(nèi)置于芯片的RC振蕩器。在25℃下,其典型值頻率8MHz的精度由工廠校準(zhǔn)到±1%,在-40到105℃,該內(nèi)部高速時鐘
    的頭像 發(fā)表于 08-30 12:26 ?1253次閱讀
    <b class='flag-5'>AT32</b>講堂085 | <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b><b class='flag-5'>AT32</b> MCU HICK時鐘校準(zhǔn)

    喜訊!科技蟬聯(lián)「重慶市軟件和信息服務(wù)企業(yè)五十強」

    科技榮耀上榜,連續(xù)兩年入選榜單。該名單以行業(yè)統(tǒng)計數(shù)據(jù)為基礎(chǔ),從企業(yè)規(guī)模、經(jīng)營業(yè)績、研發(fā)能力、知識產(chǎn)權(quán)、行業(yè)資質(zhì)等競爭要素進行評價,并經(jīng)專家綜合評審,優(yōu)中
    的頭像 發(fā)表于 07-20 08:15 ?590次閱讀
    喜訊!<b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b>科技蟬聯(lián)「重慶市<b class='flag-5'>軟件</b>和信息服務(wù)企業(yè)五十強」
    主站蜘蛛池模板: 四虎.com | 精品毛片视频 | 福利姬 magnet | 成年视频xxxxx免费播放软件 | 中文字幕久久精品波多野结 | 国内精品视频在线 | 综合激情六月 | 6080伦理久久精品亚洲 | 中文字幕亚洲一区二区va在线 | 波多野结衣在线一区 | 午夜两性色视频免费网站 | 欧美另类bbw | 免费在线播放黄色 | 老师办公室高h文小说 | 日本一卡二卡≡卡四卡精品 | 人人爱爱| 天天插天天爽 | 天天躁夜夜躁狠狠躁2024 | 亚洲欧美日本视频 | 色综合色综合 | 狠狠色丁香久久婷婷综合丁香 | 黄色小视频日本 | 日本xxxx18vr69| 欧美视频区 | 色国产在线视频一区 | 足控免费视频xxav | 永久在线免费观看 | 狠狠色噜噜狠狠狠狠黑人 | 色天使色婷婷丁香久久综合 | 视频在线观看免费网址 | 秋霞特色大片18入口私人高清 | 亚洲手机看片 | 天堂社区在线视频 | 亚洲一区二区三区不卡视频 | 午夜免费r级伦理片 | 亚洲色五月 | 人人爱人人射 | 日韩免费无砖专区2020狼 | 国产日韩精品一区二区在线观看 | 日本天堂影院在线播放 | 一区二区亚洲视频 |