自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 IP数据报二进制反码求和算法

计算数据报的IP校验和,首先把校验和字段(16bit)置为0.然后,对首部(20字节)中每个16bit进行二进制反码求和,结果存在校验和字段中.当收到一份IP数据报后,同样对首部中每个16bit进行二进制反码求和.接收方在计算过程中包含发送方存在首部中的校验和,如果首部传输正确,那么计算的结果应该全为1(即0xffff).测试例程如下图#include <stdio.h>int ...

2019-02-19 16:01:56 1962

原创 详解Linux调用驱动open函数过程

/先叙述一下大概流程,再补充流程细节*Linux 打开一个文件,需要两个步骤(1) 找到文件(2) 打开文件C库调用open函数的系统入口时sys_open函数.asmlinkage long sys_open(const char __user *filename, int flags, int mode){ long ret; // 判断是否为32位系统 if (for...

2019-01-25 10:49:04 6126

原创 Linux中probe何时被调用

// 以PCI总线驱动模型, XDMA设备源码, 2.6.26内核源码为例// 网上通用解释如下: static const struct pci_device_id cpi_ids[] = { {PCI_DEVICE(0x10ee, 0x903f), }, {PCI_DEVICE(0x10ee, 0x9038), }, …… {0,}, };...

2019-01-21 16:58:41 1180

原创 PCI/PCIe硬件相关知识

Linux下PCI驱动实现(硬件篇)首先要说明一点,由于作者对内核也不是完全熟悉,所以做内核编程时喜欢猜测,即根据对内核的了解去猜测内核会怎么做,文章有部分内核行为是作者自己猜测,如有错误,欢迎批评指正。 1.PCI历史 PCI协议经历 ISA (Industry Standard Architecture) MCA (Micro Channel Architecture) EIS...

2018-07-24 16:40:28 3384

原创 Linux驱动中的进程同步

/**原子变量操作是Linux的一种简单同步机制,是一种在操作过程中不会被打断的操作.***//****其API和原子类型定义在include/asm/atomic.h文件中,使用汇编实现****优点是编写简单;缺点是功能太简单,只能做计数操作,保护的东西太少,***//*原子变量类型为atomic_t,atomic_t实际上是一个int类型的值,但由于处理器限制,只能表示24位数的范...

2018-07-18 16:59:38 549

原创 container_of 宏机制

以task_struct 为例来看/*******task_struct 进程描述符**********************/struct task_struct { volatile long state; void *stack; atomic_t usage; unsigned int flags; unsigned int...

2018-07-18 16:30:41 205

原创 UCOSIII-任务就绪表

UCOSIII中任务的优先级UCOSIII中将已经就绪的任务放到就绪表里,任务就绪表有两部分:优先级位映射表OSPrioTBL[]和就绪任务列表OSRdyList[]。 当一个任务就绪之后,就会将该任务优先级对应的数值在优先级位映射表中置1,例如,如果只有一个任务的优先级为14的任务就绪,就会将OSPrioTBL[0]的第13位置1,变成0000 0000 0000 0100 0000 0000

2017-03-23 19:26:28 2011

原创 使用UCOSIII创建一个任务

创建一个任务 //任务优先级 #define START_TASK_PRIO 3 //任务堆栈大小 #define START_TASK_SIZE 128 //任务控制块 OS_TCB StartTaskTcb //任务堆栈 CPU_STK START_TASK_STK[START_TASK_SIZE] //任务函数 vo

2017-03-23 18:25:24 2482

原创 Linux—GPIO

查看原理图,我的JZ2440开发板连接图是 LED1: nLED_1 –> GPF4 LED2: nLED_2 –> GPF5 LED3: nLED_4 –> GPF6S1: EINT0–> GPF0 S2: EINT2 –> GPF2 S3: EINT11 –> GPG3 2. 查看S3C2440手册 控制GPF口的寄存器如下:GPFCOND寄存器控制I/

2017-03-16 10:40:40 362

原创 Linux—S3C2440烧录裸板程序

安装VMware虚拟机,新建一个Ubuntu的Linux系统,选用9.10版本。安装SecureCRT远程登录软件。该软件可以通过IP地址登陆Linux系统。安装CuteFTP软件,方便windows与Linux进行文件传输。安装J-Flash软件,安装软件过程中会附带安装JLINK驱动。安装DNW软件,使用DNW烧录裸板程序。 相关文件下载地址: Vmware链接:http://pan

2017-03-15 15:38:42 2013

空空如也

空空如也

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

TA关注的人

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