迷失的专栏

Linux
私信 关注
迷失0
码龄8年
  • 168,054
    被访问量
  • 85
    原创文章
  • 39,266
    作者排名
  • 54
    粉丝数量
  • 毕业院校 成都信息工程大学
  • 目前就职 绿盟科技
  • 于 2013-05-25 加入CSDN
获得成就
  • 获得34次点赞
  • 内容获得40次评论
  • 获得110次收藏
荣誉勋章
TA的专栏
  • FD.IO VPP
    22篇
  • Linux驱动
    20篇
  • Linux应用
    39篇
  • FD.io VPP
    21篇
  • python
    2篇
  • Linux内核
    5篇
  • 云计算
    8篇
  • kubernets
    6篇
  • docker
    1篇
  • k8s
    2篇
  • kubevirt
    1篇
  • 虚拟机
    1篇
  • k8s虚拟机
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

bpf map映射简介

bpf map映射简介bpf程序运行在内核,而且为了保证bpf程序运行的安全性,bpf虚拟机限制了系统调用,如果bpf程序需要和用户空间程序进程通信就需要bpf映射,bpf提供了如hash、stack、array等映射,在bpf程序中可以根据需求直接使用。bcc bpf map映射分析bcc中的BPF可以使用bcc的宏定义定义,当bcc加载bpf程序时再转换成section段定义进行编译。bcc的BPF映射定义在src/cc/export/helpers.h文件,bcc编译bpf代码时替换bpf程序
原创
168阅读
0评论
1点赞
发布博客于 4 月前

bpf-bcc加载代码分析

BCC简介bcc作为bpf的api库,提供了加载、编译,运行bpf代码功能,其核心功能是对bpf的系统调用进行封装,降低bpf使用门槛。BCC源码介绍[root@localhost bcc]# lsbuild CMakeLists.txt CONTRIBUTING-SCRIPTS.md Dockerfile.debian Dockerfile.ubuntu examples images introspection LICENSE.txt man RE
原创
147阅读
0评论
0点赞
发布博客于 4 月前

Kubernetes kubeadm证书时间修改的正确姿势

版本kubeadm v1.16.3需求kubeadm init 部署集群时自动生成相关证书,包括api-server、etcd、ca等,自动生成过程中起始时间默认为当前系统的时间,如果当前系统时间不正确会导致生成的证书异常,所以需要根据需求进行定制apiserver.crt apiserver-kubelet-client.crt ca.crt front-proxy-ca.crt ...
原创
751阅读
0评论
0点赞
发布博客于 2 年前

Cisco VPP VLIB_INIT_FUNCTION宏定义分析

VLIB_INIT_FUNCTIONvpp初始化接功能节点如acl、icmp、abf等时都是通过VLIB_INIT_FUNCTION宏定义进行初始化的,初始化过程主要包括运行环境、内存、以及对应功能的一些初始化,如acl初始化的地方:static clib_error_t *icmp4_init (vlib_main_t * vm){ ip_main_t *im = &ip_m...
原创
606阅读
0评论
0点赞
发布博客于 2 年前

Cisco VPP 网络接口注册分析

简介Vpp在实际应用场景中专注于网络数据包的处理,收发数据包的过程一般由第三方软件提供如:DPDK、NETMAP等,但自身也提供了丰富的虚拟网络接口,如:Virtio、Vxlan、Ipsex等。每种接口,不论是虚拟的还是物理的在启动的时候都会主动向Vpp注册自己的接口。DPDK接口注册分析VPP编译过程中可以选择是否编译DPDK的IGB_UIO驱动,默认是不编译的,编译IGB_UIO驱动方法...
原创
396阅读
0评论
0点赞
发布博客于 2 年前

Cisco VPP Vhost-user协商时序

vhost-user 分为服务端和客户端,以下时序为libvirtd和vpp进行协商,协商过程中不管libvirtd作为vhost-user的服务端或者客户端,都由libvirtd主动使用Unix Socket套接字发起协商vhost-user协商时序: vm libvirtd ---> ...
原创
282阅读
2评论
0点赞
发布博客于 2 年前

Cisco VPP Unix事件监听机制分析

VPP内部使用Epoll的方式监听VPP外面使用Unix Socket通道访问或者配置VPP的请求,主要注册事件包括cli、tuntap接口配置、vhost-user接口配置等
原创
149阅读
0评论
0点赞
发布博客于 2 年前

Linux Socket---write/send/sendto/wirev/sendmsg

首先,我们从一个实际的数据包发送的例子入手,来看看其发送的具体流程,以及过程中涉及到的相关数据结构;在我们的虚拟机上发送icmp回显请求包,ping另一台主机192.168.1.111。我们使用系统调用sendto发送这个icmp包。ssize_t sendto(int s, const void *buf, size_t len, int flags, ...
转载
185阅读
0评论
0点赞
发布博客于 2 年前

Kubernetes DNS解析简要分析

Kubernetes POD IP会随POD的创建销毁动态变化,所以提出Service的方式访问POD网络,Kubernetes的Service可以使用Iptables实现也可以使用IPVS实现,本文简要分析Iptables实现方式。部署POD,进入POD观察域名解析服务器地址:Develop>kubectl exec -it -n default ncss-i-mysql-ha-0 /...
原创
1155阅读
0评论
0点赞
发布博客于 2 年前

Kubernetes Multus-CNI

简介Multus CNI 作为K8S的CNI插件,支持同时添加多个网络接口到K8S环境中的POD。这样的部署方式有利用用户把管理网络和业务网络相互隔离,有效控制容器集群网络架构下图是Multus CNI配置pod网络接口的例子。图中显示了POD具有三个接口:eth0、net0和net1。eth0将kubernetes集群网络连接到kubernetes服务器/服务(例如kubernetes ap...
原创
3359阅读
2评论
2点赞
发布博客于 2 年前

Kubernetes 部署contiv-vpp

简介Contiv/VPP is a Kubernetes network plugin that uses FD.io VPP to provide network connectivity between PODs in a k8s cluster. It deploys itself as a set of system PODs in the kube-system namespace, ...
原创
2047阅读
1评论
0点赞
发布博客于 2 年前

Kubevirt 部署虚拟机

ArchitectureKubeVirt is built using a service oriented architecture and a choreography pattern.Stack +---------------------+ | KubeVirt |~~+---------------------+~~ | Orchestration...
原创
1599阅读
0评论
2点赞
发布博客于 2 年前

docker cni插件分析

CNI简介Container Networking Interface(CNI)提供了一种linux的应用容器的插件化网络解决方案。最初是由rkt Networking Proposal发展而来。他的模型只涉及两个概念:容器(container) : 容器是拥有独立linux网络命名空间的独立单元。比如rkt/docker创建出来的容器。网络(network): 网络指代了可以相互联系的一组...
原创
1807阅读
0评论
0点赞
发布博客于 3 年前

Cisco VPP 内存池结构体分析

原创
856阅读
2评论
0点赞
发布博客于 3 年前

Cisco VPP 内存池管理逻辑流程图

原创
1200阅读
0评论
0点赞
发布博客于 3 年前

kubeadm国内部署-Ubuntu16.04

系统信息root@ubuntu:~# cat /etc/*releaseDISTRIB_ID=UbuntuDISTRIB_RELEASE=16.04DISTRIB_CODENAME=xenialDISTRIB_DESCRIPTION="Ubuntu 16.04.2 LTS"NAME="Ubuntu&amp
原创
5380阅读
5评论
2点赞
发布博客于 3 年前

vpp gerrit提交patch过程

准备环境注册gerrit账号及环境配置1、进入fdio gerrit登录页面https://gerrit.fd.io/r/login/%23%2Fq%2Fstatus%3Aopen 2、点击Account signup / management注册账号 选择‘I need to create a Linux Foundation ID’进行账号注册 也可以使用face...
原创
2113阅读
1评论
0点赞
发布博客于 3 年前

openstack nova 分析笔记

Openstack Nova 分析笔记
原创
153阅读
0评论
0点赞
发布博客于 3 年前

Cisco VPP vxlan tunnel

拓扑环境目的: 使用vxlan隧道连接两个主机,实现每个主机的内部网络可以通过vxlan隧道进行通信。host1内部运行vpp和一个网络命名空间APP1。网络命令空间APP1模拟host1端的内部网络,里面有一个网络接口veth_vpp1,这个接口与vpp之间使用veth方式连接,当vpp里面的host-APP1接口收到数据包后就会发送到网络命名空间的veth_vpp1接口。host1...
原创
2187阅读
0评论
2点赞
发布博客于 3 年前

Opendaylight Service Function Chaining Demo

ODL-SFC 环境搭建作者信息:绿盟科技SPG团队 张力茂ODL Service Function Chaining在网络通信过程中,包含各式各样的网络服务功能。既可以包含传统的像防火墙,NAT等功能,也有包含特定的网络应用功能(Service Function)。将特定的网络应用功能有序地组合起来,接着让流量通过这些服务功能就构成了网络服务链(Network Service...
原创
1368阅读
1评论
2点赞
发布博客于 3 年前

Cisco VPP KVM vhost-user

目的:VPP作为KVM数据平面,使用vhost-user方案进行数据包通信什么是 vhost-user在 vhost 的方案中,由于 vhost 实现在内核中,guest 与 vhost 的通信,相较于原生的 virtio 方式性能上有了一定程度的提升,从 guest 到 kvm.ko 的交互只有一次用户态的切换以及数据拷贝。这个方案对于不同 host 之间的通信,或者 guest 到...
原创
1693阅读
1评论
0点赞
发布博客于 3 年前

Python eventlet 模块笔记

作者信息:绿盟科技SPG团队 张力茂协程什么是协程协程,又称微线程,纤程。英文名Coroutine。协程是一条执行序列,拥有自己独立的栈、局部变量和指令指针,同时又与其他的协同程序共享全局变量。子程序调用总是一个入口,一次返回,调用顺序是明确的。而协程的调用和子程序不同。协程看上去也是子程序,但执行过程中,在“子程序”(协程)内部可中断,然后转而执行别的“子程序”,在适当的...
原创
10722阅读
0评论
2点赞
发布博客于 3 年前

RabbitMQ笔记

RabbitMQ 简介RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统。他遵循Mozilla Public License开源协议。MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消 息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过...
原创
186阅读
0评论
0点赞
发布博客于 3 年前

《Cisco VPP SFC》4、ODL SFC 安装

1、部署基础环境1.1 安装 gitsudo apt-get install git1.2 安装 Mavensudo apt-get install maven安装完成后:0 added, 0 removed; done.Running hooks in /etc/ca-certificates/update.d...done.done.root@ubunt...
原创
604阅读
0评论
1点赞
发布博客于 3 年前

《Cisco VPP SFC》3、honeycomb 安装

honeycomb介绍 Honeycomb is a generic NETCONF/RESTCONF java-based management agent and provides a framework for building specialized agents. It uses many features and utilities from different Open...
原创
1055阅读
0评论
0点赞
发布博客于 3 年前

《Cisco VPP SFC》2、NSH_SFC 安装

SFC概念SFC是Service Function Chain的缩写,直译过来是服务功能链,通常简称服务链。简单地说把服务功能联接起来提供的一个有序的服务组合叫做服务链。SFC的延伸的含义包括服务链的定义,服务链的部署,基于policy的traffic steering,重点是在chain和策略,而不是在某个具体的服务功能service function。在SFC中service是服务的泛...
原创
1177阅读
0评论
0点赞
发布博客于 3 年前

《Cisco VPP SFC 》1、 VPP 安装

基础环境 Linux ubuntu 4.13.0-36-generic #40~16.04.1-Ubuntu SMP Fri Feb 16 23:25:58 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux1、安装 git sudo apt-get install -y git 2、下载vpp源码 sudo git clone https://ge...
原创
750阅读
0评论
0点赞
发布博客于 3 年前

Cisco VPP VPP+KVM环境部署

部署目的:虚拟机网卡由VPP接管,VPP为虚拟机提供二层交换功能网络拓扑:guest host 1 <—> VPP(Bridge) <—> guest host 2准备资源:1、宿主机安装VPP2、下载测试镜像和OVMF.fd文件(测试镜像clear-22980-kvm.img.xz),下载地址:https://download.cl...
原创
2943阅读
17评论
0点赞
发布博客于 3 年前

ironic架构及相关技术简介

简介如今Openstack在虚拟化管理部分已经很成熟了, 通过nova我们可以创建虚拟机、枚举虚拟设备、管理电源状态、安装操作系统等。但是有时候虚拟机无法满足要求,比如以下几种情况需要直使用物理机:高性能的计算集群。计算任务需要访问无法虚拟化的硬件设备。数据库主机(有些数据库在hypervisor中运行效率很差)。单租户、专用硬件、安全性、可靠性和其他控制要求。快速部署云基...
转载
13259阅读
1评论
5点赞
发布博客于 3 年前

安装与配置ironic

安装及配置由于Ironic的配置很长,下面我们简短的说一下安装和配置过程,具体的安装配置教程参考官方手动配置教程或者使用devstack安装。Ironic需要与Nova、Neutron、Glance、Keystone等进行交互,于是先要对这些进行配置。1.配置KeyStone首先我们需要在keystone中创建ironic用户、服务、endpoint信息。keystone us...
转载
615阅读
0评论
0点赞
发布博客于 3 年前

Cisco VPP 源码分析---vlib_main()

原创
1895阅读
0评论
0点赞
发布博客于 3 年前

Cisco VPP IKEV2 配置说明

1、 配置网络接口地址: cli: set int state GigabitEthernet2/6/0 up set int ip address GigabitEthernet2/6/0 192.168.10.10/24 2、 创建IKEV2配置 cli: ikev2 profile add pr1 //创建名为pr1的IKEV2配置 ikev2 profil...
原创
2568阅读
3评论
0点赞
发布博客于 3 年前

Cisco VPP IPSec配置

IPSEC SA:ipsec sa add 10 spi 1001 esp crypto-alg aes-cbc-128 crypto-key 4a506a794f574265564551694d653768 integ-alg sha1-96 integ-key 4339314b55523947594d6d3547666b45764e6a58ipsec sa add 20 spi 1000...
原创
1703阅读
0评论
0点赞
发布博客于 3 年前

Cisco VPP CSIT调用API过程

csit_cmd: vpp_ipsec_add_sad_entryfile: vpp-csit\csit\resources\libraries\python\IPsecUtil.py1、组织数据ckey = crypto_key.encode('hex') ikey = integ_key.encode('hex') tunnel = 'tunnel_sr...
原创
929阅读
0评论
0点赞
发布博客于 3 年前

Cisco VPP emacs+gdb单步调试

VPP主要由VPP框架加上插件业务组成,开发插件时首先会编译成动态库,在VPP启动时通过指定路径加载动态库,所以在gdb调试时需要指明动态库路径。 启动可执行文件: 设置启动参数: 设置启动参数需要明确指定插件路径,VPP启动时会根据路径加载库文件。设置断点: 设置断点过程,“Function xxx not defined”意为进程符号表中没有“xxx”符号表,但是此处的...
原创
1125阅读
2评论
0点赞
发布博客于 3 年前

Cisco VPP 插件开发

VPP业务主要由插件扩展,在编译时插件会编译成动态库,并由plugin.c解析。解析过程:vlib_unix_main->vlib_plugin_early_init->vlib_load_new_plugins->load_one_plugin->VPP初始化插件首先由“VLIB_INIT_FUNCTION”宏定义初始化插件运行环境,如果支持CLI就使用“VLIB_C...
原创
2586阅读
0评论
1点赞
发布博客于 3 年前

Cisco VPP 运行

VPP运行配置DPDK运行环境DPDK编译完成后会在build-root目录输出编译出来的文件,包括DPDK相关文件,编译出的DPDK源码文件路径: build-root/build-vpp_debug-native/dpdk/dpdk-17.11加载DPDK网络接口驱动: 加载uio驱动:modpro uio 加载igb_uio驱动:insmod x8...
原创
2041阅读
1评论
1点赞
发布博客于 3 年前

Cisco VPP 编译

VPP介绍 FD.io(Fast data - Input/Output)是Linux基金会旗下的又一开源项目,其成立于2016年2月11日。该项目在通用硬件平台上提供了具有灵活性、可扩展、组件化等特点的高性能IO服务框架,用以迎接下一个网络和存储浪潮。该框架支持高吞吐量、低延迟、高资源利用率的user space IO服务,并可适用于多种硬件架构(x86, ARM, and PowerP...
原创
2637阅读
0评论
0点赞
发布博客于 3 年前

Linux内存管理相关记录

代码段:用来存放可执行问价你的操作指令 数据段:用来存放可执行文件中已初始化的全局变量,换句话说就是存放程序静态分配的变量和全局变量 BSS段:包含了程序中未初始化的全局变量,在内存的BSS段在系统初始化时已被置零 堆(heap):存放程序运行中被动态分配的内存段,他的大小不固定,可动态扩张或缩减 栈:用户存放程序临时创建的局部变量,在函数调用时,其参数也会被亚茹发起调...
原创
85阅读
0评论
0点赞
发布博客于 3 年前

CSDN_Markdown

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I...
原创
100阅读
0评论
0点赞
发布博客于 3 年前

LRU算法

转载来自:http://blog.csdn.net/fertiland/article/details/423890LRU页面置换算法模拟  一、设计目的1、用C语言实现最近最久未使用(LRU)置换算法。2、了解内存分页管理策略3、掌握调页策略4、掌握一般常用的调度算法5、选取调度算法中的典型算法,模拟实现 二、设计任务在Window98/2000 系统的TC2.0环境下运行程序;通过从一般常用的...
转载
2586阅读
0评论
4点赞
发布博客于 3 年前

计算机程序设计艺术 全三卷 高清

计算机程序设计艺术 全三卷 高清 计算机程序设计艺术(第一卷) 基本算法 第3版.pdf 计算机程序设计艺术(第二卷) 半数值算法 第3版.pdf 计算机程序设计艺术(第三卷)排序与查找 第2版.pdf
rar
发布资源于 3 年前

分段机制与GDT|LDT

转载地址:http://www.cnblogs.com/chenwb89/p/operating_system_003.html  一、前言    在《操作系统篇-浅谈实模式与保护模式》中提到了两种模式,我们说在操作系统中,其实大部分时间是待在保护模式中的。因此若想理解操作系统程序中的启动相关的部分,必须要理解保护模式下的编程,而分段机制是保护模式编程下的基础。而且,由于实模式与保护模...
转载
260阅读
0评论
1点赞
发布博客于 4 年前

浅谈实模式与保护模式

原文地址:https://www.cnblogs.com/chenwb89/p/operating_system_002.html 一、前言    转眼之间距离上一篇文章的时间已经一个月左右了,由于工作比较忙,对知识的梳理比较慢但又希望能够有比较好的东西跟大家一起交流,所以这过程显得比较久了。好了,不说废话了,我们首先为进入今天的主题热热身。其实,说到操作系统,基本上都会提及实模式与保...
转载
554阅读
0评论
0点赞
发布博客于 4 年前

socket-netfilter---set&getsocket

原创
345阅读
0评论
0点赞
发布博客于 4 年前

VLAN间路由

VLAN间路由转载:http://network.51cto.com/art/201409/450885_all.htm1.VLAN间路由的必要性根据目前为止学习的知识,我们已经知道两台计算机即使连接在同一台交换机上,只要所属的VLAN不同就无法直接通信。接下来我们将要学习的就是如何在不同的VLAN间进行路由,使分属不同VLAN的主机能够互相通信。首先,
转载
455阅读
0评论
0点赞
发布博客于 4 年前

Openwrt网络相关脚本分析

1、openwrt-网络重启调用过程2、openwrt网络配置过程--DHCP3、Pppoe初始化过程分析
原创
1035阅读
0评论
0点赞
发布博客于 4 年前

glob函数的使用

glob库函数用于Linux文件系统中路径名称的模式匹配,即查找文件系统中指定模式的路径。注意,这不是正则表达式匹配,虽然有些相似,但还是有点差别。glob函数原型       #include        int glob(const char *pattern, int flags,                           int errfunc(cons
转载
5562阅读
0评论
1点赞
发布博客于 5 年前

openwrt 添加自定义内核模块

openwrt添加内核模块步奏:1、创建需要的文件及文件夹:CUR_DIR:openwrt根目录cd packagemkdir democd demomkdir srctouch Makefilecd srctouch demo.ctouch Kconfigtouch Makefile2、编写demo文件夹第一级Makefile## Copyright (C)
原创
5512阅读
1评论
1点赞
发布博客于 5 年前

Ubuntu14.04 emacs配置cscope

Ubuntu安装emacs:1.先卸载之前安装的emacs:sudo apt-get purge emacs(卸载过程同时删除配置文件)sudo apt-get autoremove emacs(卸载过程不删除配置文件)2.安装emacs:sudo apt-get emacs 或者网上下载源码包自己安装3.安装cscope:sudo apt-get cs
原创
1354阅读
0评论
0点赞
发布博客于 5 年前

Linux TTY子系统学习笔记

TTY子系统重要结构体:struct tty_driver { int magic; /* magic number for this structure */ struct kref kref; /* Reference management */ struct cdev cdev; struct module *owner; const char *driver_name;
原创
731阅读
0评论
0点赞
发布博客于 6 年前

结构体内存分配问题

结构体内存分配问题(转)1)sizeof也可以对一个函数调用求值,其结果是函数返回类型的大小,函数并不会被调用。(2)终于搞懂struct结构体内存分配问题了,结构体中各个成员字节对齐遵循以下几个原则:1.结构体每个成员相对于结构体首地址的偏移量(offset)都是(这个)成员大小的整数倍,如有需要编译器会在成员之间加上填充字节(internal adding);  例如有以下
转载
420阅读
0评论
0点赞
发布博客于 6 年前

uboot启动过程

一般新做好的板子nandflash没有代码,uboot就不能通过Boot Internal读取flash代码。1、使用工具(Jlink,Jtag)下载代码到内存,并使用命令在内存执行下载好的代码代码包括:初始化处理器、初始化内存、初始化flash等等2、使用下载到内存并运行起来的代码从新下载代码到flash(内存掉电代码就没有了),因为处理器上电后Boot Internal会自
原创
433阅读
0评论
0点赞
发布博客于 6 年前

Linux-3.0.35输入子系统

Programming input drivers~~~~~~~~~~~~~~~~~~~~~~~~~1. Creating an input device driver~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1.0 The simplest example~~~~~~~~~~~~~~~~~~~~~~~~Here comes a very simp
原创
703阅读
0评论
0点赞
发布博客于 6 年前

Linux 硬中断和软中断

概述 从本质上来讲,中断是一种电信号,当设备有某种事件发生时,它就会产生中断,通过总线把电信号发送给中断控制器。如果中断的线是激活的,中断控制器就把电信号发送给处理器的某个特定引脚。处理器于是立即停止自己正在做的事,跳到中断处理程序的入口点,进行中断处理。 (1) 硬中断由与系统相连的外设(比如网卡、硬盘)自动产生的。主要是用来通知操
转载
5502阅读
0评论
0点赞
发布博客于 6 年前

Linux-3.0.35 I2C使用说明

系统:Linux-3.0.35硬件:飞思卡尔-imx6系统说明文档:Usually, i2c devices are controlled by a kernel driver. But it is alsopossible to access all devices on an adapter from userspace, throughthe /dev interface
原创
829阅读
0评论
0点赞
发布博客于 6 年前

CAN总线基础知识(三)

1.CAN协议1.1 帧类型通讯时使用下面5个类型的帧:    数据帧    遥控帧    错误帧    过载帧    帧间空隙    在所有这些帧中,数据帧和遥控帧由用户设置,而其它帧则由CAN硬件设置。    数据和遥控帧有两种格式:标准和扩展格式。标准格式有11bit的ID,而扩展格式则是29bit的ID。
转载
462阅读
0评论
0点赞
发布博客于 6 年前

CAN总线基础知识(二)

CAN协议和标准规范1 由ISO标准化的CAN协议    CAN协议已经由ISO标准化,有2个版本,如ISO11898和ISO11519-2,它们之间在数据链路层没什么不同,但是在物理层有些区别。    (1)   关于ISO11898:这个标准用于高速CAN通讯。开始的时候,数据链路层和物理层都在标准ISO11898中规定,后来被拆分为ISO11898-1(仅涉及数据
转载
666阅读
0评论
0点赞
发布博客于 6 年前

CAN总线基础知识(一)

1.CAN总线是什么?    CAN(Controller Area Network)是ISO国际标准化的串行通信协议。广泛应用于汽车、船舶等。具有已经被大家认可的高性能和可靠性。    CAN控制器通过组成总线的2根线(CAN-H和CAN-L)的电位差来确定总线的电平,在任一时刻,总线上有2种电平:显性电平和隐性电平。    “显性”具有“优先”的意味,只要有一个单元输出
转载
595阅读
0评论
0点赞
发布博客于 6 年前

Freescale Yocto Project搭建

系统:ubuntu-14.04.21、建立主机需要的包:A Freescale Yocto Project Community BSP build requires that some packages be installed for the build that are documentedunder the Yocto Project.You can go to Yoct
原创
2693阅读
0评论
0点赞
发布博客于 6 年前

PCB布线原则总结

1、环路最小规则------信号线与其回来构成的环路面积极可能小2、短线规则------布线长度应尽可能短,振荡器应放在离器件很近的位置3、开环检查规则----- 一般情况下不允许出现一端悬空的布线4、闭环检查规则------防止信号在不同层间形成闭环5、20H规则------防止电源层产生边沿效应6、时钟信号线包地原则-------尽可
原创
589阅读
0评论
1点赞
发布博客于 6 年前

飞思卡尔GPIO学习

处理器:i.MX 6Quad内核:Linux version 3.0.35参考内核说明文档:Documentation/gpio.txt通用GPIO输入输出使用:Using GPIOs-----------The first thing a system should do with a GPIO is allocate it, usingthe gpio_r
原创
2574阅读
0评论
3点赞
发布博客于 6 年前

Linux 系统内核空间与用户空间通信的实现与分析

多数的 Linux 内核态程序都需要和用户空间的进程交换数据,但 Linux 内核态无法对传统的 Linux 进程间同步和通信的方法提供足够的支持。本文总结并比较了几种内核态与用户态进程通信的实现方法,并推荐使用 netlink 套接字实现中断环境与用户态进程通信。1 引言Linux 是一个源码开放的操作系统,无论是普通用户还是企业用户都可以编写自己的内核代码,再加上对标准内核的裁
转载
342阅读
0评论
0点赞
发布博客于 6 年前

linux 中mdelay() 与msleep()的区别

在linux driver开发中,经常要用到延迟函数:msleep,mdelay/udelay.头文件:#include 虽然msleep和mdelay都有延迟的作用,但他们是有区别的.1.)对于模块本身mdelay是忙等待函数,在延迟过程中无法运行其他任务.这个延迟的时间是准确的.是需要等待多少时间就会真正等待多少时间.msleep是休眠函数,它不涉及忙等待.你如果是msle
转载
720阅读
0评论
0点赞
发布博客于 6 年前

Linux用户态与内核态交互数据---socket函数

1、socket函数:功能描述:socket函数是任何套接口网络编程中第一个使用的函数,它向用户提供一个套接字,即套接口描述文件字,它是一个整数,如同文件描述符一样,是内核标识一个IO结构的索引。通过socket函数,我们指定一个套接口的协议相关的属性,为进行使用socket api做好准备。int socket(int family, int type, int pr
原创
3669阅读
0评论
0点赞
发布博客于 6 年前

信号通信学习

信号处理流程图:Linux系统支持的所有信号均定义在/usr/include/asm/signal.h里面,其中常见信号有:SIGKILL:杀死进程(假如需要杀死进程B,进程A就发送SIGKILL信号给进程B,当进程B收到进程A发来的信号后进程B就会被杀死)SIGSTOP:暂停信号SIGCHLD:子进程停止或者结束时用来通知父进程信号的种类:可靠
原创
310阅读
0评论
0点赞
发布博客于 6 年前

linux进程信号处理函数signal和sigaction

Linux中signal函数说明:NAME       signal - ANSI C signal handlingSYNOPSIS       #include        typedef void (*sighandler_t)(int);       sighandler_t signal(int signum, sighandler_t
原创
3276阅读
0评论
1点赞
发布博客于 6 年前

Linux_USB驱动程序设计学习

Linux_USB软件系统架构构成:usb主控制驱动(USB Host Controller Driver):为USB主控制器提供驱动usb核心(USB Core):为usb主控制器和usb设备驱动连接起桥梁作用usb设备驱动(USB Client Driver):为连接到usb主机的设备提供驱动USB设备组成结构:usb设备包括配置(c
原创
635阅读
0评论
0点赞
发布博客于 6 年前

win7—ftp组件配置笔记

1、安装ftp组件:控制面板->功能和程序->打开或关闭windows功能:选中FTP服务器相关功能经验证还需要选中web管理工具的相关功能。2、添加FTP站点计算机->管理->服务和应用程序->Internet服务器(IIS)管理器点中Internet服务器(IIS)管理器出现管理页面,如下:右键点击“连接”选项中的“网站”,确认“添加FTP站点”
原创
995阅读
0评论
0点赞
发布博客于 6 年前

Vsftpd服务器移植.rar

Vsftpd服务器移植.rar源码包,可移植与嵌入式设备
rar
发布资源于 6 年前

Linux vsftpd移植笔记

PC_LInux安装vsftpdRed Hat Enterprise默认没有安装vsftpd所以使用镜像文件中的安装包安装挂载镜像:mount /dev/cdrom /media安装vsftpd: rpm -ivh  /media/Packages/vsftpd*开启vsftpd服务:service vsftpd start开启启动:chkconfig vsftpd on
原创
551阅读
0评论
0点赞
发布博客于 6 年前

ARM—使用FTP服务访问PC—FTP服务器笔记

需要ARM访问上位机FTP服务器下载文件或者上传文件的时候就需要ARM支持FTP服务功能。1、编译ARM的文件系统时需要在busbox中选上ftpget、ftpput选项2、ARM系统启动后输入ftpget命令提示如下:提示需要填写指令,实际操作中PC端搭建的FTP服务器使用的匿名登录,所以可以不加-u、-P(大写)指定登录用户名和密码,但需要加上-p(小写)指定ftp
原创
2048阅读
0评论
0点赞
发布博客于 6 年前

Ralink RT3070 AP--UDHCPD移植笔记

内核:Linux2.6.30处理器:AT91SAM9G201、在内核中添加以下选项:Networking  --->[*] Networking support  Networking options  --->  Packet socket                 //添加.配置CONFIG_PACKET[*] IP: DHCP support
原创
1256阅读
0评论
0点赞
发布博客于 6 年前

linux中没有dos2UNIX或者UNIX2dos命令怎么解决办法

[root@localhost ~]#dos2unix tr.py -bash: dos2unix: command not found安装方法:在http://linux.softpedia.com/progDownload/Dos2Unix-Download-5519.html下载hd2u-1.0.0.tgz[root@localhost ~]#tar -z
转载
1194阅读
0评论
0点赞
发布博客于 6 年前

Linux find 用法示例

Linux中find常见用法示例·find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;find命令的参数;pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。-print: find命令将匹配的文件输出到标准输出。-exec: fi
转载
234阅读
0评论
0点赞
发布博客于 6 年前

Ralink RT3070 AP移植笔记

使用RT3070_SoftAP驱动(好像Rklink公司网站没有了。。。现在网上很难找到)处理器:AT91SAM9G20内核版本:Linux2.6.301.修改驱动包里面三个文件(MODULE、NETIF、UTIL)的Makefile:指定使用平台(PLATFORM = SMDK),修改对应的平台配置(LINUX_SRC = 处理器使用的内核地址,CROSS_COMPILE=编译工
原创
1673阅读
0评论
0点赞
发布博客于 6 年前

linux grep用法大全

原文:http://orchidllh.itpub.net/post/4020/24280在Unix中经常会用到grep去选取所需要的信息,用好grep有时可以到达意想不到的效果。  Grep : g (globally) search for a re (regular expression_r_r ) and p (print ) the results.1、参
转载
343阅读
0评论
0点赞
发布博客于 6 年前

Atmel AT91SAM9G20 EMAC控制DM9161调试笔记

AT91SAM9G20的EMAC可用于控制外设PHY的工作模式,EMAC工作模式可以为MII和RMII。DM9161连线说明:分别说明了MII和RMII连线的方式。可通过DM9161---RXD管脚配置PHY设备地址,EMAC在操作外接PYH设备的时候使用地址区别不同设备,RXD管脚说明:DM9161实际原理图:从原理图可看出PHY设备地
原创
3069阅读
0评论
0点赞
发布博客于 6 年前

linux_I2C学习三(I2C子系统)

一、Linux--I2C子系统1. I2C核心I2C 总线和 I2C 设备驱动的中间枢纽,它提供了 I2C 总线驱动和设备驱动的注册、注销方法等。2. I2C控制器驱动I2C CPU对 I2C控制器的驱动实现, 控制器可在 CPU 外部, 也可以集成在 CPU 内部。3. I2C设备驱动对 I2C从设备的驱动实现,如AT24C02的驱动。二、linu
原创
503阅读
0评论
0点赞
发布博客于 6 年前

linux_I2C学习二(裸机)

一、EEPROM简介:EEPROM (Electrically Erasable Programmable Read-Only Memory),电可擦可编程只 读存储器,是一种类似于flash的固态存储器, 但是与 flash相比又存在一些区别:1.EEPROM 可以按位擦写, 而FLASH只能大片 擦除2.EEPROM 一般容量都不大, 一般都在64Kbit以下二、I2C初始
原创
429阅读
0评论
0点赞
发布博客于 6 年前

linux_I2C学习一

一、I2C总线结构:I2C总线是由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C总线只有两根双向信号线。SDA:Serial Data Line-数据线SCL:Serial Clock-时钟线I2C总线协议规定:从设备采用 7位的地址。 D7~ D1:从设备地址。 D0位:数据传送方向位,为“0”时表示主设备向从设备
原创
357阅读
0评论
0点赞
发布博客于 6 年前

linux下调整进程、线程优先级

linux下调整进程优先级 进程的优先级决定了进程是否优先被cpu分配资源进行处理。在cpu资源十分充足时,每个正在运行的进程都能分配到足够的资源进行处理,此时调整进程的优先级是没有什么意义的;如果cpu资源紧张时,top查看cpu使用达到90%以上时,优先级高的进程将被优先分配资源去执行。 如果此时手头有一个非常紧要的任务要执行,比如传输一个非常重要的数据或是准备给客户发
原创
6685阅读
0评论
0点赞
发布博客于 6 年前

数据库(sqlite)

一、数据库基本概念A.数据(Data)能够输入计算机并能被计算机程序识别和处理的信息集合。B.数据库(Database)数据库是在数据库管理系统管理和控制之下,存放在存储介质上的数据集合。注意:数据库管理系统(DataBase Mangement System) --DBMMSC
转载
328阅读
0评论
0点赞
发布博客于 6 年前

linux系统头文件

头文件目录中总共有32个.h头文件。其中主目录下有13个,asm子目录中有4个,linux子目录中有10个,sys子目录中有5个。这些头文件各自的功能如下,具体的作用和所包含的信息请参见第14章。:a.out头文件,定义了a.out执行文件格式和一些宏。:常数符号头文件,目前仅定义了i节点中i_mode字段的各标志位。:字符类型头文件,定义了一些有关字符类型判断和转换的宏。:错误号
转载
339阅读
0评论
0点赞
发布博客于 6 年前

Linux杀死进程的方法

查看进程状态:命令:ps -ef;ps -aux;ps -ef | grep (进程名):只查看指定进程名进程的状态pgrep (进程名):查看指定进程名进程状态pkill -9 (进程名):杀死指定进程名进程kill -s 9 (进程号):-s 9 制定了传递给进程的信号是9,即强制、尽快终止进程。killall -9 (进程名):杀死指定进程名进程。
原创
531阅读
0评论
0点赞
发布博客于 6 年前

关于SIGPIPE导致的程序退出

关于SIGPIPE导致的程序退出收集一些网上的资料,以便参考:http://blog.chinaunix.net/u2/69143/showart_1087349.html     当服务器close一个连接时,若client端接着发数据。根据TCP协议的规定,会收到一个RST响应,client再往这个服务器发送数据时,系统会发出一个SIGPIPE信号给进程,告诉进程这个连接已经断
转载
309阅读
0评论
0点赞
发布博客于 6 年前

Linux网络调试笔记

项目要求:Linux'客户端自动连接PC端服务器;Linux服务器端等待PC端客服接入;调试过程:Linux客户端:使用Socket函数创建网络套接字,然后使用connect函数连接服务器,最后调用connect返回的描述符对网络设备进行读写。笔记:Socket创建的套接字并不是直接用来对网络设备进行读写的,对网络设备进行读写的描述符是connect返回的设备描
原创
425阅读
0评论
0点赞
发布博客于 6 年前

send或者write socket遭遇SIGPIPE信号

send或者write socket遭遇SIGPIPE信号(转)转自:http://linux.chinaunix.net/techdoc/net/2008/10/10/1037290.shtml当服务器close一个连接时,若client端接着发数据。根据TCP协议的规定,会收到一个RST响应,client再往这个服务器发送数据时,系统会发出一个SIGPIPE信号给进程,告诉进程这个
转载
499阅读
0评论
0点赞
发布博客于 6 年前

高级套接口-(sendmsg和recvmsg)

sendmsg和recvmsg这两个接口是高级套接口,这两个接口支持一般数据的发送和接收,还支持多缓冲区的报文发送和接收(readv和sendv支持多缓冲区发送和接收),还可以在报文中带辅助数据。这些功能是常用的send、recv等接口无法完成的。接口的声明如下:点击(此处)折叠或打开#include sys/socket.h>ssize_t
转载
384阅读
0评论
0点赞
发布博客于 6 年前

Linux Socket编程(不限Linux)

socket的基本函数,这些都是本文想介绍的。本文的主要内容如下:1、网络中进程之间如何通信?2、Socket是什么?3、socket的基本操作3.1、socket()函数3.2、bind()函数3.3、listen()、connect()函数3.4、accept()函数3.5、read()、write()函数等3.6
转载
297阅读
0评论
0点赞
发布博客于 6 年前

Linux-FLASH驱动设计四

在Linux内核中MTD子系统为NORFLASH、和NANDFLASH设备提供统一的接口,从而使得FLASH驱动设计简化。#cat  /proc/mtd:可以查看分区,dev目录下以“mtd”打头的设备文件对应相应的分区。MTD子系统结构图:MTD子系统简化了FLASH驱动的编写、让驱动更加规范。
原创
368阅读
0评论
0点赞
发布博客于 6 年前

Linux-FLASH驱动设计三

#include #include #include #include #include static int major = 0;static int sect_size = 512; //指明每个扇区大小为512static int nsectors = 1024;struct blk_dev{ int size;
原创
333阅读
0评论
0点赞
发布博客于 6 年前

Linux-FLASH驱动设计二

块设备驱动系统分析:功能:把内存划出512k,然后利用驱动程序做成块设备进行相应的访问。#include #include #include #include #include /* printk() */#include /* kmalloc() */#include /* everything... */#include /* error codes
原创
309阅读
0评论
0点赞
发布博客于 6 年前

Linux-FLASH驱动设计一

块设备概念:字符设备是指访问的最小单位为一个字节,块设备是指能以块为单位进行访问的设备,块大小一般是512字节的整数倍(不同系统大小不同)。常见的块设备包括硬件,SD卡,光盘等。块设备访问一个字节方法:首先以一个块为大小读取硬件数据出来,然后再做相应的处理。块设备驱动系统架构:VFS系统架构:VFS是对各种具体文件系统的一种封装,为用户程序访问文件提
原创
343阅读
0评论
0点赞
发布博客于 6 年前

Linux守护进程设计

什么是守护进程:守护进程,也就是通常说的Daemon(精灵)进程,是Linux中的一种服务进程。守护进程的特点:1.不能占用控制终端(守护进程都是后台运行) (启动一般进程时后面加上(&),此程序就会以守护进程方式运行。)示例:(./test &)2.独立于控制终端(不对于任何控制终端)3.周期性运行(移植间歇性运行)例如:smbd(查看进程运行状态命令:ps aux,‘?
原创
448阅读
0评论
0点赞
发布博客于 6 年前

Linux输入子系统模型

Linux输入子系统模型:Input Device Driver:输入设备驱动,需要用户自己实现Input Core:输入子系统核心部分,Linux内核已经做好Input Event Driver:输入时间驱动,Linux内核已经做好Hardware:输入设备任何一次输入事件,如鼠标移动, 按键按下,都需要通过InputDeviceDriver- >InputC
原创
440阅读
0评论
0点赞
发布博客于 6 年前

Linux平台总线设计

平台总线(Platform bus)是Linux2.6内核加入的一种虚拟总线,其优势在于采用了总线的模型对设备与驱动进行了管理,这样提高了程序可移植性。用户不用自己创建虚拟总线,可直接调用此总线使用。通过平台总线机制开发设备驱动流程图:平台设备匹配函数:/** * platform_match - bind platform device to platfor
原创
455阅读
0评论
0点赞
发布博客于 6 年前

Linux总线设备驱动模型学习

Linux总线驱动模型主要在2.6以后内核提出功能:主要对热插拔、跨平台移植性的要求支持当外部设备接入总线后,总线会与挂载到总线上的每个驱动一一进行匹配,如果匹配上就调用被匹配上的驱动。Linux内核中,总线由bos_type结构表示,定义在struct bus_type{const char *name; 总线名称int (*mat
原创
557阅读
0评论
0点赞
发布博客于 6 年前

linux交叉工具链总结

安装linux交叉工具链步奏: 1.解压linux交叉工具链 2.修改环境变量  vi /etc/profile 3.更新环境变量  source /etc/profile  交叉工具链不能混合使用,在宿主机和开发板里面要用同一套交叉工具链才不会报错。
原创
340阅读
0评论
0点赞
发布博客于 6 年前

Linux系统库函数 -- lseek函数用法

所有打开的文件都有一个当前文件偏移量(current file offset),以下简称为 cfo。cfo 通常是一个非负整数,用于表明文件开始处到文件当前位置的字节数。读写操作通常开始于 cfo,并且使 cfo 增大,增量为读写的字节数。文件被打开时,cfo 会被初始化为 0,除非使用了 O_APPEND 。    使用 lseek 函数可以改变文件的 cfo 。        
原创
319阅读
0评论
0点赞
发布博客于 6 年前