新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > ARM-Linux s3c2440 之UART分析(四)

        ARM-Linux s3c2440 之UART分析(四)

        作者: 時間:2016-11-19 來源:網(wǎng)絡(luò) 收藏
        注冊完成之后,設(shè)備與驅(qū)動是如何連接的呢? 原來在driver_register()注冊中已經(jīng)進行設(shè)備連接了。

        串口是一種platform設(shè)備,在體系框架setup_arch()中完成設(shè)備注冊,而且設(shè)備的注冊先于驅(qū)動注冊,最終串口設(shè)備與驅(qū)動的連接在driver_register() -->bus_add_driver()中完成。

        本文引用地址:http://www.104case.com/article/201611/318134.htm


        1. intbus_add_driver(structdevice_driver*drv)
        2. {
        3. intret;
        4. structdevice_driver*other;
        5. if(drv->bus->p->drivers_autoprobe){//platfrom_but_type==1自動探測platfrom設(shè)備
        6. error=driver_attach(drv);
        7. if(error)
        8. gotoout_unregister;
        9. }
        10. ….
        11. }

        最后driver_attach()-->bus_for_each_dev(),完成串口設(shè)備與驅(qū)動的連接

        1. intbus_for_each_dev(structbus_type*bus,structdevice*start,
        2. void*data,int(*fn)(structdevice*,void*))
        3. {
        4. structklist_iteri;
        5. structdevice*dev;
        6. interror=0;
        7. if(!bus)
        8. return-EINVAL;
        9. klist_iter_init_node(&bus->p->klist_devices,&i,
        10. (start?&start->p->knode_bus:NULL));
        11. while((dev=next_device(&i))&&!error)//遍歷所有對應(yīng)上的設(shè)備
        12. error=fn(dev,data);
        13. klist_iter_exit(&i);
        14. returnerror;
        15. }




        關(guān)鍵詞: ARMLinuxs3c2440UAR

        評論


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

        關(guān)閉
        主站蜘蛛池模板: 浪卡子县| 西藏| 综艺| 温州市| 安丘市| 正定县| 宁阳县| 白银市| 竹山县| 祥云县| 娱乐| 佛教| 滁州市| 商丘市| 扶沟县| 金阳县| 广元市| 葵青区| 阿勒泰市| 法库县| 额尔古纳市| 池州市| 辽源市| 古蔺县| 邹城市| 祁门县| 苗栗市| 岳普湖县| 曲松县| 尤溪县| 留坝县| 深圳市| 肥乡县| 武威市| 嵊州市| 灌阳县| 阿坝县| 东乡| 临漳县| 黄骅市| 泉州市|