嵌入式:u引导终端中Ctrl-C中断的C编码

Embedded: C Coding for Ctrl-C interrupt in u-boot terminal

我是嵌入式编程的初学者。我正在研究吊板(ARM Cortex A8)。源代码可在github上找到。

我创建了一个C代码,以使通过GPIO连接的外部LED闪烁。它可以作为命令在u-boot控制台中执行。当前,

我无法通过Ctrl-C停止LED闪烁。 Ctrl-C中断的编码在哪里?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
ret=set_mmc_mux();
if(ret<0)
    printf("\
\
LED failed to glow!\
\
"
);
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);
             }

        }
}

请引导我。


尝试使用uboot ctrlc功能:

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


您的工作水平较低,因此您需要使用的方法也很低级:

  • 检查循环内的UART"数据可用"标志-这与硬件密切相关,但通常涉及读取寄存器,屏蔽掉某些位并查看是否设置了正确的位。
  • 如果有数据,请检查它是否为CTRL-C(0x03)字符,如果有则退出,如果没有则退出

现在已经看过nneonneo的答案,我想这就是ctrlc()函数的作用...