Linux
文章平均质量分 75
乄失忆丶雨
要想立于不败之地,就得不断学习和努力!
展开
-
PCI驱动框架简单分析
一、PCI 概念介绍 PCI是CPU和外围设备通信的高速传输总线。PCI规范能够实现32位并行数据传输,工作频率为 33MHz 或 66MHz ,最大吞吐率高达266MB/s,PCI的衍生物包括 CardBus、mini-PCI、PCI-Express、cPCI等。 PCI总线体系结构是一种层次式的体系结构。在这种层次体系结构中,PCI桥设备占据着重要的地位,它将父总线与子总线...转载 2019-02-15 17:09:47 · 887 阅读 · 0 评论 -
Ubuntu进不入系统,一直停留在ubuntu图标画面
在VMware中对Ubuntu进行“关闭电源”后,再次进入,一直停留在ubuntu的图标画面,无法进入系统了!网上也有别的网友碰到这个问题:http://forum.ubuntu.org.cn/viewtopic.php?p=1985549启动界面:ESC for Boot Menu:Enter Setup:GNU GRUB:Reco转载 2017-04-09 11:17:26 · 24816 阅读 · 1 评论 -
Ubuntu 下忘记用户名和登录密码的解决方法
(1)首先Restart系统(右上角下拉后有个选项)(2)长按Shift键,直到出现下面菜单。选择recovery mode,也就是恢复模式。(3)接下来会进入如下界面,选择Drop to root shell prompt ,也就是获取root权限。(4)在下面的# 后面敲入 cat /etc/shadow 查看用户名(如果连用户名都忘记的话)(5)敲入:pass转载 2017-04-09 11:16:30 · 60153 阅读 · 7 评论 -
[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 · 2888 阅读 · 0 评论 -
驱动模块静态编译到 Linux 内核
一、准备好可以正常引导开发板的源码二、在内核源码kernel文件夹的driver目录下,创建led_arm文件夹 mkdir drivers/led_arm三、将“LED驱动实验”的驱动程序拷贝到led_arm目录下(详情见上一次LED驱动博客) 将led.c拷贝在该文件夹下面Kconfig就是对应着内核的配置菜单。假如要想添加新的转载 2017-03-30 13:45:30 · 481 阅读 · 0 评论 -
在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 · 727 阅读 · 0 评论 -
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 · 1487 阅读 · 0 评论 -
关于错误 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 · 60188 阅读 · 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 · 12656 阅读 · 2 评论 -
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 · 236 阅读 · 0 评论 -
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 · 216 阅读 · 0 评论 -
linux驱动基础开发0——linux 设备驱动概述
目前,Linux软件工程师大致可分为两个层次: (1)Linux应用软件工程师(Application Software Engineer): 主要利用C库函数和Linux API进行应用软件的编写; 从事这方面的开发工作,主要需要学习:符合linux posix标准的API函数及系统调用,linux的多任务编程技巧:多进程、多线程、进程间通信、多任务之转载 2017-03-07 16:46:44 · 223 阅读 · 0 评论 -
Ubuntu(Linux)使用Eclipse搭建C/C++编译环境
Ubuntu(Linux)使用Eclipse搭建C/C++编译环境 这两天,给自己电脑弄了双系统,除了原来的Windows 7系统外,装上了Linux系统,使用的版本是Ubuntu(点击可到相应的下载页面)。开始我装的Linux版本是fedora9,对于一个根本没接触过Linux系统的人而言,使用fedora,简直让人崩溃。更崩溃的是,我用的英文版。没的办法,又重新下载Linu转载 2017-04-28 15:29:20 · 750 阅读 · 0 评论 -
完整的Linux嵌入式环境搭建(Ubuntu 9.10)
完整的Linux嵌入式环境搭建(Ubuntu 9.10)安装完Linux系统后(以Ubuntu 9.10为例),就需要进行Linux嵌入式开发环境搭建。1、修改/etc/apt/sources.list进行修改,然后原创 2017-04-28 16:33:04 · 574 阅读 · 0 评论 -
将win32程序移植到linux注意事项
对于这个问题,网上已经有很多资料给予了介绍,但是相比于这些信息,本文立足于个人的实践,将内容具体到开发环境和源代码,我觉得还是有很多值得总结和借鉴的。首先声明开发环境。Win32程序的开发环境是VS.NET 2008,编程语言是C;Linux使用的RHEL 5.4,GCC的版本是4.1.2,编程语言也是C。然后依次说明移植的对象:数据类型/字符串处理/系统调用/套接字/进程/进转载 2017-04-27 16:27:19 · 402 阅读 · 0 评论 -
Linux初级驱动执行流程
一、初级驱动执行流程:1、写好Makefile文件,里面包含将应用程序编译成app文件,将驱动程序编译成mydrv.ko文件的脚本2、在Ubuntu里执行sudo make3、确保mydrv.ko和app被拷贝到nfs挂载的根文件系统的/modules目录4、在模块中创建设备节点(在串口软件显示的开发板文件系统里执行) mknod /dev/dcx-drv c转载 2017-04-27 10:32:37 · 540 阅读 · 0 评论 -
一个完整的linux 驱动demo 加应用测试 demo
驱动代码driverdemo.c[cpp] view plain copy print?#include #include #include #include #include #include #include #include #include #incl转载 2017-04-27 09:34:55 · 1067 阅读 · 0 评论 -
查看linux ssh服务信息及运行状态
关于ssh服务端配置有不少文章,例如 Linux下ssh服务配置,这里仅列举出一些查看ssh服务相关信息的常用命令.rpm -qa | grep ssh 可以看到系统中ssh安装包rpm -ql openssh-3.5p1-6 查看该安装包安装信息(如安装路径,配置文件等)ps -e | grep ssh 查看ssh服务有没有运行,如果有,可以看到类似以下内容:2254 ? 0转载 2017-04-24 16:43:07 · 11473 阅读 · 0 评论 -
Ubuntu下面安装eclipse for c++
今天终于找到了一篇很好得文章,在Ubuntu下面怎么很方便的安装eclipse,太好了,下面分享一下~1. 下载jre,eclipse,cdt其中jre是Java运行环境,eclipse需要先装jre,才可能运行,cdt是在eclipse中运行c\c++程序的插件。1.1 下载jre网址是:java.sun.com,点击java se,红色划线部分(如下图)转载 2017-04-25 10:44:47 · 2737 阅读 · 0 评论 -
Ubuntu9.10安装FTP服务
Ubuntu9.10安装FTP服务1.修改源列表打开"终端窗口",输入"sudo cp /etc/apt/sources.list /etc/apt/sources.list_bak 备份原来的源"-->回车-->"输入当前登录用户的管理员密码"-->回车,然后输入"sudo gedit/etc/apt/sources.list",把下边代码替换掉,这样就可以了。#de原创 2017-04-24 17:21:46 · 541 阅读 · 0 评论 -
Linux常用指令---grep(搜索过滤)
Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到标准输出,不影响转载 2017-05-02 15:34:30 · 297 阅读 · 0 评论 -
静态链接库和动态链接库
一、静态库与动态库通常情况下,对函数库的链接是放在编译时期(compile time)完成的。所有相关的对象文件(object file)与牵涉到的函数库(library)被链接合成一个可执行文件(executable file)。程序在运行时,与函数库再无瓜葛,因为所有需要的函数已拷贝到自己门下。所以这些函数库被成为静态库(static libaray),通常文件名为“libxxx.转载 2017-05-02 10:14:58 · 218 阅读 · 0 评论 -
程序运行时缺少libpng.so.3---Linux
程序运行时缺少libpng.so.3find / -iname "libpng*.so*" 2>/dev/null查看根目录下所有libpng库文件,看是否能找到该库文件;用lld 命令,查看程序依赖的所有库文件;sudo apt-get install libpng3:i386 安装libpng.so.3库文件原创 2017-04-14 15:24:36 · 2325 阅读 · 0 评论 -
vi/vim多行注释和取消注释
多行注释:1. 进入命令行模式,按ctrl + v进入 visual block模式,然后按j, 或者k选中多行,把需要注释的行标记起来2. 按大写字母I,再插入注释符,例如//3. 按esc键就会全部注释了 取消多行注释:1. 进入命令行模式,按ctrl + v进入 visual block模式,按字母l横向选中列的个数,例如 // 需要选中2列转载 2017-04-18 14:15:07 · 2193 阅读 · 0 评论 -
Vim多行缩进及高级命令
Vim多行缩进技巧1.按v进入visual状态,选择多行,用>或2. 通常根据语言特征使用自动缩进排版:在命令状态下对当前行用== (连按=两次), 或对多行用n==(n是自然数)表示自动缩进从当前行起的下面n行。你可以试试把代码缩进任意打乱再用n==排版,相当于一般IDE里的code format。使用gg=G可对整篇代码进行排版。3.gg shift+G 首尾4转载 2017-04-18 14:12:36 · 278 阅读 · 0 评论 -
linux驱动基础开发1——linux 设备驱动基本概念
学习linux设备驱动首先我们必须明确以下几个概念,为我们接下来学习linux驱动打下坚实的基础:应用程序、库、内核、驱动程序的关系设备类型设备文件、主设备号与从设备号驱动程序与应用程序的区别用户态与内核态Linux驱动程序功能一、应用程序、库、内核、驱动程序的关系 1)应用程序调用一系列函数库,通过对文件的操作完成转载 2017-03-07 16:45:36 · 174 阅读 · 0 评论 -
linux驱动基础开发2——linux 驱动开发前奏(模块编程)
一、Linux内核模块简介 linux内核整体结构非常庞大,其包含的组件也非常多。我们怎么把需要的部分都包含在内核中呢? 一种办法是把所有的需要的功能都编译到内核中。这会导致两个问题,一是生成的内核会很大,二是如果我们要在现有的内核中新增或删除功能,不得不重新编译内核,工作效率会非常的低,同时如果编译的模块不是很完善,很有可能会造成内核崩溃。 linu转载 2017-03-07 16:43:25 · 245 阅读 · 0 评论 -
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 · 175 阅读 · 0 评论 -
线程绑定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 · 1323 阅读 · 0 评论 -
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 · 2420 阅读 · 0 评论 -
linux绑定进程到指定cpu
方法之一:top -p `pidof 进程名称`方法之二:top -p `ps h -o pid -C 进程名称`如果还要查看此进程下的各线程,可用如下:top -H -p `pidof process`----------------------------------------------我是分割线-------------转载 2017-03-03 13:16:01 · 308 阅读 · 0 评论 -
细谈select函数(C语言)
Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。可是使用Select就可以完成非阻塞(所谓非阻塞方式转载 2016-12-14 13:48:54 · 297 阅读 · 0 评论 -
Linux Socket编程中的心跳机制
在TCP网络通信中,经常会出现客户端和服务器之间的非正常断开,需要实时检测查询链接状态。常用的解决方法就是在程序中加入心跳机制。从网络上找到,主要有以下方法实现TCP异常断开的检测:SO_KEEPALIVE,SIO_KEEPALIVE_VALS 和Heart-Beat线程。(1)SO_KEEPALIVE 机制 这是socket库提供的功能,设置接口是setso转载 2016-12-08 11:34:27 · 303 阅读 · 0 评论 -
makefile 模板
来自:yfkiss(夜风) C/C++ code####################################################################### makefile 模版 ##############################################转载 2016-12-05 13:45:23 · 150 阅读 · 0 评论 -
守护进程的详细总结(包括实例解析)
1、 守护进程的概念:守护进程(Daemon)是一种运行在后台的一种特殊的进程,它独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。由于在Linux中,每个系统与用户进行交流的界面成为终端,每一个从此终端开始运行的进程都会依附于这个终端,这个终端被称为这些进程的控制终端,当控制终端被关闭的时候,相应的进程都会自动关闭。但是守护进程却能突破这种限制,它脱离于终端并且在后台运行,转载 2016-12-12 13:04:58 · 567 阅读 · 0 评论 -
主机字节序与网络字节序的转换函数:htonl、ntohl、htons、ntohs
Part 1: htons函数具体解释 在Linux和Windows网络编程时需要用到htons和htonl函数,用来将主机字节顺序转换为网络字节顺序。 在Intel机器下,执行以下程序int main()...{ printf("%d /n",htons(16)); return 0;}得到的结果是4096,初一看感觉很怪。转载 2016-12-02 09:24:00 · 21512 阅读 · 0 评论 -
listen()函数中backlog参数分析
目录(?)[+]背景知识Unix网络编程描述如下:总结0. accept()函数不参与三次握手,而只负责从已建立连接队列中取出一个连接和sockfd进行绑定;1. backlog参数决定了未完成队列和已完成队列中连接数目之和的最大值(从内核角度看,是否这个和就是等于sock->recv_queue ?);2. accept()函数调用,会从已转载 2016-12-01 10:10:49 · 271 阅读 · 0 评论 -
setsockopt 设置socket 详细用法
今天碰到个问题在客户端关闭异常断开的socket之后,想再新建socket来接连server,老是提示10038错误检查了一下,closesocket(conn);conn = INVALID_SOCKET;两步走做了,还是不行。后来发现要添加:struct linger lig;int iLen;lig.l_onoff=1;lig.l_转载 2016-11-30 14:00:09 · 668 阅读 · 0 评论 -
Linux Vim命令
曾经使用了两年多的Vim,手册也翻过一遍。虽然现在不怎么用vim了,曾经的笔记还是贴出来,与喜欢vim的朋友分享。1. 关于Vimvim是我最喜欢的编辑器,也是Linux下第二强大的编辑器。 虽然emacs是公认的世界第一,我认为使用emacs并没有使用vi进行编辑来得高效。 如果是初学vi,运行一下vimtutor是个聪明的决定。 (如果你的系统环境不是中文,而你想使用中转载 2017-03-08 17:32:42 · 224 阅读 · 0 评论 -
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 · 784 阅读 · 1 评论