- 博客(17)
- 收藏
- 关注
原创 Zephyr调试CAN-FD功能过程遇到问题总结
答:现象是下一报文的首帧会残留上一个报文的15字节,定位根因是缓冲区定义的是15字节,一帧是64字节,当从缓冲区取15字节时报溢出告警,此时接收方会停止接收,等告警结束再继续接收,如果此时缓冲区的残留15字节正好是首帧的15字节,那接收方从缓冲区取了这15字节,还会再取49字节,此时发送方发来真正的数据帧,结果接收方把发送方发来的数据当成了这剩余的49字节接上,出现错帧,解决办法是清空buff。答:原因是发送帧的BRS未置位,BRSE只是使能发送快速帧的能力,BRS才是快速帧的标记。问:接收流程组包过程。
2024-02-29 15:43:59
452
1
原创 Zephyr调用QSPI驱动关键API
这里主要总结下zephyr调用哪些api接口来调动qspi总线访问外接的flash设备,顺带介绍下qspi初始化注册流程。
2024-02-29 15:41:23
1275
1
原创 Zephyr调用I2C接口相关流程及API
zephyr调用硬件的i2c驱动是通过调用HAL库形式,硬件参数设置更多的是在工程的配置文件中设置,比如dts、.conf、.overlay文件,这里主要是介绍下调试官方demo过程中涉及到的一些工程配置和关键api介绍。
2024-02-28 17:41:31
1851
原创 zephyr系统问题定位
最近使用zephyr系统移植cotex单板,调通驱动功能过程中遇到一些问题,其中I2C的信号量释放问题卡了许久,本文做一个总结,以便后续类似问题可以快速定位固化经验。
2024-02-28 17:31:11
746
原创 zephyr系统总体架构
超微内核具有内核的一系列基础特征,是一个高性能、多线程的执行环境。Zephyr是一种微型物联网实时操作系统,为所有资源受限设备,构建了针对低功耗、小型内存微处理器设备而进行优化的物联网嵌入式小型、可扩展的实时操作系统(RTOS),支持多种硬件架构及多种开发板。也可以在顶级目录中找到。├── CMakeLists.txt CMake 构建系统的顶层文件,包含构建 Zephyr 所需的大量逻辑。支持多线程服务,包括基于优先级的、非抢占式的fiber和基于优先级的、抢占式的task(提供可选的时间片)
2024-02-28 17:28:56
1059
原创 zephyr移植支持类型soc适配
├── arch 包含和硬件体系结构相关的代码,每种平台占一个相应的目录├── boards 板级代码及相关的配置文件,例如stm32h743的就在目录zephyrproject/zephyr/boards/arm/nucleo_h743zi,我们适配自定义单板也主要是修改这个目录├── cmake 构建 Zephyr 需要额外的构建脚本├── doc 系统文档目录。
2024-02-28 17:22:55
1282
原创 Zephyr的message queue机制以及API
Zephyr实现消息队列的功能,允许线程和ISR异步地接收和发送固定大小的消息数据项。如果有等待消息的线程存在,那么就会把消息数据项直接拷贝给这个线程,特别声明的是这里只做数据项的内容的拷贝复制,并没有把消息数据项的地址传递。另外有一种情况是如果ring buffer有空间,那么这个消息数据项会被拷贝到消息队列的ring buffer。还有一点就是,发送数据的大小都必须和一开始定义的消息队列的数据项大小一致。
2024-02-28 17:17:38
459
原创 zephyr使用jlink GDB调试程序及常用GDB命令
Zephyr是一种微型物联网实时操作系统,为所有资源受限设备,构建了针对低功耗、小型内存微处理器设备而进行优化的物联网嵌入式小型、可扩展的实时操作系统(RTOS),因此它也是我司想要关注利用的一款RTOS。Zephyr官方不仅提供了详细的开发指导,也提供了zephyr调试手段,下面具体介绍zephyr调试流程。
2024-02-28 17:13:44
763
原创 Zephyr上电启动到执行main函数流程梳理
最近做微型嵌入式系统zephyr移植开发工作,过程中遇到一些系统加载问题,于是研究了下zephyr从上电到执行到main函数的中间过程,这里做下梳理总结。
2024-02-28 17:04:25
1179
原创 Zephyr CAN总协协议栈板间多帧通信接收方进程挂死问题定位
环境是两块stm32H743单板级联进行利用CAN协议栈进行通信,CAN的报文帧一次只能传输8字节,其中还有一部分是CAN帧头的部分,实际传输的用户数据还达不到8字节,所以当想传输的数据超过8字节时就需要进行多帧传输了,CAN的协议栈就是解决了这一问题,多帧通信的大致流程如图所示,目前我这边进行多帧通信时会出现接收方进程挂死,根据zephyr的报错信息显示是cpu0堆栈溢出,报错信息也放在下图。
2024-02-28 16:57:37
511
原创 Zephyr CAN协议栈开发涉及协议介绍
项目做的是单板系统的监控/控制分离功能,由管理板来收集上报各个线卡板的单板状态,两者之间用到的通讯就是利用CAN协议栈去进行消息交互。
2024-02-28 16:52:30
1411
原创 linux忘记root密码怎么操作
2、之后中断会要你输入新的密码并确认,此时这个输入的密码就是之后root的密码。1、命令行输入sudo passwd,然后输入当前账户的密码。
2024-02-28 16:16:19
380
原创 LINUX内核设备树--dts文件
设备树是用来描述设备硬件上信息,设备树文件dts被编译成dtb文件,dtb文件再传给内核,之后内核解析dtb,获得其中的设备信息,构造出一系列device_node结构体,这些结构体最后会转换为platform_device结构体被程序调用。也因为dts存在的缘故,所以我们不必要在c文件中特别定义设备信息,避免了一个单板程序就要定义一个c文件描述的问题,对于程序只需要调用platform_device结构体,在编译时候链接具体的设备dts文件,达到了程序和硬件解耦的目的。
2024-02-28 16:14:50
1122
原创 KO内存开销分析
动态申请 :代码中动态申请的内存,由于申请方式不同,统计的方式也可能不同,例如:使用vmalloc和kmalloc申请内存,统计方式就不同;cat /proc/meminfo 查看vmallocUsed 项,cat /proc/vmallocinfo 中查看单个KO的内存占用。/proc/modules显示的size包括KO的init_size和core_size,少于实际静态占用,可通过以下节点查看分别大小。lsmod打印的KO列表中有个size属性,表示KO内存占用。
2024-02-28 16:12:23
370
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人