1477_AURIX TC275 iLLD中看门狗密码获取接口分析
全部學(xué)習(xí)匯總: GreyZhang/g_TC275: happy hacking for TC275! (github.com)
在基礎(chǔ)的工程中有一組看門狗的接口操作,按照前面看文檔的理解,這是因為CPU0的看門狗定時器是默認(rèn)啟動的。因此,為了保證例程能夠正常運行,這里進行了看門狗的禁用。
這一組看門狗的接口操作主要是指的這部分,這一次,我來嘗試分析一下IfxScuWdt_getCpuWatchdogPassword接口的實現(xiàn)。
從命名語義看,這個函數(shù)的功能是明確的,就是獲取CPU看門狗定時器的密碼。更確切有點,應(yīng)該是獲取當(dāng)前CPU的看門狗定時器密碼,因為這里判斷了內(nèi)核ID。這樣,我們的接口分析應(yīng)該就轉(zhuǎn)向了對立面這個接口實現(xiàn)的分析。
關(guān)于MCU的數(shù)據(jù)結(jié)構(gòu)抽象以及與地址的映射處理,分析的意義不是很大,這只是語言表達技巧,簡單注意一下就好。
這是一個內(nèi)聯(lián)函數(shù),通過看門狗的控制寄存器0來獲取相應(yīng)的密碼信息。這個密碼信息的獲取不是讀取一個寄存器就結(jié)束了,而是經(jīng)過了一定的運算。為了能夠看清運算的結(jié)果,我增加了兩個全局量存儲中間的信息,后面就可以通過打印看到這其中的變化。
打印的信息我是按照二進制來打印的,這主要是我看了文檔之后進行的一個簡單的設(shè)計修改。接下來先看打印的結(jié)果,之后再結(jié)合文檔來理解。
從上面的結(jié)果可以看出來,讀出來的原始信息是0b11,獲取到的密碼是0b111100。為什么會是這樣的狀態(tài)呢?接下來需要參考一下文檔。
這是對這個寄存器位域的解釋,這個信息其實是用戶定義的密碼區(qū)域。讀取的時候,bit7~bit2的信息是翻轉(zhuǎn)的,這算是一種安全設(shè)計。讀出來進行了翻轉(zhuǎn),那么想要恢復(fù)就得再翻轉(zhuǎn)回去,這也就解釋了前面的代碼的行為了。而從打印的結(jié)果看,其實也能夠看得出來這個翻轉(zhuǎn)的效果。從結(jié)果看,獲取到的密碼其實是默認(rèn)的密碼信息。
那么為什么用這個異或操作呢?按位進行異或操作其實是最簡單的一個方式,如果跟每一個bit都是1的數(shù)值進行按位異或,那么不是1的信息會出來一個1,而不是1就一定是0。如果是1,那么出來的是0。這也就實現(xiàn)了0變成1,1變成0的翻轉(zhuǎn)操作。
有了上面的基礎(chǔ),其實再處理安全看門狗也就很容易了,這是很類似的操作。
安全看門狗是系統(tǒng)級的,跟獨立的CPU沒有綁定關(guān)系,因此這個接口更簡潔了一步。
密碼處理方面,采用的方式一致。這樣,文檔也都不需要再進行分析落實了。
以上是對TC275的看門狗,確切說是看門狗定時器如何獲取密碼的接口進行的簡單分析。看起來,后面似乎得了解下如何去把這個用戶密碼修改掉,因為這樣比較有實用的價值。
總結(jié)
以上是生活随笔為你收集整理的1477_AURIX TC275 iLLD中看门狗密码获取接口分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机在艺术娱乐的应用,计算机技术在艺术
- 下一篇: 图纸中bs是什么意思_园建施工图中WL、