keil警告:enumerated type mixed with another type
原因
枚举成员被赋值成数值或者宏,宏很容易被混淆成枚举,不易发现,仔细检查下每个枚举成员的值。
每天一点点
keil警告:enumerated type mixed with another type
枚举成员被赋值成数值或者宏,宏很容易被混淆成枚举,不易发现,仔细检查下每个枚举成员的值。
最近在体验unraid。打算装一个windows,用来运行一些window专有或者体验好的软件。因为开始各种装不上,所以期间参考文章,体验了了灯大的精简img,发现实在用不下去,所以还是研究自己怎么装。
以下文章为自己的的安装过程,因为硬件或者版本可能会有差异,请读者自行消化。
个人建议下载微软的原版,具体自行搜索。
按照类似的配置正常应该能进入window的那个窗口的界面,显示进入了安装引导过程,如果没有反应或者其他错误,请尝试更改Bus类型,和vDisk。如果安装中断,那么会导致再次启动直接启动系统无法成功,请删除vDisk,重新创建。
安装中常见的问题,在正常按照引导进入安装界面过程时,无法找到磁盘,解决方案是安装虚拟io驱动,分别选择以下驱动,并进行下一步:
Balloon
NetKVM
vioserial
viostor(一定要最后加载这个驱动)
然后就看到你分配的容量的虚拟磁盘了,然后正常分区和格式化就可以正常安装了。
再安装成功进入windows界面后,建议安装驱动盘中的qemu-ga-x64.msi
默认没有开启时,通过run 访问smb访问时,会提示:
Fix can’t access this shared folder because your organization’s security policies
开启方法:
From your left hand side click on the Lanman workstation, Now you can see the Enable insecure guest logons policy on your right hand side.
open Gpedit and click on the policy settings
Double click on it to open the Policy settings. Change the Policy setting to Enable and click on apply and OK.
Fix can’t access this shared folder using Gpedit
周末整理电子垃圾,发现自己需要一条sata的电源线,来进行外置sata的的测试。但是没有现成的线,只能自己改装一条了。
不同配件的sata电源线会有差异,5pin或者4pin,5pin的是包含3.3V的完整配置,4pin的没有3.3V。
一般是
黄 黑 黑 红
或者
黄 黑 红 黑
如下图:
sata标准的定义如下:
根据上面的定义可以得知:
黄色:12V
黑色:reserved ,实际用万用表测试是GND
红色:5V
黑色:GND
因为有的线没有3.3V,所以可以看到很多转换板上都是要增加1117之类的LDO转化芯片,就是为了实现5V转3.3V。
几个月前就完成了阿里云sdk的移植和集成,基本流程跑通,就继续干别的了,今天王正式产品中集成,发现还是费了些时间回想当时整个过程的一些细节,所以今天就详细记录下,争取下次再更一步节省时间。
目前合宙air724ug由于flash空间的分布和设计,目前的ota只支持app的升级,无法支持整机core+app的升级。所以这也就是下面的步骤中,生成差分版本时,基线是core。
运行./xxx.bat fota=app hex⽬录下会⽣成只升级APP的新版本
运行./xxx.bat fota=core hex⽬录下会⽣成只升级CORE的新版本
运行./xxx.bat fota=all hex⽬录下会⽣成APP+CORE的新版本
这里需要借助合宙的在线工具:http://doc.openluat.com/chafen
然后将生成的文件下载下来。
需要说明的是,差分出来的文件时比直接用fota=app生成的bin要大的,也就是说明这个差分中还有一些版本结构配置相关的数据,并不是把app扣出来而已。
路径:物联网平台/监控运维/OTA 升级
https://iot.console.aliyun.com/ota/list
这里不展开,如有需要,日后再单独开篇。
目前的代码是直接移植的alifota SDK,需要自己是移植和适配必要的接口,目前我手里的是已经移植和调试过的,今天主要记录相关的关机日志路径,便于日后定位问题和熟悉过程。
在某些域名的重定向场景,我们通过 location和proxy方式将某一个子域名重定向到新的子域名下。这种情况下我们的https证书一般是挂在原域名下的,当我们使用letsencrypt时,我们会使用renew来自动续期免费证书,从而实现永久的免费证书使用。
但是因为我们是从根域名就重定向了,这就导致letsencrypt在renew过程中验证会失败。
我们给letsencrypt专门配置一个对应子域名能web访问的路径,并且将配置项放在前面,因为nginx的location是按照顺序匹配的,一旦达成就会退出location过程,所以就实现了对letsencrypt路径专门做映射管理的目的。
letsencrypt的check路径如下:
https://xxx.xxx.com/.well-known/acme-challenge/xxxx
所以我们的nginx location 路径配置如下
location /.well-known/ {
root /xxxxx;
}
其中的root路径就是子域名所对应的可访问web本地路径。这样就保证了letsencrypt的renew同时保证了子域名的其他业务路径正常proxy。
ssh config:
Host xxx
HostName xxx
User xxx
ForwardAgent yes
IdentityFile xxx
IdentityFile 不是合成的ppk文件
settings.json相关配置
"remote.SSH.showLoginTerminal": true,
"remote.SSH.configFile": "C:\\Users\\xxx\\.ssh\\config",
"remote.SSH.useLocalServer": false,
"remote.autoForwardPorts": false,
"remote.SSH.remotePlatform": {
"xxx": "linux"
},
"remote.SSH.path": "D:\\Program Files\\Git\\usr\\bin\\ssh.exe"
注意:
在windows下,如果 mklink.exe 没找到:
eg:
cmd /c mklink /D libraries ..\..\libraries
/D 表示创建目录连接
之前装过驱动是好用的,有一阵没用了,大概半个月,今天开机,发现windows死活无法识别usb,三个大叹号。
重新执行了安装,也重新启动了,无果。
后面手段选择安装驱动,选择的路径:DriversForWin78\Drivers 然后成功,重新可以下载了。
记录下,就这样。
xcode:12
ios:14.2
编译时提示如下类似错误:
ld: warning: directory not found for option xxxx
ld: library not found for -lXXXX
clang: error: linker command failed with exit code 1 (use -v to see invocation)
解决:Build Settings->VALID_ARCHS在里面添加 x86_64
效果如下图,多余的import会被显示成灰色。
默认这个效果是打开的,但是不小心根据提示关闭后,怎么再次打开。
File-Settings-Editor-CodeStyle-Inspections-Imports-unused import
选中右侧的复选框,即可再次打开
编译时会有大量类似“Double-quoted include in framework header, expected angle-bracketed instead”的告警,从内容我们理解是双引号和角括号的问题,如果我们不希望提示,该如何做?
先从左侧project 栏选中项目,然后进入到 Build Settings ,然后找到 Quoted Include In Framework Header,然后选 No
这两天在学习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还没连接上,升级就完成了
ref:https://devzone.nordicsemi.com/f/nordic-q-a/48364/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
当你升级了macos,xcode自带的iphone支持版本和你iphone不一致时(比如手动升级的beta版本等),这时候xcode是无法正常调试和下载ios app的。
增加对应ios的DeviceSupport文件,手动添加到xcode的对应目录:
下载文件:https://github.com/iGhibli/iOS-DeviceSupport/tree/master/DeviceSupport
根据ios对应的版本,找到对应的zip包,然后解压到:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport
更多请见:
https://developer.apple.com/download/
https://developer.apple.com/download/more/
yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum-config-manager --enable remi-php74
yum update
ref:https://www.linode.com/community/questions/19740/how-do-i-upgrade-my-centos-7-linode-to-php7
crt file对应 letsencrypt 的fullchain.pem
key file对应 letsencrypt 的privkey.pem
一定要加上https,postman即使你配置了证书,也不会自动切https,需要你在url中明确表示。