本文以s905d 三模配置為例,也即dvb-c/dvb-t,dvb-s 。
確認pin腳連線
檢視原理,確認外設和晶元pin的連線鏈路。serial ts stream如下
dvb - c/t 這一路連線的是晶元的管腳是v21(gpioz_0),v20(gpioz_1) ,u22(gpioz_2) ,u21(gpioz_3),主晶元只需要接入即可解ts流,該路屬於序列serial ts stream。
parallel ts stream 如下:
dvb - s 這一路連線的是晶元的管腳是e3,e2,e1,f4,f2,f3,g4,g2,g3,h3,h2,分別對應gpiodv_0 ~ gpiodv_10,主晶元只需要接入即可解ts流,該路屬於並行parallel stream。
梳理gpio口
dvb - c/t 序列的一路需要使用到gpioz_0,gpioz_1,gpioz_2,gpioz_3
dvb - s 並行的一路需要使用到gpiodv_0,gpiodv_1,gpiodv_2,gpiodv_3,gpiodv_4,gpiodv_5,gpiodv_6,gpiodv_7,gpiodv_8,gpiodv_9,gpiodv_10
定義pinmux
mesongxl.dtsi 檔案中定義如下pin腳,相關解析在aml_dvb.c檔案的probe 函式解析各個pin mux 配置
/* dvb-s 序列 pin mux 配置 */
dvb_p_ts0_pins: dvb_p_ts0_pins ;
dvb_s_ts0_pins: dvb_s_ts0_pins ;
dvb_p_ts1_pins: dvb_p_ts1_pins ;
/* dvb-c/t 序列 pin mux 配置 */
dvb_s_ts1_pins: dvb_s_ts1_pins ;
pinmux 引數說明:
1. amlogic,pin 即為需要使用到的gpio口;
2. amlogic,setmask 暫存器bit置位的設定;
-- 例如:<2 0x1f> 其中 "2" 表示reg2,"0x1f" 用二進位制表示即為 "0001 1111",此時<2 0x1f>表示將reg2[0],reg2[1],reg2[2],reg2[3],reg2[4]設定為1
3. amlogic,clrmask 為暫存器bit位置零的設定;
-- 例如:<3 0x787 2 0xff000400>
其中 "2" 表示reg2,"3"表示reg3
"0x787" 用二進位制表示即為"0111 1000 0111" ,表示 reg3[0],reg3[1],reg3[2],reg3[7],reg3[8],reg3[9],reg3[10] 共7個bit位設定為0
"0xff000400 " 用二進位制表示即為"1111 1111 0000 0000 0000 0100 0000 0000 " ,表示 reg2[10],reg2[24],reg2[25],reg2[26],reg2[27],reg2[28],reg2[29],reg2[30],,reg2[31]
共9個bit位設定為0
dts 中dvb 裝置節點定義
例如:gxl_p230_2g.dts 配置檔案中定義如下
setmask clrmash 與pin_mux_regx 的關係
dvb-s 這一路如下:
查詢暫存器文件資訊例如「gxbblite-core_pin_mux.doc」,可以看到gpiodv_0~gpiodv_10 對映表,我們需要使用 tsin_*** 的功能,那麼對應的bit為要設定為1,其它的功能位要設定為0, 也即
amlogic,setmask = <2 0x1f>; // reg2_0 ~ reg2_4 總共五個bit 使能置為1
amlogic,clrmask = < 3 0x787 2 0xff000400 1 x100>; // reg1,reg2,reg3 對應的bit 置為0
dvb-c這一路如下:
查詢暫存器文件資訊例如「gxbblite-core_pin_mux.doc」,可以看到gpiodv_0~gpiodv_10 對映表,我們需要使用 tsin_*** 的功能,那麼對應的bit為要設定為1,其它的功能位要設定為0,也即
amlogic,setmask = < 3 0xf0000 >; // reg3_16~reg3_19 = 1
amlogic,clrmask = < 3 0xf0007000 4 0xf00000>;
// reg3[12~14, 28,31]=0,reg4[20 ~ 23] = 0
暫存器資訊查詢
查閱晶元暫存器資訊,計算暫存器的位址位址在查詢。
通過查詢「peripherals register specification」 文件知道
base_adr:0xc8834400
final_adr = base_adr + num *4
num 就是每個暫存器的索引號,例如:
pin_mux_reg0 0x2c
pin_mux_reg1 0x2d
pin_mux_reg2 0x2e
pin_mux_reg3 0x2f
pin_mux_reg4 0x30
pin_mux_reg5 0x31
pin_mux_reg6 0x32
pin_mux_reg7 0x33
pin_mux_reg8 0x34
pin_mux_reg9 0x35
pin_mux_reg10 0x36
pin_mux_reg11 0x37
pin_mux_reg12 0x38
那麼reg2 final_adr = 0xc8834400 + 0x2e << 2 = 0xc88344b8;
那麼rege final_adr = 0xc8834400 + 0x2f << 2 = 0xc88344bc;
系統啟動後,串列埠輸入指令,輸出的暫存器中的值,要轉換為二進位制對應和dts對比確認是否正確
echo 0xc88344b8 > /sys/kernel/debug/aml_reg/paddr;cat /sys/kernel/debug/aml_reg/paddr
echo 0xc88344bc > /sys/kernel/debug/aml_reg/paddr;cat /sys/kernel/debug/aml_reg/paddr
修改暫存器的值,例如修改reg3的 0~3 為1:
echo 0xc88344bc > /sys/kernel/debug/aml_reg/paddr;cat /sys/kernel/debug/aml_reg/paddr
echo 0xc88344bc 0x000f> /sys/kernel/debug/aml_reg/paddr;cat /sys/kernel/debug/aml_reg/paddr
windows平台下php開發平台的配置
最近想學php,配置了一下開發環境,把我的配置過程寫出來希望對各位有點小小幫助 用的是apache2.2.4 mysql 5.0,php5.2.3,作業系統windows xp sp2 1.安裝apache,mysql,php5.2.3 apache 用的是安裝包直接安裝 安裝路徑 c progra...
mac平台c 環境配置
部落格已搬家到 目標 乙個輕量級的 反應迅速 便於使用的c 環境 用途 學習c 刷acm試題 需求 具有控制台和最一般的除錯功能 先後嘗試過textmate codeblocks mac codeblocks parallel desktop win7 clion codelite 1.textma...
Windows平台下eclipse配置
安裝 go 環境 環境變數配置 對 go 的環境變數進行配置,有些安裝是預設配置,有些需要手動的配置環境變數。go 環境驗證,在控制台中輸入 go version,如顯示以下內容,則表示輸入成功。安裝環境 201606061100 platformruntime 安裝配置 mingw64 mingw...