自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 linux 下 网卡命名改名

centos网卡命名规则

2023-08-10 14:07:59 764

原创 linux用户空间、内核空间

32位linux的虚拟空间有4G,分为内核空间和用户空间,其中最开始的(3G)0x00000000-0xBFFFFFFF为各个进程使用,也叫用户空间,最高处的(1G)0xC0000000-0xFFFFFFFF作为内核空间供内核使用,Linux内核空间由系统内的所有进程共享。一个进程至少有一个线程或多个线程,一个线程只能属于一个进程,因为进程是最小的资源分配单元,所以线程不存在独立的地址空间,而是多个线程共享进程的独立运行空间,但是线程有自己的栈空间。内核空间地址有自己对应的页表,用户进程各自有不同的页表。

2023-02-17 15:09:02 565

原创 linux内存申请

进程栈的内存分配也是lazy的,因为进程栈对应的VMA的vma->vm_flags带有VM_GROWSDOWN标记,这样,在page fault处理的时候kernel就知道落在了stack区域,就会通过expand_stack(vma, address)将栈扩展(vma区域的vm_start降低),这时如果扩展超过RLIMIT_STACK或RLIMIT_AS的限制,就会返回-ENOMEM。buddy是zone里面的一个成员,每个zone都有自己的buddy系统来管理自己的内存(buddy管理是物理内存)。

2023-02-17 11:30:04 1556

原创 linux虚拟内存结构

内核也是由一个elf文件(比如vmlinux)加载启动的,加载后也有text段,data段,bss段等。malloc的分配内存有两个系统调用,一个brk,一个mmap,brk是将.data的最高地址指针_edata往高地址走,mmap则是在进程的虚拟地址空间(在堆和栈之间的内存映射区域)找一块空间。通常,正文段是可共享的,所以即使是经常执行的程序(如文本编辑程序、C编译程序、shell等)在存储器中也只需要有一个副本,另外,正文段常常是只读的,以防止程序由于意外事故而修改器自身的指令。C.非初始化数据段。

2023-02-15 14:34:17 781

原创 linux栈溢出定位

1、栈溢出可能打印2、栈溢出保护机制gcc提供了栈保护机制stack-protector(编译选项),开启了栈保护机制后,可检测运行时栈溢出。二、GDB多线程调试gdb命令:(1)查看可切换调试的线程:info threads(2)切换调试的线程:thread 线程id(3)只运行当前线程:set scheduler-locking on(4)运行全部的线程:set scheduler-locking off。

2023-02-10 14:15:54 961

转载 linux堆栈溢出

栈溢出所带来的问题往往十分隐蔽,有时很难复现问题,问题出现的现象可能也不一样,导致问题排查十分困难,遇到一些莫名其妙的问题时,我们会倾向于怀疑堆栈溢出,但是却又不能准确地找出问题的根源。建议在开发过程中增加堆栈溢出保护编译选项,虽然会稍稍增加程序体积,但是带来的收益确是很客观的,很大一部分栈溢出问题就会被探测到,通过结合coredump的函数栈帧信息可以定位发生溢出的函数,这样可以大大缩小问题的范围。

2023-02-09 16:59:40 1180

转载 linux内存分配方式

虚拟空间和物理内存都分为内核空间和用户空间。虚拟地址需要通过页表转化为物理地址,然后才能访问。用户虚拟空间 只能映射 物理内存中的用户内存,无法映射到物理内存中的内核内存,也就是说,用户进程只能操作用户内存。内核空间只能被内核申请使用,用户进程只能操作用户空间的物理内存和虚拟空间。当用户进程 调用系统调用的时候,会将其对应的代码和数据运行在内核空间中。所以当调用 内核空间 读取文件或者网络数据的时候,首先会将数据拷贝到内存空间,然后在将数据从内核空间拷贝到用户空间。因为 用户进程不能访问内核空间。

2023-02-08 15:27:49 876

原创 内核内存泄露

泄露点:alloc_vmap_area、__get_vm_area_node。触发导致内存泄露的操作步骤,跟踪调用关系,确定申请的内存是否有正确释放。2、通过cat /proc/slabinfo,查看slab申请情况。对比发现kmalloc-2048、kmalloc-128又所增长。128泄露:(6507+6055)*128/1024=1570k。3、打开内核SLUB_DEBUG_ON选项,即可访问。案例:USB主从切换后轻微内存泄露,定位流程。泄露点:dwc3_probe。一、进程内存申请查看工具。

2023-02-08 09:51:06 917

原创 kmemleak使用

kmemleak检测内存泄露工具

2023-02-02 14:33:33 867

转载 busybox官方文档翻译以及使用

IBM官方网站busybox文档翻译: https://www.cnblogs.com/lcw/p/3159388.htmlbusybox嵌入式的使用: https://blog.csdn.net/binchel/article/details/20209809 

2018-08-02 14:53:25 855

转载 samba配置

samba配置文件smb.conf的语法格式及其重要选项的说明这是我在去年暑假实习时参考samba文档和一些博文进行整理的一篇文档。 smb.conf是samba最重要的配置文件,该文件定义了samba服务器的共享服务以及共享属性选项。下面将对该文件的语法结构及其一些重要配置选项进行简单说明。一、语法格式配置文件smb.conf的语法格式为: <fi...

2018-08-02 14:49:49 992

转载 linux 下.a .so库文件

转载:https://www.cnblogs.com/luntai/p/5291354.html关于linux下的.a文件与 .so 文件  连续几天终于将一个又一个问题解决了,这里说其中一个问题  描述问题:使用多线程pthread的时候,(我用的IDE,CODEBOLCKS)编译后发现直接弹出窗口,程序还没有被Build。。巴拉巴拉,然后陷入了这个循环。提示有一句pthead_cr...

2018-08-02 14:48:41 372

转载 linux信号量

Linux进程间的通信方式和原理   进程的概念进程是操作系统的概念,每当我们执行一个程序时,对于操作系统来讲就创建了一个进程,在这个过程中,伴随着资源的分配和释放。可以认为进程是一个程序的一次执行过程。进程通信的概念进程用户空间是相互独立的,一般而言是不能相互访问的。但很多情况下进程间需要互相通信,来完成系统的某项功能。进程通过与内核及其它进程之间的互相通信来协调它们的行为。进程通信的应用场景数...

2018-06-05 22:22:59 2369

转载 tcpdump工具简单使用

抓包工具tcpdump用法说明分类: Linux 基础篇,Linux 杂项tcpdump采用命令行方式对接口的数据包进行筛选抓取,其丰富特性表现在灵活的表达式上。不带任何选项的tcpdump,默认会抓取第一个网络接口,且只有将tcpdump进程终止才会停止抓包。例如:shell> tcpdump -nn -i eth0 icmp下面是详细的tcpdump用法。1.1 tcpdump选项它的命...

2018-05-30 13:43:28 145

转载 linux 内存操作

LinuxC语言内存分配函数1、void *alloca(size_t size),用来配置size个字节的内存空间,和mallac/calloc不同的是,alloca是从栈空间(stack)中配置内存,因此在函数返回时会自动释放此空间。int *a; a = (int *)alloca(sizeof(int)); *a = 1;2、void *calloc(size_t nmemb,size_t...

2018-05-30 10:52:02 476

原创 Linux编程C语言中 sizeof free相关知识

    sizeof如何知道传入数组的大小呢?原来sizeof并不是一个函数,它是一个关键字,由编译器在编译的时候执行,数组的空间是由编译器分配的,它当然知道数组的长度了。    free又是如何知道申请的内存长度呢,其实在使用malloc申请一个100字节长度的空间时,实际上申请了104个字节的空间,前4字节存放申请空间的大小,将后4字节空间的起始地址返回给你,这样在调用free的时候,它就能会...

2018-05-30 10:34:01 306

转载 glibc libc glib介绍

libc、glibc和glib的关系转载 2013年08月11日 14:01:2739289转自:http://my.oschina.net/moooofly/blog/126260http://nieyong.github.io/wiki_ny/glibc,%20eglibc%E5%92%8C%20glib%E7%9A%84%E5%8C%BA%E5%88%AB.html【glibc 和 libc...

2018-05-29 18:38:39 265

转载 glibc接口函数 字符串处理

基本的字符串处理接口函数总结:(字符串处理比较常用函数:printf、sprintf、svprintf、strcpy、strcat、strcmp、memset、memcpy、memmove、strstr、strchr、strstok、strstok_r、strlen、atoi、)一、字符串转为数字(convert ASCII string to floating-point number or i...

2018-05-29 15:22:56 1403

转载 makefile中$$符号的使用

Makefile中使用$$的使用    在makefile中,会经常使用shell命令,也经常见到$var 和 $$var的情况,有什么区别呢,区别大了。不要认为在makefile的规则的命令行中使用$var就是将makefile的变量和shell共享了,这里仅仅是读取makefile的变量然后扩展开,将其值作为参数传给了一个shell命令。而$$var是在访问一个shell命令内定义的变量,而非...

2018-05-28 15:08:15 1485

原创 arm-linux-strip命令

arm-linux-strip命令,可去除编译程序中的调试信息,使用格式为arm-linux-strip <options> infiles

2018-05-28 14:38:02 1611

转载 makefile patsubst命令的使用

1、wildcard : 扩展通配符2、notdir : 去除路径3、patsubst :替换通配符例子:建立一个测试目录,在测试目录下建立一个名为sub的子目录$ mkdir test$ cd test$ mkdir sub在test下,建立a.c和b.c2个文件,在sub目录下,建立sa.c和sb.c2 个文件建立一个简单的Makefilesrc=$(wildcard *.c ./sub/*....

2018-05-28 14:34:04 2140 1

转载 oops:内存访问异常

一、linux内核、用户空间的内存划分:如下图:内核空间划分0~3G为用户空间,3~4G为内核空间。详细请参考《Linux用户空间与内核空间》注意:内核地址空间的范围是 0xC0000000 ~ 0xFFFFFFFF 二、异常内存访问导致的oops:1、Unable to handle kernel paging request at virtual address 00000000       ...

2018-05-26 15:45:59 1301

转载 内核回溯

上一节里面我们看到出错信息还包括回溯信息,通过回溯信息我们可以知道是哪一条调用路径出现了错误。但是要想显示回溯信息的话,在内核配置文件.config文件里面必须要有这么一句:CONFIG_FRAME_POINTER=y但是如果我们的内核没有配置CONFIG_FRAME_POINTER=y这句话,是不是就意味着我们无法知道回调关系了呢!其实并非如此,根据上一节里面的内容我们还知道,出错信息里面还包括...

2018-05-26 15:43:29 216

转载 swapper进程

LINUX进程小结id为0的进程通常是调度进程,常常被称为交换进程(swapper),该进程为内核的一部分,他并不执行任何磁盘上的程序,因此也被称为系统进程。id为1 init进程,在自举过程结束后由内核调用。id为2 页守护进程对于父进程已经终止的所有进程,他们的父进程都改变为init。在一个进程终止时,内核逐个检查所有活动的进程,以判断他是否是正要终止进程的子进程,如果是,则将该进程id更改为...

2018-05-26 15:41:02 6576

转载 SVN 回滚

svn代码回滚命令取消对代码的修改分为两种情况: 第一种情况:改动没有被提交(commit)。这种情况下,使用svn revert就能取消之前的修改。svn revert用法如下:# svn revert [-R] something其中something可以是(目录或文件的)相对路径也可以是绝对路径。当something为单个文件时,直接svn revert something就行了;当some...

2018-05-25 15:07:33 181

转载 linux下proc文件夹详解

Linux-proc    proc 文件系统 在Linux中有额外的机制可以为内核和内核模块将信息发送给进程-- /proc 文件系统。最初设计的目的是允许更方便的对进程信息进行访问(因此得名),现在它被每一个有有趣的东西报告的内核使用,例如/proc/modules 有模块的列表/proc/meminfo 有内存使用的统计表。   使用proc 文件系统的方法和使用设备驱动程序非常相似--创建...

2018-05-25 10:29:52 6390

原创 linux下ls显示色彩设置

sadfafd

2018-05-11 11:15:14 18148

原创 使用交换机组建以太网实现开发板tftp高速下载

利用交换机把电脑、开发板相连,创建一个以太网进行开发板与电脑上虚拟机tftp文件传输,相比于使用路由器速度要快很多。确保pc开发板 虚拟机连接正常Pc端设置:首先要修改以太网IPV4协议,网络链接——(双击)以太网——(点击)属性——(双击)internet协议版本4——修改ip地址如192.168.1.105(使之与开发板,虚拟机网段一致,即ip地址前三段)。开发板设置:

2017-03-24 18:22:08 431

翻译 国嵌嵌入式学习笔记-链接器脚本语法格式

嵌入式linux学习,arm-Linux-gcc 链接器脚本语法格式

2017-03-06 16:17:03 262

翻译 国嵌嵌入式开发板学习笔记-外设的使用

国嵌嵌入式开发板学习笔记-外设的使用。这次是一些外设的初始化,相关datasheet名称在我另一篇博客中

2017-03-06 16:05:10 471

翻译 学习国嵌嵌入式视频笔记

最近在做一个嵌入式linux项目,学习的板子时国嵌TQ210板子,里边的视频讲的挺好的,做了些笔记,方便以后回头草冷饭。

2017-03-06 15:53:26 364

Understand-5.1.1026-Windows-64bit.exe

Understand-5.1.1026-Windows-64bit.exe

2023-09-18

PCF8591中文数据手册

PCF8591中文数据手册,八位A/D,D/A转换器,里面的东西还是说的很清楚的

2015-05-04

空空如也

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

TA关注的人

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