Os periféricos são conectados ao processador principal por meio de um barramento . Alguns protocolos de barramento suportam enumeração (também chamada de descoberta), ou seja, o processador principal pode perguntar “quais dispositivos estão conectados a este barramento?” E os dispositivos respondem com algumas informações sobre seu tipo, fabricante, modelo e configuração em um formato padronizado. Com essa informação, o sistema operacional pode relatar a lista de dispositivos disponíveis e decidir qual driver de dispositivo usar para cada um deles. Alguns protocolos de barramento não suportam enumeração, e então o processador principal não tem como descobrir quais dispositivos estão conectados além de adivinhar.
Todos os barramentos de PC modernos suportam enumeração, em particular PCI (o original, bem como suas extensões e sucessores, como o AGP e PCIe), sobre o qual a maioria dos periféricos internos são conectados, USB (todas as versões), sobre o qual a maioria dos periféricos externos são conectados, bem como Firewire , SCSI , todas as versões modernas de ATA / SATA , etc. As conexões modernas de monitores também suportam a descoberta do monitor conectado ( HDMI , DisplayPort , DVI , VGA com EDID ). Assim, em um PC, o sistema operacional pode descobrir os periféricos conectados enumerando o barramento PCI e enumerando o barramento USB quando encontrar um controlador USB no barramento PCI, etc. Observe que o sistema operacional deve assumir a existência do barramento PCI. e a maneira de investigar; isso é padronizado na arquitetura do PC (“arquitetura de PC” não significa apenas um processador x86: para ser um PC (moderno), um computador também precisa ter um barramento PCI e ter que inicializar de uma determinada maneira).
Muitos sistemas embarcados usam barramentos menos sofisticados que não suportam enumeração. Isso era verdade no PC até meados dos anos 90, antes que o PCI superasse a ISA . A maioria dos sistemas ARM, em particular, possui barramentos que não suportam enumeração. Este também é o caso de alguns sistemas x86 incorporados que não seguem a arquitetura do PC. Sem enumeração, o sistema operacional precisa ser informado sobre quais dispositivos estão presentes e como acessá-los. A árvore de dispositivos é um formato padrão para representar essas informações.
A principal razão pela qual os barramentos de PC suportam a descoberta é que eles foram projetados para permitir uma arquitetura modular na qual os dispositivos podem ser adicionados e removidos, por exemplo, adicionando um cartão de extensão a um PC ou conectando um cabo em uma porta externa. Os sistemas embarcados normalmente possuem um conjunto fixo de dispositivos¹ e um sistema operacional pré-carregado pelo fabricante e não é substituído, portanto, a enumeração não é necessária.
¹ Se houver um barramento externo, como USB, os periféricos USB são descobertos automaticamente, eles não seriam mencionados na árvore de dispositivos.