高危工作环境中人员安全装备佩戴检测系统
项目背景 随着工业化和城市化的快速发展,高危行业(如建筑、电力、矿山、危废处置等)的安全事故频发,人员安全防护问题备受关注。据统计,我国每年因未正确佩戴安全装备(如安全帽、绝缘手套等)导致的事故占工业事故的30%以上,要想预防此类事故的发生,就得做到提早发现、提前预防、尽快处理。基于以上背景,本项目的主要目的是设计并实现一个基于深度学习目标检测技术的高危环境中施工人员安全装备佩戴检测系统。 系统设计方案 本项目采用“多进程预处理+主进程协同”的异构架构,核心创新点在于将计算密集型任务(LIME图像增强)与模型推理任务(YOLO)解耦。具体流程如下:通过工业级摄像头获取视频,存入系统内存中。主进程调用fork函数生成4个子进程,通过多核并行化与算法-硬件协同优化,有效解决了传统单线程处理中的计算瓶颈问题,为高危环境下的工作人员安全装备佩戴检测提供了可靠的工程化解决方案。 技术方案系统平台硬件平台 本项目设计的高危工作环境中人员安全装备佩戴检测系统整体基于飞腾派开发板实现的,主板处理器采用飞腾定制四核处理器,该处理器兼容ARM V8指令集,包含2个FTC664核和2个FTC310核...
镜像烧录+ssh远程登录
1.系统安装1.1启动设置选择SD卡启动,首先需要将启动拨码开关配置成SD卡启动模式,配置方法如下图: 1.2镜像下载**下载地址:**通过如下百度云盘链接或者联系销售获取到镜像,镜像链接:https://pan.baidu.com/s/1pStiyqohrB3SxHAFFk8R6Q 提取码:dzdv ==注意:==镜像需下载对应内存大小的版本,目前 4GB DDR使用长鑫存储( CXMT)的颗粒 ,2GB DDR使用兆易创新( GigaDevice)的颗粒,如果不清楚开发板是哪个容量的 DDR,可通过DDR颗粒的上丝印字样来判断。我们拿到的是最拉的板子4GB的V2.2版本的开发板。 4GB-V2.2可以选择的镜像:(按照更新的时间来排序的) xfce_v2.1_4GB_231116.tar.gz xfce_v2.1_4GB_240123.tar.gz 飞腾派v2.1_4GB_240517.tar.gz 本次项目选择的是xfce_v2.1_4GB_240123.tar.gz,不新不老。 1.3镜像烧录准备一张存储空间 32G以上的 SD卡...
常见问题
1.关机断电后无法进入桌面检查系统中实际安装的显示管理器,终端输入: 12# 列出所有显示管理器服务systemctl list-unit-files | grep -i display-manager 解决步骤1尝试修复原本的显示管理器当前默认的显示管理器是 sddmsddm(Simple Desktop Display Manager)。这表明系统使用的是 SDDM 1.1检查 SDDM 状态(如果 SDDM-pkg完整未损坏或丢失)终端中输入: 1sudo systemctl status sddm 如果 SDDM 没有运行尝试重新启动它: SDDM显示dead 1sudo systemctl start sddm 如果 SDDM 启动失败,查看具体的错误信息: 1journalctl -xe | grep sddm 问题: 如果该服务禁用了 服务禁用 启动 sddm 时失败 要取消对 sddm.service 的 mask,执行以下命令: 1sudo systemctl unmask sddm 1sudo systemctl status sddm ...
开发环境配置
环境配置本项目使用的是飞腾官方提供的镜像xfce_v2.1_4GB_240123.tar.gz,系统是ubuntu20.04,python3.9.5 建议使用Anaconda3配置一个虚拟环境,如果出错可以轻松从头再来,但本次为了懒得再安装一次系统本身自带的配置,于是没有采用该方法。但在最后讲了应该如何在飞腾派中安装anaconda3并配置虚拟环境,有兴趣的话可以试一下。 Python3.9安装飞腾派镜像默认下载了python3.8,但是本次项目拟采用python3.9,固需要升级 1.通过系统包管理器安装在 Ubuntu 20.04 上,可以通过以下步骤安装 Python 3.9: 更新包管理器索引: 1sudo apt update 安装 Python 3.9: 1sudo apt install python3.9 python3.9-distutils 验证安装: 1python3.9 --version 2.设置默认 Python 版本(可选)如果你想让 python3 命令默认指向 Python 3.9,可以创建一个符号链接: 123sudo update-a...
基于I.mx6ull项目的内存管理分析
基于I.mx6ull项目的内存管理分析内存管理的原因一般Cortex-A芯片自带的RAM很小,I.MX6U只有128KB的OCRAM。如果要运行Linux的话完全不够用的,所以必须要外接一片RAM芯片,i.MX6ULL作为一款 Cortex-A7 核心的处理器,配套的DDR3内存大小在512MB。这与服务器动辄几十GB的内存相比非常有限,因此绝对不能有内存浪费。 RAM/ROMROM只读存储器,速度慢,但是容量大、掉电以后数据不会丢失、适合存储数据。 RAM随机存储器,可以随时进行读写操作,速度很快,掉电以后数据会丢失。比如内存条、SRAM、SDRAM、DDR等都是RAM。RAM一般用来保存程序数据、中间结果 SRAMSRAM 的全称叫做Static Random-Access Memory,也就是静态随机存储器,Memory,也就是静态随机存储器,这里的“静态”说的就是只要SRAM上电,那么SRAM里面的数据就会一直保存着,直到SRAM掉电。价格高、容量小 SDRAMSDRAM全称是Synchronous Dynamic Random Access Memory,翻译...
驱动开发-SPI
SPI原理SPI(Serial Peripheral Interface)是一种高速、全双工、同步的串行通信协议。它广泛用于连接微控制器与外部设备,如传感器、存储器等。 SPI特点 特性维度 SPI (Serial Peripheral Interface) 信号线数量 至少4根线:MOSI(主出从入)、MISO(主入从出)、SCLK(时钟)、CS(片选,每个从机独享一根) 拓扑结构 点对点型:主设备与每个从设备都有独立的片选线连接。 通信模式 全双工:发送和接收可以同时进行。 数据传输 无应答机制:主设备产生时钟,从设备被动跟随,无法确认数据是否被成功接收。 速度 速度非常高(通常50Mbps以上),几乎只受限于硬件性能。 软件复杂度 软件简单:本质上是简单的移位寄存器,主要靠硬件实现。 硬件复杂度 硬件复杂:线多,尤其是从设备多时,需要大量片选线,占用大量IO口。 主要应用场景 高速器件(如我的项目中的ICM20608陀螺仪)、Flash存储器、显示屏、ADC/DAC等。 四种工作模式 通过串行时钟极性(CPOL)和**相位...
驱动开发-I2C
I2C原理I2c基础知识Inter Integrated Circuit 串行总线的缩写,是 PHILIPS 公司推出的芯片间串行传输总线。它以 1 根串行数据线( SDA )和 1 根串行时钟线( SCL )实现了半双工的同步数据传输。具有接口线少,控制方式简化,器件封装形式小,通信速率较高等优点。在主从通信中,可以有多个 I2C 总线器件同时接到 I2C 总线 上,通过地址来识别通信对象。IIC 接口的协议里面包括设备地址信息,可以同一总线上连接多个从设备,通过应答来互通数据及命令。但是传输速率有限,标准模式下可达到 100Kbps ,快速模式下可达到400Kbps (我们开发板一般在 130Kbps ),高速模式下达到 4Mbps ,不能实现全双工,不适合传输很多的数据。 **串行:**数据位(0和1)是一位接着一位,排成一队,在单一通道(一条线)上依次传输的。 同步:数据传输的节奏( timing )由一个统一的、共享的时钟信号来控制和协调。发送方和接收方都步调一致地根据这个时钟信号的跳变来发送和读取数据。 半双工:I2C只有一条数据线(SDA)。这条线要被主机和所...
kernel-sysfs文件系统介绍
sysfs文件系统 sysfs 文件系统的目录 定义:sysfs是一个基于内存的虚拟文件系统(Virtual Filesystem)。它被挂载在 /sys 目录下,是Linux内核中内核对象(kobject)、属性(attribute)和关系(relationship) 的直观体现。 核心作用:sysfs的主要作用是在用户空间(Userspace) 和内核空间(Kernelspace) 之间搭建一座桥梁,提供一个标准化的接口,使得用户空间的程序能够安全、方便地查看和配置内核的运行参数、硬件设备信息、驱动程序状态、电源管理选项等。 具体作用包括: 展示设备层次结构:以目录树的形式清晰地展示系统中总线(bus)、设备(device)、驱动(driver)、类(class)等内核对象的层次关系。 导出对象属性:将内核对象的属性(通常是变量或状态)以普通文件的形式暴露出来。用户可以通过cat命令读取属性,通过echo命令修改属性(如果该属性可写)。 支持用户空间事件:通过poll或select系统调用,用户空间程序可以监听内核发出的事件通知(例如,设备的插拔)。 特点: 层次化结...
linux内核启动
linux内核启动流程start_kernelstart_kernel是所有 Linux 平台进入系统内核初始化后的入口函数,它主要完成剩余的与 硬件平台相关的初始化工作,在进行一系列与内核相关的初始化后,调用第一个用户进程 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164...
uboot
U-BootLinux系统要启动就必须需要一个bootloader程序,也就说芯片上电以后先运行一段bootloader 程序。这段bootloader程序会先初始化DDR 等外设,然后将Linux内核从flash(NAND,NOR FLASH,SD,MMC 等)拷贝到DDR中,最后启动Linux内核。它最主要的工作就是启动Linux内核 U-Boot的主要作用U-Boot在嵌入式系统中的核心作用主要体现在以下几个方面: 硬件初始化与管理:U-Boot负责进行Soc级(内部外设)和板级(外部外设)的硬件管理,初始化系统运行所必需的硬件,如CPU、时钟、内存(SDRAM)、串口、网卡、存储设备(如NAND Flash)等。这是内核正确运行的基础。 镜像烧录(刷机):U-Boot是系统更新的关键工具。它可以通过特定的命令配合PC端工具,完成包括U-Boot自身、内核、根文件系统等镜像的烧写。 加载并启动操作系统内核:这是U-Boot的终极使命。它会从存储设备(如Flash、SD卡)上读取操作系统内核镜像(如Linux的zImage或uImage)和可选的设备树 dtb(DTB),将...