女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

從軟件角度分析linux內(nèi)核USB子系統(tǒng)的熱插拔過(guò)程

嵌入式小生 ? 來(lái)源:嵌入式小生 ? 2023-01-15 09:28 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本文從軟件角度分析linux內(nèi)核USB子系統(tǒng)的熱插拔過(guò)程,以實(shí)際分析思路和過(guò)程行文,基于linux內(nèi)核版本:4.19.4,記錄分析USB子系統(tǒng)時(shí)的所得。

導(dǎo)讀

一、USB核心初始化

二、USB設(shè)備的枚舉過(guò)程

(2-1)USB鼠標(biāo)插入后日志分析

(2-2)USB鼠標(biāo)移除/拔下后日志分析

三、 USB host控制器的初始化

四、USB設(shè)備插入后的硬件過(guò)程

五、USB設(shè)備插入后的軟件過(guò)程

一、USB核心初始化

如果linux內(nèi)核開(kāi)啟了對(duì)USB的支持,在內(nèi)核啟動(dòng)過(guò)程中,首先會(huì)對(duì)USB核心進(jìn)行初始化,該過(guò)程則會(huì)打印出如下日志信息:

(1)[ 0.476223] usbcore: registered new interface driver usbfs

(2)[ 0.476286] usbcore: registered new interface driver hub

(3)[ 0.476337] usbcore: registered new device driver usb

上述(1)、(2)兩條信息是調(diào)用usb_register_driver()函數(shù)時(shí)打印出的,從而可以知道在linux內(nèi)核啟動(dòng)過(guò)程中,usb核心會(huì)注冊(cè)u(píng)sbfs、hub接口驅(qū)動(dòng)程序。從內(nèi)核源碼角度,以上hub接口驅(qū)動(dòng)程序的注冊(cè)過(guò)程是在usb_init()中調(diào)用usb_hub_init()完成的,除此之外還創(chuàng)建了hub_wq工作隊(duì)列:

上述第(3)條信息是在usb_init()中調(diào)用:

usb_register_device_driver(&usb_generic_driver,THIS_MODULE);

當(dāng)在成功注冊(cè)u(píng)sb設(shè)備驅(qū)動(dòng)后打印出的日志信息。

二、USB設(shè)備的枚舉過(guò)程

本小節(jié)以低速USB鼠標(biāo)設(shè)備插入為例,查看linux內(nèi)核對(duì)USB設(shè)備的枚舉過(guò)程。

(2-1)USB鼠標(biāo)插入后日志分析

我們都知道USB支持熱插拔,在linux系統(tǒng)中,這個(gè)熱插拔是怎樣的一個(gè)過(guò)程,本小節(jié)將描述這個(gè)話(huà)題。

當(dāng)USB設(shè)備接入系統(tǒng)時(shí)(熱插拔探測(cè)過(guò)程),文本以插入一個(gè)USB鼠標(biāo)為例,則會(huì)打印出類(lèi)似下述的信息:

[ 3122.476846] usb 4-1: new low-speed USB device number 5 using ohci-platform

[ 3122.702408] usb 4-1: New USB device found, idVendor=17ef, idProduct=6019, bcdDevice= 1.00

[ 3122.702503] usb 4-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0

[ 3122.702537] usb 4-1: Product: Lenovo Optical USB Mouse

[ 3122.702568] usb 4-1: Manufacturer: PixArt

[ 3122.713317] input: PixArt Lenovo Optical USB Mouse as /devices/platform/fd8c0000.usb/usb4/4-1/4-1:1.0/00036019.0004/input/input8

[ 3122.771015] hid-generic 00036019.0004: input,hidraw0: USB HID v1.11 Mouse [PixArt Lenovo Optical USB Mouse] on usb-fd8c0000.usb-1/input0

[1058.921] event5 - PixArt Lenovo Optical USB Mouse: is tagged by udev as: Mouse

[1058.923] event5 - PixArt Lenovo Optical USB Mouse: device is a pointer

[1058.930] libinput: configuring device "PixArt Lenovo Optical USB Mouse".

[1058.937] associating input device event5 with output LVDS-1 (none by udev)

從上述內(nèi)容可道,linux內(nèi)核提示識(shí)別到了一個(gè)新的low-speedUSB(低速設(shè)備),并且得到了關(guān)于該USB鼠標(biāo)相關(guān)的參數(shù)信息。然后input輸入子系統(tǒng)打印出了兩條信息:

[ 3122.713317] input: PixArt Lenovo Optical USB Mouse as /devices/platform/fd8c0000.usb/usb4/4-1/4-1:1.0/00036019.0004/input/input8

[ 3122.771015] hid-generic 00036019.0004: input,hidraw0: USB HID v1.11 Mouse [PixArt Lenovo Optical USB Mouse] on usb-fd8c0000.usb-1/input0

接著用戶(hù)空間程序打印出了幾條信息:

[1058.921] event5 - PixArt Lenovo Optical USB Mouse: is tagged by udev as: Mouse

[1058.923] event5 - PixArt Lenovo Optical USB Mouse: device is a pointer

[1058.930] libinput: configuring device "PixArt Lenovo Optical USB Mouse".

[1058.937] associating input device event5 with output LVDS-1 (none by udev)

至此,可以知道當(dāng)USB鼠標(biāo)插入usb接口后,linux內(nèi)核會(huì)識(shí)別到usb設(shè)備插入并且打印出識(shí)別到的信息,然后會(huì)交給input輸入子系統(tǒng)識(shí)別,因?yàn)槭髽?biāo)是一個(gè)輸入設(shè)備,應(yīng)歸屬于輸入子系統(tǒng)下,輸入子系統(tǒng)會(huì)向用戶(hù)空間暴露出操作接口。接著用戶(hù)空間程序檢測(cè)到用戶(hù)的輸入識(shí)別進(jìn)而打印出相關(guān)的識(shí)別信息,從而完成整個(gè)識(shí)別過(guò)程。

從內(nèi)核源碼角度,usb內(nèi)核識(shí)別階段打印設(shè)備描述符信息的操作函數(shù)是announce_device(),實(shí)現(xiàn)如下:

static void announce_device(struct usb_device *udev)

{

u16 bcdDevice = le16_to_cpu(udev->descriptor.bcdDevice);

dev_info(&udev->dev,

"New USB device found, idVendor=%04x, idProduct=%04x, bcdDevice=%2x.%02x

",

le16_to_cpu(udev->descriptor.idVendor),

le16_to_cpu(udev->descriptor.idProduct),

bcdDevice >> 8, bcdDevice & 0xff);

dev_info(&udev->dev,

"New USB device strings: Mfr=%d, Product=%d, SerialNumber=%d

",

udev->descriptor.iManufacturer,

udev->descriptor.iProduct,

udev->descriptor.iSerialNumber);

show_string(udev, "Product", udev->product);

show_string(udev, "Manufacturer", udev->manufacturer);

show_string(udev, "SerialNumber", udev->serial);

}

#elsestatic inline void announce_device(struct usb_device *udev) { }

#endif

(2-2)USB鼠標(biāo)移除/拔下后日志分析

當(dāng)usb設(shè)備移除后,則會(huì)打印出類(lèi)似以下的信息:

(1)[ 2791.684059] usb 4-1: USB disconnect, device number 4

(2)[1027.777] event5 - PixArt Lenovo Optical USB Mouse: device removed

第(1)條信息是linux內(nèi)核usb核心識(shí)別到usb設(shè)備被移除/拔出后,打印出的信息,這個(gè)過(guò)程是內(nèi)核空間的過(guò)程。

第(2)條信息是用戶(hù)空間程序識(shí)別到usb鼠標(biāo)設(shè)備被拔出后打印出的信息,這個(gè)過(guò)程是用戶(hù)空間程序的操作過(guò)程。

三、 usb host控制器的初始化

一般情況下,處理器平臺(tái)內(nèi)部都集成了USB host主機(jī)控制器,linux內(nèi)核中,對(duì)usb host控制器的初始化發(fā)生在內(nèi)核啟動(dòng)階段,從內(nèi)核啟動(dòng)打印出的日志中,可以找到類(lèi)似如下的信息(輸出中加有標(biāo)記信息):

[ 0.779954] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1

[ 0.779969] usb usb1: Product: EHCI Host Controller

[ 0.779978] usb usb1: Manufacturer: Linux 4.19.232 ehci_hcd

[ 0.779991] usb usb1: SerialNumber: fd800000.usb

[ 0.780002]

[ 0.780002] ================usb_new_device==============

[ 0.780432] ==================================enter hub_probe=============================

[ 0.780453] hub 1-0 USB hub found

[ 0.780493] hub 1-0 1 port detected

[ 0.783005] ehci-platform fd880000.usb: EHCI Host Controller

[ 0.783186] ehci-platform fd880000.usb: new USB bus registered, assigned bus number 2

[ 0.783503] ehci-platform fd880000.usb: irq 14, io mem 0xfd880000

[ 0.796390] ehci-platform fd880000.usb: USB 2.0 started, EHCI 1.00

[ 0.796606] usb usb2: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 4.19

[ 0.796626] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1

[ 0.796641] usb usb2: Product: EHCI Host Controller

[ 0.796655] usb usb2: Manufacturer: Linux 4.19.232 ehci_hcd

[ 0.796669] usb usb2: SerialNumber: fd880000.usb

[ 0.796680]

[ 0.796680] ================usb_new_device==============

[ 0.797080] ==================================enter hub_probe=============================

[ 0.797100] hub 2-0 USB hub found

[ 0.797142] hub 2-0 1 port detected

[ 0.797861] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver

[ 0.797892] ohci-platform: OHCI generic platform driver

[ 0.798121] ohci-platform fd840000.usb: Generic Platform OHCI controller

[ 0.798290] ohci-platform fd840000.usb: new USB bus registered, assigned bus number 3

[ 0.798541] ohci-platform fd840000.usb: irq 13, io mem 0xfd840000

[ 0.857203] usb usb3: New USB device found, idVendor=1d6b, idProduct=0001, bcdDevice= 4.19

[ 0.857224] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1

[ 0.857239] usb usb3: Product: Generic Platform OHCI controller

[ 0.857252] usb usb3: Manufacturer: Linux 4.19.232 ohci_hcd

[ 0.857265] usb usb3: SerialNumber: fd840000.usb

[ 0.857276]

[ 0.857276] ================usb_new_device==============

[ 0.857683] ==================================enter hub_probe=============================

[ 0.857703] hub 3-0 USB hub found

[ 0.857750] hub 3-0 1 port detected

[ 0.858206] ohci-platform fd8c0000.usb: Generic Platform OHCI controller

[ 0.858386] ohci-platform fd8c0000.usb: new USB bus registered, assigned bus number 4

[ 0.858624] ohci-platform fd8c0000.usb: irq 15, io mem 0xfd8c0000

[ 0.917200] usb usb4: New USB device found, idVendor=1d6b, idProduct=0001, bcdDevice= 4.19

[ 0.917220] usb usb4: New USB device strings: Mfr=3, Product=2, SerialNumber=1

[ 0.917234] usb usb4: Product: Generic Platform OHCI controller

[ 0.917248] usb usb4: Manufacturer: Linux 4.19.232 ohci_hcd

[ 0.917260] usb usb4: SerialNumber: fd8c0000.usb

[ 0.917271]

[ 0.917271] ================usb_new_device==============

[ 0.917662] ==================================enter hub_probe=============================

[ 0.917683] hub 4-0 USB hub found

[ 0.917740] hub 4-0 1 port detected

[ 0.919175] xhci-hcd xhci-hcd.0.auto: xHCI Host Controller

[ 0.919378] xhci-hcd xhci-hcd.0.auto: new USB bus registered, assigned bus number 5

[ 0.919920] xhci-hcd xhci-hcd.0.auto: hcc params 0x0220fe64 hci version 0x110 quirks 0x0000011002010010

[ 0.919992] xhci-hcd xhci-hcd.0.auto: irq 81, io mem 0xfd000000

[ 0.920297] usb usb5: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 4.19

[ 0.920316] usb usb5: New USB device strings: Mfr=3, Product=2, SerialNumber=1

[ 0.920331] usb usb5: Product: xHCI Host Controller

[ 0.920344] usb usb5: Manufacturer: Linux 4.19.232 xhci-hcd

[ 0.920357] usb usb5: SerialNumber: xhci-hcd.0.auto

[ 0.920369]

[ 0.920369] ================usb_new_device==============

[ 0.920786] ==================================enter hub_probe================

[ 0.920806] hub 5-0 USB hub found

[ 0.920849] hub 5-0 1 port detected

[ 0.921167] xhci-hcd xhci-hcd.0.auto: xHCI Host Controller

[ 0.921325] xhci-hcd xhci-hcd.0.auto: new USB bus registered, assignStarting syslogd: ed bus number 6

[ 0.921352] xhci-hcd xhci-hcd.0.auto: Host supports OK

USB 3.0 SuperSpeed

[ 0.921433] usb usb6: We don't know the alStarting klogd: gorithms for LPM for this host, disabling LPM.

[ 0.921559] usbOK

usb6: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 4.19

[ 0.921577]Populating /dev using udev: usb usb6: New USB device strings: Mfr=3, Product=2, SerialNumber=1

[ 0.921593] usb usb6: Product: xHCI Host Controller

[ 0.921607] usb usb6: Manufacturer: Linux 4.19.232 xhci-hcd

[ 0.921620] usb usb6: SerialNumber: xhci-hcd.0.auto

[ 0.921630]

[ 0.921630] ================usb_new_device============

[ 0.922028] ====================enter hub_probe=============================

=============

[ 0.922047] hub 6-0 USB hub found

[ 0.922086] hub 6-0 1 port detected

在linux USB子系統(tǒng)中,需使用usb_register_bus()將USB host控制器注冊(cè)到USB核心上,該函數(shù)由usb_add_hcd()調(diào)用,用于完成通用hcd結(jié)構(gòu)的初始化和注冊(cè),并調(diào)用驅(qū)動(dòng)程序的reset()和start()。

我們已經(jīng)知道,在usb通信機(jī)制中,處理器內(nèi)部一般都會(huì)集成host控制器,所以同樣需要有對(duì)應(yīng)的驅(qū)動(dòng)程序去驅(qū)動(dòng)。usb_add_hcd()函數(shù)則會(huì)在usb的主機(jī)控制器驅(qū)動(dòng)程序的probe過(guò)程中被調(diào)用,內(nèi)核中,幾乎所有的usb host控制器驅(qū)動(dòng)都是這樣的寫(xiě)法。

在USB Host控制器驅(qū)動(dòng)框架下,有一個(gè)重要的數(shù)據(jù)結(jié)構(gòu):struct usb_hcd,用于描述一個(gè)USB Host Controller Driver(簡(jiǎn)寫(xiě)HCD)。例如通用平臺(tái)ohci驅(qū)動(dòng),驅(qū)動(dòng)文件則是:ohci-platform.c,源碼中有如下代碼:

usb_create_hcd用于創(chuàng)建并初始化一個(gè)hcd結(jié)構(gòu)描述符:

usb_add_hcd用于初始化hcd結(jié)構(gòu)和注冊(cè)hcd:

調(diào)用platform_get_irq()為設(shè)備分配中斷號(hào):

在usb_add_hcd()中會(huì)調(diào)用usb_hcd_request_irqs():

從上圖可知,其會(huì)調(diào)用request_irq()這個(gè)重磅函數(shù)為ohci host控制器分配中斷,中斷處理函數(shù)為usb_hcd_irq ():

irqreturn_t usb_hcd_irq (int irq, void *__hcd)

{

struct usb_hcd *hcd = __hcd;

irqreturn_t rc;

if (unlikely(HCD_DEAD(hcd) || !HCD_HW_ACCESSIBLE(hcd)))

rc = IRQ_NONE;

else if (hcd->driver->irq(hcd) == IRQ_NONE)

rc = IRQ_NONE;

else

rc = IRQ_HANDLED;

return rc;

}

仔細(xì)分析上述代碼,又回去了:在hcd中斷處理函數(shù)中則會(huì)去調(diào)用執(zhí)行hcd驅(qū)動(dòng)程序指定的irq:

hcd->driver->irq(hcd)

那么對(duì)于ohci控制器來(lái)說(shuō),irq則是ohci_irq(),如下圖所示:

綜上,如果處理器內(nèi)部usb host控制器符合ohci通用標(biāo)準(zhǔn),則可以使用ohci-platform.c下的驅(qū)動(dòng)程序,這意味著當(dāng)ohci類(lèi)的usb設(shè)備插入時(shí),對(duì)應(yīng)的中斷處理函數(shù)會(huì)被調(diào)用執(zhí)行(小生根據(jù)實(shí)際源碼運(yùn)行驗(yàn)證過(guò),也確實(shí)如此)

在linux內(nèi)核中,對(duì)于ehci和xhci的host控制器,同樣有對(duì)應(yīng)的通用驅(qū)動(dòng)程序。只要處理器平臺(tái)內(nèi)部USB host控制器符合linux內(nèi)核提供的通用驅(qū)動(dòng)即可使用。

四、USB設(shè)備插入后的硬件過(guò)程

從linux內(nèi)核源碼反推硬件對(duì)插入的USB設(shè)備的識(shí)別,大概知道這個(gè)過(guò)程是由處理器內(nèi)部的host控制器完成的。當(dāng)插入U(xiǎn)SB設(shè)備后,將觸發(fā)對(duì)應(yīng)的usb host控制器的中斷,中斷進(jìn)而又由中斷控制器捕獲,從而將中斷信息由硬件轉(zhuǎn)向linux內(nèi)核的中斷系統(tǒng),從前面分析可知,USB host控制器驅(qū)動(dòng)程序都為對(duì)應(yīng)的控制器指定了中斷處理函數(shù),那么在中斷處理函數(shù)中,則會(huì)讀取控制器的寄存器參數(shù)值從而獲取控制器狀態(tài),除此之外在中斷處理函數(shù)中還做了很多事情(標(biāo)準(zhǔn)xhci控制器驅(qū)動(dòng)程序的寫(xiě)法與ohci、ehci標(biāo)準(zhǔn)控制器驅(qū)動(dòng)有很大不同,暫不過(guò)多深究!),例如調(diào)用usb_hcd_poll_rh_status(),但目的只有一個(gè):激活刷新usb hub。

五、USB設(shè)備插入后的軟件過(guò)程

當(dāng)usb hub被激活刷新后,其后會(huì)調(diào)用到hub_event,后續(xù)的調(diào)用邏輯如下:

hub_events()->hub_port_connect_change()->hub_port_connect()->usb_new_device()

->device_add()->kobject_uevent()

usb_new_device()是創(chuàng)建usb新設(shè)備的核心函數(shù),在linux內(nèi)核啟動(dòng)過(guò)程中或者插入usb設(shè)備后,USB核心會(huì)調(diào)用這個(gè)函數(shù)。

kobject_uevent()用于向用戶(hù)空間發(fā)送uevent事件,通知用戶(hù)空間的偵聽(tīng)程序USB設(shè)備已經(jīng)插入。

『筆者在瀏覽查詢(xún)資料時(shí),發(fā)現(xiàn)了這個(gè)問(wèn)題,在此一并列出』

Q1:如果USB設(shè)備的驅(qū)動(dòng)是在設(shè)備插入時(shí)動(dòng)態(tài)加載的,那這個(gè)加載過(guò)程,處在這一個(gè)過(guò)程的哪一個(gè)位置?

A1:調(diào)用bus_probe_device(dev)完成!

綜上,得出結(jié)論:在linux內(nèi)核中,一個(gè)USB設(shè)備插入時(shí),其設(shè)備驅(qū)動(dòng)是動(dòng)態(tài)加載的

審核編輯:陳陳

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • usb
    usb
    +關(guān)注

    關(guān)注

    60

    文章

    8184

    瀏覽量

    272872
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11511

    瀏覽量

    213777
  • 熱插拔
    +關(guān)注

    關(guān)注

    2

    文章

    251

    瀏覽量

    38485

原文標(biāo)題:不放過(guò)linux-usb的熱插拔過(guò)程

文章出處:【微信號(hào):嵌入式小生,微信公眾號(hào):嵌入式小生】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    熱插拔是什么?熱插拔有哪些特點(diǎn)?

    的電腦中一般都有USB接口,這種接口就能夠?qū)崿F(xiàn)熱插拔。如果沒(méi)有熱插拔功能,即使磁盤(pán)損壞不會(huì)造成數(shù)據(jù)的丟失,用戶(hù)仍然需要暫時(shí)關(guān)閉系統(tǒng),以便能夠?qū)τ脖P(pán)進(jìn)行更換,而使用
    發(fā)表于 12-13 10:53

    即插即用和熱插拔的區(qū)別

    關(guān)系。即插即用是要重啟機(jī)器才能認(rèn)出來(lái)的熱插拔立刻就能認(rèn)出來(lái) 支持即插即用是一種使您可以快速簡(jiǎn)易安裝某硬件設(shè)備而無(wú)需安裝設(shè)備驅(qū)動(dòng)程序或重新配置系統(tǒng)的標(biāo)準(zhǔn)。即插即用需要硬件和軟件兩方面支持,Windows
    發(fā)表于 10-23 10:26

    如何對(duì)BMS單元連接進(jìn)行熱插拔

    注重序列效果的情況下,重復(fù)測(cè)試是可能的。這使得能夠測(cè)試多個(gè)設(shè)備。序列有效性減少測(cè)試時(shí)間,因此人員可以安全的角度出發(fā)。最后,測(cè)試過(guò)程的定時(shí)可以擴(kuò)展到模擬工廠(chǎng)/用戶(hù)連接過(guò)程中自然發(fā)生的延
    發(fā)表于 09-07 18:20

    基于Linux的Netlink熱插拔監(jiān)控

    Linux中Netlink實(shí)現(xiàn)熱插拔監(jiān)控——內(nèi)核與用戶(hù)空間通信
    發(fā)表于 03-19 11:42

    熱插拔對(duì)系統(tǒng)的影響主要有哪些

    現(xiàn)在大多數(shù)電子系統(tǒng)都要支持熱插拔功能,所謂熱插拔,也就是在系統(tǒng)正常工作時(shí),帶電對(duì)系統(tǒng)的某個(gè)單元進(jìn)行插拔
    發(fā)表于 10-29 06:51

    怎么通知應(yīng)用層cp2102芯片的熱插拔狀態(tài)?

    在用iMX6UL開(kāi)發(fā)板,U盤(pán)可以內(nèi)核層面實(shí)現(xiàn)熱插拔。我現(xiàn)在有個(gè)USB轉(zhuǎn)串口的設(shè)備(cp2102芯片),不知道有沒(méi)有朋友知道怎么通知應(yīng)用層該設(shè)備的
    發(fā)表于 01-11 06:31

    USB轉(zhuǎn)串口熱插拔無(wú)法實(shí)現(xiàn)是為什么?

    在用iMX6UL開(kāi)發(fā)板,U盤(pán)可以內(nèi)核層面實(shí)現(xiàn)熱插拔。我現(xiàn)在有個(gè)USB轉(zhuǎn)串口的設(shè)備(cp2102芯片),不知道有沒(méi)有朋友知道怎么通知應(yīng)用層該設(shè)備的
    發(fā)表于 01-11 07:40

    熱插拔裝置軟件

    熱插拔裝置軟件USB Safely Remove是一款支持熱插拔裝置和迅速切斷一個(gè)公用的熱插拔裝置的軟件
    發(fā)表于 04-23 09:32 ?151次下載

    基于Linux內(nèi)核輸入子系統(tǒng)的驅(qū)動(dòng)研究

    Linux因其完全開(kāi)放的特性和穩(wěn)定優(yōu)良的性能深受歡迎,當(dāng)推出了內(nèi)核輸入子系統(tǒng)后,更方便了嵌入式領(lǐng)域的驅(qū)動(dòng)開(kāi)放。介紹了Linux的設(shè)備驅(qū)動(dòng)基礎(chǔ),詳細(xì)闡述了基于
    發(fā)表于 09-12 16:38 ?23次下載

    Linux內(nèi)核輸入子系統(tǒng)的驅(qū)動(dòng)研究

    Linux內(nèi)核輸入子系統(tǒng)的驅(qū)動(dòng)研究
    發(fā)表于 10-31 14:41 ?14次下載
    <b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b>輸入<b class='flag-5'>子系統(tǒng)</b>的驅(qū)動(dòng)研究

    熱插拔控制電路的分析和設(shè)計(jì)過(guò)程

    系統(tǒng)其余部分的情況下進(jìn)行替換,在系統(tǒng)維持運(yùn)轉(zhuǎn)的情況下,發(fā)生故障的電路板或模塊將被移除,同時(shí)替換部件被插入。這個(gè)過(guò)程被稱(chēng)為熱插拔(hot swapping)(當(dāng)模塊與
    發(fā)表于 06-05 15:29 ?8958次閱讀
    <b class='flag-5'>熱插拔</b>控制電路的<b class='flag-5'>分析</b>和設(shè)計(jì)<b class='flag-5'>過(guò)程</b>

    如何使用Linux內(nèi)核實(shí)現(xiàn)USB驅(qū)動(dòng)程序框架

    Linux內(nèi)核提供了完整的USB驅(qū)動(dòng)程序框架。USB總線(xiàn)采用樹(shù)形結(jié)構(gòu),在一條總線(xiàn)上只能有唯一的主機(jī)設(shè)備。 Linux
    發(fā)表于 11-06 17:59 ?20次下載
    如何使用<b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b>實(shí)現(xiàn)<b class='flag-5'>USB</b>驅(qū)動(dòng)程序框架

    linux-usb子系統(tǒng)的核心描述

    本文將描述linux-usb子系統(tǒng)的核心,主要分析其核心的初始化流程,文中源碼基于內(nèi)核版本:4.1.15。
    的頭像 發(fā)表于 01-14 09:37 ?3150次閱讀

    熱插拔和非熱插拔的區(qū)別

    系統(tǒng)關(guān)閉或待機(jī)狀態(tài)下進(jìn)行。 熱插拔技術(shù)的出現(xiàn),極大地方便了電子設(shè)備的使用和維護(hù),減少了因?yàn)?b class='flag-5'>插拔設(shè)備而導(dǎo)致的系統(tǒng)的關(guān)機(jī)和停機(jī)時(shí)間,并且降低了設(shè)備故障和損壞的風(fēng)險(xiǎn)。下面將從硬件和
    的頭像 發(fā)表于 12-28 10:01 ?3922次閱讀

    鍵盤(pán)熱插拔和非熱插拔的區(qū)別

    、電源供應(yīng)、軟件驅(qū)動(dòng)、使用便利性、設(shè)備損壞與安全性、推動(dòng)產(chǎn)業(yè)發(fā)展等。 1. 連接方式 熱插拔鍵盤(pán)通常使用USB或無(wú)線(xiàn)連接方式,插入即可立即生效。非熱插拔鍵盤(pán)一般使用PS/2接口連接,插
    的頭像 發(fā)表于 02-02 17:34 ?1.2w次閱讀