在天嵌的tq210開發板上按照天嵌提供的說明書把uboot,核心,檔案系統都做好後,今天嘗試寫乙個led的驅動,
1、看電路圖,找到led連線哪個引腳。由圖可見,開發板上的兩個led分別連線在gpc0_3和gpc0_4的兩個引腳上。
2、開啟s5pv210的晶元手冊,搜尋一下gpc0con[4]在2-48頁找到gpc0con的位址為 :address = 0xe020_0060,下面還有gpc0dat的位址為: address = 0xe020_0064
有圖可以看出s5pv210不同於2440,s5pv210每個引腳由4位來配置,我們要把gpc0con[4]、gpc0con[3]這兩個引腳配置成輸出(output)。
3、接下來就可以寫驅動程式了:
*******************led_drv.c***********************
include
#include
#include
#include
#include
#include
#include
#include
#include
#include
//device_create(),class_create()的標頭檔案
#include
//定義出這兩暫存器
volatile unsigned long *gpc0con = null;
volatile unsigned long *gpc0dat = null;
//volatile struct unsigned long *gpc1con = null;
static struct class *leddrv_class;
int major;
static int led_drv_open(struct inode *inode, struct file *file)
static ssize_t led_drv_write(struct file *file, const char __user *buf, size_t count, loff_t * ppos)
else
//printk("liu guo feng write led_drv\n");
return 0;
}//定義了這樣的乙個結構
static struct file_operations led_drv_fops = ;
//入口函式
int led_drv_init(void)
void led_drv_exit(void)
module_init(led_drv_init);
module_exit(led_drv_exit);
module_license("gpl");
******************makefile*********************************
kern_dir = /opt/embedsky/tq210/kernel_2.6.35.7_tq210_for_linux_v1.1
all:
make -c $(kern_dir) m=`pwd` modules
clean:
make -c $(kern_dir) m=`pwd` modules clean
rm -rf modules.order
obj-m += led_drv.o
上面的kern_dir = /opt/embedsky/tq210/kernel_2.6.35.7_tq210_for_linux_v1.1是核心的路徑
把上面兩個檔案複製到linux下,執行make命令就可以生成led_drv.ko的驅動檔案
下面還要寫乙個測試檔案:
***********************leddrvtest.c*********************************
#include
#include
#include
#include
/*leddrvtest on
leddrvtest off
*/int main(int argc,char **argv)
if( strcmp(argv[1],"on") == 0)
else
write(fd, &val, 4);
return 0;
}把leddrvtest.c複製到linux下。
執行arm-linux-gcc -o leddrvtest leddrvtest.c 就可以生成leddrvtest的測試檔案
把led_drv.ko和leddrvtest複製到開發板的根檔案系統下,
我的開發板已經使用nfs掛載根檔案系統。連線好後給開發板上電。
在開發板上執行insmod led_drv.ko新增驅動。
執行./leddrvtest on 燈開啟了。
執行./leddrvtest off 燈關閉了。
以上僅為小弟的初學時的筆記的總結,可能會有錯誤和不足。
fs4412開發板led驅動
閱讀實驗手冊第16章 led 驅動開發實驗 p275下 fs4412 led.c,fs4412 led.h,test.c 檔案 1.系統呼叫函式 test.c的main函式中,while 1 函式。函式如下 函式分析 1 函式引數中的file指標對應於應用程式傳遞的檔案描述符fd,這和傳遞open方...
Tiny210開發板wm8960驅動
如果修改了external tinyalsa目錄下的內容,可以通過如下兩種方法去編譯tinyalsa相關的工具。1 m mm mmm external tinyalsa m mm mmm具體的實現在android 4.0.3 r1 build envsetup.sh,所以只要source一遍這個檔案...
TQ2440開發板儲存器
tx2440a與tq2440a開發板使用核心板完全相同 有過51單片基礎的同學應該都會看懂下圖,先看下圖,對實驗板儲存器分布有乙個整體印象 s3c2440儲存器概述 1 s3c2440a的儲存器管理器提供訪問外部儲存器的所有控制訊號 2 27位位址訊號 32位資料訊號 8個片選訊號 以及讀 寫控制訊...