自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ARM嵌入式系统启动和分区管理

uboot 只是一个启动引导向,最终的目的是启动 linux 系统。那么即使不使用 uboot 也可以用其他的引导向,但是目前主流都是使用的 uboot,所以这里对uboot的执行函数流程进行了整理,方便大家好阅读 uboot 的工程源码,在了解uboot之前,需要了解一下芯片启动处理逻辑。

2023-10-06 08:56:57 136

原创 open vswitch + veth 实验

虚拟化网络配置

2023-10-02 09:07:21 228 1

原创 悬崖传感器调试问题总结

记录一个硬件问题,顺便写文章总结一下

2023-08-12 16:38:21 618

原创 nand flash 写穿案例记录

0x00400000 (4M),通过这个结构体可知size是本mtd分区的最大字节数空间 ,erasesize是本分区的最小擦除字节数空间(块大小,生成image时候,代码中烧写TT的起始地址写成了0x1F60000,但是这里正确应该写成FLASH_ADDR_TT=0x00400000,但是写成0x1F60000后,这个区域正好是rootfs的烧录地区。在后台执行find命令,报找不到命令,并且去/usr/bin/目录下查看,没有任何二进制文件。这样引出几个问题,为什么写坏了,分区,系统还能起来?

2023-06-26 09:29:18 262

原创 arm 源码编译kernel 对比image zimage uimage vmlinux

下载cc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz ,这是官网的。mkimage是u-boot编译出来的命令,就是说,你要执行这个命令前,需要安装u-boot或者源码编译u-boot,我建议源码编译,使用toolchain编译出来。一次输入上面的命令,arm-linux-gnueabihf-gcc --version执行成功,说明toolchain安装成功。linux内核编译出来的原始的内核文件,elf格式,未做压缩处理。

2023-05-06 10:14:43 285

原创 git 常用命令及遇到问题

自己没事,把git常用命令做个记录总结。方便自己和初学者查看,本文针对初学者,如果你已经是工作多年高手,请跳过。

2023-04-23 10:03:44 566

原创 ARM平台交叉编译jshon

其中/home/kobe/gcc/arm/gcc-x86_64_arm-xxxx-gnueabihf/bin/是交叉编译工具目录,具体路径根据自己实际情况设置。因为交叉编译,因此需要把工具链的安装路径添加到$PATH中,这样保证编译工具能被找到。编译jshon,需要提前编一个jansson库,他是jshon依赖的。如果上面你基本都试过了,那么你很快也就编译出来了。jshon的二进制文件就是最终编译结果。先总结一下,编译时候遇到的问题。还有类是下面的命令都是错误的。

2023-04-11 09:52:20 1134 1

转载 u-boot 之spl

写的很容易理解

2023-03-30 12:36:59 1383

原创 内核编译----- pahole 问题

kernel 编译支持pahole

2022-10-13 17:25:22 2330

原创 iptables mark 相关用法及使用举例

iptables mark使用方法,涉及到QOS ,rule route

2022-08-13 09:18:53 2337 1

原创 syslog Linux系统log打印原理

系统log打印

2022-08-04 10:55:00 996

原创 mqtt抓包

数据包抓包截图

2022-06-22 10:09:32 941

原创 ovs + docker+kvm+vxlan

环境 : 两台host, host1 安装docker+ovs, host2 安装kvm+ovs。具体安装过程略。host1(docker 容器) 收包流程:首先,ens38口收包__netif_receive_skb_core()->ip_rcv()->ip_rcv_finish()->dst_input->ip_local_deliver->ip_local_deliver_finish->udp_rcv->__udp4_lib_rc...

2021-10-28 10:31:38 191

原创 kernel使用skb打印ip地址和tcp端口号

if(printk_ratelimit()){#define NIPQUAD(addr) \((unsigned char *)&addr)[0],\ ((unsigned char *)&addr)[1],\ ((unsigned char *)&addr)[2],\ ((unsigned char *)&addr)[3] if((skb ->protocol) == htons(ETH_P_IP )) { ...

2021-04-16 16:10:56 1574

原创 BOND 动态链路聚合 lacp配置及相关问题

内容基本都是参考的,哪里有雷同或者错的地方,请批评指正。针对802.3ad协议。

2021-04-02 19:27:26 2919 3

原创 dpdk理解

dpdk几个特性: 1)PMD 2)igb_uio和uio互动配合,解决网卡硬中断处理流程 3)hugepage 4)无锁队列 5)cpu亲和性绑定 6)kni技术 7)pipe-line处理模型每一个分开说,都有很多东西,其实面试过程中很多人都说使用过DPDK,但是不知道为什么使用DPDK。从服务器角度,是为了解决高并发性能问题,传统的程序架构有那些问题呢?1)一个socket 流程,数据需要拷贝两次(这个很多资料这么写,其...

2021-03-16 09:41:15 634 1

转载 IPV6 DHCPV6 和 无状态 分配地址

1DHCPv6简介1.1 DHCPv6概述DHCPv6(Dynamic Host Configuration Protocol for IPv6,支持IPv6的动态主机配置协议)是针对IPv6编址方案设计的,为主机分配IPv6前缀、IPv6地址和其他网络配置参数的协议。与其他IPv6地址分配方式(手工配置、通过路由器公告消息中的网络前缀无状态自动配置等)相比,DHCPv6具有以下优点:l更好地控制地址的分配。通过DHCPv6不仅可以记录为主机分配的地址,还可...

2020-08-21 10:13:20 10452 1

转载 linux内核之内存管理图解(值得看)

谢谢,作者的分享。前言 本文主要针对想从事linux内核开发的初级人员,由于内存管理是在从事内核开发时的基础知识,因此本文将从宏观原理方面阐述linux内核的内存管理机制。内核空间页页(page)是内核的内存管理基本单位。(linux/mm_types.h)struct page { page_flags_t flags; 页标志符 ...

2020-02-06 08:59:10 1478

转载 linux内核igb发包流程

packagecloud:blogSubscribe to our RSS feedback to topback to postsMonitoring and Tuning the Linux Networking Stack: Sending DataFeb 6, 2017 • packagecloudTags:linuxTL;DRThis blog ...

2019-12-05 14:42:37 800

转载 anycast技术

转载别人的,不好意思啊浅析AnyCast网络技术什么是BGP AnyCast?BGP anycast就是利用一个(多个) as号码在不同的地区广播相同的一个ip段。利用bgp的寻路原则,短的as path 会选成最优路径(bgp寻路原则之n),从而优化了访问速度。其实bgp anycast是不同服务器用了相同的ip地址。阿里的DNS 就是使用了BGP An...

2019-09-27 17:30:57 9031 4

原创 ipv6 判断地址是否在同一个子网

代码应该可以调试通,源码是在github上找的,做了些修改。#include <stdio.h>#include <stdlib.h>#include <netinet/in.h>#include <sys/socket.h> #include <arpa/inet.h> #include <st...

2019-06-16 17:26:18 6686 1

转载 Linux-4.20.8内核桥收包源码解析(三)----------网卡驱动收包

转制https://blog.csdn.net/Sophisticated_/article/details/87295513每次一个以太网帧到达时,都使用一个IRQ来通知内核。这里暗含着“快”和“慢”的概念。 对低速设备来说,在下一个分组到达之前, IRQ的处理通常已经结束。由于下一个分组也通过IRQ通知,如果前一个分组的IRQ尚未处理完成,则会导致问题,高速设备通常就是这样。现代以太...

2019-05-31 13:19:15 432

转载 tcp/ip帧格式

TCP/IP协议栈中的数据收发2014-12-02本文将对TCP/IP的数据收发做一个粗略总结~1、TCP/IP基本特点TCP/IP总的设计目的就是保证数据的快速有序的传输,且无丢失,基本特点如下:面向连接:两端组成一个连接,每端以五元组为标识 双工字节流: 采用字节流进行双工数据通信 有序发送:利用序列号保证发送的有序性 可靠性:利用ACK保证数据的可靠性 流控:接收...

2018-12-06 10:17:33 1728

转载 linux select函数详解(转载)

linux select函数详解在Linux中,我们可以使用select函数实现I/O端口的复用,传递给 select函数的参数会告诉内核:      •我们所关心的文件描述符      •对每个描述符,我们所关心的状态。(我们是要想从一个文件描述符中读或者写,还是关注一个描述符中是否出现异常)      •我们要等待多长时间。(我们可以等待无限长的时间,等待固定的一段时间,或者根...

2018-12-03 09:06:27 281

转载 dns + 重定向

其实这个文章叫大型网站用户定位技术,其实今天要讲的不是智能 DNS ,今天是要讲的智能 DNS 的问题,和一些网站对这个的处理,下面要讲的这个技术主要是针对比较大的文件,比如下载和视频之类。为什么要讲这个,主要是我的群中一些朋友吵着想了解一下。我答应了非常非常久了。直到现在才有时间给大家分享一下。我们知道,现在很多网站的 GLSB 都是基于 DNS 来做。DNS 的解析流程如下。我们来看。...

2018-09-10 17:22:00 8385

转载 网卡的零拷贝理解

转自:http://blog.csdn.net/freas_1990/article/details/9173713  Jack:最近听说了网络处理的“零拷贝”技术,觉得非常神奇,在网上查阅了很多资料。不过,并不是太明白——知其然,而不知其所以然。你能通俗地解释一下吗?我:这是一个相对比较复杂的话题,说起来话就多了。本质上来说,其实就是80386的分页管理变异而已。Jack:分...

2018-08-14 11:18:22 2482 1

转载 tcp_ack

注意 tcp_ack 是来处理接收到的ACK的,那么到底怎么去做呢?看下面: 先还上把tcp_sock的结构放在这里,下面一些数据的分析需要用到: [cpp] view plaincopyprint?struct tcp_sock {            /* inet_connection_sock has to be the first member of tcp_so...

2018-07-25 15:12:21 1805

转载 tcp 队列

【转】高性能网络编程3----TCP消息的接收这篇文章将试图说明应用程序如何接收网络上发送过来的TCP消息流,由于篇幅所限,暂时忽略ACK报文的回复和接收窗口的滑动。为了快速掌握本文所要表达的思想,我们可以带着以下问题阅读:1、应用程序调用read、recv等方法时,socket套接字可以设置为阻塞或者非阻塞,这两种方式是如何工作的?2、若socket为默认的阻塞套接字,此时recv方法传入的le...

2018-06-27 16:11:57 1684

原创 网卡调优绑定

numa架构,万兆网卡两个,挂载不同numa[root@localhost ~]# lscpuArchitecture:          x86_64CPU op-mode(s):        32-bit, 64-bitByte Order:            Little EndianCPU(s):                88On-line CPU(s) list:   0-8...

2018-04-13 11:57:06 1995

转载 JSON学习

JSON学习-使用cJSON解析  使用cJSON解析JSON字符串 一、为何选择cJSON          我们在使用JSON格式时,如果只是处理简单的协议,可以依据JSON格式,通过对字符串的操作来进行解析与创建。然而随着协议逐渐复杂起来,经常会遇到一些未考虑周全的地方,需要进一步的完善解析方法,此时,使用比较完善的JSON解析库的需求就提出来了。         基于方便引用的考虑,我们希...

2018-04-04 09:34:07 168

转载 在Linux 上,编写一个每秒接收 100万UDP数据包的程序究竟有多难?

在Linux 上,编写一个每秒接收 100万UDP数据包的程序究竟有多难?写的不错,转载一下1. UDP概念   用户数据报协议(英语:User Datagram Protocol,缩写为 UDP),又称使用者资料包协定,是一个简单的面向数据报的传输层协议,正式规范为RFC 768   在TCP/IP模型中,UDP为网络层以上和应用层以下提供了一个简单的

2018-01-15 15:02:06 1426

转载 dpdk-ixgbe 详解

关于dpdk启动,ixgeb启动 初始,收发包原理,目前我看过最详细的文章

2017-11-03 12:27:17 4641

转载 BIND9的架构与机制笔记1

BIND9采用的是事件驱动的机制来工作,而事件的源头则是IO,IO在linux使用的EPOLL的边缘触发模式。  本篇说的是epoll,BIND9如果创建了watcher线程(宏USE_WATCHER_THREAD控制),这里就讨论有线程的情况,实际上即使不创建线程干的也都是一样的活。在lib/isc/socket.c中setup_watcher函数:(所有的代码都是截取的epol

2017-08-24 09:44:48 995

转载 BIND9源码学习笔记1---gdb调试篇

学习bind9源码之前,首先要知道如何用gdb来调试bind。BIND9的源码我是先看代码弄懂它的架构,像什么event-drive,epoll等,再去看它的业务流程。看业务流程的时候要追踪它的数据流和处理过程,所以用gdb比较好,当然自己加日志再结合BIND9自有的日志也不是不行,只是觉得这样更清晰。  编译bind的时候加的有-g和-O2选项,前者不用说了,后者很坑爹的

2017-08-24 09:34:54 403

转载 BIND9源码分析之UDP数据处理

本文简要介绍一下BIND9中的UDP数据处理,包括如何创建socket、设置什么socket参数、多线程环境中如何让多个线程读取53端口的数据等等。 BIND9的架构采用event-driven和task-based。对于像TCP这样的事件采用event-driven来等待读写时间,而在多线程方面,采用task-based的方式,服务器启动时由task_manager创建一系列干活

2017-08-22 10:21:08 736

转载 bind源码解析(二)

bind9运行主要是两个线程和一个do while循环,这三部分构成了bind的核心代码。do {           result = isc_app_run();           if (result == ISC_R_RELOAD) {                 ns_server_reloadwanted(ns_g_server);          

2017-08-22 10:19:57 697

转载 bind源码解析(一)

Bind是一款开放源码的DNS服务器软件,Bind由美国加州大学Berkeley分校研发和维护的,全名为Berkeley Internet Name Domain他是目前世界上使用最为广泛的DNS服务器软件,支持各种unix平台和windows平台。官方网站:http://www.bind.com/下面介绍一下Bind软件的主要的socket处理模块:Bind业务处理主要要关注一个

2017-08-22 10:19:05 909

转载 从源代码包安装BIND9

从源代码包安装BIND9Posted on 2004年10月3日 16:56ISC BIND 是 DNS 在 Unix 和 Linux 下的具体实现,BIND 9 更是重新编写大部分 BIND 结构代码的新一代版本,BIND 9 的主要特点有:DNS安全     DNSSEC (signed zones)    TSIG (signed DNS requests)I

2017-08-22 10:15:50 1048

原创 dnssec 命令

config 1:    dnssec-keygen -f KSK -a RSASHA1 -b 512 -n ZONE edu.com.dnssec-keygen -a RSASHA1 -b 512 -n ZONE edu.com.dnssec-signzone -o  edu.com. db.edu.comsystemctl restart nameddnssec-s

2016-08-05 09:50:14 381

转载 makefile.am

1.autoscan (autoconf): 扫描源代码以搜寻普通的可移植性问题,比如检查编译器,库,头文件等,生成文件configure.scan,它是configure.ac的一个雏形。    your source files --> [autoscan*] --> [configure.scan] --> configure.ac2.aclocal (automake):根据已

2016-02-22 10:51:34 199

空空如也

空空如也

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

TA关注的人

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