2013-02-27 8 views
6

私は組み込みプログラミングの初心者です。私はクレーンボード(ARM Cortex A8)に取り組んでいます。ソースコードはgithubです。埋め込み:Uブート端末のCtrl-C割り込みのCコード

GPIO経由で接続された外部LEDを点滅させるためのCコードを作成しました。これは、u-bootコンソールでコマンドとして実行できます。現在、

Ctrl-CでLEDの点滅を止めることはできません。
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); 
      } 

     } 
} 

私を親切に案内します。

+0

コードを表示すると、あなたが行ったことがわからない限り、エラーを見つけるのに役立つとは思えません。 – harald

+0

コンソール入力はRS232のような接続ですか、またはUSBまたはPS/2キーボードが接続されていますか? –

+0

@MartinThompsonはい。ボードはUARTで接続されています。 – Gomu

答えて

3

uboot ctrlc機能を試してみてください:あなたは低レベルで作業している

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

ありがとうございます。しかし、私のコードはGPIOピンにデータ(1または0)を連続的に送信します。どのように私はその中に入力を得るのですか? – Gomu

+0

@ゴム:申し訳ありません。私はU-BootがCtrl + Cを 'ctrlc'関数で処理するかもしれないと思います。更新された回答をご覧ください。 – nneonneo

+0

ありがとう!出来た。 – Gomu

1

、あなたが使用する必要がある方法は、低レベルになるよう:

  • は「UARTをチェックデータ - あなたのループ内に "available"フラグを立てます。これはハードウェアに非常に依存しますが、通常はレジスタを読み込み、ビットをマスクして右ビットがセットされているかどうかを確認します。
  • データが利用可能である場合、ない

は今nneonneoの答えを見た場合は破棄し、それがCTRL-C(0x03)文字、終了しそうであればあるかどうかをチェックし、私はそれが何だと仮定ctrlc()機能しています...