日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DM3730 x-loader 分析 五

發布時間:2024/1/1 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DM3730 x-loader 分析 五 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我們來做一個實驗,實驗目的是在x-loader中點亮LED燈,因此先分析x-loader\include\asm\arch-omap3\gpio.h,在實驗中會用到這里面的函數。

下面是gpio.h源碼:



43-50行/*定義gpio_bank 類型的變量數組gpio_bank_34xx[6],宏替換后可寫成如下

static struct gpio_bank gpio_bank_34xx[6] = {

? ? ? ? { (void *)0x48310000, 4 }, ? /*(void *)0x48310000 把0x48310000強制轉換成地址,這樣C語言才能識別*/
{ (void *)0x49050000, 4 },
{ (void *)0x49052000, 4 },
{ (void *)0x49054000, 4 },
{ (void *)0x49056000, 4 },
? ? ? ? { (void *)0x49058000, 4 },};

struct gpio_bank { ?
void *base;
int method;?}; /*gpio_bank?結構體定義*/

在sprugn4r.pdf P3500找到地址對應含義,DM3730中gpio0~gpio192分成6個組。


52行:/*定義gpio_bank類型指針gpio_bank,并指向gpio_bank_34xx[6]?數組的第一個元素*/

54行/*定義get_gpio_bank(int gpio)函數,它的返回值是gpio_bank類型的指針(地址),也就是指向 ?gpio_bank_34xx[6]數組里面的某個元素地址*/

56行/*gpio右移5位,實際是gpio除以32,得到gpio組值,返回組地址*/

89-62行/*?get_gpio_index(int gpio)行數目的得到gpio組內編號,例如gpio171=10101011 & 11111=0d1011,整好等于11,對應ds P3489,gpio171 = GPIO6【11】*/

64-81行:/*check_gpio(int gpio)函數,判斷gpio是否在0-192之間,是返回0,不是報錯返回-1。*/


84-89行:void *reg = bank->base; ?/*定義指針reg,reg=(*bank).base*/
? ? ? ??u32 l; ?/*unsigned int I*/
? ? ? ? ? ? ? ? switch (bank->method) ?/* switch (4) */
? ? ? ??case METHOD_GPIO_24XX: ?/* case 4: */

? ? ? ? ? ? ? ? ? ? ? ? ? reg += OMAP24XX_GPIO_OE;/* reg = reg + 0x0034 ,0x0034正好是GPIO_OE寄存器的偏移地址, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?運行后reg指向gpio1-6某個組的GPIO_OE寄存器地址*/

94-100行:/*讀出gpio1-6某個組的GPIO_OE寄存器里面的值賦給I,如果is_input=1,I的某位值制1,否則I的某位清零*/

以上分析_set_gpio_direction(struct gpio_bank *bank, int gpio, int is_input)這個函數,通過傳遞

gpio組地址,gpio組內編號,設置輸入輸出1或者0,配置GPIO_OE寄存器,GPIO_OE寄存器含義如下:

102-110行:/*omap_set_gpio_direction(int gpio, int is_input)這個函數是實際要用到的配置gpio輸入輸出函數*/

108行:/*bank指向gpio_bank_34xx[6]數組里面的某個元素地址*/

109行:_set_gpio_direction(bank, get_gpio_index(gpio), is_input)/*函數參數傳遞*/

以上分析完如何設置相應gpio輸入輸出GPIO_OE寄存器

112-142行:同樣操作GPIO_SETDATAOUT和GPIO_CLEARDATAOUT寄存器,根據輸入的gpio,得到gpio組編號以及組內編號,對應寄存
器里相應位置寫入0或者1.




143-161行/*操作GPIO_DATAIN寄存器,設置輸入并讀取相應gpio的值*/

159-160行:/*GPIO_DATAIN寄存器中相應gpio位置的值保留*/


下面我們把代碼添加到omap3stalker.c文件中,323行和325-332行


運行信息如下:打印出 my gpio out end




總結

以上是生活随笔為你收集整理的DM3730 x-loader 分析 五的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。