imx系列是通過修改裝置樹的iomux來配置gpio復用。 ls系列gpio復用是通過 rcw(復位配置字)來配置的, ls1046的 rcw是512 bits。本節主要參考 ls1046arm 4.4.6.1 rcw field definitions 章節 和 3.4.1 uart, gpio, ftm, and lpuart signal multiplexing 章節。來分析一下uart的復用。
通過下圖得知uart_base[366:368]的配置為7
啟動開發板,可以在串列埠log 看到 rcw的值如下。 上面我們已知rcw共512位元組,所以每個字母位是4個bit,每個word是32bit. 每一行是4個word,共128bit. 4行總共 512bit(從0到511位)。而 uart_base的位元組是 366到368. 我們可以定位到第三行第4個word, 中的 數字 38(從364 位到371 位)。 數字38 的二進位制是00111000 分別對應364位到 371位。所以 uart_base[366:368]的二進位制是 111 也就是7 . 剛好對應上訴rcw檔案中的配置。
檢視 ls1046arm 4.4.6.1 rcw field definitions 章節 uart_base描述如下。如果uart_base=7的時候,pin復用為4個uart
關於uart_base復用哪些管腳。可以檢視 3.4.1 uart, gpio, ftm, and lpuart signal multiplexing 章節
最後通過原理圖檢視uart的pin腳, 可以看出uart_base為7 的時候,其實是復用為uart1,uart2,uart3,uart4。下圖示住的訊號的不對的。
6.總結 ,復用機制好像不夠靈活。gpio可能不能任意配置。值得注意的是部分管腳是通過scfg_rcwpmuxcr0 這個暫存器來配置。
linux中ls原始碼簡單分析
經過簡單分析ls的原始碼,可以大致總結出ls原始碼的思路和結構如下 其他函式未仔細分析,還有防止環路的措施沒有寫出 int main int argc,char argv read directory name,and list the files in it.if realname is nonz...
pppd 原始碼修改1
1.pppd撥號成功後,會將解析到的dns伺服器ip位址,寫入 etc ppp resolv.conf 這樣的話,gethostbyname r並不會識別,並且,如果有啟動兩路pppd的話,後面一路會將resolv.conf檔案重寫。因此,這塊 需要修改。在pppd ipcp.c檔案中,修改crea...
如何修改iview原始碼
前情提要 做的乙個需求是想要滑鼠進入彈框便不消失,移出滑鼠彈框消失 即iview的 notice 仔細檢視了iview notice模組發現並不支援此功能 因此 只能自己嘗試修改iview源 以下修改流程以修改notice為例 首先將iview的官方原始碼庫clone下來 cd iview git ...