DMA-problem

De senaste dagarna (OK, veckorna) har jag pysslat med att bygga om belysningen i vår akvarievägg till LED-lister istället för den ursprungliga, aldrig färdigställda, varianten med lösa lysdioder. Jag sprang på ett mycket knepigt problem med den Raspberry Pi som jag använde för att styra det hela då den fick en massa larm på SD-kortet, så till den milda grad att den efter ett tag satte det som read-only.

Trasigt kort tänkte jag och provade med ett annat – samma sak. Trasig paj tänkte jag och provade med en annan – samma sak. Något trasigt i installationen tänkte jag och installerade om från grunden – samma sak. Dags att googla. Under ominstallationen märkte jag att larmen kom först när jag drog igång min process som skickar ut signalerna till LED-listerna. Så klantigt kan väl inte ens jag skriva Python-kod så att den knäcker MMC-hanteringen? Nej, det visade sig vara rpi-ws2812-server som bråkade med mig. Efter ett tag hittade jag en sida som beskrev en DMA-krock i kod som även rpi-ws2812-server använder.

Man ska kunna ändra DMA-kanal genom att skicka med rätt siffror i init-kommandot men jag föredrog att ändra rad 281 i main.c från

int frequency=WS2811_TARGET_FREQ, dma=5;

till

int frequency=WS2811_TARGET_FREQ, dma=10;

för att byta DMA-kanal från 5 till 10 enligt förslag i tråden jag hittade. Efter en omkompilering och en omstart fungerade det mycket bättre!

Tråden är från 2017 och handlar om en äldre version av Raspbian än den jag kör. Jag har två andra pajer igång utan detta problem, en av exakt samma modell som den som krånglar. Alla kör modernare Raspbian än den som rapporterades ge detta problem. Verkar vara ett fel som kommer och går med olika uppdateringar av systemet…

Share