分类目录归档:Linux系统

TCP协议

1.TCP报文格式说明

  TCP协议在涉及到网络开发时,是接触的非常的频繁的。TCP报文时TCP层传输的数据单元,也就是报文段。 图片示意: TCP封装于IP内,IP数据报最大长度65535,头部最小20,TCP头部长度最小20, 所以最大封装数据长度为:65535-20-20=65495个。 源端口,目标端口 TCP源端口:源计算机的应用程序的端口号,占16位 TCP目的端口:目标计算机的应用程序的端口,占16位 CP序列号:sequence number,占32位 Header Length:TCP头偏移,指示何处数据开始

2.说明

2.1 TCP滑窗机制

&ems

Read more

glibc和uclibc

1.说明

ANSI C是基本的C语言函数库,包含了C语言最基本的函数库。 1)glibc 是Linux下GNU C的函数库 常见的桌面和服务器GNC/Linux类的系统,都是用C语言标准库,其实现了常见的C库函数,支持多种系统平台,功能很全。 2)uclibc是一个小型C标准库,主要用于嵌入式linux。 uclibc比glibc小很多,它是独立的,为了应用于嵌入式系统,和glibc在源码结构和二进制上,都不兼容。

2.差异说明

2.1)glibc 这是gnu发布的libc库,也是c运行库,主要提供了如下: string,字符串处理 signal,信号处理 dlfcn,管理共享库的动态加载 d

Read more

PX3SE上camera相关流程记录

1.简介

摄像头:使用ov2659 内置ISP,200W像素(同时支持RAW Bayer输出),镜头等信息(小镜头,固定焦距) 主控:使用瑞芯微PX3SE (RK3128的精简版本,偏工业,温度范围广),该芯片内部无ISP处理模块,所以 摄像头需要驱动带ISP处理模块。芯片上使用DVP接口进行连接OV2659传感器。

2.驱动流程

Linux上首先是确认硬件是否正常工作,设备树先进行配置,在调用相关初始化时序后,可以I2C tool确认一下, 是否可以正常识别到摄像头(这步是必须流程,如果无法识别到摄像头,一定要先检查摄像头时序、电路电压等等) 保证硬件正常工作。

2.1 设备树相关配置

这个

Read more

ASAN分析内存相关问题

1.简介

  在使用ASAN(Address Sanitizer,也就是地址消毒技术)之前,很多内存检查都使用valgrind,通过valgrind工具,检查内存问题,例如:堆栈溢出,段错误等等。 ASAN可以用来检查内存问题,例如:堆栈溢出,悬空指针的非法访问等。并且相比Valgrind工具,使用ASAN作为内存错误监测工具对程序性能损耗也非常低。 对比Valgrind只能检测到堆内存的越界访问和悬空指针的访问,ASAN不仅可以检测到堆内存的越界和悬空指针的访问,还能检测到栈和全局对象的越界访问。 所以ASAN成为目前较优秀的内存检测工具。   简单原

Read more

qemu构建linux模拟环境

1.内核编译

内核编译是为了生成zImage文件。 我们通过编译vexpress_defconfig进行示例。

export PATH=$PATH:/opt/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi/bin
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- vexpress_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j4

编译内核需要关注两个产物,一个是内核产物zImage, 一个设备树产物*.dtb。

2.根文件系统

Read more

Linux上设备树使用

1.简介

  DTS, Device Tree Source设备源码树,是一种描述硬件的数据结构体,dts的加入,先将
dts解析成树型结构,然后放在内存中,等待内核后面注册device 和 driver的时候再来铺开调用。
  DTS由一系列被命名为节点node和属性property组成,而节点本身可以包含子节点,所谓属性
就是成对出现的name和value。

2.DTS使用

  DTS在内核中,dts使用各种device node形式存在,而这些device node对于大部分的内核驱动\ 模型platform driver来说,

Read more

Linux内核编译过程中遇到的问题

1.简介

本文档主要是记录一下,linux内核编译过程中遇到的一些问题,因为最早内核是在linux上编译通过, 然后后期由于将代码下载到了windows上,造成了一些问题,主要是一些文件软链接丢失,还有一个是 不同平台上,大小写区分(windows上大小写是一样的,但是Linux上是不同的)。

2.问题记录

2.1 linux-event-codes.h 语法不对

   编译过程中遇到的,参考实际上linux该文件

linux-event-codes.h -> ../../uapi/linux/input-event-codes.h

可以发现 linux-event-codes.h 该

Read more

RK3128编译记录

RK3128 Android 编译

  这是RK3128 Android平台编译记录,使用环境如下: 1.Ubuntu16.04 LTS 2.gcc (使用gcc6.5,更高级版本python2.7.14编译存在问题)   对于python2.7.14有问题的可以再单独安装

1.开发环境以及依赖选项

在进行rom编译前,首先需要保证依赖选项就绪。

1)环境安装依赖项

sudo apt-get install git-core gnupg flex bison gperf libsdl1.2-dev \
libesd0-dev libwxgtk2.8-de

Read more

buildroot构建文件系统

1.简介

  开发嵌入式软件时,有很多时候,我们将uboot+kernel+应用程序,统一打包成烧写文件,这样方便实际生产,因此构建出烧写文件的文具就必不可少。   构建Linux上的文件系统有多种工具,例如:yocto,buildroot,各种工具有自己的有缺点,本wiki主要记录buildroot构建文件系统。
  之前提及的busybox,busybox一般只包含基础的命令,比如常见的ls cd等等,还有一些更复杂的工具,例如grep,find,telnet等。这个busybox称作linux工具 里的瑞士军刀。
 &

Read more

Linux驱动中-时钟-cpu-soc三大节点区分

1.简述

设备树模型中clk,cpu,soc三类节点的划分,是嵌入式SOC的典型组织方式。

2.模块内容

2.1 clk时钟

CLK时钟控制器,是管理整个SOC的时钟生成、分频、使能,主要内容:晶振、PLL、时钟ID,分频系数等。 CLK时钟控制器本质上是硬件CRU/CCU的设备树描述,对应内核的clk-driver。 核心功能 1)生成各种频率的时钟,如UART的115200波特率时钟,CPU的1GHZ主频时钟 2)控制时钟的开启、关闭(外设休眠时关闭时钟以省电) 3)动态调整时钟的频率(CPU的调频、display分辨率切换时调整像素时钟)

2.2 cpu核心

CPU核心,主要是配置CPU

Read more