- 博客(16)
- 收藏
- 关注

原创 工具 | modbus-utils(linux平台的modbus调试软件)
modbus-utils(linux平台的modbus调试软件)Modbus client and server command line tools based on libmodbus.代码仓库编译for ubuntu:sudo apt install libmodbus-devfor buildroot:BR2_PACKAGE_LIBMODBUS=ybuilding:$ cd modbus_client$ gcc -o modbus_client modbus_client.c
2020-12-31 18:03:51
13069
12
原创 OpenWRT | Uloop编程技术
uloop_timeout_add 与 uloop_timeout_set 功能类似,使用需确保 uloop_timeout 提前设置了超时时间。uloop 监听文件描述符时,flags 常用有两个取值:ULOOP_READ,ULOOP_WRITE。不支持多线程 uloop,因为 uloop 使用了全局变量来共享数据。
2024-03-28 10:19:07
638
1
原创 OpenWRT | Ubus编程技术
OpenWRT的是进程间通信的通用框架。在项目开发中,利用该技术可以将消息,从一个进程发送给另一个进程,它有封装的API,易于使用与理解的demo。避免了去编写非常底层的进程间通信代码(比如Linux中常用的进程间通信方法,管道,信号量,套接字),可以专注于逻辑实现。
2024-03-28 10:07:50
2384
原创 C++ | 什么时候使用虚函数和纯虚函数
C++ 在类中的成员函数存在三种声明方式,分别是。假设有个继承上面的类。父类规定子类的接口和缺省实现父类规定子类需要实现的接口,但纯虚函数也可以拥有自己的实现,可以用来作为缺省实现。
2024-01-15 19:58:12
435
原创 busybox | 添加第三方源码库
这里以添加 libhl 库为例:创建 libhl 目录,将 *.c 复制到 libhl,将 *.h 复制到 include 目录创建 libhl/Kbuild.src,内容为:# Makefile for busybox## Copyright (C) 1999-2005 by Erik Andersen <andersen@codepoet.org>## Licensed under GPLv2, see file LICENSE in this source tree.l
2022-01-23 14:57:06
624
原创 busybox | 更改安装目录为/usr/local/bin
补丁diff --git a/libbb/appletlib.c b/libbb/appletlib.cindex 03389f5..7520d6d 100644--- a/libbb/appletlib.c+++ b/libbb/appletlib.c@@ -651,6 +651,7 @@ static void check_suid(int applet_no) # if ENABLE_FEATURE_INSTALLER static const char usr_bin [] ALIGN
2022-01-23 14:43:01
1120
原创 busybox | 添加自定义命令
基于busybox V1.35.0修改方法创建 my_utils/hello.c//usage:#define hello_trivial_usage//usage: "[-fF]"//usage:#define hello_full_usage "\n\n"//usage: "This is some description about your tools\n"//usage: "\n -h help"//config:config HEL
2022-01-23 14:29:51
1315
原创 Linux驱动 | 浅谈 Per-CPU 变量在统计网络收发报文的应用
为何要引入 Per-CPU 变量(1)spin_lock 空转 CPU在内核开发中,为了实现临界资源的互斥,我们常常直接使用 spin_lock,来实现临界区的保护,但是 spin_lock 实际上是一种忙等待锁。当锁不可用时,CPU会空转来等待资源可用。(2)当锁的数量达到上千个时,并发容易死锁当内核要维护的锁的数量急剧增加,由于锁争用的存在,并发情况下,spin_lock 进入死锁的概率会变高。Per-CPU 变量的原理Per-CPU变量,顾名思义,就是将某个变量,将其分 n 份存储在对应的
2022-01-15 00:45:33
622
原创 Linux系统安装 | 个人办公电脑 | 安装和配置Manjaro Gnome教程
文章目录一、获取Manjaro Gnome?1,获取官网镜像:[https://manjaro.org/downloads/official/gnome/](https://manjaro.org/downloads/official/gnome/)二、制作多系统启动盘1,安装Ventoy2.读入数据总结一、获取Manjaro Gnome? PS:Manjaro 的官方版本有 Gnome、Xfce、Kde,我个人喜欢简洁、配置简单的操作系统,所以选择了Gnome作为自己的办公环境1,获取官网镜像:h
2021-12-06 22:23:23
2186
原创 Linux驱动 | 调试宏和多平台兼容的Makefile
调试宏将头文件driver.h包含到驱动文件中。drvier.h#ifndef __SCULL_H__#define __SCULL_H__#ifdef EN_DRIVER_DEBUG #ifdef __KERNEL__ //处于内核空间 #define PDEBUG(fmt,args...) printk(KERN_DEBUG fmt,##args) #else //处于用户空间 #define PDEBUG(fmt,args..
2021-08-01 16:31:47
263
翻译 procd | 最简单的procd服务脚本
文章翻译自:https://openwrt.org/docs/guide-developer/procd-init-script-example配置假设我们想要创建一个服务,该服务在服务超时时进行消息提示,定时提醒我们从办公桌起身活动下。我们的服务名称是myservice,它依赖下面的脚本:/var/myscript.sh#!/bin/shif [ "$1" = '' ]; then name="You"else if echo "$1" | egrep -q '^[0-9]+
2021-07-20 22:34:25
2850
原创 Linux驱动 | Linux中断下半部机制
1、Linux中断Linux中断分为两部分:上半部和下半部,上半部完成紧急且能很快完成的任务,下半部完成不紧急且比较耗时的任务。1.1、特征1,上半部和下半部都处于中断上下文中,不能调用任何可能调度的函数(意味着不能睡眠)。2,下部分的执行必须保证其原子性。硬件中断发生时,内核禁止了抢占,中断上半部被执行。上半部执行完成后,在执行下部分前,重新启用了中断,意味着在下部分执行时,可以被新的硬件中断抢占,意味着需要对中断上半部与下半部的涉及的共享资源加锁。3,实现下半部的机制:tasket和工作队列
2020-05-08 19:25:14
613
原创 Linux驱动 | Linux GPIO中断(代码实操,架构mips平台mt7688)
Linux中断原理Linux内核中每个中断irq对应一个struct irq_dest结构体(注意:这里的irq是内核内部irq,不是硬件irq),每个struct irq_desc包含一条struct irqaction链表。struct irq_desc { ...... struct irqaction *action; /* IRQ action list ...
2020-05-06 23:43:22
1342
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人