嵌入式Linux中文站

开发专区

使用Crash工具分析 Linux dump文件

使用Crash工具分析 Linux dump文件

阅读(132)

前言 Linux 内核(以下简称内核)是一个不与特定进程相关的功能集合,内核的代码很难轻易的在调试器中执行和跟踪。开发者认为,内核如果发生了错误,就不应该继续运 行。因此内核发生错误时,它的行为通常被设定为系统崩溃,机器重启。基于动态存储器的电气特性,机器重启后,上次错误发生时的现场会遭到破坏,这使得查找 内核的错误变得异常困难。 内核社区和一些商业公司为此开发了很多种调试技术和工具,希望可以让内核的调试变得简单。其中一种是单步跟踪调试方法,即使用代码调试器,一 步步的跟踪执行的代码,通过查看变量和寄存器...

Linux网络底层收发探究

Linux网络底层收发探究

阅读(246)

一、基本框架 简单看了一下p1020内核中,网络底层的数据收发 先看一下linux内核中网络的层次结构 也是基本按照7层来构造 由于从ip层(网络层)往上就比较统一了,这里主要分析硬件层和链路层 二、名词解释 1.NAPI CPU数据接收靠中断和轮询的配合,达到较高的收发效率。 CPU接收外部数据时一般采用中断的方式,中断的好处是响应及时,如果数据量较小,则不会占用太多的CPU事件;缺点是数据量大时,会产生过多中断, 而每个中断都要消耗不少的CPU时间,从而导致效率反而不如轮询高。轮询方式与中断方式相反,...

网卡驱动收发包过程

网卡驱动收发包过程

阅读(215)

网卡 网卡工作在物理层和数据链路层,主要由PHY/MAC芯片、Tx/Rx FIFO、DMA等组成,其中网线通过变压器接PHY芯片、PHY芯片通过MII接MAC芯片、MAC芯片接PCI总线 PHY芯片主要负责:CSMA/CD、模数转换、编解码、串并转换 MAC芯片主要负责: 比特流和帧的转换:7字节的前导码Preamble和1字节的帧首定界符SFD CRC校验 Packet Filtering:L2 Filtering、VLAN Filtering、Manageability / Host Filterin...

Linux网络 - 数据包的接收过程

Linux网络 - 数据包的接收过程

阅读(135)

本文将介绍在Linux系统中,数据包是如何一步一步从网卡传到进程手中的。 如果英文没有问题,强烈建议阅读后面参考里的两篇文章,里面介绍的更详细。 本文只讨论以太网的物理网卡,不涉及虚拟设备,并且以一个UDP包的接收过程作为示例. 本示例里列出的函数调用关系来自于kernel 3.13.0,如果你的内核不是这个版本,函数名称和相关路径可能不一样,但背后的原理应该是一样的(或者有细微差别) 网卡到内存 网卡需要有驱动才能工作,驱动是加载到内核中的模块,负责衔接网卡和内核的网络模块,驱动在加载的时候将自己注册进...

硬中断和软中断

硬中断和软中断

阅读(242)

概述 从本质上来讲,中断是一种电信号,当设备有某种事件发生时,它就会产生中断,通过总线把电信号发送给中断控制器。 如果中断的线是激活的,中断控制器就把电信号发送给处理器的某个特定引脚。处理器于是立即停止自己正在做的事, 跳到中断处理程序的入口点,进行中断处理。 (1) 硬中断 由与系统相连的外设(比如网卡、硬盘)自动产生的。主要是用来通知操作系统系统外设状态的变化。比如当网卡收到数据包 的时候,就会发出一个中断。我们通常所说的中断指的是硬中断(hardirq)。 (2) 软中断 为了满足实时系统的要求,中...

Linux的notifier机制在TP中的应用

Linux的notifier机制在TP中的应用

阅读(167)

在linux内核系统中,各个模块、子系统之间是相互独立的。Linux内核可以通过通知链机制来获取由其它模块或子系统产生的它感兴趣的某些事件。 notifier_block结构体在include/linux/notifier.h中定义: struct notifier_block { notifier_fn_t notifier_call; struct notifier_block __rcu *next; int priority; }; priority用来定义优先级,高优先级的处理例程将被优先执行,...

Linux RTC驱动模型分析之rtc-sysfs.c

Linux RTC驱动模型分析之rtc-sysfs.c

阅读(169)

rtc节点 rtc-sysfs文件主要的操作就是在sys下创建rtc的属性节点,可以方便用户方便快捷的访问,查找问题。下来大概看看sys下的rtc节点,有个直观的认识。 [root@test ~]# cat /sys/class/rtc/rtc0/ date hctosys power/ time dev max_user_freq since_epoch uevent device/ name subsystem/ wakealarm 这是手机上rtc的节点属性,可以看到手机上只有一个rtc0设备。也可...

Linux内核使用gdb调试

Linux内核使用gdb调试

阅读(224)

这里记录平时使用gdb调试内核KE的步骤和方法. 有不足的地方也请大家指出和完善. 1 必备工具和文件 Gdb,addr2line,vmlinux以及内核coredump文件 在64位平台,gdb和addr2line 分别使用aarch64-linux-android-gdb aarch64-linux-android-addr2line. 2. 调试过程 MTK平台core...