apparaatstuurprogramma-stack

Ik ben een beginner en ik probeer het concept achter de apparaatstuurprogramma-stack te begrijpen? Ik weet dat de apparaatstuurprogramma-stack drie lagen heeft met de naam low level driver, bus manager en een driver op hoog niveau. Mijn vraag is dit: zijn er aparte codes voor laag niveau bestuurder en bus manager? Als ze bestaan, waar kan ik de low-level stuurprogramma's voor hardware controllers in een Linux-bestandssysteem vinden? Bedankt.

1

2 antwoord

De Linux-kernel heeft drie apparaatstuurprogramma-lagen, die voor het grootste deel van het apparaatstuurprogramma van de kernel geldt. De busdriver, het protocolstuurprogramma en de apparaatstuurprogramma. Laten we als voorbeeld een SPI-apparaat nemen waarvoor u een stuurprogramma wilt schrijven (bijvoorbeeld een soort sensor). Normaal gesproken schrijft u de driver met behulp van het datablad van het apparaat om te zien hoe het werkt en welke registers welke informatie bevatten. Dit gebeurt in de apparaatdriver.

Het apparaatstuurprogramma verzendt de opdrachten naar het protocolstuurprogramma dat in principe definieert hoe een SPI-opdracht eruit ziet (hoe u de gegevensstructuur moet vullen om een ​​register van het apparaat te lezen/schrijven).

Normally SPI connection between your SOC and the sensor is done through some special hardware inside the SOC to send receive SPI commands. This is the bus driver. So you have something like this in software: device_driver <-> protocol_driver <-> bus_driver

in hardware it looks like this: SOC_SPI_module <-> sensor

Het idee is om de SOC SPI-module samen te vatten in de apparaatdriver, dus wanneer u een apparaatstuurprogramma programmeert, hoeft u zich geen zorgen te maken over de SOC die u gebruikt om toegang te krijgen tot uw apparaat.

Ik hoop dat ik je heb kunnen helpen.

2
toegevoegd

In Linux Device Driver is object oriented programming in C generally. In this we are having on broader view "module_init" as the constructor & "module_exit" as the destructor.

According to my view as the "init & exit" process interacts with the device controller hardware so that can be called as "lower layer driver". After it control is passes through "file operations & working processes of driver" as "Bus Manager or Process Manager" to user controlling through "ioctl process" as "High level driver".

If user have to interact to device then "ioctl process" <--> "File operations" <--> "module_init & module_exit & partly file operations.".

1
toegevoegd