【T113】buildroot增加app

发布时间:2026/10/30 15:44:37

【T113】buildroot增加app 文章目录新增app源码monitor_usb.cMakefilebuildroot 配置Config.inmonitor_usb.mkplatform/config/buildroot/Config.inplatform/config/buildroot/platform.mkbuildroot/buildroot-201902/configs/sun8iw20p1_t113_defconfig配置程序为默认启动S92monitor_usb.sh原文链接https://lixiaogang03.github.io/2023/12/05/Buildroot-Add-App/新增app源码目录t113_linux/platform/apps/monitor_usb$ tree.├── Makefile └── monitor_usb.cmonitor_usb.c#includeunistd.h#includestdio.h#includestring.h#includelibudev.h#includestdlib.h#includesys/reboot.h/** * swupdate ota */voidswupdate_ota(){constchar*filename/mnt/usb/sda1/update.swu;intresultaccess(filename,F_OK);if(result0){intresponsesystem(swupdate -v -i /mnt/usb/sda1/update.swu -e stable,now_A_next_B);if(response-1){printf(Failed to execute swupdate command\n);}else{printf(Rebooting the device...\n);sync();// 同步磁盘上的数据if(reboot(RB_AUTOBOOT)-1){printf(Failed to reboot the system\n);}}}else{printf(/mnt/usb/sda1/update.swu does not exits\n);}}intmain(){structudev*udev;structudev_monitor*mon;structudev_device*dev;intfd;/* 初始化 udev */udevudev_new();if(!udev){fprintf(stderr,Cant create udev\n);return1;}/* 创建 udev 监听器 */monudev_monitor_new_from_netlink(udev,udev);if(!mon){fprintf(stderr,Cant create udev monitor\n);return1;}/* 设置要监听的事件类型 */if(udev_monitor_filter_add_match_subsystem_devtype(mon,block,disk)0||udev_monitor_enable_receiving(mon)0){fprintf(stderr,Cant filter block subsystem or enable receiving\n);return1;}// 获取文件描述符fdudev_monitor_get_fd(mon);/* 循环监听并处理事件 */while(1){// 使用 select 系统调用来等待设备事件或超时fd_set fds;FD_ZERO(fds);FD_SET(fd,fds);structtimevaltimeout;timeout.tv_sec5;// 设置超时时间为 5 秒timeout.tv_usec0;// 使用 select() 设置超时时间if(select(fd1,fds,NULL,NULL,timeout)0){printf(Error waiting for device event\n);continue;}if(FD_ISSET(fd,fds)){// 当设备事件发生时从监视器接收设备对象devudev_monitor_receive_device(mon);if(devNULL){printf(Invalid device received from udev monitor\n);continue;}constchar*actionudev_device_get_action(dev);constchar*devpathudev_device_get_devnode(dev);printf(Action: %s, Device Path: %s\n,action,devpath);if(strcmp(add,action)0){swupdate_ota();}udev_device_unref(dev);}else{// 没有设备事件发生// printf(No device events received\n);}}/* 清理资源 */udev_monitor_unref(mon);udev_unref(udev);return0;}MakefileOBJSmonitor_usb.o OUT_BINmonitor_usb all:$(OBJS)$(CC)$(LDFLAGS)-g-o$(OUT_BIN)$^ %.o: %.c$(CC)$(CFLAGS)-c-o$$.PHONY: clean clean:rm-rf*.orm-rf$(OUT_BIN)rm-rf$(shellfind-name*.d)buildroot 配置t113_linux/platform/config/buildroot/monitor_usb$ tree.├── Config.in └── monitor_usb.mkConfig.inconfig BR2_PACKAGE_MONITOR_USB boolmonitor_usbselectBR2_PACKAGE_EUDEVhelpmonitor usbmonitor_usb.mk################################################################################## monitor usb#################################################################################MONITOR_USB_SITE_METHODlocalMONITOR_USB_SITE$(PLATFORM_PATH)/../../apps/monitor_usb MONITOR_USB_LICENSEGPLv2, GPLv3 MONITOR_USB_LICENSE_FILESCopyright COPYING MONITOR_USB_DEPENDENCIESudev MONITOR_USB_LDFLAGS-L$(TARGET_DIR)/usr/lib/-ludevdefine MONITOR_USB_BUILD_CMDS$(MAKE)CC$(TARGET_CC)CFLAGS$(MONITOR_USB_CFLAGS)\LDFLAGS$(MONITOR_USB_LDFLAGS)-C$(D)all endef define MONITOR_USB_INSTALL_TARGET_CMDS$(INSTALL)-D-m0755$(D)/monitor_usb$(TARGET_DIR)/usr/bin endef$(eval$(generic-package))platform/config/buildroot/Config.insource../../platform/config/buildroot/monitor_usb/Config.inplatform/config/buildroot/platform.mkinclude${PLATFORM_PATH}/monitor_usb/monitor_usb.mkbuildroot/buildroot-201902/configs/sun8iw20p1_t113_defconfigBR2_PACKAGE_MONITOR_USBy配置程序为默认启动t113_linux/platform/framework/auto/rootfs/etc/init.d$ tree.├── rcK ├── rcS ├── S01syslogd ├── S02klogd ├── S05mount_userdata ├── S10udev ├── S20urandom ├── S30dbus ├── S40network ├── S50bluetooth ├── S50postgresql ├── S52_4G-Daemon.sh ├── S80dnsmasq ├── S90alsa.sh └── S92monitor_usb.shS92monitor_usb.sh#!/bin/shcase$1instart)echoStarting monitor_usb/usr/bin/monitor_usb;;stop)echoStopping monitor_usbkillallmonitor_usb;;restart)$0stop$0start;;*)echoUsage:$0{start|stop|restart}exit1;;esacexit0
延伸阅读

更多相关文章

2026/10/30 15:44:37

#FastReport .NET 设备日报,数据怎么接进模板?

设备运行日报接入现有工业 IoT 平台时,可以先明确一条链路:业务服务按设备、日期和班次查询并整理结果,再把数据交给 FastReport .NET,最后由报表模板组织展示并提供预览、导出。 FastReport .NET 是报表组件。在本文场景中&#…

2026/10/30 15:44:37

Drools 7.48.0.Final企业级规则引擎实战指南

简介:本资源为 Drools 规则引擎 7.48.0 Final 正式发行版的完整分发包,面向 Java 开发者、企业级规则系统架构师及业务规则管理(BRMS)实践者,用于快速集成轻量级、可扩展的规则推理能力至 Spring Boot、Quarkus 等现代…

2026/10/30 16:34:58

微信小程序+SpringBoot刷题系统毕业源码

简介:本资源是一套完整的微信小程序SpringBoot双端刷题系统毕业设计源码,面向计算机专业本科生、Java与前端初学者及毕设开发者,解决在线学习平台从0到1的全栈开发实践问题。资源包共773个文件,涵盖101个Java后端业务逻辑与实体类…

2026/10/30 16:34:58

校园拍卖系统Spring Boot+MySQL源码部署与核心逻辑详解

简介:基于 Spring Boot 与 MySQL 的校园在线拍卖系统,面向高校毕业设计、课程设计及需要快速搭建拍卖类项目的开发者。压缩包共含 839 个文件,其中既包括 131 个 Java 后端类、49 个 Vue 组件、164 个 JavaScript 脚本,也包含 53 …

2026/10/30 16:34:58

Linux系统稳定性验证:stress压力测试原理与实战指南

简介:本资源为Linux系统级压力测试工具stress的源码发布包,面向Linux系统管理员、运维工程师及性能调优学习者,用于快速部署、编译与定制化使用该轻量级稳定性验证工具。资源共32个文件,涵盖configure构建脚本、Makefile系列&…

2026/10/30 16:34:58

Django教师教学质量评价系统:ORM建模、权重计算与MySQL迁移

简介:基于PythonDjango的教师教学质量评价系统毕业设计项目,面向需要完成毕业设计、期末大作业或课程设计的Python学习者和开发者,也适合想通过实战快速上手Django的初学者。项目围绕教学质量评价的核心流程,将前端展示、后端业务…

2026/10/30 16:34:58

Java学生成绩管理系统进阶:从CRUD到高并发实战

简介:这份资源是学生成绩管理系统的进阶版完整Java源码,面向具备一定Java Web基础、希望深入理解企业级分层架构的开发者与课程设计者,可用于二次开发、毕业设计参考或框架整合练习。项目采用SpringSpringMVCMyBatis作为后台核心,…

2026/10/29 17:05:52

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/29 17:06:02

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/29 17:06:13

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/30 0:00:46

NCP1342高频准谐振反激控制器:从设计约束到验收的完整方案

简介:NCP1342 高频准谐振反激控制器应用介绍译文文档,面向电源设计工程师、硬件研发人员及开关电源学习者,帮助读者跨越英文原版资料的语言门槛,系统理解这款高集成度 QR Flyback 控制器的设计要点。文档围绕芯片核心特性展开&…

2026/10/30 0:00:46

NCP1342准谐振反激电源设计:从选型到验收的全流程解析

简介:这份文档面向电源设计工程师与开关电源学习者,系统梳理NCP1342高频准谐振反激控制器的应用要点,帮助读者快速理解这款高集成度离线电源变换器控制芯片的工作机制与设计方法。内容涵盖芯片核心特性、引脚功能定义、电气特性参数表、最大额…

2026/10/30 0:00:46

Web系统自动登出机制设计与实现全解析

1. 系统自动登出机制的设计初衷在各类Web应用和后台管理系统中,自动登出功能早已成为标配。这个看似简单的功能背后,实际上涉及用户安全、资源管理和体验优化的多重考量。作为从业十多年的老开发,我见过太多因为登出逻辑设计不当导致的安全事…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑