开发者社区> 问答> 正文

设备移植相关问题

本文介绍IoT_SDK V2.0在高通MDM9206平台上移植用户遇到过的问题原因说明。

展开
收起
剑曼红尘 2020-03-05 13:19:15 879 0
1 条回答
写回答
取消 提交回答
  • 编译问题

    • ArmCC不支持C语言中变量定义和逻辑语句混杂,声明段落必须在逻辑段落之前完整结束。
    • ArmCC不支持用花括号js {} 的
      方式定义匿名结构体实例作为右值。
    • ArmCC处理枚举类型时,gcc及其变种按照int处理,而armcc有严格的编译时检查,多按unsigned int处理。
    • ArmCC不支持在if、while、for逻辑的判断语句中有变量赋值。
    • 函数内多分支情况,ArmCC对不可达分支处的return语句严格报错导致编译失败。
    • ArmCC不支持返回值被声明为枚举类型的函数,实际上返回值是int等gcc所认为的等价数据类型。
    • 标准库的头文件内容有差异。gcc编译时可以找到的定义如size_t、 typeof等,在armcc上没有。
    • ArmCC不支持GNU风格扩展函数, 如vasnprintf、asprintf。
    • ArmCC不支持GNU风格扩展数据结构,如匿名结构体、结构体匿名成员赋值等。

    运行问题

    • 使用标准库函数tolower(),需要对应引用头文件ctype.h,否则运行会出现卡死情况。
    • 使用高通的串口打印函数,不能用js %s 格
      式打印0长度的字符串。
    • HTTP Client的代码中,如js src/utils/misc/utils_httpc.c ,
      使用了C标准库函数sscanf(), 由于高通的C库问题,这些代码运行到时会卡死。
    2020-03-05 13:21:01
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
面向领域的场景驱动设计 立即下载
移动App性能监测实践(ios篇) 立即下载
无需从0开发 平头哥教你1天上手蓝牙Mesh应用解决方案 立即下载