亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
1234下一頁
最近訪問板塊 發(fā)新帖
查看: 15034 | 回復(fù): 34
打印 上一主題 下一主題

rtc驅(qū)動的編寫 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2008-08-22 12:52 |只看該作者 |倒序瀏覽
老師給布置一個任務(wù),叫我在ARM9上實現(xiàn)一個RTC驅(qū)動
內(nèi)核,板子都給我,映射搭載也成功了
問題來了,我不知道該從什么哪里下手開始做這個工作啊,感覺應(yīng)該先編寫驅(qū)動程序,可是這個程序應(yīng)該寫在哪個文件夾下面,又該如何加載進內(nèi)核等一系統(tǒng)問題都很模糊
驅(qū)動運行過趁的大致概念明白,但一具體到某個方面就發(fā)現(xiàn)下手很困難
麻煩高手指點下,自己開發(fā)一個驅(qū)動.需要做哪些方面的研究和該如何進行這個步驟,謝謝!

論壇徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
2 [報告]
發(fā)表于 2008-08-22 13:08 |只看該作者

回復(fù) #1 yyykkk1229 的帖子

先搞明白什么叫RTC,ARM中的RTC到底是做什么的,怎么工作的?
然后再參考一下開源的RTC代碼針對性的解決你的問題。

論壇徽章:
0
3 [報告]
發(fā)表于 2008-08-22 13:20 |只看該作者
RTC=real time clock 型號是RX-8025 toolchains看了一下,實現(xiàn)3點功能即可,讀時間,寫時間,切換12/24狀態(tài)
我現(xiàn)在是不知道從哪里開始做這些工作...有些暈...我在/drivers/char創(chuàng)建了.C文件,然后就不知道該怎么辦了...思路很混亂...

論壇徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
4 [報告]
發(fā)表于 2008-08-22 13:32 |只看該作者

回復(fù) #3 yyykkk1229 的帖子

你仔細想一想,實際上就跟你寫其他驅(qū)動是一樣的。該怎么寫還怎么寫,并沒有什么特別的。

論壇徽章:
0
5 [報告]
發(fā)表于 2008-08-22 14:26 |只看該作者
1.先寫關(guān)于ARM9芯片的寄存器讀寫的api接口,這樣統(tǒng)一并且方便其他驅(qū)動程序調(diào)用;
2.看型號這是顆片外的RTC芯片吧,這樣還需要串口總線的驅(qū)動,負責(zé)讀寫RTC芯片的數(shù)據(jù),一般都是I2C的居多,如果隨板的套件 里沒有的話(問問老師,既然讓寫RTC的驅(qū)動,I2C部分不是重點應(yīng)該被忽略掉,要是也沒有就T_T吧),就需要自己實現(xiàn)了,要么用I/O模擬,要么使用ARM上的I2C硬件寄存器接口,也是需要整出一個讀寫RTC寄存器的api接口;
3.最后是RTC的驅(qū)動部分,結(jié)合你的需求(讀,寫,設(shè)置時間)和驅(qū)動程序的框架,定義一個file_operations的結(jié)構(gòu)。讀和寫的部分可以單獨使用一個接口,也可以放在ioctl里使用命令完成讀寫的功能;設(shè)置時間的顯示12/24制就需要使用ioctl了,轉(zhuǎn)換12/24的狀態(tài),這部分一般在RTC的datasheet中也介紹,沒有的話就只好人工手動實現(xiàn)轉(zhuǎn)換了;
static struct file_operations rtc_fops = {
        owner:          THIS_MODULE,
        read:           rtc_read,
        write:          rtc_write,
        ioctl:          rtc_ioctl,
        open:           rtc_open,
        release:        rtc_release,
};

4.檢驗。編譯后,使用insmod加載,然后用hwclock -r 命令讀取硬件RTC的時間看是否成功;成功的話,再用date和hwclock -s 和 -w選項(具體其他選項的使用看hwclock --help)將系統(tǒng)時間設(shè)置到RTC,然后再測試將RTC時間設(shè)置到系統(tǒng),看是否可以成功轉(zhuǎn)換;
5.交作業(yè)。
供參考.

論壇徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
6 [報告]
發(fā)表于 2008-08-22 14:39 |只看該作者

回復(fù) #5 藍豆 的帖子

還是藍豆兄回答比較專業(yè)

論壇徽章:
0
7 [報告]
發(fā)表于 2008-08-22 15:02 |只看該作者

回復(fù) #5 藍豆 的帖子

非常感謝藍豆先生,大致的過程我也想的差不多了,您說的第2步老師已經(jīng)將I2C總線的部分忽略掉了,主要是對功能性的實踐操作
您說的第一步我還是不理解,我并不是用串口跟板子連接的,我用網(wǎng)絡(luò)IP對板子操作,一些腳本老師已經(jīng)幫忙寫好了,啟動設(shè)備時自動會產(chǎn)生連接
還有一個問題,我所編寫的驅(qū)動程序需要編譯到內(nèi)核中,這個過程是如何實現(xiàn)的,是要對相應(yīng)的Makefile進行修改嗎,還有就是設(shè)備的問題,以前寫的一個程序是需要通過'test'這個設(shè)備進行加載運行的,而我現(xiàn)在無法確定這個板子設(shè)備...這個地方的概念我還是有些模糊,不知道我敘述的準(zhǔn)確不,我覺得驅(qū)動是通過設(shè)備運行的,但我現(xiàn)在不知道如何確定板子(設(shè)備)的位置...該如何判斷?
謝謝!!!

論壇徽章:
0
8 [報告]
發(fā)表于 2008-08-22 16:08 |只看該作者
原帖由 yyykkk1229 于 2008-8-22 15:02 發(fā)表
非常感謝藍豆先生,大致的過程我也想的差不多了,您說的第2步老師已經(jīng)將I2C總線的部分忽略掉了,主要是對功能性的實踐操作
您說的第一步我還是不理解,我并不是用串口跟板子連接的,我用網(wǎng)絡(luò)IP對板子操作,一些腳本老 ...


1.上面說的第1步的意思是:在驅(qū)動程序里免不了要讀寫ARM的類似GPIO的寄存器,如GPIO的置位寄存器,清零寄存器,上拉,輸入輸出這些等,使用一組統(tǒng)一的接口來操作
這些寄存器,這樣不僅RTC驅(qū)動方便使用,其他的驅(qū)動程序也可以使用,如果用的是2410可能有這些接口:
        s3c2410_gpio_getpin();
        s3c2410_gpio_cfgpin(S3C2410_GPG2,S3C2410_GPG2_INP);
        s3c2410_gpio_pullup(S3C2410_GPG2,0);
        s3c2410_gpio_cfgpin(S3C2410_GPG13,S3C2410_GPG13_INP);
        s3c2410_gpio_pullup(S3C2410_GPG13,0);
第1步說的api指的是這樣的設(shè)置寄存器的接口,如果是新移植的其他ARM芯片的話就需要自己實現(xiàn)類似這樣的接口了,當(dāng)然,這也不是必須的;)
ps:這一步和使用串口或網(wǎng)口連接板子沒有直接的關(guān)系;)

2.驅(qū)動調(diào)試的時候如沒有特別的要求一般先用動態(tài)加載的方式,如果需要編譯到內(nèi)核里,調(diào)試完成后添加就可以了;
  如果一開始就放在driver/char/目錄下,每次修改后都需要重新編譯驅(qū)動,連帶內(nèi)核也編譯了,時間會很長,所以動態(tài)加載調(diào)試還是很方便的;

3.RTC編譯完,加載到內(nèi)核后,需要有一個用戶層的應(yīng)用程序來調(diào)用這個驅(qū)動進行測試,也就是你說的“test”,這個test可以自己寫,在test里open驅(qū)動,然后read,write它的值。相對于RTC的驅(qū)動來說,還有一個命令行下的命令,hwclock,也可以當(dāng)"test"來用,并且最終RTC驅(qū)動完成時,修改系統(tǒng)時間和設(shè)置RTC時間也一般也是用這個命令(結(jié)合date命令)完成的。

4.最后調(diào)試完后,將它編譯進內(nèi)核:
        a) 寫好的驅(qū)動程序rtc_driver.c放在driver/char/目錄下;
        b) 修改Makefile,加入一行obj-$(CONFIG_RTC_XXXX) += rtc_driver.o 是說:如果CONFIG_RTC_XXXX配置為Y 則編繹rtc_driver.c生成文件rtc_driver.o
        c) 修改Kconfig 加入菜單項
                        menu "Character devices"

                                config RTC_XXXX
                                <tab>   bool "rtcrtcrtcrtcrtc"
        修改Makefile和Kconfig參考Makefile中其他驅(qū)動的格式,copy就行了.
基本上是這樣了,有問題的話還得具體再調(diào)試;

ps2:直接叫俺名字就行了;)

論壇徽章:
0
9 [報告]
發(fā)表于 2008-08-22 16:10 |只看該作者
原帖由 dreamice 于 2008-8-22 14:39 發(fā)表
還是藍豆兄回答比較專業(yè)

向dreamice兄學(xué)習(xí)

論壇徽章:
0
10 [報告]
發(fā)表于 2008-08-22 16:17 |只看該作者
感謝感謝感謝,全都明白了,實踐去了...有問題在向樓上的2位高手請教啊...
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP