自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(62)
  • 资源 (5)
  • 收藏
  • 关注

原创 Ubuntu find命令排除指定目录不搜索

中括号是可选项,[...] 代表前面的可选项可以多次重复。

2024-08-17 14:00:18 106

原创 GCC/G++选项 -Wl,-Bstatic和-Wl,-Bdynamic

如果此时你用的是GNU的linker,通常更简便的做法就是用option=value的方式,比如-Xlinker -Map -Xlinker output.mp可以简写成-Xlinker -Map=output.map。而对于Wl来说,因为他的参数分割是用“,”这样可以不用像Xlinker一样一下子写多个,只需要写多个逗号即可,就拿这个例子来说,可以写成-Wl,-Map,output.map当然了,如果你用的是GNU的linker你也可以-Wl,-Map=output.map。

2024-01-04 16:14:31 812

原创 shell 各种括号作用总结

字符串比较用双中括号[[ ]]算数比较用单中括号[ ]——左右留空格算数运算用双小括号(( ))shell命令及输出用小括号( )——左右不留空格快速替换用花括号{ }——左右留空格反单引号起着命令替换的作用。

2023-11-21 11:41:54 99

原创 GCC编译器include包含规则

在xx/core/fs_core.c下 include “fs_testinc.h”,此时到底是包含xx/common/文件夹下还是xx/public/文件夹下的fs_testinc.h呢?前提:在 xx/common/文件夹下创建fs_testinc.h头文件,在xx/public/文件夹下创建相同名fs_testinc.h头文件;如:include “../ public/xxx.h”则可确定是包含public/文件夹下的xxx.h,而不是common文件夹下的xxx.h。

2023-09-21 16:57:11 291

原创 如何使用GCC生成动态库和静态库

如何使用GCC生成动态库和静态库根据链接时期的不同,库又有静态库和动态库之分。静态库是在链接阶段被链接的,所以生成的可执行文件就不受库的影响,即使库被删除,程序依然可以成功运行。而动态库是在程序执行的时候被链接的。程序执行完,库仍需保留在系统上,以供程序运行时调用。链接静态库从某种意义上来说是一种复制粘贴,被链接后库就直接嵌入可执行程序中了,这样系统空间有很大的浪费,而且一旦发现系统中有bug,就必须一一把链接该库的程序找出来,然后重新编译,十分麻烦。而动态库刚好弥补了这个缺陷,因为动态库是在程序运行时

2021-10-13 19:22:18 527

原创 windows 中通过磁盘映射查看Ubuntu 虚拟机中的文件

需求:需要在windows 中查看Ubuntu 虚拟机中的文件工具:可以通过Samba服务实现安装Samba服务:1.在Ubuntu中安装:apt-get install samba samba-common2.安装完成之后,就可以设置环境了,vim 打开 /etc/samba/smb.conf 添加[yourname]comment=yournamepath=/home/yournamewriteable=yesvalid users = yourname3.保...

2020-11-11 11:10:04 921

原创 addr2line工具使用

addr2line工具是一个可以将指令的地址和可执行映像转换为文件名、函数名和源代码行数的工具。这在内核执行过程中出现崩溃时,可用于快速定位出出错的位置,进而找出代码的bug。用法addr2line [-a| --addresses ] [-b bfdname | --target=bfdname] [-C | --demangle[=style]] [-e filename | --exe=filename] [-f | --function] [-s | --basename] [-i | --

2020-10-30 11:15:04 3532

转载 解析设备树的流程(获取dtb内存地址->创建设备树内存表->创建注册设备及总线)

一、汇编相关部分的代码流程分析 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ENTRY(stext) {//head.S (kernel-3.10\arch\arm\kernel)   bl __looku...

2020-04-10 11:54:01 1171

原创 嵌入式 linux下sleep函数到底是线程休眠还是进程休眠

Linux实际上没有真正线程的概念,pthread库中的“线程”被许多人称作“轻量级的进程",内核负责调度所有的进程,且在内核眼里被我们看做线程的东西与普通进程是无差别的。sleep函数休眠的是当前进程,而pthread库中的“线程”事实上就是进程,因此该函数的作用域就是这个“线程”。...

2020-03-24 10:46:04 1144

原创 Linux clock_gettime函数不同时钟的区别

Linux 不同时钟的区别函数: int clock_gettime(clockid_t clk_id, struct timespec *tp);clockid_t: 用于指定计时时钟的类型,有以下几种类型: 1 2 3 4 CLOCK_REALTIME CLOCK_MONOTONIC CLOCK_MON...

2020-03-17 11:38:05 536

转载 linux下获取磁盘的总空间大小和可用空间大小

linux下获取磁盘的总空间大小和可用空间大小方法一:使用命令df方法二:使用函数statfs()功能描述: 查询文件系统相关的信息。 用法: #include /* 或者 */int statfs(const char *path, struct statfs *buf);int fstatfs(int fd, struct statfs *buf...

2019-12-31 09:39:44 3348 1

转载 转:Linux 内核模块编译 Makefile 详解

一、模块的编译 我们在前面内核编译中驱动移植那块,讲到驱动编译分为静态编译和动态编译;静态编译即为将驱动直接编译进内核,动态编译即为将驱动编译成模块。而动态编译又分为两种:a -- 内部编译 在内核源码目录内编译b -- 外部编译 在内核源码的目录外编译二、具体编译过程分析 注:本次编译是外部编译,使用的...

2019-04-12 16:43:13 432

原创 windows下搭建python及遇到各种问题解决方案

     近期在做一个关于非接卡中继转发的项目,期间需要做一个NFC Reader与NFC Card端数据转发模拟器,模拟器采用的是python语言实现,实现脚本已经OK,需要运行起来,所以就在windows 7下搭建能跑python脚本的环境,初次搭建环境,请来了熟悉python的同事协助,尽管如此,在安装过程中也遇到一些问题,现将其过程写下来以备日后查看,同时也给需要在windows环境下搭建...

2018-08-31 10:43:24 428

转载 通俗易懂的USB协议详解(转…

原文地址:通俗易懂的USB协议详解(转载)作者: Branchesss转自东海的博客http://6xudonghai.blog.163.com/blog/static/3364062920086253155137/ USB作为一种串行接口,应用日益广泛。如同每个工程设计人员必须掌握I2C,RS232这些接口一样,我们也必须掌握usb.但是usb的接口协议实在有点费解,linux uhci驱动...

2018-06-13 14:12:04 6246 1

原创 svn diff 和patch的使用(打补丁简洁命令)

svn diff 和patch的使用2012年12月25日 14:22:48 阅读数:4616 生成diff文件:svn diff > xxx.diff 生成 patch:同事 A 运行如下命令生成 patch:svn diff > aaa.patch 应用 patch:同事 B 运行如下命令应用 patch:patch –p0...

2018-05-31 10:36:23 9318 1

转载 ASCLL码表及字符转义

C语言常用转义字符表 和 ASCII码表完整版 ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 0NUT32(space)64@96、 1SOH33! 65A97a2STX34” 66B98b3ETX35#67C99c4EOT36$68D100d5ENQ37%69E101e6ACK38&70F102f7BEL39,71G103g8BS4...

2018-04-13 10:10:11 2539

转载 inux进程间传递fd备忘

linux进程间传递fd备忘====================================================server.c==========================================================#include#include#include#includeenum{false,true};int send_...

2016-05-09 10:29:53 1263

转载 Linux Input 设备驱动

Linux  Input 设备驱动1认识和使用 input 事件:1.1Linux input 驱动分类Input驱动程序是Linux输入设备的驱动程序,分成游戏杆(joystick)、鼠标(mouse和mice)和事件设备(Event queue)3种驱动程序。其中事件驱动程序是目前通用的驱动程序,可支持键盘、鼠标、触摸屏等多种输入设备。Input驱动程序的主设备

2016-01-26 11:54:21 518

转载 Linux启动新进程的几种方法及比较

Linux启动新进程的几种方法及比较标签: Linux多进程创建新进程2013-08-20 00:15 15927人阅读 评论(12) 收藏 举报 分类: 初学Linux(27) 版权声明:本文为博主原创文章,未经博主允许不得转载。有时候,我们需要在自己的程序(进程)中启动另一个程序(进程)来帮助我们完成一些工作,那么我们需要

2015-11-25 14:45:58 378

转载 Linux指定动态库搜索路径五种方法及优先级

Linux指定动态库搜索路径众所周知,Linux动态库的默认搜索路径是/lib和/usr/lib。动态库被创建后,一般都复制到这两个目录中。当程序执行时需要某动态库,并且该动态库还未加载到内存中,则系统会自动到这两个默认搜索路径中去查找相应的动态库文件,然后加载该文件到内存中,这样程序就可以使用该动态库中的函 数,以及该动态库的其它资源了。在Linux 中,动态库的

2014-11-25 09:51:36 10000 1

原创 vim最常用最实用功能总结

启动vim在命令行窗口中输入以下命令即可vim 直接启动vimvim filename 打开vim并创建名为filename的文件

2014-10-17 11:36:44 555

转载 pthread_join理解

函数简介编辑头文件 : #include 函数定义: int pthread_join(pthread_t thread, void **retval);描述 :pthread_join()函数,以阻塞的方式等待thread指定的线程结束。当函数返回时,被等待线程的资源被收回。如果进程已经结束,那么该函数会立即返回。并且thread指定的线程必须是joinable的

2014-09-12 09:58:05 644

转载 linux下线程锁的应用

#include      #include      #include      #include              #include      #include      #include                      int main(void){//2个进程,一个进程完成每次加1,另一个进程完成每次加2,2个进程协作完

2014-08-11 16:13:25 521

原创 关于职业的一些反思与总结

智慧人生,品味舍得,舍与得的人生智慧,如何体悟?性格与职业的关系如何取舍,家庭与职业如何取舍,究竟是深入思考重要还是活在当下重要?如何去看待当前工作?需要看得太重吗?         刚才看到一篇武汉大学生对自己人生的反思以及做出的一些离奇的举动,我就觉得心痛,他的思想境界太高太伟大,太理想,而现实社会的风气又太浮躁,太物质,太堕落,唯金钱论,导致他与这个社会格格不入,饱受着自己内心的煎熬与挣

2014-06-27 12:51:12 939

原创 linux下模拟控制台经典函数

#define COMM_KEY1 '1'#define COMM_KEY2 '2'#define COMM_KEY3 '3'#define COMM_KEY4 '4'#define comm_printf printf//for comm displayint comm_getkey(void){unsigned char key= -1;

2014-04-02 12:01:37 1019

原创 linux内核源码基本目录及研究方法

首先作为linux驱动工程师最需要知道的:#include 是在linux-2.6.29/include/linux下面寻找源文件。#include 是在linux-2.6.29/arch/arm/include/asm下面寻找源文件。#include 是在linux-2.6.29/arch/arm/mach-xxxx/include/mach下面寻找源文件。

2014-03-31 15:31:01 790

原创 windows下进行嵌入式系统开发工程管理编译方案

在windows下进行 arm工程管理及编译方案中,很多小项目均采用现有成熟大型的开发平台,如keil或者IAR,其优点是简单易上手,创建工程相对比较简单,并还提供相应的在线单步调试功能,但灵活性不好,无法自由配置;基于此,使用bat批处理+makefile方案将自由灵活地解决arm嵌入式工程管理工作,其优点是可自由配置管理工程,无需依赖任何开发平台,但对工程师基本功要求较高,需要较深入理解m

2014-03-05 11:01:56 1554

原创 Makefile VPATH和vpath的使用

首先是Makefile 文件和include文件夹还有src文件夹在同一个目录下头文件hello.h在include目录下源文件main.cpp和hello.cpp在src目录下////////////////////////////////hello.h:#ifndef _HELLO_H__#define _HELLO_H__void he

2014-02-25 17:32:01 828

原创 对于LD脚本的理解

脚本模型: ENTRY(__entry) SECTIONS{ . = 0x0 + SIZEOF_HEADERS;  .hash : {*(.hash)}   .dynsym         : { *(.dynsym) }  .dynstr         : { *(.dynstr) }  .gnu.version    : { *(.gnu.ve

2013-11-16 13:00:29 1858

原创 在linux下进行各厂商的GPRS,CDMA,WCDMA,CDMA200模块PPP拨号总结

由于近期在做无线模块驱动,由于前期选型,故调试了很多款无线模块,就各模块要点作一下总结。对于模块拨号均采用linux 下PPPD方式,对于GPRS模块则chat拨号脚本为:ABORT "NO CARRIER"ABORT "NO DIALTONE"ABORT "ERROR"ABORT "NO ANSWER"ABORT "BUSY"ABORT "Invalid Login"

2013-09-12 19:34:46 2262

转载 Linux信号说明列表

Linux信号说明列表$ kill -l1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR213) SIGPIPE 14) SIGALRM 15) SIGTERM 16)

2013-08-28 16:22:09 512

转载 linux 客户端 Socket 非阻塞connect编程

linux 客户端 Socket 非阻塞connect编程        非阻塞模式有3种用途        1.三次握手同时做其他的处理。connect要花一个往返时间完成,从几毫秒的局域网到几百毫秒或几秒的广域网。这段时间可能有一些其他的处理要执行,比如数据准备,预处理等。        2.用这种技术建立多个连接。这在web浏览器中很普遍.        3.由于程序用sel

2013-08-28 09:08:31 1000

原创 pppd错误码

在linux系统下做无线模块拨号上网需要使用PPPD进行拨号,PPPD错误退出是将返回退出错误码,此错误码将有利于我们对PPPD退出查明原因:                 0 pppd已经断开,或者已经成功建立连接后请求方又中 断了。  1 发成了一个严重错误,例如系统调用失败或者访问非法内存。  2 处理给定操作是检测到错误,例如使用两个互斥的操作。  3 调用pppd的

2013-08-28 08:55:04 5256

原创 BUG: scheduling while atomic: events/0/4/总结

对于Linux内核来说,Oops就意外着内核出了异常,此时会将产生异常时CPU的状态,出错的指令地址、数据地址及其他寄存器,函数调用的顺序甚至是栈里面的内容都打印出来,然后根据异常的严重程度来决定下一步的操作:杀死导致异常的进程或者挂起系统。最典型的异常是在内核态引用了一个非法地址,通常是未初始化的野指针Null,这将导致页表异常,最终引发Oops。Linux系统足够健壮,能够正常的反应各

2013-07-16 15:35:27 1549

原创 Mifare plus卡调试总结

Mifare plus卡调试总结默认nxp发行的plus卡为L0级别未初始化的卡片,此时active操作表现为支持ISO1443-4的CPU卡特性(ATQA: 02 00 ,SAK:20  UID: CD 65 E5 03),当执行写相关AES KEY及数据块初始化并commit后则进入L1安全级别,其active操作表现为一张M1S70卡特性(ATQA: 02 00 ,SAK:18

2013-07-04 10:51:32 5804 5

转载 Linux Socket编程

我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型有哪些?还有socket的基本函数,这些都是本文想介绍的。本文的主要内容如下:1、网络中进程之间如何通信?2、Socket是什么?

2013-06-21 14:42:25 430

转载 setsockopt()用法(参数详细说明)

int setsockopt(SOCKET s,int level,int optname,const char* optval,int optlen);s(套接字): 指向一个打开的套接口描述字level:(级别): 指定选项代码的类型。SOL_SOCKET: 基本套接口IPPROTO_IP: IPv4套接口IPPROTO_IPV6: IPv6套接口

2013-06-21 14:21:20 512

转载 linux给线程发信号pthread_kill

pthread_kill:别被名字吓到,pthread_kill可不是kill,而是向线程发送signal。还记得signal吗,大部分signal的默认动作是终止进程的运行,所以,我们才要用signal()去抓信号并加上处理函数。int pthread_kill(pthread_t thread, int sig);向指定ID的线程发送sig信号,如果线程代码内不做处理,则按照信号默

2013-06-20 19:47:15 2549

转载 linux dmesg命令参数及用法详解

补充说明:kernel会将开机信息存储在ring buffer中。您若是开机时来不及查看信息,可利用dmesg来查看。开机信息亦保存在/var/log目录中,名称为dmesg的文件里。参  数: -c  显示信息后,清除ring buffer中的内容。  -s  预设置为8196,刚好等于ring buffer的大小。  -n  设置记录信息的层级。扩展阅读一:dmesg命

2013-06-09 12:45:48 903

转载 linux clock_gettime函数详解

【转】linux clock_gettime函数详解 注意1.精确级别,纳秒级别原型long sys_clock_gettime (clockid_t which_clock, struct timespec *tp);which_clock参数解释CLOCK_REALTIME:系统实时时间,随系统实时时间改变而改变,即从UTC1970-1-1 0:0:0开始计时,中间

2013-06-09 10:47:59 801

NFC中继抓包(QPBOC EMV)

NFC中继抓包设备部署及可行性分析; NFC中继抓包设备部署及可行性分析;

2018-09-19

QPBOC中继分析

基于近场QPBOC中继分析及实现原理;

2018-09-19

建设部PSAM卡结构

建设部PSAM卡结构,希望对有需要的人有所帮助。

2013-03-01

SLE444x系列及AT24Cxx系列同步卡详解

SLE444x系列及AT24Cxx系列同步卡详解

2013-03-01

空空如也

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

TA关注的人

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