2013-02-27 37 views
6

Tôi là người mới bắt đầu trong lập trình được nhúng. Tôi đang làm việc trên craneboard (ARM Cortex A8). Mã nguồn có sẵn tại github.Nhúng: Mã hóa C cho ngắt Ctrl-C trong thiết bị đầu cuối u-boot

Tôi đã tạo mã C để tạo đèn LED ngoài được kết nối qua GPIO, nhấp nháy. Nó có thể được thực hiện trong giao diện điều khiển u-boot như một lệnh. Hiện tại,

Tôi không thể ngừng nhấp nháy LED bằng Ctrl-C.
Nơi mã hóa ngắt tạm dừng Ctrl-C ở đâu?

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

     } 
} 

Vui lòng hướng dẫn tôi.

+0

Hiển thị mã của bạn, bạn không thể mong đợi chúng tôi giúp bạn tìm thấy lỗi trừ khi chúng tôi biết bạn đã làm gì. – harald

+0

Bàn điều khiển của bạn có kết nối giống như RS232 hay bạn có kết nối bàn phím USB hoặc PS/2 không? –

+0

@MartinThompson Có. Hội đồng quản trị được kết nối thông qua UART. – Gomu

Trả lời

3

Thử uboot ctrlc chức năng:

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

Cảm ơn. Tuy nhiên, mã của tôi sẽ liên tục gửi dữ liệu (1 hoặc 0) đến pin GPIO. Làm thế nào để có được một đầu vào giữa đó? – Gomu

+0

@Gomu: Xin lỗi. Tôi nghĩ rằng U-Boot có thể xử lý Ctrl + C thông qua hàm 'ctrlc'. Vui lòng xem câu trả lời cập nhật. – nneonneo

+0

Cảm ơn! Nó đã làm việc. – Gomu

1

Bạn đang làm việc ở mức thấp, do đó phương pháp bạn cần phải sử dụng cũng ở mức độ thấp:

  • Kiểm tra UART "đĩa dữ liệu có sẵn "cờ trong vòng lặp của bạn - điều này phụ thuộc phần cứng rất nhiều, nhưng thường liên quan đến việc đọc một thanh ghi, che một số bit và nhìn thấy nếu bit đúng được thiết lập.
  • nếu dữ liệu có sẵn, hãy kiểm tra xem nếu nó là một tổ hợp phím CTRL-C (0x03) nhân vật, thoát nếu như vậy, loại bỏ nếu không

Có câu trả lời nneonneo nay nhìn thấy, tôi cho rằng là những gì ctrlc() hoạt động ...