• 裸机离奇事件: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);
        
    }

  • 相关阅读:
    fedora 20 install skype
    WebsitePanel(wsp)配置详解(安装指南)
    【转】SQL Server 2008下载 (附注册码)
    SQL SERVER树型数据处理时,函数递归调用问题,查询根节点,子节点函数
    150 Opening ASCII mode data connection. FTP连接的PASV和PORT方式
    如何在IIS7上配置 FTP7并使用IIS管理凭据方式进行验证?
    DZ!NT论坛 3.6.711删除用户各种错解决方案
    在虚拟机上安装红帽Linux.5.5.for.x86.服务器版系统(按针对安装oracle 10g作的配置)
    OpenStack Nova 制作 Windows 镜像
    HttpWebRequest访问时,错误:(401)未经授权。
  • 原文地址:https://www.cnblogs.com/mylinux/p/5893407.html
Copyright © 2020-2023  润新知