1. 背景介紹:
在TI上一代Jacinto 6汽車處理器中,例如DRA7x/TDA2x,為了實(shí)現(xiàn)性能與功能安全的綜合考慮,提供了名為DVFS(Dynamic Voltage Frequency Scaling)的機(jī)制,使能系統(tǒng)能夠?qū)崟r(shí)獲取芯片thermal狀態(tài),并動(dòng)態(tài)反饋調(diào)節(jié)系統(tǒng)電壓與運(yùn)行頻率,使得系統(tǒng)運(yùn)行在安全溫度范圍內(nèi),實(shí)現(xiàn)性能最大化。
在TI最新一代Jacinto? 7 處理器中,例如DRA8x/TDA4x,目前外部PMIC輸出電壓NVM固定,故推薦使用DFS來(lái)實(shí)現(xiàn)在固定電壓下的頻率調(diào)節(jié),從而實(shí)現(xiàn)對(duì)整芯片熱狀態(tài)的檢測(cè)以及控制。
2. 測(cè)試條件:
TDA4VM EVM開(kāi)發(fā)板:https://www.ti.com/tool/J721EXSOMXEVM
TDA4VM Linux SDK:https://www.ti.com/tool/download/PROCESSOR-SDK-LINUX-J721E/08.00.00.08
TDA4VM RTOS SDK:https://www.ti.com/tool/download/PROCESSOR-SDK-RTOS-J721E/08.00.00.12
3. TDA4動(dòng)態(tài)熱檢測(cè)與控制流程:
在TDA4 SOC系統(tǒng)中,可參照?qǐng)D1所示流程進(jìn)行SOC熱狀態(tài)檢測(cè)以及控制,用戶可在應(yīng)用層對(duì)VTM(Voltage and Thermal Manager)的thermal值進(jìn)行實(shí)時(shí)讀取,并設(shè)置高溫超出閾值/常溫回落閾值,通過(guò)VTM的實(shí)時(shí)檢測(cè)以及對(duì)比,在超出閾值時(shí)產(chǎn)生溫度事件?;蛘咴趦?nèi)核中通過(guò)增加VTM驅(qū)動(dòng),并直接在上層應(yīng)用中讀取thermal溫度值并設(shè)置閾值,然后通過(guò)上層應(yīng)用邏輯來(lái)實(shí)現(xiàn)對(duì)thermal的監(jiān)控,在超出閾值時(shí)產(chǎn)生溫度報(bào)警事件。
圖 1 TDA4動(dòng)態(tài)熱檢測(cè)與控制流程圖
在得到溫度報(bào)警事件后,通過(guò)對(duì)TDA4內(nèi)部各核心運(yùn)行狀態(tài)以及運(yùn)行頻率的讀取,能夠在系統(tǒng)正常運(yùn)行范圍內(nèi),動(dòng)態(tài)調(diào)整各核心的運(yùn)行頻率,從而降低系統(tǒng)功耗,實(shí)現(xiàn)對(duì)系統(tǒng)熱狀態(tài)的控制。
4. VTM動(dòng)態(tài)熱檢測(cè)
首先需要?jiǎng)討B(tài)讀取SOC thermal溫度值,VTM可以用來(lái)讀取溫度值以及設(shè)置溫度報(bào)警閾值等,其詳細(xì)介紹參照TDA4 TRM手冊(cè)。其核心寄存器配置如表1所示:
表 1 VTM寄存器設(shè)置
Register in VTM module | Offset | Comments |
WKUP_VTM_TMPSENS_STAT_j | [9-0] DATA_OUT | 實(shí)時(shí)溫度值(ADC code數(shù)值) |
WKUP_VTM_MISC_CTRL2 | [9-0] MAXT_OUTRG_ALERT_THR | 高溫報(bào)警閾值,超出產(chǎn)生thermal alert |
WKUP_VTM_MISC_CTRL2 | [25-16] MAXT_OUTRG_ALERT_THR | 常溫回落閾值,產(chǎn)生alert clean |
WKUP_VTM_TMPSENS_CTRL_j | [11] MAXT_OUTRG_EN | Enable/Disable alert 事件 |
CTRLMMR_WKUP_RESET_SRC_STAT | [24] THERMAL_RST | 產(chǎn)生/清除 alert事件的標(biāo)志位 |
讀出來(lái)的DATA_OUT值為內(nèi)部ADC數(shù)值,需要進(jìn)行轉(zhuǎn)換才能成為攝制溫度值,其轉(zhuǎn)換方式如圖2所示:
圖 2 VTM ADC code與溫度值計(jì)算關(guān)系表
此處提供patch,能夠?qū)崿F(xiàn)在Linux端對(duì)內(nèi)部核心的thermal溫度值讀取。步驟如下:
a. 下載Linux SDK8.0并參照guide制作SD啟動(dòng)卡,并下載對(duì)應(yīng)thermal patch。
b. 參照下述流程安裝到原生SDK中。
cd $PSDK_PATH/board-support/linux-*
git am 0001-display-temperature-as-mili-celsius.patch
cd ../..
make linux
c. 參照下述流程將編譯后的文件更新至SD卡系統(tǒng)中。
Edit the file $PSDK_PATH/Rules.make
Set DESTDIR=/media/$USER/rootfs
cd $PSDK_PATH
sudo make linux_install
d. 參照下述流程進(jìn)行驗(yàn)證
cat /sys/class/thermal/thermal_zone*/temp
其中patch一共添加了五個(gè)域中kernel的溫度值,其打印如圖3所示:
圖 3 thermal溫度值讀取
其中對(duì)應(yīng)了五個(gè)Linux中的設(shè)備節(jié)點(diǎn),所輸出的值單位為毫攝氏度,例如圖3中所示結(jié)果以及硬件對(duì)應(yīng)關(guān)系為:
thermal_zone0 -> WKUP domain DMSC core -> 67.640℃
thermal_zone1 -> MAIN domain MPU A72 core -> 68.074℃
thermal_zone2 -> MAIN domain C7x core -> 68.507℃
thermal_zone3 -> MAIN domain GPU core -> 69.371℃
thermal_zone4 -> MAIN domain R5F core -> 68.074℃
5. TDA4核心動(dòng)態(tài)調(diào)頻控制
獲取到TDA4內(nèi)部各個(gè)核心實(shí)時(shí)的thermal值后,可以通過(guò)上層邏輯對(duì)讀取到的溫度值與預(yù)設(shè)的報(bào)警閾值進(jìn)行邏輯比較,然后采取對(duì)應(yīng)的措施進(jìn)行核心頻率調(diào)整。
在TDA4默認(rèn)文件系統(tǒng)中,提供k3conf通過(guò)指定的device ID以及clock ID來(lái)實(shí)現(xiàn)對(duì)各個(gè)核心頻率的讀取以及控制。
5.1 Device ID的獲?。?/p>
可通過(guò)TISCI手冊(cè)J721E部分對(duì)各個(gè)模塊的device ID進(jìn)行查詢:
https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-jacinto7/08_00_00_12/exports/docs/pdk_jacinto_08_00_00_37/packages/ti/drv/sciclient/soc/sysfw/binaries/system-firmware-public-documentation/5_soc_doc/j721e/devices.html#soc-doc-j721e-public-devices-desc-device-list
圖4中列出了常用幾個(gè)核心的device ID。
圖 4 processor device ID
5.2 Clock ID的獲?。?/p>
為了標(biāo)識(shí)在一個(gè)核心中多個(gè)不同模塊的頻率設(shè)置,引入了clock ID對(duì)其進(jìn)行區(qū)分,可在TISCI J721E部分對(duì)clock ID進(jìn)行查詢。
https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-jacinto7/08_00_00_12/exports/docs/pdk_jacinto_08_00_00_37/packages/ti/drv/sciclient/soc/sysfw/binaries/system-firmware-public-documentation/5_soc_doc/j721e/clocks.html?highlight=a72ss0_core0
5.3對(duì)應(yīng)核心運(yùn)行頻率檢測(cè):
獲取到對(duì)應(yīng)核心device ID后,可通過(guò)下述指令打印出當(dāng)前對(duì)應(yīng)核心的運(yùn)行頻率。
k3conf dump clock DEVICE_ID
以A72_CORE0為例,可以得到其當(dāng)前運(yùn)行頻率為2GHz如圖5所示。
圖 5 A72 CORE0 運(yùn)行頻率
5.4設(shè)置對(duì)應(yīng)核心運(yùn)行頻率:
若按照第三章中的流程計(jì)算,當(dāng)前運(yùn)行頻率需要進(jìn)行調(diào)整,可使用下述指令對(duì)當(dāng)前指定device ID以及clock ID 的模塊進(jìn)行頻率控制。在對(duì)其核心頻率進(jìn)行修改之前,需要首先對(duì)其對(duì)應(yīng)的鎖相環(huán)進(jìn)行修改,以A72_CORE0核心為例:
devmem2 0x00688040 w 0x80000001
k3conf set clock 202 2 1000000000
其修改過(guò)程如圖6所示:
圖 6 A72 CORE0頻率修改流程
其中每個(gè)TDA4內(nèi)部核心所支持的最大頻率受硬件限制,以TDA4VM為例,如圖7所示為不同PN中各核心所支持的最大頻率,詳情參照TDA4VM Datasheet。
圖 7 TDA4VM中各核心所支持最大頻率
同樣的,在最大頻率之下,各核心的頻率設(shè)置并非隨機(jī)設(shè)置,其必須滿足內(nèi)部分頻器等硬件時(shí)鐘要求,此相關(guān)設(shè)置參照TI Clock Tree Tools。
審核編輯:湯梓紅
-
處理器
+關(guān)注
關(guān)注
68文章
19118瀏覽量
228874 -
控制
+關(guān)注
關(guān)注
4文章
1010瀏覽量
122596 -
檢測(cè)
+關(guān)注
關(guān)注
5文章
4419瀏覽量
91321
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論