2013-02-27 27 views
6

Jestem początkującym programistą wbudowanym. Pracuję na płycie dźwigowej (ARM Cortex A8). Kod źródłowy jest dostępny pod adresem github.Osadzony: C Kodowanie przerwań Ctrl-C w terminalu u-boot

Utworzono kod C, aby zewnętrzna dioda LED podłączona za pomocą GPIO migała. Można go uruchomić w konsoli u-boot jako polecenie. Obecnie

Nie mogę zatrzymać migania diody LED przez Ctrl-C.
Gdzie znajduje się kodowanie przerwania Ctrl-C?

ret=set_mmc_mux(); 
if(ret<0) 
    printf("\n\nLED failed to glow!\n\n"); 
else{ 
     if(!omap_request_gpio(lpin)) 
    { 
     omap_set_gpio_direction(lpin,0); 

     for(i=1;i<21;i++) 
     { 
      ctr=0; 
      if((i%2)==0) 
      { 
       num=num-1; 
       omap_set_gpio_dataout(lpin,num); 
      } 
      else 
      { 
       num=num+1; 
       omap_set_gpio_dataout(lpin,num); 
      } 

        udelay(3000000); 
      } 

     } 
} 

Uprzejmie prowadź mnie.

+0

Pokaż swój kod, nie możesz oczekiwać, że pomożemy Ci znaleźć błąd, chyba że wiemy, co zrobiłeś. – harald

+0

Czy wejście konsoli jest typu RS232, czy masz podłączoną klawiaturę USB lub PS/2? –

+0

@MartinThompson Tak. Płyta jest połączona przez UART. – Gomu

Odpowiedz

3

Spróbuj Uboot ctrlc funkcję:

if(ctrlc()) 
    return 1; // or whatever else you want to do 
+0

Dzięki. Ale mój kod będzie nieprzerwanie wysyłać dane (1 lub 0) do pinów GPIO. Jak uzyskać dane wejściowe pośród? – Gomu

+0

@Gomu: Przepraszam. Myślę, że U-Boot może obsłużyć Ctrl + C poprzez funkcję 'ctrlc'. Zobacz zaktualizowaną odpowiedź. – nneonneo

+0

Dzięki! Zadziałało. – Gomu

1

pracujesz na niskim poziomie, więc metody należy użyć także niskiego poziomu:

  • Sprawdź UART „teleinformatyczny dostępna flaga "w twojej pętli - jest to bardzo zależne od sprzętu, ale zazwyczaj wymaga odczytu rejestru, maskowania niektórych bitów i sprawdzenia, czy ustawiony jest prawy bit.
  • jeśli dane są dostępne, należy sprawdzić, czy jest to CTRL-C (0x03) charakter, wyjście jeśli tak, odrzucić, jeśli nie

uwzględniając odpowiedź teraz postrzegane nneonneo męska, zakładam, że to, co Funkcja ctrlc() ma ...