博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
裸机离奇事件:Freescale usb 有关fault
阅读量:5024 次
发布时间:2019-06-12

本文共 1454 字,大约阅读时间需要 4 分钟。

裸机离奇事件:Freescale usb

ucosii
Freescale\KSDK_1.2.0\examples\twrk65f180m\demo_apps\usb\host\cdc\cdc_serial
{
1. usb 发送函数卡死,不能再重新进入该任务,app其他任务alive
2. usb 引发 hardware fault
3. usb 发送后没有发现正确的返回,但所有任务alive
}
---------------------------------------------------------------------------------------
static const unsigned char *ME909str_AT = "AT\r\n"; //AT查询模块是否正常工作 //xx NG
//static unsigned char *ME909str_AT = "AT\r\n"; //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);
    
}

转载于:https://www.cnblogs.com/mylinux/p/5893407.html

你可能感兴趣的文章
hdu 1010 dfs搜索
查看>>
搭建wamp环境,数据库基础知识
查看>>
android中DatePicker和TimePicker的使用
查看>>
SpringMVC源码剖析(四)- DispatcherServlet请求转发的实现
查看>>
Android中获取应用程序(包)的大小-----PackageManager的使用(二)
查看>>
Codeforces Gym 100513M M. Variable Shadowing 暴力
查看>>
浅谈 Mybatis中的 ${ } 和 #{ }的区别
查看>>
CNN 笔记
查看>>
版本更新
查看>>
SQL 单引号转义
查看>>
start
查看>>
实现手机扫描二维码页面登录,类似web微信-第三篇,手机客户端
查看>>
PHP socket客户端长连接
查看>>
7、shell函数
查看>>
【转】Apache Jmeter发送post请求
查看>>
Nginx 基本 安装..
查看>>
【凸优化】保留凸性的几个方式(交集、仿射变换、投影、线性分式变换)
查看>>
NYOJ-613//HDU-1176-免费馅饼,数字三角形的兄弟~~
查看>>
TFS --- GrantBackup Plan Permissions Error
查看>>
傅里叶级数与积分方程
查看>>