Pokud jde o vyčtení bufferu v přerušení a předání do aplikace, tak myslím, že v Linuxu se to obvykle řeší čtením souboru /dev/{fiktivní soubor implementovaný v kernel driveru}.
Ano to chápu, ale toto je jiný případ. Například mám po SPI připojen řadič a náhodně mě chodí data, je zbytečné neustále posílat dotaz, zda je něco v bufferu, když řadič má int PIN.
Pokud na to driver není hotový, tak bude potřeba si driver napsat, alespoň nějaký minimální. A když už se člověk maže se základním driverem (a obranou kernelu proti out-of-tree driverům, prakticky asi bude potřeba si zkompilovat především celý kernel ze zdrojáků, a pak tam svůj driver naroubovat do stromu) tak bych rovnou veškerý bit-banging nechal v kernelovém driveru, vůči user space pak stačí jenom obsluhovat syscally... zrovna u SPI asi nestačí read() a write(), spíš nějaké to ioctl() - protože ta sběrnice není "jednoduchá roura".
Linux má koukám jakousi
generickou podporu pro SPI, standardní API do user space i uvnitř kernel space. Dokonce ve
zdrojákách vidím modul zvaný
spi-bitbang. Tzn. máte k dispozici generické vyšší vrstvy, rozhraní do user space je hotové, máte k dispozici knihovnu bitbanging rutin, jenom si musíte dopsat svůj relativně lehký modulek, který to všecko slepí dohromady a parametrizuje na Vaši mapu GPIO pinů v RPi. Ve vanilce je několik modulů, které bitbanging knihovničku využívají = můžete použít jako example. Viz
Kconfig, hledejte výskyty "select SPI_BITBANG".
Spíš mě ale zaráží, našel jsem zmínky, že RPi obsahuje hardwarový SPI řadič, tam pak samozřejmě bitbanging není potřeba, ale: copak k tomu není dávno hotový driver? Neválí se něco hotového na Githubu? Nebo je to použité=zabrané na nějaké režijní účely? Nejsem znalcem RPi...