<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          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.ex-cimer.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)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();