Forum: PC-Programmierung Raspberry Pi - SPI Kernel Module - SD Karte voll


von Markus R. (mark989)


Lesenswert?

Hi alle zusammen,
folgende Funktion wird bei mir zu SPI Übertragen in meinem 
SPI_Treiber-Modul zyklisch aufgerufen. Das Problem ist dass sich die 
SD-Karte von meinem Raspberry Pi dadurch füllt, heißt nach längerer 
Laufzeit des Moduls ist sie voll, nach einer Stunde sind etwa 3 GB 
gefüllt! Hat jemand eine Idee woran das liegen könnte?
1
USIGN32 TPS1_SendReceiveData(u8* transmit, unsigned short length, u8* receive)
2
{
3
  
4
  int ret = 0;
5
  int i;
6
7
  for(i = 0; i < length; i++){
8
9
    struct spi_transfer t = {
10
                .tx_buf = transmit +i,
11
                .rx_buf = receive  +i,
12
                .len = 1,
13
     .speed_hz = MAX_SPI_CLOCK,
14
        };
15
16
    struct spi_message msg;
17
           spi_message_init(&msg);
18
           spi_message_add_tail(&t, &msg);
19
20
    gpio_set_value(HOST_SFRN, 1);
21
    gpio_set_value(HOST_SFRN, 0);
22
23
           ret = spi_sync(tps->spi, &msg);
24
25
    if(i == 0 && (*(transmit) & 0x80) != 0 )
26
      gpio_set_value(HOST_SFRN, 1);
27
28
           if (ret){
29
                   printk( "SPI transmission failed: ret = %d\n", ret);
30
      break;
31
    }
32
  }
33
34
  return TPS_ACTION_OK;
35
}

von mar IO (Gast)


Lesenswert?

Wächst eine Logfile so schnell oder welche Datei füllt dir dann alles 
auf?

von Markus R. (mark989)


Lesenswert?

mar IO schrieb:
>Wächst eine Logfile so schnell oder welche Datei füllt dir dann alles
>auf?

Genau das ist mir nicht klar. var/log/messages wächst zwar aber nicht 
annähernd so das die Karte voll wird.

von P. E. (philenotfound)


Lesenswert?

1
du -a / | sort -n -r | head -n 5

Probier das mal, sucht dir die 5 größten Files in deinem Dateisystem 
raus.
Damit solltest du weiterkommen

von Markus R. (mark989)


Lesenswert?

jo Danke.

Das Problem sind die Dateien: debug, kernlog und syslog in var/log.
Die Dateien enthalten sind alle (im Moment noch) 1.5 GB groß und 
enthalten bestimmt 30 Billionen mal die Zeile:
x00000002
Aug  2 09:59:51 raspberrypi kernel: [  127.526158] spi_example spi0.2: 
setup: want 1000000 Hz; bus_hz=250000000 / cdiv=256 == 976562 Hz; mode 
0: cs 0x00000002
Wie kann ich die Ausgabe abstellen? In der Kernelconfig vll SPI Debug 
deaktivieren, oder gehts auch ohne neu-Kompilierung?

von P. E. (philenotfound)


Lesenswert?

Ist nur ein Verdacht: kann es sein, dass du sehr oft spi_setup() 
aufrufst?

von Markus R. (mark989)


Lesenswert?

philenotfound schrieb:
>Ist nur ein Verdacht: kann es sein, dass du sehr oft spi_setup() aufrufst?

Es wird zyklisch nur die Methode aufgerufen die ich gepostet habe, und 
am Anmelden des Moduls kann es nicht liegen da sich die log-dateien 
während der Laufzeit füllen und nicht beim vielen ein/ausladen des 
Moduls.

von P. E. (philenotfound)


Lesenswert?

Ist das vllt der ständige Chip Select der da in den Logs auftaucht?

von Jonas B. (jibi)


Lesenswert?

Vielleicht ist die Abweichung zwischen Soll und Ist-Freuquenz zu groß 
und das meckert er an (976562/100000)?

Gruß Jonas

von Markus R. (mark989)


Lesenswert?

Jonas Biensack schrieb:

>Vielleicht ist die Abweichung zwischen Soll und Ist-Freuquenz zu groß
>und das meckert er an (976562/100000)?

Jep daran lag es. Ich habe die Frequenz nur im spi_message struct 
eingestellt. Richtiger ist es, die Frequenz über 
spi_device->max_speed_hz einzustellen(in der probe-Funktion). 25 MHz war 
wohl ein Standartwert.

Danke

Gruß Markus

von Jonas B. (jibi)


Lesenswert?

Bitte gerne. Schön, das es nun funktioniert :)

Gruß Jonas

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.