
Linux Kernel
文章平均质量分 91
fengzhishang_meteor
吾生也有涯,而知也无涯
展开
-
Linux内核中IO地址空间映射实例
关于IO地址映射,如中断外设的地址和映射后的地址访问下面是P1020 手册中关于PIC中断控制器的描述PIC Memory Map/Register DefinitionThe PIC programmable register map occupies 256 Kbytes of memory-mapped space.Reading undefined portions原创 2017-09-01 18:14:56 · 3454 阅读 · 0 评论 -
System.map符号表解析
http://blog.chinaunix.net/uid-24148050-id-95497.htmlSystem.map是内核符号表文件,是由“nm vmlinux”命令产生的,位于源码根目录。所谓“符号”就是函数名,全局变量名等东东,这个表就记录的这些“符号”在内核中的运行地址。(这个地址是Effective Address,虚地址)下面是文件的一个片段:所谓“符转载 2016-05-27 17:35:48 · 2092 阅读 · 0 评论 -
Linux中跨网段ping问题
问题是这样的,如图,pc的ip是192.168.1.2,设备是linux内核2.6.35,有两个网卡,一个是带外管理口192.168.1.1一个是192.168.2.1。pc与设备的带外口也就是192.168.1.1相连将pc的gateway设置为192.168.1.1pc ping 192.168.2.1是通的因为pc上没有2网段的地址,所以pc会向网管发送2.1mac 的arp原创 2016-02-19 17:30:36 · 9504 阅读 · 0 评论 -
Linux Kernel系列一:开篇和Kernel启动概要
http://blog.youkuaiyun.com/innost/article/details/6693731前言最近几个月将Linux Kernel的大概研究了一下,下面需要进行深入详细的分析。主要将以S3C2440的一块开发板为硬件实体。大概包括如下内容:1 bootloader分析,以uboot为主,结合具体开发板的情况。我的目标是解释清楚uboot的工作原理(说实话,分转载 2016-04-01 11:27:09 · 565 阅读 · 0 评论 -
NAPI分析
NAPI 的核心在于:在一个繁忙网络,每次有网络数据包到达时,不需要都引发中断,因为高频率的中断可能会影响系统的整体效率,假象一个场景,我们此时使用标准的 100M 网卡,可能实际达到的接收速率为 80MBits/s,而此时数据包平均长度为 1500Bytes,则每秒产生的中断数目为: 80M bits/s / (8 Bits/Byte * 1500 Byte) = 6667 个中断 /转载 2016-02-23 09:16:24 · 905 阅读 · 0 评论 -
千兆网口 Freescale ETSEC + Marvell 88E1111 uboot Linux 驱动分析 一
http://blog.chinaunix.net/uid-26377382-id-3434317.html转载 2016-01-28 16:48:52 · 1522 阅读 · 0 评论 -
内核态空间地址直接映射到用户态空间访问
http://blog.youkuaiyun.com/xy010902100449/article/details/47029075【摘要】 在Linux开发中着实用到的调试工具并不是很多。devmem的方式是提供给驱动开发人员,在应用层能够侦测内存地址中的数据变化,以此来检测驱动中对内存或者相关配置的正确性验证。http://blog.youkuaiyun.com/hens007/article/det转载 2016-01-28 09:03:01 · 1535 阅读 · 0 评论 -
Linux spi驱动--时钟频率
mark原创 2015-11-26 16:42:43 · 4455 阅读 · 0 评论 -
深入理解Linux网络技术内幕-设备注册和初始化(三)
net_device结构是一个非常庞大的数据结构,其中的字段包含了从硬件层、网络层和传输层等各种功能涉及的参数,因此,其初始化也是分批由不同的函数完成的,相当于每个函数负责其中相关联的一些子集字段,大致分为:设备驱动程序:完成与硬件配置相关的IRQ、I/O内存以及I/O端口等字段通用设备类型:对同一类设备的一些共性字段由内核实现的通用类型初始化函数完成,如ether_setup、f转载 2015-12-24 16:46:24 · 1485 阅读 · 0 评论 -
深入理解Linux网络技术内幕-设备注册和初始化(二)
http://blog.chinaunix.net/uid-14518381-id-3693661.html NIC注册和注销的通用架构 Linux系统中NIC网络设备驱动程序利用网络代码进行注册和注销有其通用的架构,这里以PCI Ethernet NIC为例,其他设备类型只是所以函数名称和调用方式不同,主要依据于设备总线提供的接口。其中(a)为设转载 2015-12-24 16:45:14 · 2573 阅读 · 0 评论 -
Driving Me Nuts - Things You Never Should Do in the Kernel
How do you read and write files from a kernel module? Wait, make that “how would you read and write files from a kernel module if that weren't a bad thing to do?”On Linux kernel programming转载 2016-01-26 10:57:42 · 713 阅读 · 0 评论 -
How to read/write files within a Linux kernel module?
You should be aware that that you should avoid file I/O when possible. The main idea is to go "one level deeper" and call VFS level functions instead of the syscall handler directly:Includes:#转载 2016-01-26 10:55:39 · 2469 阅读 · 0 评论 -
深入理解Linux网络技术内幕-设备注册和初始化(一)
http://blog.chinaunix.net/uid-14518381-id-3689331.htmlNIC设备在内核中相关联的net_device结构初始化,并添加到内核网络设备数据块中注册之后,用户才能通过用户空间的命令开启设备,使其可用。设备的注册和注销是由内核完成的,而设备的开启和关闭是由用户控制的。网络设备注册的触发事件:加载NIC设备驱动程序:若N转载 2015-12-24 14:41:06 · 936 阅读 · 0 评论 -
简单DMA介绍
http://blog.youkuaiyun.com/eastmoon502136/article/details/8502087 最早接触DMA的时候是大三的微机原理,当时不是很理解,什么DMA模式啊,只知道是传输速度快,不经过CPU,但是到底是怎么样的不经过CPU呢?还是不理解。这次I2C控制器里面带了DMA的模式,所以有机会去接触下了。 而具体的DMA的意思是什么h转载 2015-12-23 20:44:24 · 3282 阅读 · 0 评论 -
Linux GPIO用户空间操作
目前遇到一个问题,内核中已实现了gpio驱动,而且在内核空间可以正常使用gpio_request,gpio_direction_output,gpio_free等gpiolib中提供的函数 只是想在用户空间中对gpio进行操作,发现/dev下并没有相关的gpio设备准备写个.ko实现ioctl来间接操作,想了一下,这么常用的gpio,这么强大的linux,不应原创 2016-01-05 17:30:41 · 7678 阅读 · 1 评论 -
Linux 系统内核空间与用户空间通信的实现与分析
多数的 Linux 内核态程序都需要和用户空间的进程交换数据,但 Linux 内核态无法对传统的 Linux 进程间同步和通信的方法提供足够的支持。本文总结并比较了几种内核态与用户态进程通信的实现方法,并推荐使用 netlink 套接字实现中断环境与用户态进程通信。1 引言Linux 是一个源码开放的操作系统,无论是普通用户还是企业用户都可以编写自己的内核代码,再加上对标准内核的裁转载 2015-12-04 12:41:48 · 1076 阅读 · 0 评论 -
在用户空间发生中断时,上下文切换的过程
先引用一篇博文,再总结一下相关问题。所谓上下文切换,实质就是寄存器堆的切换过程。这其中一部分需要硬件来切换,一部分需要软件来处理。当在用户空间发生中断时,首先由 x86 CPU 从硬件角度进行处理,然后才是 linux 内核的处理。当中断处理完毕,返回到用户空间时,最后的步骤也是交给 CPU 硬件来处理的。1、 X86 CPU 对中断的硬件支持CPU 从中断控制器转载 2015-12-04 12:39:31 · 1056 阅读 · 0 评论 -
ioctl 与unlocked_ioctl之间的转换
2.6.36后 file_operations结构体中由原来的ioctl变成现在的unlocked_ioctl,其函数原型为:long (*unlocked_ioctl)(struct *filp,unsigned int cmd,unsigned long arg)kernel 2.6.35 及之前的版本中struct file_operations 一共有3个ioctl :ioct转载 2016-06-02 10:09:24 · 1386 阅读 · 0 评论 -
Linux 内核调试器内幕 —— KDB 入门指南
http://blog.chinaunix.net/uid-20348984-id-1964262.html来源:IBM developerWorks调试内核问题时,能够跟踪内核执行情况并查看其内存和数据结构是非常有用的。Linux 中的内置内核调试器 KDB 提供了这种功能。在本文中您将了解如何使用 KDB 所提供的功能,以及如何在 Linux 机器上安装和设置 KDB。您还转载 2016-06-14 19:36:56 · 6795 阅读 · 1 评论 -
Linux内核通知链机制的原理及实现
http://www.cnblogs.com/armlinux/archive/2011/11/11/2396781.html 一、概念: 大多数内核子系统都是相互独立的,因此某个子系统可能对其它子系统产生的事件感兴趣。为了满足这个需求,也即是让某个子系统在发生某个事件时通知其它的子系统,Linux内核提供了通知链的机制。通知链表只能够在内核的子系统之间使用,而不能够在内转载 2016-07-12 20:05:53 · 570 阅读 · 0 评论 -
定位Oops错误代码行
http://zjf30366.blog.163.com/blog/static/41116458201222893224924/[17184178.672000] Bad mode in data abort handler detected[17184178.672000] Internal error: Oops - bad mode: 0 [#1] PREEMPT[17转载 2017-10-31 10:59:45 · 1063 阅读 · 0 评论 -
Linux UBI子系统设计初探
转自:http://www.cnblogs.com/wahaha02/p/4814698.html flash存储设备存在如下特点:存在坏块使用寿命较短存储介质不稳定读写速度慢不支持随机访问(nand)只能通过擦除将0改成1最小读写单位为page or sub-page便宜针对flash设备的特点,flash文件系统的核心功能需求和质量需求需包括如下这几个方面:读写性能可靠转载 2017-09-21 11:33:09 · 1347 阅读 · 0 评论 -
Linux网络底层收发探究
P1020网络底层收发探究一、基本框架简单看了一下p1020内核中,网络底层的数据收发先看一下linux内核中网络的层次结构也是基本按照7层来构造 由于从ip层(网络层)往上就比较统一了,这里主要分析硬件层和链路层 二、名词解释1.NAPI CPU数据接收靠中断和轮询的配合,达到较高的收发效率。CPU接收外部数据时一般采用中断的方式,中断的好处是响原创 2016-05-30 11:46:18 · 4336 阅读 · 0 评论 -
用户空间获取eth0开关状态和开关实现
用户空间获取eth0开关状态和开关实现开关的实现与ifconfig eth0 dow/up 相同获取状态int get_eth0_status(){ struct ifreq ifr; int sockfd; if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { printf("原创 2017-08-01 17:35:34 · 1499 阅读 · 2 评论 -
SDRAM/DDR寻址方式
mark转载 2016-01-29 09:15:20 · 10109 阅读 · 0 评论 -
Linux系统时间不准问题分析
CPU:PowerPC P1020RDB-PCOS: Linux-2.6.35 问题:系统跑一段时间后,执行date和hwclock分别获取系统时钟和rtc时钟,出现差异,差异为sysclk时间比rtc每分钟慢0.6秒。误差是比较大了。 一、问题分析1. 转换误差2. 时钟不稳定3. 时钟频率不对 二、结构分析下面是CP原创 2016-06-21 08:54:58 · 13111 阅读 · 2 评论 -
Linux 内核空间与用户空间异步通信机制
/* * @file exirq.c * @author fzs * @date 2016-12-13 */#include #include #include #include #include #include #include #include #include #include #include #include #include #include原创 2016-09-22 10:36:58 · 889 阅读 · 0 评论 -
向linux内核版本号添加字符/为何有时会自动添加"+"号或者"xxx-dirty"
原文地址:http://blog.youkuaiyun.com/adaptiver/article/details/7225980转载说明:你可能想不到,是Git管理的“问题”,看下面的解析,对于u-boot也是有同样的效果。问题解决方案: 1.删除.git目录 2.去掉CONFIG_LOCALVERSION_AUTO且将LOCALVERSION变转载 2016-12-21 10:25:07 · 2385 阅读 · 0 评论 -
Linux系统调用列表
以下是Linux系统调用的一个列表,包含了大部分常用系统调用和由系统调用派生出的的函数。这可能是你在互联网上所能看到的唯一一篇中文注释的Linux系统调用列表,即使是简单的字母序英文列表,能做到这么完全也是很罕见的。按照惯例,这个列表以man pages第2节,即系统调用节为蓝本。按照笔者的理解,对其作了大致的分类,同时也作了一些小小的修改,删去了几个仅供内核使用,不允许用户调用的系统调用转载 2016-10-28 08:44:32 · 595 阅读 · 0 评论 -
NAND flash替换问题
原flash: SAMSUNG K9K8G08U0B新flash:SPANSION S32ML08G201TF100简单介绍:K9K8G08U0B与 S32ML08G201TF100很相似,都是8Gbits,页大小都是2048bytes但K9K8G08U0B的SPARE AREA为每页64B,S32ML08G201TF100为128B问题是这样的:1.生产了50块板,这些原创 2016-07-25 20:16:39 · 5518 阅读 · 1 评论 -
Linux syslog机制
在嵌入式Linux上做一个内核的日志保留功能,来定位内核无故重启的问题。原创 2016-07-29 17:49:52 · 2791 阅读 · 0 评论 -
Linux reboot全过程
嵌入式Linux 下面的reboot命令看似简单,但出问题时定位起来发现别有洞天。下面就按在shell下执行reboot命令之后程序的执行过程进行解析。Busybox:1.23.2 ——制作跟文件系统,/sbin/reboot程序的由来Libc:2.6.1 ——标准C库Linux kernel:2.6.35 ——内核版本原创 2016-08-17 17:40:22 · 41956 阅读 · 3 评论 -
Linux内核中文件操作函数整理
1.判断文件是否存在struct file *filp = NULL;filp = filp_open("/etc/passwd", O_RDONLY, 0);if (IS_ERR(filp)) { printk("Cannot open ......\n");}2.根据描述符查找路径在Linux内核中,已知一个进程的pid和其打开文件的文件描述符fd,原创 2016-07-28 13:56:26 · 7363 阅读 · 0 评论 -
除法转乘法算法
Linux内核中一般不使用除法运算,原因在于kernel搞个除法不太方便,应该是效率比较低,涉及到一系列的浮点运算下面是在学习Linux内核中时间管理时见到的一个算法,特摘出来留个念想......先贴算法:voidclocks_calc_mult_shift(u32 *mult, u32 *shift, u32 from, u32 to, u32 minsec){ u64原创 2016-06-17 20:01:30 · 8452 阅读 · 0 评论 -
Linux系统时间不准问题分析
关于P1020 powerpc内核中系统时钟的获取外部是66M的时钟main.c /arch/powerpc/boot-->start()-->platform_ops.fixups(); == platform_fixups(arch/powerpc/boot/ep88xc.c)-->mpc885_fixup_clocks (arch/powerpc/boo原创 2016-06-16 21:06:59 · 10898 阅读 · 0 评论 -
uboot环境变量地址
一般uboot分区中会有一个环境变量的分区dev: size erasesize namemtd0: 00200000 00020000 "NAND (RO) U-Boot Image"mtd1: 00200000 00020000 "U-Boot Env"mtd2: 01400000 00020000 "NAND (RW) Kernel Image"mtd3: 3原创 2015-12-02 15:52:47 · 2239 阅读 · 0 评论 -
system.map uboot.map vmlinux的区别
mark原创 2016-01-20 10:26:10 · 1046 阅读 · 0 评论 -
硬中断和软中断
本文主要内容:硬中断 / 软中断的原理和实现内核版本:2.6.37Author:zhangskd @ csdn blog 概述 从本质上来讲,中断是一种电信号,当设备有某种事件发生时,它就会产生中断,通过总线把电信号发送给中断控制器。如果中断的线是激活的,中断控制器就把电信号发送给处理器的某个特定引脚。处理器于是立即停止自己正在做的事,跳转载 2015-11-30 17:26:37 · 542 阅读 · 0 评论 -
u-boot启动流程分析
本文以MPC8308(powerpc架构),测试板HX软件包为依据,详细内容可参考HX源码一、嵌入式系统一个嵌入式 Linux 系统从软件的角度看通常可以分为四个层次:1.引导加载程序。包括固化在固件(firmware)中的 boot 代码(可选),和 Boot Loader 两大部分。 2. Linux 内核。特定于嵌入式板子的定制内核以及内核的启动参数。3. 文件系原创 2015-06-03 10:08:29 · 964 阅读 · 0 评论 -
U-Boot中ubi和ubifs命令的使用
(1)查看MTD分区表[cpp] view plaincopyprint?U-Boot$ mtdpartsmtdparts variable not set, see 'help mtdparts'no partitions defineddefaults:mtdids : nand0=nandflash0mtdparts转载 2015-06-02 17:57:15 · 1802 阅读 · 0 评论