1.看原理圖中知芯片上66引腳控制一個LEDui
2.在Datasheet中找出GPIO pin3d
3.在ProgrammingGuid System Contrl中找到GPIO控制寄存器地址:blog
4.控制GPIO的寄存器偏移地址是,起始地址是,但這個起始地址是物理地址,所以還要肯定相應的虛擬地址(這個能夠根據mips手冊或者內核源代碼去查到),本屌絲在內核源代碼中查找到虛擬地址爲:0xb0000000;(注下圖爲內核源代碼rt_mmap.h中定義)ip
5.從分析get
中知道此寄存器地址的每一位控制着不一樣的pin腳的GPIO模式,那麼本屌絲又去查看datasheet知:GPIO#68(即68引腳)對應GPIO控制寄存器的「RGMII2_GPIO_MODE」,以下圖:it
,所以查看」21. GPIOMODE: GPIO Purpose Select (offset: 0x0060)「知道該寄存器地址的第10位控制着」RGMII2_GPIO_MODE」,以下圖:io
從那麼有以上1~5這五可以肯定: 怎樣設置pin:68 GPIO模式.原理
6.那麼怎麼把數據輸送到pin68引腳呢?查看「ProgrammingGuid 中的PROGRAMMABLE I/O」 :map
知pin68對應的寄存器基地址Register Descriptions (base: 0x1000_0600)對應虛擬地址爲 #define RALINK_PIO_BASE 0xB0000600,偏移地址0x70im
查看此寄存器地址對應的各位知:共32位每一位分別對應40~71引腳,那麼68引腳對應(68-40)即28
8.經過以上1~7卻定了:(1)怎麼設置pin68引腳爲GPIO MODE; (2)控制pin68的數據輸入輸出方向;(3)從哪一個地址位輸入數據到pin68