自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 第十六章PHY -基于Linux3.10

16.1 PHY 本章和OSI模型中的物理层和数据链路层关系密切。在嵌入式SOC上,通常集成有ARM核和MAC控制器,以及增加数据传输带宽的MAC专用DMA,对这种形式的SOC通常使用外接物理PHY设备的方法,外接的PHY芯片如RTL8201F、88E1111、88E6096等,集成型以太网控制器集成了MAC和PHY,如DM9000、RTL8139CP等,它们常用于没有MAC控制器的SOC

2015-03-27 21:36:44 7718

原创 第十五章 提升网络性能技术--基于Linux3.10

本章的这些特性在于提高网络性能,这些技术中的一些需要NICs的支持,一些特性是软件实现的。这些特性在服务器上使用较为流行,但是对于嵌入式领域,尤其是视频等网络等带宽需求较大的应用场景,这些特性也可能被使用。以太网数据包长是1500个字节,如果要传输大量的数据,TCP层就需要将这些数据分成若干小片MSS(Maximum Segment Size),然后再将这些小片发送出去。        

2015-03-27 21:23:21 2313

原创 第十四章 netlink机制--基于Linux3.10

Netlink基于网络的消息机制,能够让用户和内核空间进行通信,12.3节提到的ifconfig是使用ioctl方法和内核通信的,而ip命令则是使用netlink和内核通信的。该机制初衷是为网络服务的,但是现在起应用范围已经大大扩展。14.1 netlink支持的通信用户空代码使用实例,发送消息时内核使用同一套代码,也就是说调用这套消息机制代码除了可以发送netlink消息还可以发送其

2015-03-27 21:16:15 2651

原创 第十三章 网络命名空间(内核源码实现)--基于Linux3.10

有两篇翻译博文《Lxc之二—网络设置》和《linuxnamespace-之使用》;LXC文章中关于网络的设置是从用户空间配置的,从该文章可以知道网络命名空间的一些基本概念和其提供的功能。而《linuxnamespace-之使用》包括了网络命名空间管理、配置以及使用,这比LXC译文更接近网络命名空间的实现,但是都是基于用户空间的,这章是关于Linux网络命名空间内核源码。在Linux中,每一个网络空

2015-03-27 21:10:49 3296

原创 第十二章 trie路由--基于Linux3.10

路由表的构建途径: 通过用户命令[route(ioctl) 、ip route(netlink)]静态配置通过路由协议动态配置,这些协议是BGP(Border Gateway Protocol)、EGP(Exterior Gateway Protocol)以及OSPF(Open Shortest Path First)这一章的内容基于route方法,其它的配置路由的方法不在这章中,但是

2015-03-26 22:50:37 9898 1

原创 第十一章 Linux包过滤防火墙-netfilter--基于Linux3.10

11.1 netfilter框架netfilter从Linux2.4引入linux内核,是现在3.10版本的防火墙框架,该框架可实现数据包过滤、数据包处理、地址伪装、透明代理、动态网络地址转换(NetworkAddressTranslation,NAT),以及基于用户及媒体访问控制(MediaAccess Control,MAC)地址的过滤和基于状态的过滤、包速率限制等netfilte

2015-03-25 22:56:49 5041

原创 第十章 网络工具--基于Linux3.10

在测试io设备时,常常会用到iostat、iotop工具,在查看内存时常常用到vmstat、free、slabtop工具,在查看调度器时,常常使用mpstat、top以及ps工具。这里来说说网络相关的工具,有性能分析、网络管理、状态查看类工具。下面的一张图显示了网络相关工具和其作用的层次关系。图10.1 网络工具由上至下的来看该这些工具。 ssss是iproute2包提

2015-03-25 22:43:57 1256

原创 第九章 tcp拥塞控制--基于Linux3.10

Linux提供丰富的拥塞控制算法,这些算法包括Vegas、Reno、HSCTP(High Speed TCP)、Westwood、BIC-TCP、CUBIC、STCP(Scalable TCP)、Hybla以及Veno等,对于Linux3.10而言,这些算法在添加到内核时会被注册到同一个链表。9.1 CUBIC拥塞控制tcp_sock函数使用到的控制拥塞变量如下:snd_cwnd:

2015-03-25 22:30:55 2994

原创 第八章 tcp接(传输层)--基于Linux 3.10

在IP层的接收,提到其调用的函数是inttcp_v4_rcv(struct sk_buff *skb),其参数是包含数据信息的sk_buff。这个函数定义于:net/ipv4/tcp_ipv4.c 1961 int tcp_v4_rcv(struct sk_buff *skb)1962 {1963 const struct iphdr *iph; //ip层头标识

2015-03-25 22:26:22 1288

原创 第七章 tcp发送(传输层)--基于Linux3.10

由第五章可知,sock_recvmsg和tcp_sendmsg用于tcp层和应用层的接口,由第四章可知,tcp_v4_rcv和tcp_tarnsmit_skb是传输层和网络层之间的接口,现在来看看tcp_sendmsg是如何到tcp_tarnsmit_skb,tcp_v4_rcv又是如何到sock_recvmsg的。图7.1 套接字发送sys_send的参数意义如下,fd是套接

2015-03-24 22:57:18 1672

原创 第六章 应用层(网络)--基于Linux3.10

前述文章代码由下至上分析,这次从上至下的分析,从应用层开始,看看应用层(用户空间)是如何将数据传递给内核的。在应用程序编程时,常常可以看见如下接口:sockfd = socket(AF_INET, SOCK_STREAM, 0) connect(sockfd, (struct sockaddr *)&server_addr, sizeof(struct sockaddr) recv(soc

2015-03-24 22:48:48 982

原创 第五章 传输层(tcp)到网络层(ip)--基于Linux3.10

根据数据的流向跟踪代码,由于数据发送是从tcp层到网络层再到网络到主机层,所以先来看tcp层向ip层发送数据的函数。tcp的发送函数和接收函数一样位于net/ipv4/文件夹,文件名是tcp_output.c文件,传输层和网络层联系的函数是tcp_transmit_skb(...):在进入该函数时,先看该函数用到的一个重要的数据结构,其定义于net/dccp/ipv4.c文件,919行是发

2015-03-24 22:30:15 2302

原创 第四章 网络层接收数据包流程--基于Linux3.10

4.1 主机到网络层的过渡从netif_receive_skb(struct sk_buff *skb)函数开始,网卡收到数据包后产生中断通知CPU有数据到达,在中断服务函数中触发接收软中断,等待内核在适当的时间调度NAPI方式的接收函数完成数据的接收,并非所有网卡或者MAC控制器都是支持NAPI方法(需要硬件能支持)的,NAPI服务函数最重要的工作就是调用netif_receive_skb将

2015-03-23 22:45:58 4712 1

原创 第三章 套接字相关数据结构--基于Linux3.10

本章是对socket通信过程中使用到的比较重要的据结构罗列和意义的阐述,在阅读其它层的代码前,先来看几个重要的数据结构,这几个数据结构贯串四层模型。 3.1 socket对应的内核结构体在用户空间使用socket()函数创建一个套接字。对应的系统调用就是:asmlinkagelong sys_socketcall(int call, unsigned long __user *ar

2015-03-23 22:38:36 1543

原创 第二章 主机到网络层(网卡)--基于Linux3.10

TCP/IP协议栈模型网络协议栈常用OSI七层模型,实际上Linux网络协议栈使用的却是四层模型,图2.1展示了OSI七层和四层模型它们之间各层对应关系。图2.1的最左侧一列是数据在协议栈上各层的称谓。frame位于主机到网络层(Layer1),packet位于Layer2,segment位于Layer3,data或message位于Layer4;当然对于OSI七层模型而言,由下至上依

2015-03-20 21:59:11 2355

原创 第一章 网络子系统初始化--基于Linux3.10

网络初始化函数调用顺序《Linux系统启动那些事—基于Linux 3.10内核》提到系统启动时会调用一系列的初始化函数,初始化函数使用include/init.h中的宏定义,这些宏的顺序显示了初始化函数调用的顺序。即由pure_initcall函数定义的函数先于core_initcall定义的函数,依此类推。#define pure_initcall(fn) __define_init

2015-03-20 21:43:12 4955 1

原创 第零章 内核网络相关配置选项--基于Linux 3.10

Kconfig选项packet protocol 被直接和网络设备通信的应用程序使用,其没有使用内核的其它协议,像tcpdump支持需要使能该选项,af_packet。 Packet socket               支持PF_PACKET套接字,ss之类工具监控接口(eth0...)会使用这类套接字   Packet:sockets monitoring interf

2015-03-20 21:34:24 2466

原创 i2c驱动-建立于字符驱动之上

字符设备的驱动简单模板如下:#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #

2015-03-13 23:08:27 1609

原创 网络摄像机架构

网络摄像机 IPC现今的手机、运动摄像机以及安防监控领域的摄像机,它们通过光学传感器获取外部图像,经过处理后将视频信号存储或者传输到远端。本文主要针对网络摄像机。硬件层       硬件层随着应用场景的的不同硬件方案上差别很大,手机的芯片解决方案主要偏向于射频和基带信号处理,网上有很多联发科手机芯片解决方案,而安防领域则偏重于图像质量,更偏重于高清、远距离监控等;安防领域视频芯片解决目

2015-03-10 22:58:48 4844 4

翻译 IPv6

1、IPv6提供比IPv4更大的地址空间 128bit --- 32bit2、提供更好的端到端的连接,Peer-to-peer应用需要end-to-end连接。 Ipv6有巨大的地址空间,不需要像IPv4那样使用NAT3、IPv6具有更好的设备自动配置功能。IPv4使用DHCP,ipv6使用plug-and-play自动配置,此外提供类似DHCP的DHCPv6。4、IPv6简化了头结构

2015-03-02 23:08:35 2077

深度学习之 自然语言处理BERT 博客源码

深度学习之 自然语言处理BERT 博文源码

2022-06-11

深度学习 模型调优 keras mnist

越来越多的人工智能解决方案将深度学习作为其基本技术,然而构建深度学习模型并不是一件容易的事,为了获得满意的准确性和效率,通常需要数周的时间优化模型。 本下载源码为博客文章 https://blog.csdn.net/shichaog/article/details/125128321 配套资源,从网络结构本身和训练参数两个层级两个方面实例分析优化的过程和手段

2022-06-06

语音回声消除使用到的算法

语音回声消除算法中使用到的NLMS算法

2017-05-03

zynq dma linux 配置

该资源是博客中附带的资源下载链接

2017-04-02

bluetooth BLE server

bluedroid bluetooth low energy,server端示例代码,client 端下载地址见: http://blog.csdn.net/shichaog/article/details/53557274

2016-12-12

beacon android示例代码

android下beacon 开发示例程序

2016-12-10

bluetooth BLE client

Gatt为ble client端程序,用于brocast自己并发送一些信息.Server为接收信息程序

2016-12-10

麦克风阵列前端语音信号处理

个人学习笔记,稍稍整理下

2016-10-12

vim 技巧和插件

共六个部分。 第一个部分是vim常用命令快捷方式 第二个是Tlist插件的安装和使用实例。 第三个是ctags的安装和使用实例 第四个是自动补齐功能的实例 第五个是winmanager的安装和使用实例 第六个是cscope安装和使用实例 每个录制文件包含了time_*和vim_*两个文件,其中time文件记录时间,vim命令记录的是命令,它们内容是script工具生成的。 查看演示方法,如查看第二个(time和vim两个文件中去有2的文件): scriptreplay time_hacking2_tlist.log vim_hacking2_tlist.txt 其中在~/.vimrc的文件在vimrc文件里,如果只使用scriptreplay回放,则不需要替换~/.vimrc;如果替换,则先备份原文件,以免习惯不同导致不适应。

2015-05-08

linux内存管理

原创,共五章,基于工作中使用的3.10版本内核,包括 内存启动初始化过程,linux内核内存管理,进程虚拟地址管理

2015-05-05

linux tcp/ip协议栈

分为上篇和下篇,上下篇共十八章,上篇九章部侧重于TCP/IP数据收发流程,即OSI模型的IP和TCP层,下篇也是九章,并不属于TCP/IP本身,但是多少和网络有关且常用到,比如LC-trie路由、netfilter包过滤防火、还有一些网络相关的命令行工具等,文末给出IPV6的协议栈模型图,此外还给出了测试源码。

2015-04-22

Linux系统启动那些事—基于Linux 3.10内核

注:Linux310启动,为旧版本,请下载这版 也许你会好奇Linux是如何启动的?一些基础的服务又是何时准备好的?本文旨在揭秘操作系统是启动过程的,主要是内核态下发生的一些事。本文涉及grub、uboot、initrd、根文件系统、设备树、以及Linux内核编译等内容。 对那些好奇系统是如何启动的人本文非常适合,当然对于由于涉及操作系统的方方面面,bsp的开发人员也有点价值,但是这里没有对应用做介绍;本文讨论两种平台下的启动方式,因为它们均是对应体系架构下的典型。

2014-10-25

ieee802.3-2012

ieee 802.3 -2012标准;全部收录完整版

2014-08-03

keepalive应用脚本

包括主、从MySQL库,监视、主从切换shell脚本

2014-05-05

嵌入式linux应用开发完全手册光盘代码

嵌入式linux应用开发完全手册 那本书里的代码和工具部分韦老的书,很不错

2012-03-04

fft 快速傅里叶变换430

快速傅里叶变换 c语言编写的,fft 快速傅里叶变换C8051FXXX 程序,其中包含8位和16位的快速傅利叶变换

2011-04-27

空空如也

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

TA关注的人

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