自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 资源 (7)
  • 收藏
  • 关注

转载 sizeof 获取 extern 数组长度

sizeof是获取数组元素个数的常用运算符::在中期望通过运算符获取中元素个数,然而这么做是错误的,编译时无法通过,错误提示类似这类。造成这一问题的原因在于,**是在编译时计算的,而C/C++的编译是以文件为基本单位的**。在编译文件时,编译器是不可能知道定义在文件中数组具体信息的,只根据文件中的声明是无法确定的具体大小的,因此,就算某些编译器编译时不报错,得到的结果也是...

2022-06-17 14:02:55 783 2

转载 linux内核启动地址的确定

内核编译链接过程是依靠vmlinux.lds文件,以arm为例vmlinux.lds文件位于kernel/arch/arm/vmlinux.lds,vmlinux-armv.lds的生成过程在kernel/arch/arm/Makefile中ifeq ($(CONFIG_CPU_32),y)PROCESSOR = armvTEXTADDR = 0xC0008000LDSCRIPT = arch/arm/vmlinux-armv.lds.inendifarch/a

2022-04-07 07:52:55 1805

原创 Linux IPC 进程间通信——信号量sem

Linux 进程间通信——信号量sem

2022-01-28 17:37:29 2127

原创 Linux IPC 进程间通信——信号signal

首先认识几个相关的信号函数,signal、kill、raise、pause。一、相关函数分析signal函数void (*signal(int signum,void(* handler)(int)))(int);说明:当前进程收到signum对应的信号之后,会执行handler指向的函数。其中signum有#define SIGHUP 1 /* Hangup (POSIX). */#define SIGINT ...

2022-01-11 10:00:45 445

原创 Linux IPC 进程间通信——消息队列message

消息队列是消息的连接表,存储在内核中。本实例主要实现消息队列方式进行进程间通信,接收端收到消息之后,立马转发给发送端;发送端发出消息之后,立马监听接收端回馈的消息,实现一个双向通信示例。一、示例发送端client.c#include <stdio.h> #include <string.h> #include <stdlib.h> #include <errno.h> #include <sys/types....

2022-01-08 16:34:29 1138

原创 Linux IPC 进程之间通信——共享内存shared Memory

服务端代码 shmServer.c#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sys/shm.h>#include <sys/types.h>#include <sys/ipc.h>#include <fcntl.h>#include <string.h>#define...

2022-01-08 09:26:43 223

原创 Linux IPC 进程之间通信——无名管道pipe实例

无名管道只限于有亲缘关系的父子进程之间进行同行#include <unistd.h> #include <sys/types.h>#include <sys/wait.h>#include <errno.h> #include <stdio.h> #include <stdlib.h> #include <string.h>int main() { int pipe_fd[2];

2022-01-06 20:07:48 1122

原创 Linux IPC 进程之间通信——有名管道FIFO实例

写端fifo_write.c#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sys/types.h>#include <fcntl.h>#include <sys/stat.h>#include <string.h>#define FIFO_PATH "/tmp/myfifo"int main(){ int pip

2022-01-06 19:43:30 746

原创 回调函数实例

callback可以实现模块之间通信,底层实现调用,上层实现具体的回调函数内容底层函数实现#include <stdio.h>int runCallback(int (*func)(int a, int b)){ int a,b; a = 3; b = 4; return func(a,b);}头文件#ifndef __RUNCALLBACK__H#define __RUNCALLBACK__Hint runCallback(i

2022-01-04 14:10:34 309

原创 Linux环境变量profile

/etc/profile:/etc/bashrc:~/.bash_profile:~/.bashrc:~/.bash_logout位置:/etc/profile作用于所有用户,用户登录时被执行,.并从/etc/profile.d目录的配置文件中搜集shell的设置.,修改后需重启生效,此修改对每个用户都生效;位置:/etc/bashrc作用于所有用户,每次启用bash shell时被执行,修改后重新打开一个shell就生效位置:~/.bash_profile作用于当前用户,用

2021-09-22 16:06:33 2602

原创 Linux 驱动创建Proc文件系统接口

目录 它有什么作用呢? 如何实现?Linux的procfs文件系统是一个虚拟文件系统,Linux不只有一个虚拟文件系统,sysfs和debugfs也是虚拟文件系统,sysfs在procfs的基础上进行了优化。虚拟文件系统在系统运行时创建,存在于内存。 它有什么作用呢?它是一种在运行时访问内核内部数据结构、改变内核设置的机制。proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。...

2021-09-09 19:47:06 935 1

原创 Linux-僵尸进程产生与处理

背景父进程创建子进程之后,父进程没有等待该子进程的退出,子进程就会成为僵尸进程,如果父进程也退出,这个时候子进程也可以被init进程回收,释放资源。如果父进程不退出,子进程占用的资源将永远不会被释放。产生以下示例是一个产生僵尸进程的典型例子#include <stdio.h>#include <unistd.h>#include <stdlib.h>int main(int argc, char **argv) { p...

2021-09-05 21:04:23 320

原创 Windows批处理执行拷贝

自动执行拷贝,先看脚本@echo offset DST=J:\set SRC=install.img if exist %DST% ( echo doing copy %SRC% %DST% .... copy %SRC% %DST%) else ( echo %DST% not exist)echo echo copy %SRC% to %DST% donepause上述文件保存为bat后缀的文件,放到你要拷贝的的目录下,当然你也可以放到任意位置,只需要修改SRC

2021-08-31 09:39:40 1175

原创 Android10 自建System API AIDL跨进程回调

以一个串口混杂类型为例,需要完成server端和client端一、Server端1、AIDL文件创建ISerialMiscService.aidl 文件// file:ISerialMiscService.aidlpackage android.os;import android.os.ISerialMiscServiceCallback;interface ISerialMiscService { void setVal(String key, String value);

2021-08-29 22:33:04 424

原创 Linux 一个简单的Makefile

.PHONY: clean testTARGET=testSRC=test.cOBJS=$(SRC:.c=.o)CC=gccCLFAGS=-g -O2LIB=-L ./lib -laddINC=-I ./inc$(TARGET):$(OBJS) $(CC) -o $@ $^ $(LIB)%.o:%.c $(CC) -o $@ -c $^ $(INC)clean: rm -rf *.o $(TARGET)

2021-08-22 22:17:16 300

原创 Linux 内核模块互调

如果有两个模块A和B,要想实现互调,必须进行声明和引用。下面以A调用B的funcA为例模块A 定义函数 void funcA(void){ ...}注意这里函数返回值不能定义为static型 声明函数为外部可用 EXPORT_SYMBOL(funcA);模块B 声明函数 extern funcA(void); 函数调用 static void funcB(void){ ... funcA();}...

2021-08-18 15:49:19 138

原创 Linux 一个简单的input设备驱动

一个简单的input设备驱动,先直接上代码#include <linux/input.h>#include <linux/module.h>#include <linux/init.h>#include <asm/irq.h>#include <asm/io.h>static struct input_dev *button_dev;static irqreturn_t button_interrupt(int ir...

2021-08-15 21:33:17 453

原创 Linux dtsi文件解析

来历Linus Torvalds在2011年3月17日的ARM Linux邮件列表宣称“this whole ARM thing is a f*cking pain in the ass”,引发ARM Linux社区的地震,随后ARM社区进行了一系列的重大修正。在过去的ARM Linux中,arch/arm/plat-xxx和arch/arm/mach-xxx中充斥着大量的垃圾代码,相当多数的代码只是在描述板级细节,而这些板级细节对于内核来讲,不过是垃圾,如板上的platform设备、re...

2021-08-15 18:33:18 7914

原创 Linux 计划自动执行任务-Crontab

在Linux中计划自动化任务,执行数据备份、更新系统、定期重新引导等。它是一个守护进程,按照指定的时间间隔执行这些任务,crontab1》系统范围的crontab,位于/etc/crontab,需要root权限2》用户创建的crontab,/var/spool/cron或者/var/spool/cron/crontabs检测或安装 crontab确认crontab是否安装:执行 crontab 命令如果报 command not found,就表明没有安装#cron..

2021-06-21 16:43:45 979

原创 使用enum枚举量初始化数组

enum { _TEST_A, _TEST_B, _TEST_C, _TEST_D, _TEST_E, _TEST_MAX,};static char g_test_table[_TEST_MAX] = { [_TEST_D] = 'd', [_TEST_A] = 'a', [_TEST_B] =.

2021-06-10 15:57:26 965

转载 android系统安全策略te语法分析

一. 基本语法 很多te文件集中在\external\sepolicy文件夹下,MTK也有很多自定义的在\device\mediatek\common\sepolicy。它的最基本样式是        allow factory powerctl_prop:property_service set;allow facto...

2021-05-10 15:23:43 2736

原创 Linux中断——tasklet、workqueue

---

2021-04-15 10:25:57 790

原创 Linux中断——request_irq

目录linux 中断之irq前言中断注册与释放irq相关查看/proc/interrupts查看/proc/statIRQ Number问题Handler相关flag相关linux 中断之irq前言前面一篇文章已经对中断做了一些简单介绍《关于Linux中断一些思考》,但是中断是怎么告诉内核(kernel)的呢?这里我们带着问题去了解一下irq的调用。所谓中断它其实是硬件产生了一个信号,然后告诉内核要去处理它。Linux处理中断很像用户空间(user .

2021-04-14 11:30:32 9501

原创 Android 新增按键功能实现

前言最近在做遥控器适配的时候,需要把遥控器一个按键做成特殊功能按键,它通过长按来是实现自定义的功能。之前在做Linux相关项目的时候,基本上红外解码驱动收到什么key就传什么key给应用层,但是在Android上,发现其实有三层:红外接收到的码值 Linux层转换的keycode Android Framework层自定义的keycodeLinux层...

2021-03-25 17:14:18 862

原创 关于Linux中断一些思考

目录前言关于中断历史与发展Linux中断设计Linux中断下半部实现软中断:Tasklet:工作队列:关于可重入和不可重入函数前言在我们学习中断的时候,先要了解几个概念。何为中断?为什么要使用中断?中断如何运作?弄明白这些再去使用中断会显得得心应手。何为中断?CPU在运行的过程中,由于外部因素,终止执行当前的任务去执行另一个任务。打个比方,你在做一个任务,突然上司来一个优先级更高的任务让你去完成,这时候你就要放下当前的任务而去执行优先级比较高的紧急任务。为什么

2021-03-21 22:46:15 741

原创 内核函数互调

如果有两个模块A和B,要想实现不同模块之间的调用,必须进行声明和引用。下面以模块A调用模块B的funcA为例模块A 定义函数 void funcA(void){ ...}注意这里函数返回值不能定义为static型 声明函数为外部可用 EXPORT_SYMBOL(funcA);模块B 声明函数 extern funcA(void); 函数调用 static void funcB(void){ ... funcA();

2021-03-21 21:08:46 105

原创 内核定时器Jiffies

目录内核定时器Jiffies简介:1、头文件2、定义定时器变量3、启动函数4、初始化函数5、关闭定时器内核定时器Jiffies简介:在驱动中,如果是想指定一个时间去执行某一项操作,可以使用定时器timer,它的特点是指定时间片到达之后、执行指定的函数。1、头文件timer.h2、定义定时器变量struct timer_list test_timer;3、启动函数static void functionsTest(void){ ..

2021-03-21 20:59:35 480 2

原创 GitLib工程管理

目录GitLib工程管理一、新建工程二、选择创建一个空的工程(Create blank project)三、工程详细设定四、如何上传代码GitLib工程管理GitLib是一个开源的代码管理工具,我们可以把代码上传到GitLib中,自己可以选择私有化或者公开,如果是私有化可以方便我们随时在有网络的地方对代码进行管理,类似私有云管理。当然也可以把自己写的一些有意思的项目开源出来,让其他人协同开发维护或者只供阅读。这篇文章介绍相关工程创建过程,主要是是建立一个部分开源的项目(只供给

2021-03-21 20:48:09 645

原创 Git使用总结

目录Git 使用总结概述一、相关变量常用命令二、配置管理技巧三、代码回滚技巧1、强制恢复到一个指定版本号gitID对应的版本2、删除云端指定文件或目录3、git add 之后撤销4、git revert5、git commit之后撤销--push之前四、分支管理技巧:1、创建一个新的分支2、将新建的分支推送到远端服务器3、删除本地仓库的分支4、删除远端仓库的分支5、从远端check出一个分支6、将分支A合并到分支B-先切换到分支B再合并

2021-03-19 19:26:22 600

原创 BSD和SystemV-Unix的主要差异

BSD和SystemV-Unix的主要差异目录BSD和SystemV-Unix的主要差异1、来源不一样2、应用模式不一样3、软件管理不一样4、启动脚本不一样1、来源不一样BSD被认为是“大学Unix”,或者是爱好者的Unix,因为它诞生于加利福尼亚的UC 伯克利; System V来源于AT&T实验室;2、应用模式不一样BSD开源 System V则更加商业化一些SUN的OS最开始是基于BSD的,但是SUN最后转向基于System ...

2021-03-19 18:43:31 311

Linux c编程

Linux c函数参考,详细介绍使用说明文档 手册类型,随时翻看

2018-10-19

MD5C语言实现

MD5C语言实现,欢迎大家使用

2015-12-24

整点报时

multisim整点报时

2013-03-02

同步十进制计数器74160的灵活应用

从标准化和系列化的角度考虑, 数字集成电路中 的计数器在计数进制上只有应用最广泛的几种类型, 如二进制、十进制、十六进制等。当需要其它进制的 计数器时, 可以用标准计数器产品通过外电路的不同 连接方式得到。

2013-03-02

高频电子线路 课后答案

高频电子线路课后答案,很给力,希望能给需要的人有帮助!!!!

2011-09-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除