- 博客(35)
- 收藏
- 关注
原创 中断嵌套、中断咬尾、中断晚到
• 末尾连锁(Tail-Chaining):在Cortex-M系列处理器中,若挂起的中断优先级与当前中断相同或更低,硬件会自动触发尾链机制,仅需6个时钟周期即可进入下一中断处理(传统流程需12个周期以上)。当多个中断请求连续挂起且优先级相同时,处理器会在当前中断服务程序(ISR)结束后,直接执行下一个挂起的中断处理,跳过恢复上下文(出栈)和再次保存(入栈)的步骤。• 延迟到达(Late Arriving):若高优先级中断在低优先级中断压栈过程中到达,处理器会优先处理高优先级中断,进一步减少等待时间。
2025-04-08 21:32:06
223
原创 如何解决iic地址冲突
比如,检查芯片手册确认地址引脚的存在和配置方式,连接不同的电平组合,确保地址唯一。首先,我需要回忆一下I2C总线的基本原理,地址冲突的常见解决方法,以及硬件地址引脚的具体配置方式。另外,用户可能想知道如果地址引脚不够怎么办,但根据问题描述,他们已经有A0/A1/A2,所以足够配置多个地址。总结下来,回答应该分步骤说明如何配置硬件地址引脚,强调查阅手册的重要性,正确连接电平,并验证地址的唯一性。在I2C总线上挂载两个同型号芯片时,若存在地址冲突,可通过配置硬件地址引脚(如A0/A1/A2)实现地址差异化。
2025-04-07 09:15:32
239
原创 代码覆盖率统计是否影响原有功能
在进行代码覆盖率分析时,为了证明插入的代码(例如覆盖率收集代码)对原始代码没有影响,需要仔细设计和执行一些测试和分析方法。这些方法旨在确保插入的代码不会改变原始代码的行为或性能。
2025-03-29 14:28:02
693
1
原创 RTOS优先级反转问题解决方案:优先级继承协议、优先级天花板协议区别
优先级管理机制优先级继承协议是动态调整优先级,根据任务竞争资源实时提升优先级。优先级天花板协议是静态固定的优先级提升,根据预先设定的资源天花板优先级,任务获取资源时直接提升。实时防护机制优先级继承协议主要适用于任务间竞争资源不固定、争用资源时动态调整优先级。优先级天花板协议适用于任务竞争资源固定的情形,较好地提高系统确定性,预防复杂的优先级反转和潜在导致死锁问题。适用场景优先级继承协议适用于较灵活、多变的任务调度场景,如任务优先级较多变且资源竞争不频繁。
2025-03-27 17:24:03
412
原创 测试工程 常用Python库
测试工程师需掌握核心测试框架(如pytest、Selenium)和工具库(如requests、logging),结合调试技巧(如断点、断言)和代码优化(如数据结构选择、推导式)提升效率。同时,通过自动化集成和模块化设计实现高效测试流程。
2025-03-24 22:46:56
689
原创 使用位运算实现加法、减法、乘法和除法
使用位运算实现加法、减法、乘法和除法是一个经典的计算机科学问题。位运算通常用于低级程序设计和性能优化中,以下是如何用位运算实现这些基本数学运算。
2025-03-14 20:53:08
352
原创 01_RISC-V 入门及指令集学习
参考文档risc-v入门:https://blog.youkuaiyun.com/bebebug/article/details/128039038RISC-V OS:https://blog.youkuaiyun.com/bebebug/article/details/130551378riscv-spec文档:https://riscv.org/wp-content/uploads/2019/12/riscv-spec-20191213.pdfxuantie RTOS SDK用户手册
2024-06-20 21:15:45
412
原创 Python 环境中管理 Java 代码的执行
sikulixapi_path = str(o_path) + ‘/sikulix_lib/sikulixapi-2.0.5.jar’:这里拼接了一个字符串,代表 SikuliX API 2.0.5 的 JAR 文件的路径。f"-Djava.class.path={sikulixapi_path}" 是传递给 JVM 的一个属性,设置了类路径为 sikulixapi_path 变量的值。cus_start_jvm:是定义的方法名,cus_ 前缀可能表示这是“自定义”的一个方法。
2024-04-01 20:00:28
559
原创 pytest.param作为pytest.mark.parametrize的参数进行调用
获取数据库(网页端)数据,通过pytest.param包装成数据包用于pytest.mark.parametrize 中实现数据驱动调用。pytest.param:在 pytest.mark.parametrize 中可以作为一个指定的参数进行调用。
2024-02-24 15:39:09
1147
原创 pytest测试框架之插件(hook函数)开发
pytest_collection_modifyitems()钩子函数的运行机制如下:在 Pytest 运行过程中,当测试集被收集完成后,Pytest 会检测到conftest.py文件中是否定义了 pytest_collection_modifyitems() 函数。如果 conftest.py中定义了 pytest_collection_modifyitems() 函数,Pytest 会调用该函数,并传递两个参数:config 和 items。
2024-02-24 15:31:41
1178
原创 RV新闻概要 --- 2024/02/23
芯来科技此次推出的N100在原有N200的基础上着重针对超低功耗场景进行优化,为IoT的低功耗应用提供更便捷有效的解决方案,帮助客户快速高效地完成产品设计。芯来科技N100处理器是一款基于RISC-V RV32I(E)MC/Zc并严格使用RISC-V标准指令的2级流水线单发射处理器,在超低功耗的基础上同样保持性能上的优势,拥有1.09 Dhrystone/MHz以及2.96 Coremark/MHz的性能跑分。丰富的可配置性与特性,可以满足不同的应用需求,给客户带来更多的差异化。
2024-02-23 10:51:53
452
原创 RT-Thread packages之aht10(温湿度传感器)
仓库地址:https://github.com/RT-Thread-packages/aht10。
2024-01-09 10:31:49
679
原创 RTOS CPU使用率统计原理
每个时间片侦测一次当前线程,如果当前正在运行 idle 线程,空闲计数器自增。一个周期后,计算 IDEL 线程运行时间的占比。上图展示一个周期内,某个 CPU 上线程时间片信息。假设一个方格代表一个时间片。统计单核 CPU 使用率。
2024-01-05 16:08:52
529
原创 系统调度(thread+timer+irq)
系统调度(thread+timer+irq)参考文献https://blog.youkuaiyun.com/weixin_42328389/article/details/123504395
2023-12-11 17:03:09
413
原创 Golang源码分析之sort
工程级的排序算法如何实现,所以假设各位都清楚了排序相关的一些前置知识,包括:时间复杂度分析,插入排序,希尔排序,堆排序,快速排序和Go语言的基本语法。首先需要实现Interface接口中的三个函数。排序过程中,比较和交换是必要环节,比较可以判断是否需要交换,交换可以减少逆序度(集合变有序)。实现三个函数的目的是为了实现slice和user defined cllections。比如对于复杂数据类型包含注册时间+用户活跃度等的多维度排序,可以自定义Less()。以下分析仅是个人理解。//sort的实现接口
2021-09-24 09:38:24
340
原创 库函数:memcpy 和 memmove
memcpy 和 memmove都是C语言中的库函数,在头文件string.h中,作用是拷贝一定长度的内存的内容,原型分别如下:void *memcpy(void *dst, const void *src, size_t count);void *memmove(void *dst, const void *src, size_t count); 他们的作用是一样的,唯一的区别是,当内存发生局部重叠的时候,memmove保证拷贝的结果是正确的,memcpy不保证拷贝的结果的正确。举例说明
2021-06-30 19:46:09
243
原创 Socket之linger结构体关闭TCP连接
Linux网络编程中,socket的选项很多.其中几个比较重要的选项有:SO_LINGER(仅仅适用于TCP,SCTP), SO_REUSEADDR.在默认情况下,当调用close关闭socke的使用,close会立即返回,但是,如果send buffer中还有数据,系统会试着先把send buffer中的数据发送出去,然后close才返回.SO_LINGER选项则是用来修改这种默认操作的.于SO_LINGER相关联的一个结构体如下:#include <sys/socket.h> str
2021-06-28 19:27:26
886
3
原创 socket网络编程(三)多进程通信
linux多进程目录linux多进程1、子进程创建2、通过将服务端改为多进程实现并发连接3、实验测试拓展一:僵尸进程如何解决僵尸进程拓展二:C10K问题如何解决:每个进程/线程同时处理 多个连接(I/O多路复用)解决方法总结拓展三:进程间通信1、管道2、消息队列3、共享内存4、信号量5、信号6、Socket进程就是正在内存中运行中的程序,Linux下一个进程在内存里有三部分的数据,就是“代码段”、”堆栈段”和”数据段”。”代码段”,就是存放了程序代码。“堆栈段”存放的就是程序的返回地址、程序的参数以及程
2021-05-07 15:17:25
939
原创 socket网络编程(二)封装socket函数
封装socket函数目录封装socket函数1、客户端socket封装2、服务端socket封装3、测试拓展:三次握手和四次挥手1、基础知识2、TCP 三次握手过程和状态变迁3、为什么需要三次握手而不是两次或者四次?4、TCP 四次挥手过程和状态变迁socket 编程函数很多,细节也很多 — 封装起来操作更方便和安全采用C++封装的意义主要有以下几方面。1)把数据初始化的代码放在构造函数中;2)把关闭socket等释放资源的代码放在析构函数中;3)把socket定义为类的成员变量,类外部的代码根
2021-05-06 22:38:01
1905
1
原创 Linux下实现socket网络通信(一)
socket网络编程目录socket网络编程1、服务端的工作流程2、客户端工作流程相关库函数和注意事项头文件1、socket文件描述符2.1、把服务端用于通信的地址和端口绑定到socket1、主机字节序与网络字节序2、ip地址转为网络字节序3、转换函数 htonl,ntohl,htons,ntohs2.2、地址和端口相关的结构体3、服务端程序绑定(bind)通信地址和端口4、客户端程序指定服务端的ip地址或域名(负载均衡)5、listen()、connect()、accept()1、listen函数2、c
2021-05-06 19:43:08
1951
1
原创 二叉树非递归遍历实现
二叉树遍历的非递归实现基础知识二叉树的遍历分为深度优先遍历(DFS)和广度优先遍历(BFS)。深度优先遍历:尽可能地向左(或右)进行,在遇到第一个转折点,向左(或右)一步,然后再尽可能地向左(或右)发展。这一过程重复直到访问了所以节点。树的深度优先遍历一般有三种:VLR——前序遍历(根左右)LVR——中序遍历(左根右)LRV——后序遍历(左右根)核心思路遍历时一定要搞清楚一点就是,输出都是根节点(核心思想),因此不同的遍历方式仅仅是根节点的输出时机不同。中序遍历:访问顺序为左根右。遇到节点
2021-05-06 15:57:55
515
4
原创 十大排序算法及优化 ( C++简洁实现)
十大排序算法前面的和其他博客内容大差不差,主要可以查看后几种排序算法的分析和代码实现。归并排序和快速排序为一类(使用递归);堆排序:优先队列,在刷题中使用较多;计数排序、桶排序和基数排序为一类;我看了很多博客,对于后三种都没有清晰的讲解。在搞清楚之后给大家分享,如果存在错误,请多包涵。特别需要理解计数排序中累加数组的妙处。排序算法十大排序算法特别需要理解计数排序中累加数组的妙处。0、算法概述0.1 算法分类0.2 算法复杂度1、冒泡排序(Bubble Sort,稳定)2、选择排序3、插入排序(
2021-04-26 18:59:51
2778
6
原创 一文搞懂二叉树的递归实现原理(图解)
一文搞懂二叉树的递归实现原理(图解)1、活动记录调用函数时会发生genbg什么?如果这个函数存在形参,形参就初始化为实参传递来的值。另外,函数结束后,系统要知道从哪里继续执行程序。而递归的实现就需要知道 从哪里继续执行。指示函数从何处调用的信息保存在系统中。为了做到这一点,返回地址被存储在主内存中预留的特定区域。对于函数调用来说,需要存储的信息不只是返回地址。因此使用栈进行动态分配效果会好一些。那么调用函数时,需要保存哪些信息?每个函数(包括主函数main())的状态由以下因素决定:函数中的所有局部
2021-04-13 22:15:05
6287
4
原创 socket编程实现SMTP邮件客户端
套接字编程作业3:邮件客户端1、作业描述《计算机网络:自顶向下方法》中第二章末尾给出了此编程作业的简单描述:这个编程作业的目的是创建一个向任何接收方发送电子邮件的简单邮件客户。你的客户将必须与邮件服务器(如谷歌的电子邮件服务器)创建一个TCP连接,使用SMTP协议与该邮件服务器进行交谈,经该邮件服务器向某接收方(如你的朋友)发送一个电子邮件报文,最后关闭与该邮件服务器的TCP连接。对本作业,配套Web站点为你的客户提供了框架代码。你的任务是完善该代码并通过向不同的用户账户发送电子邮件来测试你的客户
2021-04-11 14:52:00
13498
11
原创 实现基于UDP的ping程序
套接字编程作业2:UDPping程序作业描述《计算机网络:自顶向下方法》中第二章末尾给出了此编程作业的简单描述:在这个编程作业中,你将用Python编写一个客户ping程序。该客户将发送一个简单的ping报文,接受一个从服务器返回的pong报文,并确定从该客户发送ping报文到接收到pong报文为止的时延。该时延称为往返时延(RTT)。由该客户和服务器提供的功能类似于在现代操作系统中可用的标准ping程序,然而,标准的ping使用互联网控制报文协议(ICMP)(我们将在第4章中学习ICMP)。此时我
2021-04-10 21:03:41
10412
原创 socket实现简单的Web服务器
套接字编程:Web服务器基本说明《计算机网络:自顶向下方法》中第二章末尾(P119)给出了此编程作业的简单描述:在这个编程作业中,你将用Python语言开发一个简单的Web服务器,它仅能处理一个请求。具体而言,你的Web服务器将:当一个客户(浏览器)联系时创建一个连接套接字;从这个连接套接字接收HTTP请求;解释该请求以确定所请求的特定文件;从服务器的文件系统获得请求的文件;创建一个由请求的文件组成的HTTP响应报文,报文前面有首部行;经TCP连接向请求浏览器发送响应。如果浏览器请求一
2021-04-10 18:53:10
2944
4
原创 UDP和TCP套接字(socket)编程实现及原理阐述
套接字编程:生成网络应用本实验为《计算机网络 自顶向下方法》中的编程练习,通过编程实现才能更好的理解计算机如何实现连接和数据发送。1、UDP套接字编程基本说明运行在不同机器上的进行彼此通过向套接字发送报文来进行通信。当使用UDP时,必须先将目的地址附在该分组之上。目的地址包含什么?–>目的主机的IP地址和目的地套接字的端口号组成。实现如下客户–服务器应用程序:(1)客户从其键盘读取一行字符(数据)并将该数据向服务器发送。(2)服务器接收该数据并将这些字符转换为大写。(3)服务器将修改的
2021-04-09 16:10:24
6478
2
原创 科研常用的在线工具:绘图、图片放大、PDF操作、图片和PDF压缩
在线绘图工具:平常使用的流程图,我大部分都是通过processon画出来的,在线画图十分方便,几乎可以画出你想要的任何技术图,包括:流程图、思维导图、原型图、UML图、网络拓扑图、组织结构图等等。https://processon.com/图片放大神器通过在线工具绘制的流程图,经过截图可能不太清晰、分辨率较低。通过放大软件之后能满足图片格式的各种要求。https://bigjpg.com/PDF派:在线PDF神器PDF派,一个包含了20个好用PDF在线工具的网站,各种转换都不在话下
2021-03-25 09:16:06
1557
1
原创 IEEE access投稿及注意事项(初稿,回复审稿人,终稿)
IEEE access投稿历程及注意事项本博客是对自己 IEEE access 投稿从投稿到接收整个流程的记录。首次投稿1、创建账户2、创建ORCID并关联3、提交稿件一定注意每一个作者都需要关联ORCID,否则会被编辑return。具体可以参照这篇博客: 投稿中具体有以下七步:Step 1: Type, Titile, & AbstractStep 2: File UploadStep 3: AttributesStep 4: Authors & Instituti
2021-01-22 11:06:18
35521
79
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人