- 博客(11)
- 资源 (1)
- 收藏
- 关注
原创 C++有锁safequeue介绍和实现
所有要抽象一个safequeue类,基于std::queue实现队列,通过互斥锁+条件遍历,实现线程安全。由于std::queue不是线程线程安全的,多线程push,pop,emtpy操作都是不安全的。除此之外增加一些额外的功能比如非阻塞的try_pop,阻塞超时返回的timeout_pop。push使用了完美转发,因为std::queue的push支持移动语义,可以push右值。
2024-04-14 14:50:26 401 1
原创 基于C++的ringbuffer环形队列
它与普通队列的不同之处在于,当队列尾部到达数组的末尾时,下一个元素会被放置在数组的开头,实现循环的效果,从而节省空间。插入操作时,尾指针向前移动,元素被插入到尾指针指向的位置。如果尾指针到达数组末尾,则将其置为数组开头。这种数据结构的优点是能够有效地利用固定大小的数组空间,并且支持高效的入队和出队操作。然而,由于其固定大小的特性,一旦队列已满,再插入元素会导致队列溢出。环形队列通常由一个固定大小的数组和两个指针(头指针和尾指针)组成。头指针指向队列的第一个元素,尾指针指向队列最后一个元素的下一个位置。
2024-04-13 21:24:52 716
原创 linux下vscode+gdbserver远程调试arm-linux嵌入式设备
----------------------------此时vsode完成配置-------------------------------------嵌入式linux软件开发过程中需要依赖硬件运行环境,为了方便debug调试,使用vscode+gdbsever完成该需求,可以高效进行开发。5:修改 "miDebuggerServerAddress"为gdbserver的ip和端口,端口可以随意指定(除22 ssh专业端口)9:vscode中按F5开始调试,命中断点,可进行调试。2:复制下方内容并替换。
2023-09-12 18:10:52 465
原创 TC8 ARP_33测试用例Fail记录--基于Linux TCP/IP协议栈
查阅网上资料,Linux TCP/IP协议栈默认只缓存自身请求的MAC地址,要支持未经请求的ARP,通过配置/proc/sys/net/ipv4/conf/eth0/arp_accept为1来实现。但是测试的方法比较特殊,用到了一种开发过程中比较少见的免费ARP报文(gratuitous arp),这种ARP报文的特点是“自问自答”,如下图所示。修改后复测,通过UT指令,让DUT发送一条UDP单播到10.0.0.50,不再发出ARP请求MAC地址,直接发出,测试用例通过。
2023-06-26 15:29:54 387
原创 uboot命令行启动kernel
1:开机停留在uboot界面,即uboot处于board_r.c中的run_main_loop()的死循环中。2:确保rootfs,kernel和dts已烧写在emmc或者sd卡。
2023-06-16 12:51:53 656
原创 使用Linux开源ptp遇到的项目问题
根据Pdelay_Resp和Pdelay_Resp_Follow_Up中的requestingSoucrePortIdentiy字段,过滤掉Master给其他Slave节点回复的Pdelay_Resp和Pdelay_Resp_Follow_Up。Master节点供应商反馈是switch中存在其他Slave节点发Pdelay_Req,Master节点会响应Pdelay_Resp,由于在Gptp在MAC层,所以本Slave节点也会收到其他节点的Pdelay_Resp。
2023-06-15 15:08:07 786 1
原创 一种车载linux ECU节点同时支持gptp时间同步和gps时间同步的方法
开发过程中,嵌入式linux设备需要同步时间至GPS时间域,同时也要通过gptp同步至外部ECU的时间域。采用开源的gptp协议栈,会将系统时间修改(时钟源为CLOCK_REALTIME)所以内部同步到GPS的时间线不能与之重叠。
2023-06-15 14:40:33 528
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人