linxu-kernel-syscall
参考文章『 Linux 』“ 一切皆文件 “https://blog.csdn.net/2202_75303754/article/details/138967355
系统调用的基本概念在linux中,操作系统负责硬件资源的封装,任务的创建、调度、读写磁盘
μc/os中,采用OSinit-OSTaskCreate-创建一个任务
Linux中,拥有权限管理来保证安全,划分内核态和用户态。通过系统调用,让APP某些运行陷入到内核态,以此来访问硬件设备
软中断权限管理
程序的用户态、内核态
操作系统+ CPU软中断:swi/svc
CPU的运行级别:普通权限(普通运行)、特权(陷入到内核态)
ARM32:
普通模式:User
特权模式:FIQ、IRQ、SVC、ABT、UND
ARM64:EL0、EL1、EL2、EL3
X86:ring0 ~ ring
系统调用号
ARM:swi、svc
ARM : swi、svc
系统调用接口:read、write、printf
内核中的实现:sys_read、sys_write
系统调用号:
32位ARM:3、4
64位ARM:0、1
...
linxu-kernel-module
参考文章知乎https://zhuanlan.zhihu.com/p/666861211
CSDNhttps://zhuanlan.zhihu.com/p/666861211
githubhttps://zhuanlan.zhihu.com/p/666861211
软件分层思想
BSP:嵌入式底层系统开发,调试程序,让特定的系统跑在特定的板子上,具体的工作包括调Bootloader程序,加载操作系统内核,文件系统的加载,外设驱动程序的开发。
驱动开发:驱动与底层硬件直接打交道,充当了硬件与应用软件中间的桥梁。
应用层:网络服务层、文件系统、虚拟化
基础服务:进程、内存管理、VFS、中断、任务调度
模块化设计
更细粒度的模块划分、模块依赖
功能、模块、子系统、框架
Linux内核中的OOP思想
结构体
函数指针
宏内核与微内核
宏内核:宏内核将操作系统的所有核心功能集中到一个大的内核空间中,所有服务(如设备驱动、文件系统、内存管理等)都运行在内核态,紧密集成在一起。这种设计简化了模块间的交互,提高了性能,但增加了复杂性和维护难度。
微内核:微内核只保留最基本的系统功能,如 ...
嵌入式系统启动流程
嵌入式linux的一般启动过程
巡检机器人项目经历
项目背景在本项目中,我们采用鸟瞰视角的3D视觉算法BEVDet,设计并实现了一款巡检机器人。该机器人主要用于变电站的路径规划和杂物检测,确保变电站的安全和高效运行。
技术选型与部署
3D目标检测算法选取与部署
选择了BEVDet算法,该算法在鸟瞰视角下的3D目标检测中表现出色。
使用TensorRT对模型进行量化,以提高模型的推理速度和效率。
在ROS(Robot Operating System)中部署了BEVDet算法,确保其能够在机器人平台上稳定运行。
ROS节点开发与测试
参与了模型部署ROS节点的编写及测试,确保模型能够在ROS环境中正确运行。
编写了六路海康威视GSM摄像头与算力板的通信及数据采集模块,实现了图像的高效预处理。
数据通信实现
实现了算力板与下层无人车底层控制系统的数据通信,确保了机器人能够根据检测结果进行路径规划和动作控制。
项目成果
路径规划:机器人能够根据BEVDet算法检测到的3D目标,动态规划最优路径,避免障碍物。
杂物检测:机器人能够准确检测变电站内的杂物,及时报告异常情况,确保变电站的安全。
系统集成:通过ROS节点的开发和测 ...
linux-kernel-compile
参考文章内核模块https://blog.csdn.net/weixin_45093118/article/details/139397775
Linux kernel开发模式
如何构建kernel
获取配套的交叉编译工具链
SOC原厂提供:NXPST Rockchip Amlogic Allwinnertech 等
社区下载:Linrao Debian ARM Bootlin下载kernel源码
获取Linux Kernel主线LTS源码
Git方式获取: git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
压缩版下载: https://mirrors.edge.kernel.org/pub/linux/kernel/获取芯片原厂Kernel源码
Host下配置开发环境
安装必要依赖包
解压配置合适的工具链
指定编译板子配置文件
make BOARDNAME defconfig
编译
编译内核镜像 make -jN
编译设备树 make dtbs
编译安装模块驱动 ...
arm架构
跟踪日志
2024//
2024//
2024//
参考文章参考文章https://zhuanlan.zhihu.com/p/666861211
ARMARM1 CPU内部运行的原理图ARM架构,过去称作高级精简指令集机器,是一个精简指令集(RISC)处理器架构家族,其广泛地使用在许多嵌入式系统设计。由于节能的特点,其在其他领域上也有很多作为。ARM处理器非常适用于移动通信领域,符合其主要设计目标为低成本、高性能、低耗电的特性。另一方面,超级计算机消耗大量电能,ARM同样被视作更高效的选择。
ARM架构版本从ARMv3到ARMv7支持32位空间和32位算数运算,大部分架构的指令为定长32位(Thumb)指令集支持变长的指令集,提供对32位和16位指令集的支持),而2011年发布的ARMv8-A架构添加了对64位空间和64位算术运算的支持,同时也更新了32位定长指令集
至2009年为止,ARM架构处理器占市面上所有32位嵌入式RISC处理器90%的比例[5],使它成为占全世界最多数的32位架构。
产品系列A - 多运行Linux系统M - 多用于单片机
ARMv7嵌入式SOC架构框 ...
qemu模拟开发板开发
参考文章如何配置 QEMU 虚拟机网络https://huaweicloud.csdn.net/6707aefbe2ce0119e0a1e3eb.html?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NjUyNDYwLCJleHAiOjE3NDA2MjcwNjIsImlhdCI6MTc0MDAyMjI2MiwidXNlcm5hbWUiOiJBX3J1b3NodWkifQ.UvK-zaDEx_il-jNwsV5R23KQ9JmvEZ0mjEbYDA-PcRU&spm=1001.2101.3001.6650.15&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Eactivity-15-129685202-blog-131290211.235%5Ev43%5Epc_blog_bottom_relevance_base4&depth_1-utm_source=distribute.pc_relevant.no ...
Buildroot
参考文章Linux发行版列表https://zh.wikipedia.org/wiki/Linux%E5%8F%91%E8%A1%8C%E7%89%88%E5%88%97%E8%A1%A8
Linux的启动过程
发行版Linux操作系统Linux发行版(也叫做GNUlinux发行版),为一般用户预先集成好的Linux操作系统及各种应用软件。一般用户不需要重新编泽,在直接安装之后,只需要小幅度更改设置就可以使用,通常以软件包管理系统来进行应用软件的营理,Linux发行板通常包含了包括桌面环境办公包、媒体播放器、数据车等应用软件。这些保作系统通总由Linux内核、以及来自GNU计划的大量的函数库,和基于x Window或者Wayland的图形界面。
Debian系列Debian及其派生发行版使用deb软件包格式,并使用dpkg及其前端作为软件包管理器。旗下最著名的就是Ubuntux系列和国内优麒麟和Deepin
Red Hat系Red Hat Linux和SUSE Linux是最早使用RPM格式软件包的发行版,如今RPM格式已广泛运用于众多的发行版。旗下最著名的是CentOS
GNU和L ...
无线链路Wifibroadcast
参考文章参考文章https://zhuanlan.zhihu.com/p/666861211
远程无线编写通过无线网卡接收带有 radiotap 头的 802.11 数据包,并进行解析、过滤、FEC(前向纠错)、加密解密等处理。我们可以将其划分为几个模块来分析其功能和设计思路。
🧩 模块结构概览
模块
类名
主要职责
接收器
Receiver
负责打开网卡设备、设置混杂模式、过滤特定数据包、循环读取原始数据包
聚合器
Aggregator
负责 FEC 解码、数据包去重、会话密钥管理、丢包恢复等
数据流
-
实际上聚合器还负责将数据流输出到指定的目的地
🔍 Receiver 类详解构造函数:初始化网卡Receiver::Receiver(const char *wlan, int wlan_idx, uint32_t channel_id, BaseAggregator *agg, int rcv_buf_size)
使用 pcap_create() 创建一个 pcap 设备。
设置混杂模式(promiscuous mode)、超时时间、非阻塞 ...
OpenIPC开发文档
跟踪日志
2024/1/9
通过 TFTP 和 UART 逐步安装 OpenIPC 固件。
2024//
2024//
参考文章参考文章https://github.com/OpenIPC/wiki/blob/master/en/installation.md
说明核心就是利用网络摄像头,而且网络监控的市场很大,网络摄像头可选择的范围很大,可以根据主控芯片、图像传感器的型号,以及板载的串口(刷鞋固件、通信),USB(连接WIFI网卡)的情况自由选择我这里选择的是 SigmaStar SsC338Q 分辨率4K@20FPS 内置2Gb DDR3
架构:
我的工作任务:
硬件环境的搭建
openipc固件的烧写
天空端电路搭建
地面端环境的烧写
固件的编译和编译脚本
裁剪的openipc linux内核中执行启动脚本的过程
rtl8812网卡天空端驱动(内核配置的)、rtl8812au地面端驱动(开源项目)
摄像头驱动(开源的),视频编码器(闭源方案)
wfb-ng数据链路
地面端解码方案(安卓、linux、嵌入式开发板)
固件安装这里是利用的TFTP和UART来安装固件
S ...
OpenIPC
跟踪日志
2024//
2024//
2024//
参考文章参考文章https://zhuanlan.zhihu.com/p/666861211
Linux/Ubuntu20 安装 TP-link(RTL8812AU) 无线网卡驱动https://blog.csdn.net/weixin_46283523/article/details/127072929
主流视频编码器H264、HEVC、AV1之间的视频质量以及编码速度比较https://www.bilibili.com/opus/733259258149208084
参考文献[1]徐瑶.基于H.264的视频压缩技术及其在视频监控系统中的应用[D].安徽大学
引言图传系统无线图传技术即无线图像传输技术,是指不用布线(线缆)利用无线电波来传输图像数据的技术。
工作原理无线图传技术主要涉及图像采集、编码、调制、发射、接收、解调、解码和图像显示等环节。
图像采集:通过摄像头或其他图像采集设备获取图像信息。这些设备可以是专业的摄像机、监控摄像头、手机摄像头等。采集到的图像通常是模拟信号或数字信号,具体取决于采集设备的类型。当今 ...
bootloader嵌入式芯片启动过程全解析
参考文章bootloader的全面解析https://blog.csdn.net/qq_51004011/article/details/138376644
STM32 开发必备-内存地址(*****)https://zhuanlan.zhihu.com/p/648904738
STM32、GD32固件升级IAPhttps://blog.csdn.net/RMDYBW/article/details/140552321
什么是Bootloader在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。BootLoader 起到了桥梁的作用,连接了硬件启动与高级软件运行之间的环节,确保系统能够从一个初始、裸机的状态过渡到一个完整的、可操作的运行环境。
两种BootloaderMC ...
















