自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 资源 (11)
  • 收藏
  • 关注

转载 [Kernel] Linux 4.10.0+ 下编译安装内核模块(Hello World为例)

所用的发行版为 Ubuntu 16.04 LTS,使用内核 4.10.0+Step1. 在某个目录(比如~/workspace)下创建以下两个文件/*hello.c*/#include #include int init_module(void){ printk(KERN_INFO "init_module() called\n"); return 0;}void

2017-03-30 14:17:19 2874

转载 驱动模块静态编译到 Linux 内核

一、准备好可以正常引导开发板的源码二、在内核源码kernel文件夹的driver目录下,创建led_arm文件夹        mkdir drivers/led_arm三、将“LED驱动实验”的驱动程序拷贝到led_arm目录下(详情见上一次LED驱动博客)       将led.c拷贝在该文件夹下面Kconfig就是对应着内核的配置菜单。假如要想添加新的

2017-03-30 13:45:30 467

转载 在linux内核文件中添加自己的驱动,添加自己的linux驱动,编译自己的linux驱动程序方法和例子图文

写这个文章,我参考了网上的一些博客:http://bbs.chinaunix.NET/thread-3634524-1-1.htmlhttp://www.bkjia.com/gjrj/800182.html也参考了参考了 《Linux驱动开发详解》3.4章节,实现建立自己驱动目录。文章中的驱动范例是:linux设备驱动开发详解第二版 的 glob

2017-03-30 11:15:54 711

转载 Linux2.6所有内核下载地址

http://www.kernel.org/pub/linux/kernel/v2.6/Index of /pub/linux/kernel/v2.6Name Last modified Size Parent Directory - incr/

2017-03-30 11:06:54 1475

转载 关于错误 openssl/ssl.h:没有那个文件或目录的解决办法

首先得安装openssl:sudo apt-get install openssl当 #include后编译报错:openssl/ssl.h:没有那个文件或目录的解决办法解决办法为: sudo apt-get install libssl-dev build-essential zlibczlib-bin libidn11-dev libidn11安装上边的依赖就好了。

2017-03-30 10:49:34 60047 8

原创 Ubuntu16.04版安装VMwareTools的步骤和没法挂载目录问题的解决方法

vmtool安装流程1.点击vmware 里面的虚拟机——》安装vmware tool2.然后(等待一会)弹出一个界面把里面的 VMwareTools-9.6.1-1378637.tar.gz 复制到自己的家目录3.解压VMwareTools-9.6.1-1378637.tar.gz tar -xzvf VMwareTools-9.6.1-1378637.tar.gz4.进入vmw

2017-03-28 14:03:32 12624 2

转载 将Vim改造为强大的IDE—Vim集成Ctags/Taglist/Cscope/Winmanager/NERDTree/OmniCppComplete(有图有真相)

1、安装Vim和Vim基本插件首先安装好Vim和Vim的基本插件。这些使用apt-get安装即可:lingd@ubuntu:~/arm$sudo apt-get install vim vim-scripts vim-doc其中vim-scripts是vim的一些基本插件,包括语法高亮的支持、缩进等等。vim中文帮助文档tar包下载地址:http://sourceforge.net/pr

2017-03-27 16:53:33 206

转载 拼装的艺术:vim之IDE进化实录

KenThompson告诉我们——“一个程序只实现一个功能,且做到极致,多个程序协作实现复杂任务”——这是unix。是嘀,这种哲学在Linux上随处可见,比如,vim与她的插件们(白雪公主与她的小矮人们 -_-$)。下面开始我们的vim之IDE进化之旅吧。         这个时代,上规模的软件项目已不可能用简单的文本编辑器完成,IDE是必然选择。linux下IDE大致分为两类:“品牌

2017-03-27 16:50:57 452

原创 编译cscope-15.8b遇到的问题与解决方案

编译cscope-15.8b遇到的问题与解决方案1)环境Ubuntu16.042)遇到的问题:1.build.c:52:20:致命错误:curses.h:没有那个文件或目录;2.解决问题前面,链接不通过;3.安装失败;3)解决方案1.安装libncurses5-dev,sudo apt-get install ncurses-dev2.重新配置编译,./conf

2017-03-27 16:34:34 413

转载 归并排序的C++实现

归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。归并过程为:比较a[i]和a[j]的大小,若a[i]≤a[j],则将第一个有序表中的元素a[i]复制到r[k]中,并令i和k分别加上1

2017-03-20 18:50:27 401

转载 总结5种比较高效常用的排序算法

1 概述    本文对比较常用且比较高效的排序算法进行了总结和解析,并贴出了比较精简的实现代码,包括选择排序、插入排序、归并排序、希尔排序、快速排序等。算法性能比较如下图所示: 2 选择排序    选择排序的第一趟处理是从数据序列所有n个数据中选择一个最小的数据作为有序序列中的第1个元素并将它定位在第一号存储位置,第二趟处理从数据序列的n-1个数据中选择一个

2017-03-20 17:13:38 334

转载 WDM驱动程序开发之读写设备存储器:KMemoryRange类

KMemoryRange类:一、Overview    KMemoryRange类将一系列特殊的外围总线的地址映射到CPU总线的地址空间。考虑到可移植性,所有对memory周期(memory cycle)进行译码的设备驱动程序必须用这个类对memory的位置(location)进行正确的访问(access)。KMemoryRange是KPeripheralAddress类的派生类。

2017-03-15 16:40:11 1231

转载 WDM驱动程序开发之读写设备寄存器:KIoRange类

KIoRange类:一、Overview    KIoRange类将一系列特殊的外围总线的地址映射到CPU总线的地址空间。CPU总线上的地址即可能在CPU的I/O空间,也可能在CPU的内存空间,这取决于平台和外围总线的控制方式。考虑到可移植性,所有对I/O周期(I/O cycle)进行译码的设备驱动程序必须用这个类对I/O的位置(location)进行正确的访问(access)。KIo

2017-03-15 16:38:20 796

转载 WDM驱动程序开发之PCI设备的配置空间:KPciConfiguration, KPciSlot类

KPciConfiguration, KPciSlot类:一、Overview    KPciSlot类和KPciConfiguration类用于在驱动开发过程中协助支持基于PCI总线的设备。KDevice的派生类可以包含KPciConfiguration类的一个实例来存取设备配置空间的内容。为了满足这些需要,驱动编写人员需要提供PCI vendor ID和device ID给它的构造

2017-03-15 16:36:11 924

转载 把Vim改装成一个IDE编程环境(图文)

把Vim改装成一个IDE编程环境(图文)By:吴垠Date:2007-09-07Version:0.5Email:lazy.fox.wu#gmail.comHomepage:http://blog.csdn.net/wooinCopyright:该文章版权由吴垠和他可爱的老婆小包子所有。可在非商

2017-03-09 20:13:38 275

原创 LINUX操作系统VIM的安装和配置

1、VIM的安装ubuntu系统:普通用户下输入命令:sudo apt-get install vim-gtkcentos系统:普通用户下输入命令:yum -y install vim*2、VIM的配置刚安装的VIM,可能界面并不是十分友好,这就需要我们去更改vim的配置文件,按照我们的需求去修改它。在命令行下

2017-03-09 18:58:20 544

转载 Linux Vim命令

曾经使用了两年多的Vim,手册也翻过一遍。虽然现在不怎么用vim了,曾经的笔记还是贴出来,与喜欢vim的朋友分享。1. 关于Vimvim是我最喜欢的编辑器,也是Linux下第二强大的编辑器。 虽然emacs是公认的世界第一,我认为使用emacs并没有使用vi进行编辑来得高效。 如果是初学vi,运行一下vimtutor是个聪明的决定。 (如果你的系统环境不是中文,而你想使用中

2017-03-08 17:32:42 216

原创 linux下vi命令大全

进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于最后一行首 vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处 vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复f

2017-03-08 17:21:11 169

转载 linux中mmap系统调用原理分析与实现

1、mmap系统调用(功能)      void* mmap ( void * addr , size_t len , int prot , int flags ,int fd , off_t offset )      内存映射函数mmap, 负责把文件内容映射到进程的虚拟内存空间, 通过对这段内存的读取和修改,来实现对文件的读取和修改,而不需要再调用read,write等操作。

2017-03-07 18:25:14 229

转载 Linux内核编译详解

学习了网上的一些资料,自己试着摸索了一下,整理出此文。由于在下水平相当有限,不当之处,还望大家批评指正^_^重要的参考资料有:http://raspberrypi.stackexchange.com/questions/192/how-do-i-cross-compile-the-kernel-on-a-ubuntu-hosthttp://blog.

2017-03-07 16:48:26 208

转载 linux驱动基础开发0——linux 设备驱动概述

目前,Linux软件工程师大致可分为两个层次: (1)Linux应用软件工程师(Application Software Engineer):      主要利用C库函数和Linux API进行应用软件的编写;      从事这方面的开发工作,主要需要学习:符合linux posix标准的API函数及系统调用,linux的多任务编程技巧:多进程、多线程、进程间通信、多任务之

2017-03-07 16:46:44 214

转载 linux驱动基础开发1——linux 设备驱动基本概念

学习linux设备驱动首先我们必须明确以下几个概念,为我们接下来学习linux驱动打下坚实的基础:应用程序、库、内核、驱动程序的关系设备类型设备文件、主设备号与从设备号驱动程序与应用程序的区别用户态与内核态Linux驱动程序功能一、应用程序、库、内核、驱动程序的关系    1)应用程序调用一系列函数库,通过对文件的操作完成

2017-03-07 16:45:36 162

转载 linux驱动基础开发2——linux 驱动开发前奏(模块编程)

一、Linux内核模块简介     linux内核整体结构非常庞大,其包含的组件也非常多。我们怎么把需要的部分都包含在内核中呢?     一种办法是把所有的需要的功能都编译到内核中。这会导致两个问题,一是生成的内核会很大,二是如果我们要在现有的内核中新增或删除功能,不得不重新编译内核,工作效率会非常的低,同时如果编译的模块不是很完善,很有可能会造成内核崩溃。    linu

2017-03-07 16:43:25 238

转载 linux驱动基础开发3——linux 内核配置机制(make menuconfig、Kconfig、makefile)讲解

前面我们介绍模块编程的时候介绍了驱动进入内核有两种方式:模块和直接编译进内核,并介绍了模块的一种编译方式——在一个独立的文件夹通过makefile配合内核源码路径完成    那么如何将驱动直接编译进内核呢?    在我们实际内核的移植配置过程中经常听说的内核裁剪又是怎么麽回事呢?我们在进行Linux内核配置的时候经常会执行make menuconfig这个命令,然后屏幕

2017-03-07 16:42:04 249

转载 Linux内核多线程——补充(各种平台下的多线程)

这里主要实现两个线程间通信,当flag = 10 之后通知另外一个线程(也就是“Linux内核多线程(二)”中的程序的各种平台实现)。首先是C++ 11 的方式:#include #include #include #include #include #include using namespace std;const int M = 10;int main()

2017-03-06 16:45:05 200

转载 Linux内核多线程(四)

自己创建的内核线程,当把模块加载到内核之后,可以通过:ps –ef 命令来查看线程运行的情况。通过该命令可以看到该线程的pid和ppid等。也可以通过使用kill –s 9 pid 来杀死对应pid的线程。如果要支持kill命令自己创建的线程里面需要能接受kill信号。这里我们就来举一个例,支持kill命令,同时rmmod的时候也能杀死线程。#include #include #inc

2017-03-06 16:41:58 257

转载 Linux内核多线程(三)

接上 一篇文章 ,这里介绍另一种线程间通信的方式:completion机制。Completion机制是线程间通信的一种轻量级机制:允许一个线程告诉另一个线程工作已经完成。为使用 completion, 需要包含头文件 。可以通过以下方式来创建一个 completion :DECLARE_COMPLETION(my_completion);或者, 动态创建和初始化:

2017-03-06 16:40:01 255

转载 Linux内核多线程(二)

内核多线程是在项目中使用到,自己也不熟悉,遇到一个很囧的问题,导致cpu运行100%。这是写的第一个内核线程程序,通过全局变量来实现两个内核线程之间的通信。但是这里遇到致命错误,就是:每当 wait_event_interruptible()被wake_up_interruptible 唤醒之后线程就进入死循环。后面发现是线程不会主动的自己调度,需要显式的通过schedule 或者 sch

2017-03-06 16:37:42 283

转载 Linux内核多线程(一)

Linux内核可以看作一个服务进程(管理软硬件资源,响应用户进程的种种合理以及不合理的请求)。内核需要多个执行流并行,为了防止可能的阻塞,支持多线程是必要的。内核线程就是内核的分身,一个分身可以处理一件特定事情。内核线程的调度由内核负责,一个内核线程处于阻塞状态时不影响其他的内核线程,因为其是调度的基本单位。这与用户线程是不一样的。因为内核线程只运行在内核态,因此,它只能使用大于PAGE_OFFS

2017-03-06 16:35:40 264

原创 vim查看函数原型

首先还是安装,vim不用装了,ubuntu中自带,用到的ctags需要自己安装一下,不要用旧的那个ctags,新的叫Exuberant Ctags,apt安装即可:  [plain] view plain copy print?apt-get install exuberant-ctags       然后按照vim.or

2017-03-06 15:19:40 769 1

转载 线程绑定CPU核

Linux系统提供API函数sched_setaffinity和sched_getaffinity用于设置或获取线程的可以使用的CPU核。int sched_setaffinity(pid_t pid, unsigned int cpusetsize, cpu_set_t *mask);这个函数中pid表示需要设置或获取绑定信息的线程id(或进程id),如果为0,表示对当前调用的线

2017-03-03 14:59:18 1306

转载 CPU状态信息us,sy,ni,id,wa,hi,si,st含义

使用系统命令top即可看到如下类似信息:Cpu(s):  0.0%us,  0.5%sy,  0.0%ni, 99.5%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st但不知什么含义?google之I try to explain  these:us: is meaning of "user CPU time"sy: is meaning of "s

2017-03-03 14:08:12 2399

转载 linux绑定进程到指定cpu

方法之一:top -p `pidof 进程名称`方法之二:top -p `ps h -o pid -C 进程名称`如果还要查看此进程下的各线程,可用如下:top -H -p `pidof process`----------------------------------------------我是分割线-------------

2017-03-03 13:16:01 296

DOS6.22 U盘启动镜像系统

制作好的DOS6.22U盘启动镜像,直接用UltraISO就可以制作DOS启动盘,并且该镜像对VxWorks5.5的硬盘启动制作也是可行的,但硬盘必须小于或等于2G。否则就无法正确执行vxsys d:命令。

2017-07-25

DOS6.22 U盘启动镜像

制作好的DOS6.22U盘启动镜像,直接用UltraISO就可以制作DOS启动盘,并且该镜像对VxWorks5.5的硬盘启动制作也是可行的,但硬盘必须小于或等于2G。否则就无法正确执行vxsys d:命令。

2017-07-25

DOS6.22 U盘启动盘制作文件和方法

DOS6.22 U盘启动盘制作

2017-07-25

VxWorks的图形界面开发工具Zinc6.0的升级补丁

基于VxWorks的图形界面开发工具Zinc6.0的升级补丁

2017-07-11

VMware10下建VxWorks6.6虚拟机的pentiumBSP

VMware10下建VxWorks6.6虚拟机的pentiumBSP

2016-12-26

VMware下安装VxWorks6.6教程

VMware下安装VxWorks6.6完整教程,及其配置

2016-12-26

Disk format

利用VC开发的对磁盘进行格式化源程序,本程序有助于对磁盘格式化的了解.

2014-05-15

DriveEraser

Hard Drive Eraser will erase the hard disk of the logical content.

2014-05-15

学生管理系统

本系统是在Linux+Gcc的平台下开发的,通过GDB调试实现各个功能模块,并对各个功能模块进行封装,在项目中应用了通用链表,函数指针等知识点。完成了模拟管理员,学生和老师的各项功能。主要包括添加、删除和查询等功能。

2013-09-01

火车订票系统

LINUX+ GCC+GDB开发平台,代码蕴含了链表、文件流、二叉树和哈希表等知识。实现了模拟订票、售票,退票等功能。

2013-09-01

WinDLX实验报告

实验目的: 1)熟悉计算机流水线基本概念 2)了解DLX基本流水线的各段的功能 3) 了解各种不同指令在流水线中的实际流动情况 4) 对流水线做性能分析 5) 了解影响流水线效率的因素——数据相关、结构相关、控制相关,了解相关的种类 6) 了解解决数据相关的方法

2011-05-07

空空如也

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

TA关注的人

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