- 博客(38)
- 收藏
- 关注
原创 python HEX 转String
import binasciidef hex2str(hexstr): bytestr = binascii.unhexlify(hexstr.replace(" ", "")) rststr = bytestr.decode('utf-8') return rststrhexstr="46 45 31 30 36 36 39 38 36 61 32 30 "rststr=hex2str(hexstr)
2025-04-23 14:33:48
285
原创 zephyr cdc-acm-uart
5、zephyr 的device tree里,status 如果没有,默认是okay。3、速率取决于usb速度和操作系统,可以达到1MBytes/s以上。2、直接挂在UDC下面,不需要上层驱动。1、这是usb 通信类的一个接口。
2025-03-12 09:25:00
108
原创 USB Device 的Interface描述
例如,一个复合设备可以有一个 Interface 用于键盘功能,另一个 Interface 用于鼠标功能。0x01, // bInterfaceSubClass: 接口子类代码(1:Boot Interface Subclass):每个 Interface 定义了设备与主机之间的通信方式,包括使用的端点、传输类型(控制、中断、批量、等时)等。描述设备的全局信息,如厂商 ID(VID)、产品 ID(PID)、设备类(bDeviceClass)等。
2025-03-05 15:23:41
740
原创 nRF52烧写固件后Jink连接不上的问题——readout protection
是Nordic处理器(如nRF52、nRF53系列)中的一种安全功能,用于防止未经授权的访问和读取芯片内部的Flash存储器内容。启用读保护后,调试接口(如SWD/JTAG)和某些存储器访问操作会被限制,从而保护固件的知识产权和安全性。调试接口和Flash存储器访问会被永久锁定,芯片只能运行已烧写的固件,无法再更新或调试。:在开发和调试阶段,建议禁用读保护,以便通过调试接口进行调试和固件更新。:启用读保护后,调试接口会被禁用,因此在开发阶段建议不要启用读保护。增强产品的安全性,防止逆向工程或固件盗用。
2025-03-05 11:51:52
925
原创 nrf52840的device tree继承
zephyr的DTS属于逐级覆盖结构,先arch(也就是arm)、再soc、在soc具体封装、再board、再application overlay的顺序。大部分内容都在soc定义好,在board和application里主要进行node properties的修改,包括一些外设的增加。
2025-02-08 15:25:44
537
原创 USB endpoints and their pipes
每个USB设备必须提供一个control endpoint,它得地址是0,被称为default endpoint 或者Endpoint0.这个Endpoint是双向得bidirectional,就是说,Host可以再一次tranfer内从它这里发送和接收数据。可以遍历所有的interfaces,然后遍历每一个interfaces 的settings,并且查看每一个endpoint的properties。一个Pipe与device上的一个endpoint通信,并且那个endpoint拥有一个地址。
2025-02-08 13:35:31
618
原创 cmake的基本概念
输出是build tree,就是建立一个build 目录树,把源代码文件、项目文件、编译连接指示文件等等组织成后续的编译工具能用的格式。1)、用括号包围的arguments,格式 [=[ ..... ]=], 不执行任何转义,变量引用;输入是source tree,当然这个source tree除了你的源代码,还要包含cmake的相关文件,不能直接包含一些特殊字符(比如空格、括号,#,“,\ ,必须用\ ecapse)2)、用双引号包围的arguments,被当作一个argument。
2025-02-07 10:17:28
438
原创 Zephyr Application Configuration Directory
在自定义board之后,如果configure app到这个自己的board上时,需要在configuration文件夹下建立一个与board名字一样的文件夹,并把所需要的configuration files放到这个文件夹下。在nRF Desktop下有这个文件夹,但是如果自定义了板子,那么需要在这个configuration文件夹下也建立这个board的配置文件夹。
2025-02-06 17:22:06
279
原创 nRF Desktop Application
4)最重要的几个模块:hids.c(HID Service module)提供BLE的HID传输服务。2)从框图可以看出,zephyr提供了一些底层驱动,和蓝牙协议栈,NCS提供了Application Event Manager的应用事件管理器,以及HID service。3)基于不同的board(DTS、Overlay)、不同的配置xxx.conf,这个框架实现模块的裁剪和配置,从而实现不同的功能。1)HID Input report模式(这里input是相对主机而言的,也就是对电脑来说是输入)。
2025-02-02 11:33:33
431
原创 nRF Connect SDK 官方教程
nRF Connect SDK Fundamentals - Nordic Developer AcademynRF Connect SDK Intermediate - Nordic Developer Academy
2025-01-30 21:46:09
163
原创 JLINK vCOM & RTT
JLINK除了提供标准的SWD、JTAG接口外,还提供了两个与target device通信的接口,一个是虚拟串口vCOM,
2025-01-30 12:08:25
732
原创 UVC - USB 摄像头
UVC摄像头是Plug&Play的,不需要单独安装任何驱动,webcam则可能需要特殊的驱动。另外UVC摄像头通常特性更多、性能更好。支持的压缩格式:2012年之后的1.5版本的UVC标准才加入H.264的支持。USB有很多class,通信、语音、HID、UVC是视频类。
2025-01-17 19:02:45
1642
原创 nRF Desktop & Zephyr USB & HID
官方教程:HID state moduleis required for generating reports from input data. It is responsible for the following operations:Aggregating data from user input sources.Tracking state of the HID report subscriptions.Forming the HID reports in either report or boot
2025-01-16 19:00:27
1678
原创 固件升级OTA、DFU非常好的一篇文章
nRF Connect SDK(NCS)/Zephyr固件升级详解 – 重点讲述MCUboot和蓝牙空中升级
2025-01-15 09:59:03
195
原创 RTS & CTS in Nordic UART
It is also possible to use hardware flow control with UART using two extra lines called RTS (request to send) and CTS (clear to send).UART connection with hardware flow controlThese wires are cross-coupled between the two devices. If hardware flow control
2025-01-14 22:43:51
155
原创 nRF connect SDK 的 Application Event Manager
从NCS(nRF Conenct SDK)文档里看,提倡的也是这个架构,就是使用一个Application Event Manager来完成Event的转发,这与ROS、NuttX、QNX等系统的工作方式类似。Zyphyr是wind-river的项目发展过来的,并且声称是“微内核”的,微内核意味着各种app、kernel的服务、driver都尽量是解耦合,最好是以独立task或者thread方式运行的。APP_EVENT_INFO_DEFINE : 定义EVENT的Profiler信息,调试用的。
2025-01-13 14:43:44
236
原创 用nRF connect SDK创建application
在官方文档里,需要把创建的app放到ncs顶层目录,然后使用Mange SDKs里的Create New West Manifest来创建west.yml。有三种类型的application structure,主要区别是application和nRF connect SDK之间的位置关系不同。就是把application的项目代码放到SDK的顶层目录里,并定义west.yml来指定SDK的配置。或者说把SDK和Application当作一个整体项目,官方叫法是west Workspace。
2025-01-13 11:32:04
244
原创 1TOPS究竟是多大的算力
考虑加法和其它的,大约10MOPs=0.01TOP,所以1s钟可以做100次1024点DFT。40K点的实数乘法,同样考虑加法和其它的,大约100KOPs,所以1s钟可以做10000次1024点FFT。大约1000x9x100=1M的乘法,与1024点DFT类似。考虑加法、池化,logistic等函数,预计<30FPS。1024x768的图像,3x3的卷积核,101层。考虑数据搬移调度,还会再少一些。
2025-01-03 17:42:48
499
原创 c++ 的 return ( ) [ ] {expressions; } 表达式
【代码】c++ 的 [ ]( ) {expressions;} 表达式。
2025-01-02 17:46:26
156
原创 python的plotly绘图
frames——主要用于多帧动画,是由多个Frame构成的,每个Frame就是(data、layout,name)构成的。data—— 主要是图形数据(注意不是数据本身,而是绘图的数据,比如trace,box,surface等)2、plotly顶层,是plotly.express和plotly.graph_objs两大类接口。express用于快速绘图,基本一条命令可以完成绘图,缺点是可控制的元素少。4、plotly可以设置控制菜单、按钮等交互控制元素,也放在layout里。
2024-12-23 14:31:22
254
原创 nordic nRF connect SDK 安装
当然这期间,感觉git的设置还是有必要,除了前面文章提到的缓冲区、http version,还有一个git config --global core.compression 0。1、用nRF connect Desktop的toochain manager安装,是个GUI工具,但是一直失败,都是git相关的错误,尝试了各种git配置,都没有成功。2、用VS code 的插件安装,先安装toolchain,然后安装SDK,一样失败,错误不太一样,但是失败的更快。
2024-12-22 09:56:03
719
原创 github的连接失败和断连
nordic的SDK需要用west管理多个github repo,但是总是失败。2、一个是curl HTTP/2 not closed cleanly。1、一个是 443 failed after xxx ms。即使github用的是https,http不配置也不行哦。
2024-12-20 22:55:14
413
原创 nordic vscode开发环境配置
2、VSCode里配置扩展:nRF connect for VS Code Extendsion Pack会把其它官方需要的VS Code工具(nRF Connect SDK for VS Code;1、安装之前需要,下载J-Link工具和驱动,以及nRF Command Line Tools,如下描述。3、安装nRF connect for Desktop 是包含在nRF connect SDK 里的,下载。双击安装,然后打开应用界面,安装Apps,主要是Toolchain Manager。
2024-12-18 16:48:35
353
原创 图像传感器image sensor的外部控制信号
Trigger:外部触发信号,启动曝光以及采集,细分为几种,比如trigger一次,连续采集多帧。edge触发,level触发等。XVS:垂直同步,也就是帧同步,既可以作为输入也可以作为输出。XHS:行同步,,既可以作为输入也可以作为输出。Master:多图像传感器联动时,控制主从。Strobe:曝光控制信号。
2024-12-17 16:26:59
415
原创 Numpy 的array broadcasting
1、broadcasting 描述了Numpy在进行算术运算时,如何处理不同shapes的arrays. 在一定的约束下,较小的array沿着较大的array 被broadcast,以便他们有兼容的shapes。broadcasting提供了一种在C语言而不是python层面looping的向量化array的方法。3、broadcasting的条件,Numpy从右往左依次比较每个shapes的每个dimensions,他们兼容的条件是:要么相等,要么有一个是1。条件不满足就会报错。
2024-12-16 21:55:53
409
原创 多维数组的存储方式,Row-Major or Column-Major
这两种存储方式,在维度转换reshape的时候尤其容易出错,比如从从一个从文件读出来的16个数据,reshape成2X8的矩阵,那么是怎么重新组装的,就必须注意这个,尤其在Matlab和Python 的Numpy默认就正相反。多维数组在内存中是一维存储的,分为Row-Major Order和Column-Major Order。
2024-12-16 18:08:41
261
原创 Matlab的.*
matlab对于运算符的重载和扩展非常”强大“,但是也很容易出错。尤其在有些语言里会报错的,在matlab这里可能是一种”合理“的运算扩展。代表逐个元素相乘,但是这只是最基本的用法,只发生在矩阵AB的维度完全一致的情况下。列向量c(长度n),Kronecker积,或者张量积,生成一个mxn矩阵。行向量r,矩阵A的每一行与r 点乘。列向量c,矩阵A的每一列与c 点乘。4)行向量r(长度m)
2024-12-16 13:57:04
365
原创 高速相机的三大要素
1)大像素尺寸,提高灵敏度,在短的曝光时间获得清晰图像。2)数据传输能力增强,大帧率,大数据量。3)快门速度,提高曝光控制能力。
2024-12-13 10:59:01
319
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人