展頻調試是一種用於調試電子設備中展頻功能的過程。展頻是一種用於減少電磁干擾(EMI)的技術,通過在信號中引入微小的頻率變化,可以減少特定頻率上的電磁輻射。
一、添加展頻調試驅動
1.1添加 PLL debug 驅動
先在對應項目配置文件中添加 PLL 的 debug 驅動,這項原本是沒有的,需要手動添加。這裡是基於 x9h 的配置修改的,改動的文件為 safety-x9h-ms.mk,客戶請根據實際使用的配置修改。
vim rtos/freertos_safetyos/project/safety-x9h-ms.mk
1.2 編譯替換 safety.bin 文件
(1)單獨編譯 freertos,得到 safety.bin 。
(2)使用 ftp 工具下載
binary_X9H_MS_NativeAndroidUser_Serdes_4G_emmc_4266/ 目錄下的
safety.bin 到windows 中。
(3)使用下載工具替換 safety.bin 。
二、DDR 展頻調試
2.1確認指令
(1)在 safety 串口下輸入help 查看有哪些可用的 pll 調試命令。
help
(2)紅框中是添加驅動新增的 pll 調試工具。
(3)同時還有其他展頻常用工具
dumpclk
setclk
disclk
modulehelper_init
2.2 dumpcfg 查看配置
(1)通過 dumpcfg 命令可以查看單個模塊是否開展頻以及展頻配置信息,這裡是 DDR 開展頻前的配置。
modulehelper_init //初始化 PLL Debug 模塊
dumpclk //查看所有 PLL clk
dumpcfg PLL_DDR //查看 PLL_DDR 的展頻信息
(2)查看 PLL_DDR 的 clk。
integer: 1 表⽰integermode,0 表⽰fractionalmode,PLL 必須在 fractionalmode 下才可以展頻。
ss: 使能,ss 1 表⽰開啟展頻,ss 0 表⽰沒開展頻。
down: 向下展頻 or 中⼼展頻,down 1(true) 表⽰向下展頻,down 0(false) 表⽰中⼼展頻。
spread: 展頻幅度,spread 10 表⽰展頻幅度 1%(最⼤展頻幅度31,即3.1%) 。
2.3 寫寄存器打開 PLL_DDR 展頻
(1)查看 PLL_DDR 展頻相關寄存器
dw 0xf3010018 4
寄存器值為 1 ,表示沒有打開展頻。
(2)打開 PLL_DDR 展頻,具體配置如下
Spread( bit4~bit8 )為 a : 展頻幅度 1.0%。
Downspread ( bit3, 0-centerspread,1-downspread ) 為 1: 向下展頻。
mw 0xf3010018 0x00001ef0
dw 0xf3010018 4
(3)dumpcfg 確認配置
這是寫寄存器修改 DDR 展頻之後,使用 dumpcfg 看到的配置。
dumpcfg PLL_DDR
根據改變的參數可以知道,已經打開展頻,並且向下展頻,幅度為 10%。
integer: 1 表⽰integermode,0 表⽰fractionalmode,PLL 必須在 fractionalmode 下才可以展頻。
ss: 使能展頻,ss 1 表⽰開啟展頻,ss 0 表⽰沒開展頻。
down: 向下展頻 or 中⼼展頻,down 1(true) 表⽰向下展頻,down 0(false) 表⽰中⼼展頻。
spread: 展頻幅度,spread 10 表⽰展頻幅度 1%(最⼤展頻幅度31,即3.1%) 。
2.4 保存展頻數據
(1)把確認的展頻參數保存到如下文件中
vim BareMetal_Suite/soc/kunlun/safe/soc.c
vim BareMetal_Suite/soc/kunlun/sec/soc.c
(2)編譯打包
make baremetal
make genpac
(3)燒寫整個鏡像後進行驗證,開機直接 dumpcfg 查看展頻情況。
dumpcfg PLL_DDR
可以看到,開機後立即查看 PLL_DDR 展頻狀態,已經是開啟展頻的狀態了。
三、總結
[2]《X9_SDK_用戶手冊_Rev1.7》
歡迎在博文下方留言評論,我們會及時回復您的問題。
如有更多需求,歡迎聯繫大聯大世平集團 ATU 部門:atu.sh@wpi-group.com 作者:好景虛設
更多資訊,請掃碼關注我們!

評論