- 博客(13)
- 收藏
- 关注
原创 freeRTOS代码分析2-启动任务调度器
中断,定时器频率为1000 Hz,每1ms触发一次,检查是否需要进行任务切换。任务切换在OS实现中比较关键,但是实现并不复杂。设置PendSV和SysTick优先级。启动SysTick定时器,实现位于文件。用于切换到当前任务,实现位于文件。启动第一个任务,实现位于文件。启动调度器,实现位于文件。启动SysTick定时器。函数调用,实现位于文件。初始化临界区嵌套计数器。返回任务被中断的位置。
2025-04-25 11:56:03
921
原创 freeRTOS代码分析1-SysTick和PendSV
根据任务状态变化,判断是否需要进行任务切换,如果需要切换,则触发(Pend)是系统定时器,用来提供系统节拍,用于实现OS最核心的功能:任务调度。都是Cortex-M3处理器提供的系统中断。的抢占优先级都被设置为15(最低优先级)。设置4位抢占优先级和4位子优先级。中定义了中断服务入口。
2025-04-22 20:44:39
756
原创 ENET例程分析(FreeRTOS+lwIP)1-初始化
以下分析基于GD32207C-EVAL开发板,芯片型号为GD32F207VCT6,Cortex-M3内核,主频最高120M Hz,256K Byte Flash,基地址为 0800 0000,128K Byte SRAM, 基地址为 2000 0000源代码为。
2025-04-20 20:16:47
834
原创 GD32F20x启动代码分析3-反汇编分析启动流程
以下分析基于GD32207C-EVAL开发板,芯片型号为GD32F207VCT6,Cortex-M3内核,主频最高120M Hz,256K Byte Flash,基地址为 0800 0000,128K Byte SRAM, 基地址为 2000 0000。
2025-04-17 18:16:12
556
原创 GD32F20x启动代码分析2-C代码部分
以下分析基于GD32207C-EVAL开发板,芯片型号为GD32F207VCT6,Cortex-M3内核,主频最高120M Hz,256K Byte Flash,基地址为 0800 0000,128K Byte SRAM, 基地址为 2000 0000。
2025-04-15 16:24:39
273
原创 在瑞芯微RK3588上部署YOLOv8目标检测模型
模型推理之后的后处理过程与模型输出和模型要完成的任务息息相关,不同模型和同一模型的不同导出方式,都会导致模型后处理差异较大。模型后处理的实现比较琐碎,出于调试和部署两方面的需要,一般要实现python和C++两个版本,两个版本对量化的处理不完全相同。但是只要对模型的网络结构特别是网络输出有比较好的理解,后处理的实现难度并不大。也可以直接加载量化之后的rknn模型文件,在主机上通过RKNN Toolkit2加载,也可以在设备上通过RKNN Toolkit-lite2加载。,可以确保glibc版本兼容。
2024-10-21 23:55:55
2086
原创 YOLO-v5模型ONNX转Caffe
将YOLOv5模型或者其他深度学习模型部署到嵌入式平台时,一般不需要将YOLOv5模型从ONNX转换为Caffe模型。一些比较老旧或者低端的处理器可能只支持转换Caffe模型,因此必须将ONNX转换为Caffe转换为Caffe模型之后可以在PC上用C/C++代码调用Caffe框架对模型进行验证和评估,在目标平台上验证要方便,便于算法迭代。YOLOv5模型中的5维转置、除法等Caffe不直接支持,可以参考YOLO算法移植,对训练好的模型进行裁剪后再导出为ONNX模型文件。
2024-05-04 16:56:25
1764
原创 安装caffe环境
有些算法基于老旧的caffe框架进行开发,对于算力有限的场景仍然有应用空间。caffe框架基于C/C++开发,源码逻辑清晰,便于验证和移植到嵌入式平台。一些老旧的嵌入式处理器的模型转换工具仅支持输入caffe模型文件。以上这些都是caffe框架的常见使用场景。由于caffe框架过于老旧,依赖的库大都也比较老旧,库之间的依赖关系经常缺失导致安装失败,直接在主机上安装caffe环境常常会引起依赖库之间的版本冲突。这里用docker安装caffe环境,可以很方便地迁移。
2024-05-03 15:15:30
1558
5
原创 YOLOv8实例分割算法移植
mask特征图和mask proto做矩阵乘法得到输入尺寸1/8的mask。由于mask尺寸是输入尺寸的1/8,输出mask信息(例如在原始图像上叠加)时要同时考虑resize和padding的影响。可以看出实例分割的输出与关键点检测的输出在某种程度上是对应的,相应地,裁剪/导出、后处理也有相通的地方。Segment检测头在Detect检测头的基础上增加cv4分支用于预测关键点。Segment检测头的Proto分支用于计算mask proto。Segment检测头的源代码位于文件。
2024-04-17 23:00:00
2345
原创 YOLOv8目标检测算法移植
由于YOLOv8是anchor-free模型,因此不像YOLOv5的每个输出尺度中需要分三种anchor分别对每个grid进行过滤和转换,也就是YOLOv8的后处理少了anchor这一层循环,仅需要处理batch, height, width三层循环。出于平衡小目标和大目标的目标框尺寸的误差的需要,YOLOv5的目标框损失函数对目标框尺寸(wh)取平方根,这也是YOLOv5检测头计算wh时取平方的原因。小目标的目标框尺寸的偏移1像素产生的误差,比大目标的目标框尺寸偏移1像素产生的误差要大。
2024-04-16 19:30:00
1522
1
原创 YOLOv5算法移植
移植之前先要先创建数据集并训练得到权重文件(runs/train/expxx这里用缺省COCO 80分类的预训练模型作为示例。
2024-04-15 23:31:01
1804
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人