嵌入式:C编码用于u-boot终端中的Ctrl-C中断

时间:2013-02-27 05:35:42

标签: c embedded arm interrupt u-boot

我是嵌入式编程的初学者。我正在研究起重机(ARM Cortex A8)。源代码位于github

我创建了一个C代码,通过GPIO连接外部LED,闪烁。它可以作为命令在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);
             }

        }
}

请指导我。

2 个答案:

答案 0 :(得分:3)

尝试使用uboot ctrlc功能:

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

答案 1 :(得分:1)

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

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

现在看到nneonneo的回答,我认为这是ctrlc()函数的作用......