qq群:852283276
b站:主頁
rapidio規範《rapidio_rev_2.2_specification》直接看rapidio的初始化,一些底層的比如物理層鏈路層之類的不需要關心,用到了再去看,畢竟都是基於晶元或者ip來開發,從頂層了解這個過程。書籍《rapidio the embedded system interconnect》
系列部落格srio學習
系列部落格rapidio(還介紹了tsi721)
xilinx zynq zynqmp rapidio srio
idt cps1848 srio交換晶元使用
host cpu獲取引導**,啟動,如果有兩個host,則兩者是同時啟動的。
開始執行系統探測和列舉演算法。
列舉所有器件並將相關器件資訊記錄到器件資料庫,建立host和所有endpoint之間的路由。
計算並配置host和所有endpoint之間的最優路徑。
用最優路徑資訊配置switch。
更新路由表。
對映位址空間。
上面提到的最優路徑,就是所謂的列舉演算法的目的,可以是最短路徑同時包含一些使用者約束,。
系統初始化之後,所有器件都會擁有乙個id,在系統初始化之前,按照下面設定。rapidio系統應該只有乙個引導**器件。
列舉過程中,將給每個endpoint分配唯一的器件id,為了增強容錯性,rapidio系統可以有兩個host,經過競爭,最終只有乙個host來完成列舉,如果主機列舉過程失敗並發生超時事件,則另一主機重新列舉。列舉演算法根據器件id大小設定優先順序,id大的host競爭獲勝,在列舉同乙個endpoint時會發生競爭,失敗host主動退出列舉,列舉結束之後,其他主機可以通過被動發現(passively discovery)收集網路中的路由拓撲資訊。所以host的id可以設定為0x00(0x0000)和0x01(0x0001),其中0x01的優先順序更高。host應當將自己的主機使能位置1,switch沒有這個位,當host釋放對失敗主機的鎖定時,列舉完成,失敗host自己檢測是否被鎖定和釋放鎖定。在開放式(open)8位器件id系統中,如果host列舉失敗,那麼失敗主機重新列舉時,必須等待15秒。在閉合式(closed)或者16位器件id系統中,超時等待時間需要設計。
以xilinx zynq說明,
使能host模式。
配置id。
配置cps1848路由,使能埠收發(手冊預設是開啟的)。
鎖定host。
搜尋系統拓撲。
讀取lock id csr,如果暫存器值等於host id,則判定已經鎖定,退出,否則進入2。
寫入host id,再讀取host id,如果暫存器值大於host id則進入退避狀態,如果小於host id,則已經被鎖定(但和另乙個host衝突),進入等待退避狀態,等待另乙個host退避。如果等於host id,則鎖定成功。
這裡只考慮switch是cps1848的情況,tsi578原理是一致。
如果這個cps1848是直接與host zynq相連的switch。
搜尋cps1848,設定0x13c暫存器port general control csr的discv位,表示這個switch已經被發現,設定component tag csr,它是乙個裝置的身份標識。
讀0x14暫存器switch port information car得到port數量,就是18。
迴圈搜尋每個port,如果是host port則使能埠收發,如果是其他port,讀取鏈路狀態,如果正常,用預設id 0xff配置路由,使能埠收發,然後嘗試鎖定該埠裝置(endpoint或switch),鎖定過程和鎖定host是一樣的。
如果鎖定成功,讀取processing elements features car暫存器,等到function,判斷裝置型別,決定下一步拓撲方式。如果是endpoint型別,關閉master enable,置位discovered,分配id號,配置該port的路由表。如果是switch型別,則遞迴呼叫switch列舉過程。
如果是已經鎖定狀態(存在環路),直接更新拓撲,不做任何配置。
如果這個cps1848不和host直接相連。
設定discv位,得到與上級switch相連的埠號,設定host的路由,設定預設路由為到host的埠。
同上。同上。
現在拓撲關係已經搜尋出來了。下面就是配置路由,因為上述搜尋過程的路由配置不一定是最優配置,也不滿足使用者的需求。 所以現在需要按照設計需求,生成路由表然後寫到各個switch。
這裡實現linux使用者態的驅動,資料結構定義,
struct srioendpoint
;#define srio_sw_max_port 18
//get from cps1848
struct srioswitch
;#define srio_sys_max_ep_num 64
#define srio_sys_max_sw_num 4
struct sriosystem
;
Jupyter qtconsole初始化配置
2 退出qtconsole時去除確定退出提醒,修改檔案jupyter qtconsole config.py第47行 set to display confirmation dialog on exit.you can always use exit or quit to force a direc...
類初始化和例項初始化過程
類初始化過程 乙個類要建立例項需要先載入並初始化該類 main方法所在的類需要先載入和初始化 乙個子類要初始化需要先初始化父類 乙個類初始化就是執行 方法 由靜態類變數賦值 和靜態 塊組成 靜態類變數賦值 和靜態 塊從上往下執行 方法只執行一次 例項初始化過程 例項初始化就是執行 方法 方法可能過載...
ubuntu系統初始化網路及mysql配置
安裝系統時需要安裝open ssh服務軟體,否則無法遠端連線 1 修改root密碼 sudo passwd 輸入密碼即可 切換到root使用者,需要輸入剛才的root密碼 2 配置網路 3 重啟網絡卡服務 此時就可以通過ssh客戶端連線了 etc init.d networking restart ...