自定义博客皮肤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 994 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 2318

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

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

2022-01-28 17:37:29 2193

原创 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 480

原创 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 1181

原创 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 274

原创 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 1153

原创 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 817

原创 回调函数实例

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 338

原创 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 2672

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

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

2021-09-09 19:47:06 1086 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 384

原创 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 1233

原创 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 472

原创 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 352

原创 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 188

原创 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 519

原创 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 8699

原创 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 1043

原创 使用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 1057

转载 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 3586

原创 Linux中断——tasklet、workqueue

---

2021-04-15 10:25:57 974

原创 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 10161

原创 Android 新增按键功能实现

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

2021-03-25 17:14:18 980

原创 关于Linux中断一些思考

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

2021-03-21 22:46:15 845 1

原创 内核函数互调

如果有两个模块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 145

原创 内核定时器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 553 2

原创 GitLib工程管理

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

2021-03-21 20:48:09 744

原创 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 722

原创 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 389

android adb shell 命令大全

android adb shell 命令大全 1. 显示系统中全部Android平台: android list targets 2. 显示系统中全部AVD(模拟器): android list avd 3. 创建AVD(模拟器): android create avd --name 名称 --target 平台编号 4. 启动模拟器: emulator -avd 名称 -sdcard ~/名称.img (-skin 1280x800) 5. 删除AVD(模拟器): android delete avd --name 名称 6. 创建SDCard: mksdcard 1024M ~/名称.img 7. AVD(模拟器)所在位置: Linux(~/.android/avd) Windows(C:\Documents and Settings\Administrator\.android\avd) 8. 启动DDMS: ddms 9. 显示当前运行的全部模拟器: adb devices 10. 对某一模拟器执行命令: abd -s 模拟器编号 命令 11. 安装应用程序: adb install -r 应用程序.apk 12. 获取模拟器中的文件: adb pull 13. 向模拟器中写文件: adb push 14. 进入模拟器的shell模式: adb shell 15. 启动SDK,文档,实例下载管理器: android 16. 缷载apk包: adb shell cd data/app rm apk包 exit adb uninstall apk包的主包名 adb install -r apk包 17. 查看adb命令帮助信息: adb help 18. 在命令行中查看LOG信息: adb logcat -s 标签名 19. adb shell后面跟的命令主要来自: 源码\system\core\toolbox目录和源码\frameworks\base\cmds目录。 20. 删除系统应用: adb remount (重新挂载系统分区,使系统分区重新可写)。 adb shell cd system/app rm *.apk 21. 获取管理员权限: adb root 22. 启动Activity: adb shell am start -n 包名/包名+类名(-n 类名,-a action,-d date,-m MIME-TYPE,-c category,-e 扩展数据,等)。 23、发布端口: 你可以设置任意的端口号,做为主机向模拟器或设备的请求端口。如: adb forward tcp:5555 tcp:8000 24、复制文件: 你可向一个设备或从一个设备中复制文件, 复制一个文件或目录到设备或模拟器上: adb push 如:adb push test.txt /tmp/test.txt 从设备或模拟器上复制一个文件或目录: adb pull 如:adb pull /addroid/lib/libwebcore.so . 25、搜索模拟器/设备的实例: 取得当前运行的模拟器/设备的实例的列表及每个实例的状态: adb devices 26、查看bug报告: adb bugreport 27、记录无线通讯日志: 一般来说,无线通讯的日志非常多,在运行时没必要去记录,但我们还是可以通过命令,设置记录: adb shell logcat -b radio 28、获取设备的ID和序列号: adb get-product adb get-serialno 29、访问数据库SQLite3 adb shell sqlite3 #cd system/sd/data //进入系统内指定文件夹 #ls //列表显示当前文件夹内容 #rm -r xxx //删除名字为xxx的文件夹及其里面的所有文件 #rm xxx //删除文件xxx #rmdir xxx //删除xxx的文件夹

2014-01-06

MD5C语言实现

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

2015-12-24

微机原理与应用

微机原理课后习题的答案!!!!!!!!!!

2011-09-28

整点报时

multisim整点报时

2013-03-02

Linux c编程

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

2018-10-19

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

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

2013-03-02

高频电子线路 课后答案

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

2011-09-28

空空如也

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

TA关注的人

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