2013-02-27 24 views
6

Yerleşik programlamaya yeni başlıyorum. Ben craneboard üzerinde çalışıyorum (ARM Cortex A8). Kaynak kodu github adresinde mevcuttur.Gömülü: C U-önyükleme klemensinde Ctrl-C kesmesi için kodlama

Göz kırpma için GPIO aracılığıyla bağlanan harici bir LED yapmak için bir C kodu oluşturdum. U-boot konsolunda bir komut olarak çalıştırılabilir. Şu anda, Ctrl-C ile LED'in yanıp sönmesini durduramıyorum.
Ctrl-C kesintisinin kodlaması nerede bulunur?

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); 
      } 

     } 
} 

Lütfen bana yol göster.

+0

Kodunuzu gösterin, ne yaptığınızı bilmedikçe bir hata bulmanıza yardımcı olmamızı bekleyemezsiniz. – harald

+0

Konsolunuz RS232 benzeri bir bağlantı mı, yoksa bağlı bir USB veya PS/2 klavyeniz var mı? –

+0

@MartinThompson Evet. Kart UART üzerinden bağlanır. – Gomu

cevap

3

uboot ctrlc fonksiyonunu deneyin:

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

Teşekkürler. Ancak, kodum sürekli olarak GPIO pinine veri (1 veya 0) gönderecek. Bunun ortasında nasıl bir giriş yapabilirim? – Gomu

+0

@Gomu: Üzgünüz. Bence U-Boot, Ctrl + C'yi 'ctrlc' işleviyle ele alabilir. Lütfen güncellenmiş cevaba bakınız. – nneonneo

+0

Teşekkürler! İşe yaradı. – Gomu

1

Sen düşük seviyede çalışıyoruz, bu yüzden kullanmak zorunda yöntemleri de düşük seviyeli şunlardır:

  • UART kontrol et "veriler- kullanılabilir "bayrağınızdaki bayrak - bu çok donanıma bağlıdır, ancak genellikle bir kaydı okuma, bazı bitleri maskeleme ve doğru bitin ayarlanıp ayarlanmadığını görmeyi içerir.
  • veriler ise, değil

şimdi görülen nneonneo yanıtını olması halinde, bunun ne varsayalım atmak, bu yüzden eğer (0x03) karakteri, çıkış bir CTRL-C olup olmadığını kontrol ctrlc() işlev ...