在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<s id="cmphk"><label id="cmphk"></label></s>
    <span id="cmphk"><var id="cmphk"></var></span>
    <dfn id="cmphk"><var id="cmphk"></var></dfn>
    <menu id="cmphk"><thead id="cmphk"></thead></menu>

    <address id="cmphk"></address>

      <dfn id="cmphk"></dfn>
      
      
      <span id="cmphk"></span>

      <object id="cmphk"><tt id="cmphk"></tt></object>
      1. 新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 手把手教你學(xué)linux驅(qū)動(dòng)開(kāi)發(fā) OK6410系列之01---模塊編程

        手把手教你學(xué)linux驅(qū)動(dòng)開(kāi)發(fā) OK6410系列之01---模塊編程

        作者: 時(shí)間:2016-11-28 來(lái)源:網(wǎng)絡(luò) 收藏
        一、實(shí)驗(yàn)環(huán)境

        開(kāi)發(fā)機(jī)環(huán)境

        本文引用地址:http://www.biyoush.com/article/201611/322698.htm

        操作系統(tǒng):ubuntu 9.10

        交叉編譯環(huán)境:arm-linux-gcc4.2.2 ,安裝位置 /usr/local/arm/4.3.2/

        6410板子內(nèi)核源碼路徑:/work/linux-2.6.36.2-v1.05/

        目標(biāo)板環(huán)境:OK6410-Alinux2.6.36

        二、實(shí)驗(yàn)原理

        模塊時(shí)在內(nèi)核空間運(yùn)行的,模塊中不能使用glibc庫(kù)中的函數(shù)。

        模塊可以動(dòng)態(tài)的裝載到內(nèi)核中。

        三、實(shí)驗(yàn)步驟

        注意:最好使用root用戶進(jìn)行以下實(shí)驗(yàn),否則需要利用sudo

        1、驗(yàn)證交叉編譯工具配置正確。安裝交叉編譯器的步驟見(jiàn)《OK6410-A開(kāi)發(fā)板LINUX2.6.36用戶手冊(cè).pdf》5-5小節(jié)。

        #arm-linux-gcc-v

        輸入命令后,如果顯示以上信息,則表示開(kāi)發(fā)環(huán)境正確。否則需要將arm-linux-gcc所在的路徑加入到PATH中。方法如下:

        編輯/etc/profile文件添加把編譯器路徑到環(huán)境變量PATH中

        # vi /etc/profile

        PATH=/usr/local/arm/4.3.2/bin:$PATH
        1. exportPATH

        輸入以下命令使配置生效。
        #source /etc/profile

        2、編寫(xiě)模塊源文件

        #vitest.c

        1. #include
        2. #include
        3. #include
        4. staticint__inithello_init(void)
        5. {
        6. printk("Helloworldn");
        7. return0;
        8. }
        9. staticvoid__exithello_exit(void)
        10. {
        11. printk("Goodbyeworldn");
        12. }
        13. module_init(hello_init);
        14. module_exit(hello_exit);
        15. MODULE_LICENSE("DualBSD/GPL");

        代碼解釋:

        static int __init hello_init(void)

        static void __exit hello_exit(void)

        – static聲明,因?yàn)檫@種函數(shù)在特定文件之外沒(méi)有其它意義
        – __init標(biāo)記

        表明該函數(shù)只在初始化期間使用。

        模塊裝載后,將該函數(shù)占用的內(nèi)存空間釋放

        – __exit標(biāo)記

        該代碼僅用于模塊卸載。

        printk 內(nèi)核函數(shù),打印信息,類似于用戶空間glibc庫(kù)中的printf,注意在內(nèi)核中不能使用glibc庫(kù)中的函數(shù)。

        module_init(hello_init);

        module_exit(hello_exit);

        –宏:module_init/module_exit
        –聲明模塊初始化及清除函數(shù)所在的位置
        –裝載和卸載模塊時(shí),內(nèi)核可以自動(dòng)找到相應(yīng)的函數(shù)

        3、編寫(xiě)Makefile文件

        #viMakefile

        1. obj-m:=test.o
        2. KDIR:=/work/linux-2.6.36.2-v1.05/
        3. all:
        4. make-C$(KDIR)M=$(shellpwd)modules
        5. clean:
        6. make-C$(KDIR)M=$(shellpwd)clean

        注意:

        • 1、2、4行頂行寫(xiě),3、5行使用tab縮進(jìn)。
        • KDIR為6410開(kāi)發(fā)板的內(nèi)核源碼路徑
        • test.o,因?yàn)槲覀兊脑次募閠est.c,所以這里要寫(xiě)test.o
        • Makefile文件與test.c文件放在同一個(gè)目錄下,比如/work/lab/test01/
          上一頁(yè) 1 2 下一頁(yè)

        評(píng)論


        技術(shù)專區(qū)

        關(guān)閉
        ×

        “芯”朋友见面大会
        珠海|11.14|泰克“芯”朋友见面大会珠海站|泰克带您从测试角度看半导体的整条产业链,快来报名抢位吧>>