• 裸机离奇事件:Freescale usb 有关fault


    裸机离奇事件:Freescale usb
    ucosii
    FreescaleKSDK_1.2.0examples wrk65f180mdemo_appsusbhostcdccdc_serial

    {
    1. usb 发送函数卡死,不能再重新进入该任务,app其他任务alive
    2. usb 引发 hardware fault
    3. usb 发送后没有发现正确的返回,但所有任务alive
    }
    ---------------------------------------------------------------------------------------

    static const unsigned char *ME909str_AT = "AT "; //AT查询模块是否正常工作 //xx NG
    //static unsigned char *ME909str_AT = "AT "; //AT查询模块是否正常工作 //xx NG

    void send_atcmd_sycle(void)
    {
        static unsigned char buf[256]={0};
        static unsigned char* pbuf = buf;
        static unsigned char s_data[] = {31, 32, 33, 34, 35, 0};
        static int wait_time = 10;
        #define CNT 10
        static int cmdid = 0;
        
        if(cmdid == 0) {
            wait_time = 2000;
            //pbuf = ME909str_AT; //1. 使用pbuf指向一个已有的全局const/non-const buffer,从usb没有收到Mc509模块的"OK"返回字符。跟踪usb的发送函数,看起来都是发出去了的。 原因未知。
            strcpy(pbuf, s_data); // 使用strcpy靠摆到buf,再发送就没什么问题了。
            cur_at_cmd_id = ME909_CMDI_AT;
        }else if (cmdid == 8) {
            wait_time = 2000;
            //pbuf = s_data; //2. 使用pbuf指向静态buffer s_data,这个任务将不会再进来,推测是卡在usb发送了。 原因未知。
                             /*如果s_data申明为局部非静态,跟踪usb发送函数,完成发送后,会出现hardware fault。原因未知,一个说法是usb发送函数在底层另开了一个线程,所以传局部数组不行。
                              * 然而,buf申明为局部非静态却没有发现这个问题,解释是可能刚好这个内存没被其他线程用到,暂时未被占用因此可用。
                              */
            strcpy(pbuf, s_data); //使用strcpy靠摆到buf,再发送就没什么问题了。
            cur_at_cmd_id = ME909_CMDI_IPSENDEX_DATA;
        }
        mc509_send_at_cmd(pbuf, strlen(pbuf)); //usb发送函数,正常情况下,这里发了AT指令到Mc509,在我的另一个task中usb会读到会有"OK"返回字符。
        
        cmdid = (cmdid+1) % CNT;
        
        msleep(wait_time);
        
    }

  • 相关阅读:
    POJ 1328 Radar Installation
    POJ 1700 Crossing River
    POJ 1700 Crossing River
    poj 3253 Fence Repair (贪心,优先队列)
    poj 3253 Fence Repair (贪心,优先队列)
    poj 3069 Saruman's Army(贪心)
    poj 3069 Saruman's Army(贪心)
    Redis 笔记与总结2 String 类型和 Hash 类型
    数据分析方法有哪些_数据分析方法
    数据分析方法有哪些_数据分析方法
  • 原文地址:https://www.cnblogs.com/mylinux/p/5893407.html
Copyright © 2020-2023  润新知