ios中如何抑制告警:Double-quoted include in framework header, expected angle-bracketed instead

问题

编译时会有大量类似“Double-quoted include in framework header, expected angle-bracketed instead”的告警,从内容我们理解是双引号和角括号的问题,如果我们不希望提示,该如何做?

solution

先从左侧project 栏选中项目,然后进入到 Build Settings ,然后找到 Quoted Include In Framework Header,然后选 No

[RDA8910 CSDK系列]724ug 差分fota之证实-附带ota简要流程分析

这两天在学习csdk系统,昨晚销售小哥给了一个链接:http://doc.openluat.com/article/1416/0 其中零妖大佬说了关于cat1 差分升级的事。

本着求实的精神,就很像知道确凿的证据,最好有代码或者数据的依据。

所以今天特意准备了下评估板子,看看能不能拿到些直观的线索。

第一个想到的就是通过coolwatcher追查系统的日志。这里有个开发板和我的usb uart小板电平不匹配的小插曲,定位此问题又额外浪费了点时间,暂不展开,如果有人想细究再补充,先说结论:想稳定看coolwatcher的日志,你需要使用host log的串口方式,而不是用usb方式。

测试使用的是官方的ota平台: iot.openluat.com ,设备初始代码是自己编译的测试包, ota包使用同样的代码,只是改了下版本号,因为主要是验证流程,所以不用关注功能逻辑。

fota包的下载使用的是http,注意是http,不是https,主要原因就是简单,https是趋势。

第一步:

通过http获取到文件大小,这里对应是的是Content-Length

[ota] HTTPClientFindFirstHeader 21,Content-Length: 48330

[ota]GetSize fsz: 48330

6M左右的原始bin档,实际的下载大小只有48K左右,这就说明下载的是差分,而不是全量包。

第二步:

ota_parse otaProcess file size 48320, type 1

从48330 变成了48320 说明有10byte可能是控制描述数据,不细表。

第三步:

[ota] HTTPClientReadData readSize 511

[ota] HTTPClientReadData readTotalLen 1022, 48330

每次下载511个字节,一包一包开始下载

第四步:

中间重复无数包,通过总包大小控制下载次数,直到最后一包下载完成

[ota]--HTTPIntrnConnectionClose--

ota_parse otaDownloadDone appState 3 CoreState 1

[ota_parse] FILE: app 48320 0

app应该是文件名,48320是大小,0 是属性或者权限之类的吧。

第五步:校验

ota_app crc (f7ddf30f,f7ddf30f)

ota openat_newApp appImageIsVaild ok

使用的应该是crc32 的校验的多包累加和,纯瞎猜,不求证

第六步:更新ota的标志

ota check 1,0

ota check 1,1

ota OPENAT_newOtaFlagSet 102

这个102应该就是告诉bootloader这个是刚ota完成,第一次需要做些特殊的工作。

第七步:下载完成

ota_parse _otaDownloadDone ok

[ota]fota end 0

看日志,整个升级48k大小的样子,花了6s完成,基本无感知,所以如果你用usb方式看日志,可能coolwatch还没连接上,升级就完成了

nordic 如何使用单分区OTA模式

ref:https://devzone.nordicsemi.com/f/nordic-q-a/48364/v15-3-dfu-use-single-bank-directly

v15.3 DFU use single bank directly

Note that for SDK v12.3 : if application size * 2 > available space a single bank update is performed.

While I am using v15.3 and there seems no more infor about the single bank and dual bank settings, I want to free more space for data storage and disable dual bank dfu, my question is how to use single bank dfu directly?
solution1: final I find the NRF_DFU_SINGLE_BANK_APP_UPDATES in https://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.sdk5.v15.3.0%2Flib_bootloader_dfu_banks.html&cp=5_1_3_5_1_2

solution2: increase the NRF_DFU_APP_DATA_AREA_SIZE to make the space less than dual bank.
Thanks for answering your question. Just want to add that option two may be better as it will prevent the bootloader from overwriting the app data in case an image is also too big for a single bank update.

refs:
https://gitee.com/hiproz/pub-res/blob/master/Dual-bank%20and%20single-bank%20updates.pdf

IOS device support

问题

当你升级了macos,xcode自带的iphone支持版本和你iphone不一致时(比如手动升级的beta版本等),这时候xcode是无法正常调试和下载ios app的。

解决办法

增加对应ios的DeviceSupport文件,手动添加到xcode的对应目录:

更多请见:
https://developer.apple.com/download/
https://developer.apple.com/download/more/

clang-format 参考配置

贴一份在用的参考配置,欢迎大家讨论

BasedOnStyle: LLVM
BreakBeforeBraces: Linux
Language: Cpp
ColumnLimit: 200
ReflowComments: false
SortIncludes: false

#括号风格
BreakBeforeBraces: Custom
BraceWrapping:
  AfterEnum: false
  AfterStruct: false
  SplitEmptyFunction: false

# 连续声明时,对齐所有声明的变量名
AlignConsecutiveDeclarations:   true
# 针和引用的对齐: Left, Right, Middle
PointerAlignment:   Left
# 在C风格类型转换后添加空格
SpaceAfterCStyleCast:   false
# 在赋值运算符之前添加空格
SpaceBeforeAssignmentOperators: true
# 开圆括号之前添加一个空格: Never, ControlStatements, Always
SpaceBeforeParens:  ControlStatements
# 在空的圆括号中添加空格
SpaceInEmptyParentheses:    false
# 在尾随的评论前添加的空格数(只适用于//)
SpacesBeforeTrailingComments:   2
# 在尖括号的<后和>前添加空格
SpacesInAngles: true
# 宏赋值对齐
AlignConsecutiveMacros: true

xcode安装clang-format

clang-format是很好用的插件,所以我们也想在xcode中继续使用。

install

brew install clang-format

check version:

clang-format --version
clang-format version 9.0.0 (tags/google/stable/2019-05-14)

add automator service

创建automator action
automator
在左侧搜索“运行shell脚本”,并拖入右侧,在脚本本输入:

export PATH=/usr/local/bin:$PATH
clang-format

automator
将服务保存为clang-format(或者任意你喜欢的),后面还有用到这个名字。

setting clang-format

在当前用户的根目录 ~ 放置一个 .clang-format 文件。参考内容如下:

BasedOnStyle: LLVM
BreakBeforeBraces: Linux
Language: Cpp
ColumnLimit: 120
ReflowComments: false
SortIncludes: false

#括号风格
BreakBeforeBraces: Custom
BraceWrapping:
  AfterEnum: false
  AfterStruct: false
  SplitEmptyFunction: false

注意,这个只是参考,你需要按照你实际的风格进行设置。

add keyboard shortcuts

在系统设置页面找到“键盘”,选择“快捷键”的tab,在左侧选择 “app快捷键”,然后选择+号,创建用于xcode的快捷键,选择clang-format服务,然后选择一个你准备用户代码格式化的快捷键组合,比如 ctrl+i。
automator
在xcode中,选择我们的目标代码,然后ctrl+i,就触发clang-format格式化了。

done!