2440GPIO口在linux中的定義

2021-07-03 13:12:25 字數 869 閱讀 4956

2440gpio口在linux中的定義  

在移植mini2440的驅動到2.6.31的時候,編譯提示s3c2410_gpb5、s3c2410_gpb5_output等類似的定義缺失。遂在核心中相關的部分arch/arm/mach-2410/include/mach中的標頭檔案尋覓了一番,果然沒有這些定義。而在2.6.29中是有這些定義的。仔細看了一下,發現原來是新版本中採用了新的方式實現這兩類定義。

1、引用埠的定義,舊版本直接通過s3c2410_gpmn來定義埠gpiom的第n個引腳,比如goiob的第5個引腳引用為s3c2410_gpb5。在新版本中改為採用s3c2410_gpm(n)的方式,比如gpiob的第5個引腳就改為s3c2410_gpb(5)。這裡的s3c2410_gpm(n)函式在arch/arm/march-2410/include/mach/gpio-nrs.h中定義,共有s3c2410_gpa()~s3c2410_gph()八組。

2、埠功能配置,比如埠的復用功能、輸出或輸入。在舊版本中採用的是"s3c2410_gpb_功能"的方式定義,比如s3c2410_gpb5_outp,直接把功能加在後面。而新版本中採用了乙個巨集函式s3c2410_gpio_cfgpin(埠引用, 功能),比如s3c2410_gpio_cfgpin(s3c2410_gpb(5),s3c2410_gpio_output)。關於埠功能的定義可以在arch/arm/march-2410/include/mach/regs-gpio.h中找到,復用功能的定義沒有變化,增加了輸入輸出的定義s3c2410_gpio_input、s3c2410_gpio_output。以前的直接用巨集定義配置,現在變成了需要用函式s3c2410_gpio_cfgpin來實現。這個函式的原型參見arch/arm/march-2410/include/mach/gpio-fns.h。

linux核心 GPIO口程式設計入門

1.api介面 請求gpio口 int gpio request unsigned gpio,const char label 釋放gpio口 void gpio free unsigned gpio 判斷gpio索引號是否有效 gpio口是否存在 int gpio is valid int num...

Linux核心驅動在Tx2440上的移植詳解

linux核心已經完美的支援 uda1341 音訊晶元的驅動,我們只要在arch arm mach s3c2440 mach smdk2440.c檔案中註冊 uda1341 平台裝置的控制埠就可以了。1 修改arch arm mach s3c2440 mach smdk2440.c,在platfor...

TQ2440在linux下的LED驅動程式

學習驅動程式不久,看ldd3大概有4章吧,最開始寫了個hello world驅動,後來是個面向記憶體的字元裝置驅動,後者讓我清楚了量子和量子集的使用,但是沒有個真正的,肉眼看得見的裝置真是有點不爽,查了些資料,參考了下其他書,打算自己寫個led的linux驅動,學了字元裝置驅動的話寫這個其實挺簡單的...