- 博客(15)
- 收藏
- 关注
原创 genimage.cfg映像配置文件常见语法
本文介绍了Buildroot配置文件genimage.cfg的基本结构和使用方法。配置文件通过image{name}定义输出映像,hdimage{}表示生成磁盘映像。重点说明了partition{}分区的关键参数:in-partition-table控制是否加入MBR分区表;image指定映像文件;partition-type设置分区格式;mountpoint定义打包时的源文件目录。特别指出某些参数如bootable实际作用有限,并解释了特殊固件分区不加入分区表的安全考虑。
2025-09-02 21:51:29
149
原创 FreeRTOS调度核心——SysTick、PendSV中断
本文详细分析了FreeRTOS任务调度机制,重点描述了SysTick中断和PendSV中断的处理流程。在SysTick中断中,系统会进行Tick计数处理、检查延时任务到期情况,并标记是否需要任务切换。PendSV中断则负责完整的上下文切换过程:保存当前任务现场,调用任务切换函数选择新任务,并恢复新任务运行环境。通过BASEPRI寄存器实现中断屏蔽保护关键操作,采用双延时任务链表优化管理效率,利用进程栈(PSP)保存任务上下文,实现了高效的任务调度机制。整个流程涉及硬件自动压栈、手动保存寄存器、任务优先级判断
2025-09-01 21:23:50
806
原创 FreeRTOS从上电到调度开始
本文分析了基于STM32 Cortex-M3架构的系统启动与FreeRTOS调度过程。系统上电后从Flash启动,依次执行栈初始化、系统初始化和main函数。在main函数中完成HAL库初始化、时钟配置和外设初始化后,进入FreeRTOS内核初始化阶段,包括创建空闲任务和定时器任务。最终通过SVC异常触发任务调度,由调度器接管系统控制权。文中详细描述了任务创建、低功耗模式处理、中断优先级设置等关键机制,并解释了Cortex-M架构的中断处理流程。整个启动过程最终通过SysTick和PendSV中断实现任务调
2025-09-01 17:35:31
1165
原创 ARM架构IRQ中断流程源码分析(三)
摘要:本文分析了Linux内核中断处理流程,重点描述了从asm_do_IRQ到中断服务函数调用的完整路径。详细说明了中断嵌套处理机制,包括RCU通知、中断上下文判断、tick中断处理等关键步骤。同时对比了用户态和内核态(SVC模式)中断处理的不同,特别指出SVC模式下需要临时修改地址访问权限。最后简要介绍了中断描述符查找和注册中断服务函数的执行过程,以及中断退出时的现场恢复操作。
2025-08-22 21:00:32
275
原创 ARM架构IRQ中断流程源码分析(二)
本文分析了Linux内核ARM架构下用户态中断处理流程。首先通过__irq_usr分支保存用户态上下文到pt_regs结构体,包括寄存器r0-r12、程序状态寄存器等。然后检查协处理器状态后进入中断处理程序arch_irq_handler_default,该程序读取中断号并通过寄存器r0和r1传递参数给asm_do_IRQ函数,最终由C语言实现的中断分发机制处理具体中断。整个过程完成了从用户态到内核态的切换、上下文保存和中断分发的完整流程。
2025-08-17 21:27:42
346
原创 ARM架构IRQ中断流程源码分析(一)
本文分析了基于i.MX6芯片(Cortex-A7内核)的中断处理流程。系统启动时设置VBAR寄存器指向异常向量表,硬件中断触发后自动保存现场并跳转到向量表入口。软件部分通过vector_stub宏处理异常入口,保存关键寄存器后切换到SVC模式,根据异常类型跳转到对应的处理函数(irq_usr或irq_svc)。文章详细描述了从硬件中断触发到软件处理的完整流程,重点分析了entry-armv.S中的关键汇编代码实现。
2025-08-14 17:45:49
554
原创 STM32F103型号板子使用FreeRTOS框架使能RTC秒中断的问题
最近用这老古董板子做一个小项目,这个bug de了好几天,精神状态良好^ ^....最终发现问题所在。
2024-12-27 17:43:12
284
原创 机器学习模型训练中,模型和梯度是什么?
做AI相关的工作,最离不开的就模型训练。本文主要简单介绍一下训练过程当中涉及的几种术语的本质,了解了这些,能更清晰地理解整个训练过程。
2023-12-02 11:13:06
3680
原创 Opencv学习笔记五——梯度计算
需要的库和自定义函数import cv2import numpy as npimport matplotlib.pyplot as plt def cv_show(name, mat): cv2.imshow(name, mat) cv2.waitKey(0) cv2.destroyAllWindows()一、Sobel算子对周围各点赋予权重,再计算梯度计算垂直方向梯度的权重【水平方向则是它的转置矩阵】### 函数原型void cv:.
2021-08-23 11:34:10
1254
原创 Opencv学习笔记四——图像形态学操作
需要的库和自定义函数import cv2import numpy as npimport matplotlib.pyplot as pltdef cv_show(name, mat): cv2.imshow(name, mat) cv2.waitKey(0) cv2.destroyAllWindows()一、腐蚀操作——erode对图片外围进行销蚀处理,让图像变“瘦”。可用于处理图像中的毛刺。### 函数原型void cv::erode
2021-08-20 11:31:01
736
原创 Opencv学习笔记三——图像滤波
所需模块与自定义函数import cv2import numpy as npimport matplotlib.pyplot as plt def cv_show(name, mat): cv2.imshow(name, mat) cv2.waitKey(0) cv2.destroyAllWindows()一、均值滤波均值滤波的特点就是对某个像素点附近的所有点数相加,并求平均数,得到该像素点的值,有利于图像整体的平滑处理。1.blur###
2021-08-17 21:19:33
211
原创 Opencv学习笔记二——基本图像操作
最近本人在学习OpenCV,简要地记一下笔记,课后温习的同时便于日后查阅。所用教程是唐宇迪老师的OpenCV教程,个人觉得讲解清晰易懂,附上链接:https://www.bilibili.com/video/BV1tb4y1C7j7?p=5一、截取图像当我们使用imread读取一张图片后,返回值是一个多维数组。如果采用的是3通道BGR读取,那么这个数组会是一个三维的,第一个维度表示纵向的像素点,第二个维度表示横向的像素点,第三个维度表示BGR中的通道。所以截取的时候直接使用数组切片即可。
2021-08-15 22:40:58
275
原创 Opencv学习笔记一——读取图像
最近本人在学习OpenCV,简要地记一下笔记,课后温习的同时便于日后查阅。所用教程是唐宇迪老师的OpenCV教程,个人觉得讲解清晰易懂,附上链接:https://www.bilibili.com/video/BV1tb4y1C7j7?p=5一、所需模块import cv2import numpy as npimport matplotlib.pyplot as plt二、读取图片读取图片函数——imread### C++中的函数原型 Mat imread(const
2021-08-15 11:12:40
609
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅