自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 资源 (8)
  • 收藏
  • 关注

原创 Linux 驱动之内核空间分配内存

一、内核空间和用户空间有什么不同学c语言的时候应该学过,从用户空间看,每个进程都傻乎乎的以为自己有4G的内存空间,其中位于高地址(3G-4G)的1G空间给内核用,另外的3G(0-3G)都是它一个人独占的。所以用户空间很慷慨的把3G的空间分了好几个区域,如堆、栈、代码段等。其中,malloc()分配的空间位于堆,而程序中的自动变量,如你在函数内定义的“inti”,它是放在栈上,同时。用户

2015-05-29 10:18:25 2937

原创 Linux 驱动之 EXPORT_SYMBOL 函数以及 2.6 内核 Unknown symbol bug 解决办法

1、Linux中EXPORT_SYMBOL的用法 EXPORT_SYMBOL标签内定义的函数对全部内核代码公开,不用修改内核代码就可以在您的内核模块中直接调用。您还可以手工修改内核源代码来导出另外的函数,用于重新编译并加载新内核后的测试。//mod1.c编译模块mod2,成功。加载mod2时,输出:insmod: error inserting 'mod2.ko': -1 Invalid parametersdmesg查看:mod2: no symbol version for func

2015-05-28 20:54:22 3229

原创 一步一步学习 Linux 驱动之(Kconfig、Makefile)

1、概述 在linux编写驱动的过程中,有两个文件是我们必须要了解和知晓的。这其中,一个是Kconfig文件,另外一个是Makefile文件。如果大家比较熟悉的话,那么肯定对内核编译需要的.config文件不陌生,在.config文件中,我们发现有的模块被编译进了内核,有的只是生成了一个module。首先我们来学习什么Makefile,什么是Kconfig ,什么是.config Makefile:一个文本形式的文件,其中包含一些规则告诉make编译哪些文件以及怎样编译这些文件。Kconfi

2015-05-28 11:23:27 2532

原创 Linux 系统下的 proc 目录

1,、proc — 一个虚拟文件系统 /proc 文件系统是一种内核和内核模块用来向进程 (process) 发送信息的机制 (所以叫做 /proc)。这个伪文件系统让你可以和内核内部数据结构进行交互,获取 有关进程的有用信息,在运行中 (on the fly) 改变设置 (通过改变内核参数)。 与其他文件系统不同,/proc 存在于内存之中而不是硬盘上。2、/proc 由内核控制,没有承载 /proc 的设备。因为 /proc 主要存放由内核控制 的状态信息,所以大部分这些信息的逻辑位置位于内核控制的

2015-05-25 21:39:06 938

原创 tiny210 出现 nfs:server is not responding,still trying 原因与解决方案

#This line cannot be removed. by FriendlyARM(www.arm9.net)CheckOneButton=NoAction = InstallOS =LinuxLCD-Mode = NoLCD-Type = S70LowFormat = NoVerifyNandWrite = NoCheckCRC32=NoStatusType = Beeper | LED################### Linux ##############

2015-05-24 16:44:32 1322

原创 ADB 远程访问 tiny210

1、安装USB ADB驱动程序 安装SDK Manager、注册环境变量 2、ADB连接开发板出错当把开发板连接到电脑端口运行adb程序调试时,出现了下面这样的情况:分析:出错的原因是adb的端口被其他程序的进程占领了,所以要做的就是找到并kill该进程。在cmd中执行adb nodaemon server,查看adb的端口号是多少,一般情况下是5037(why?应该软件使用的端口号是固定的),如下图再执行netstat -ano | findstr "5037" ,会看到如下类似

2015-05-24 14:48:57 1014

原创 Android 5.1 API 22 所有sdk文件下载地址

Android 5.1 API 22 所有sdk文件下载地址https://dl-ssl.google.com/android/repository/docs-22_r01.ziphttp://dl.google.com/android/repository/android-22_r01.ziphttps://dl-ssl.google.com/android/repository/samples-22_r05.ziphttps://dl-ssl.google.com/android/reposi

2015-05-24 11:07:16 9599

原创 Linux 下安装 wine

Linux下安装wine方法1:wine 下载地址:http://download.csdn.net/detail/xy010902100449/8728635进入安装目录tar -jxvf wine-1.7.33.tar.bz2cd wine-1.7.33./configure这个时候会提示一堆的错误,按照提示安装 apt-get install flex bisons假设这连个依赖库不能下载,那可能就是你的Linux的源不对,可以参照我上一篇博客更新自己Linux的源。./con

2015-05-22 16:41:17 3553

原创 ununtu 13.10 更新源文件

ubuntu 更新源 ubuntu 13.10 更新源ubuntu 10.4 更新源

2015-05-22 16:29:24 1178

原创 互斥锁与自旋锁

1、互斥锁原理 在编程中,引入了对象互斥锁的概念,来保证共享数据操作的完整性。每个对象都对应于一个可称为" 互斥锁" 的标记,这个标记用来保证在任一时刻,只能有一个线程访问该对象。 互斥锁,是一种信号量,常用来防止两个进程或线程在同一时刻访问相同的共享资源。可以保证以下三点:(1)原子性:把一个互斥量锁定为一个原子操作,这意味着操作系统(或pthread函数库)保证了如果一个线程锁定了一个互斥量,没有其他线程在同一时间可以成功锁定这个互斥量。(2)唯一性:如果一个线程锁定了一个互斥量,在它解除锁

2015-05-21 19:57:29 1487

原创 linux 驱动程序头文件

1、编写任何驱动程序都必须带的头文件#include <linux/module.h>:在编写任何模块都需要包含此头文件。该头文件自动包含了 <linux/version.h>头文件,该头文件包含了宏 MODULE_LICENSE("GPL")的定义。#include <linux/init.h>:此头文件也是

2015-05-19 16:00:07 3209

原创 mini2440_pwm.c 分析(PWM 驱动)

1、概述本驱动用定时器0产生PWM脉冲信号,GPB0管脚输出接蜂鸣器。mini2440共有5个定时器,不过只有Timer 0~4具有PWM功能2、驱动程序#include <linux/module.h>#include <linux/kernel.h>#include <linux/fs.h>#include <linux/init.h>#include <linux/delay.h>#include <linux/poll.h>#include <linux/interrup

2015-05-19 14:35:42 2621

原创 mini2440_adc.c 分析( ADC 驱动)

1、ADC硬件原理概述 我们从上面的结构图和数据手册可以知道,该ADC模块总共有8个通道可以进行模拟信号的输入,分别是AIN0、AIN1、AIN2、AIN3、YM、YP、XM、XP。那么ADC是怎么实现模拟信号到数字信号的转换呢?首先模拟信号从任一通道输入,然后设定寄存器中预分频器的值来确定AD转换器频率,最后ADC将模拟信号转换为数字信号保存到ADC数据寄存器0中(ADCDAT0),然后ADCDAT0中的数据可以通过中断或查询的方式来访问。对于ADC的各寄存器的操作和注意事项请参阅数据手册。

2015-05-19 10:00:40 2555 15

原创 linux platform 设备驱动之 match 自动匹配

struct platform_device { // linux/platform_device.h const char * name; int id; struct device dev; u32 num_resources; struct resource * resource; struct platform_device_id *id_entry; /* arch specific additions */ struct pdev_archdata archdata;

2015-05-13 21:54:59 3910

原创 关于RedHat企业版yum安装失败

我们在redhat中使用yum命令的时候,可能会遇到这种情况,yum install build-essential提示This system is not registered with RHN,然后yum安装失败。Redhat之所以会出现这个错误是因为没有注册RHN,我们只需要更新一下yum的源就可以了。使用命令 cd /etc/yum.repos.d/   进入yum

2015-05-08 20:12:59 2030

原创 关于Red Hat 企业版下输入ifconfig显示not found问题解决办法

关于Red Hat 企业版下输入ifconfig显示not found问题解决办法我们输入命令:#ifconfig回车显示bash: ifconfig: command not found可能是红帽路径问题,然后输入#/sbin/ifconfig 就会显示IP地址等信息。解决办法:(我也是菜鸟这都是版主和xiaojie教我的,跟大家分享一下)执行#cat ~/.bash_profile 看自己的PATH,然后再执行:#gedit /etc/profile 然后会弹出一个文本框框,在最后一行后

2015-05-08 19:46:50 1657

原创 GNU C 之 attribute的机制

GNU C 的一大特色就是__attribute__ 机制。__attribute__ 可以设置函数属性(Function Attribute )、变量属性(Variable Attribute )和类型属性(Type Attribute )。__attribute__ 书写特征是:__attribute__ 前后都有两个下划线,并切后面会紧跟一对原括弧,括弧里面是相应的__attribute__ 参数。__attribute__ 语法格式为:__attribute__ ((attribute-li

2015-05-07 14:48:24 1005

原创 一步一步学习 Linux 驱动之设备控制接口函数(ioctl 函数)

一、 什么是ioctl。ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。它的调用个数如下:int ioctl(int fd, ind cmd, …);其中fd就是用户程序打开设备时使用open函数返回的文件标示符,cmd就是用户程序对设备的控制命令,至于后面的省略号,那在用户空间, ioctl 系统调用有下面的原型:int ioctl(int fd, unsigned long cmd,

2015-05-06 20:57:28 6294 6

原创 一步一步学习 Linux 驱动之内核中断函数 request_irq

request_irq的作用是申请使用IRQ并注册中断处理程序。request_irq()函数的原型如下:/* kernel/irq/manage.c */int request_irq(unsigned int irq, irqreturn_t (*handler)(int, void *, struct pt_regs *), unsigned long irqfl

2015-05-04 10:14:21 5968

GP接口函数描述和入参解析

GP接口函数描述和入参解析(持续完善中)。 目前已经涵盖:安全存储相关API,基础API和key相关的API正在完善,后续会补录上去,有需要的同学可以通过CSDN 私信我,单独发你。 函数分析:主要基于optee-os GP相关接口做分析的。

2022-05-04

TCG_TSS_Overview_Common_Structures_v0.9_r03_published

TPM-TSS协议栈

2022-03-20

Linux 设备模型之kobject

kobject_init用来初始化kobject结构,kobject_add用来把kobj加入到设备模型之中。 在实作中,我们先对obj1进行初始化和添加的动作,调用参数里,parent被赋为NULL,表示obj1没有父对象,反映到sysfs里, my_kobj1的目录会出现在/sys下,obj2的父对象设定为obj1,那么my_kobj2的目录会出现在/sys/my_kobj1下面。 前面提到,kobject也提供了引用计数的功能,虽然本质上是利用kref,但也提供了另外的接口供用户使用。 kobject_init_and_add和kobject_init这两个函数被调用后,kobj的引用计数会初始化为1, 所以在module_exit时要记得用kobject_put来释放引用计数。

2015-06-08

Linux下安装神器

Linux下的安装windows exe的神器。

2015-05-22

字符设备LED驱动程序

 所有的驱动程序都应该对应一个具体的设备,这个LED驱动当然设备应该是LED。但是linux将它分成了一类叫做混杂设备。这类设备共享一个主设备号,但次设备号不同所有混杂设备形成一个链表,要访问一个设备时根据次设备号来查找相应的miscdevice。linux中用struct miscdevice来描述一个混杂设备:

2015-04-14

Windows下基于socket多线程并发通信的实现

本文介绍了在Windows 操作系统下基于TCP/IP 协议Socket 套接口的通信机制以及多线程编程知识与技巧,并给出多线程方式实现多用户与服务端(C/S)并发通信模型的详细算法,最后展现了用C++编写的多用户与服务器通信的应用实例并附有程序。 关键词:Windows;套接字;多线程;并发服务器; Socket 是建立在传输层协议(主要是TCP 和UDP)上的一种套接字规范,最初由美国加州Berkley 大学提出,为UNIX 系统开发的网络通信接口,它定义了两台计算机之间通信的规范,socket 屏蔽了底层通信软件和具体操作系统的差异,使得任何两台安装了TCP 协议软件和实现了Socket 规范的计算机之间的通信成为可能,Socket 接口是TCP/IP 网络最为通用的应用接口,也是在Internet 上进行网络程序应用开发最通用的API[1],本文介绍了Socket通信的基本机制以及采用多线程技术实现并发通信的基本原理,并给出实例。

2015-04-07

采温显示存储报警模块

一些常用模块,包括LCD1602显示模块,DS1302模块,DS18B20模块,报警模块,24C02模块,全都是用C语言编写的。全部都通过调试,很方便的。很实用喔。。个人觉得3分并不贵啦,物有所值。。

2013-04-02

matlab基础教学

挺好的一个资源,我从老师那拷贝过来的,与大家分享了,内容很详细!

2011-10-03

空空如也

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

TA关注的人

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