嵌入式Linux中文站

开发专区

Linux编程之ioremap函数的实例解析

Linux编程之ioremap函数的实例解析

阅读(211)

void * __ioremap(unsigned long phys_addr, unsigned long size, unsigned long flags) 入口: phys_addr:要映射的起始的IO地址; size:要映射的空间的大小; flags:要映射的IO空间的和权限有关的标志; 功能: 将一个IO地址空间映射到内核的虚拟地址空间上去,便于访问; 实现:对要映射的IO地址空间进行判断,低PCI/ISA地址不需要重新映射,也不允许用户将IO地址空间映射到正在使用的RAM中,最后申请一 个...

Linux内核访问外设I/O资源的方式

Linux内核访问外设I/O资源的方式

阅读(186)

我们知道默认外设I/O资源是不在Linux内核空间中的(如sram或硬件接口寄存器等),若需要访问该外设I/O资源,必须先将其地址映射到内核空间中来,然后才能在内核空间中访问它。 Linux内核访问外设I/O内存资源的方式有两种:动态映射(ioremap)和静态映射(map_desc)。 一、动态映射(ioremap)方式 动态映射方式是大家使用了比较多的,也比较简单。即直接通过内核提供的ioremap函数动态创建一段外设I/O内存资源到内核虚拟地址的映射表,从而可以在内核空间中访问这段I/O资源。 Io...

linux内存操作--ioremap和mmap

linux内存操作--ioremap和mmap

阅读(162)

对于一个系统来讲,会有很多的外设,那么这些外设的管理都是通过CPU完成。那么CPU在这个过程中是如何找到外设的呢? 尽管在一个系统中会有诸多的外设,在每个外设的接口电路中会有多个端口。但是如果系统能够每个端口都被赋予一个具体的地址值,那么在系统中就能轻易的找到任何一个外设。系统在管理的时候,不管是内存还是外设都需要分配一个内存地址。对于一个32bit的系统来讲,可寻址的范围为2^32=4G的地址空间。 既然说到地址空间,就要明确地址空间的种类:物理地址、总线地址、虚拟地址。 (1)物理地址 CPU地址总线...

嵌入式Linux常用文件系统

嵌入式Linux常用文件系统

阅读(218)

Linux支持很多文件系统,在选择时应根据应用的功能选择文件系统 内核只认识VFS(虚拟文件系统),不同的文件系统实现的都是和VFS的相互调用,进而通过VFS访问内核 MTD(Memeory Technology Device,存储技术设备):针对Flash做的底层驱动程序 Rootfs(根文件系统): ...

基于Linux与Busybox的Reboot命令流程分析

基于Linux与Busybox的Reboot命令流程分析

阅读(428)

一:Busyobx层的分析 这段时间,在忙到一个项目时,需要在busybox中用到reboot命令,开始在busybox中的shell中输入reboot命令,始终如下的信息,然后就停止在那里了,无法重启...为了彻底的弄明白这个问题,我在网络上找了很久,终于有个人写的一个reboot流程分析,我就借花献佛.在这里重新分析下busybox是如何运行这个命令,同时又是如何调用到Linux内核中的mach_reset中的arch_reset,当针对不同的ARM芯片时,作为Linux内核开发和驱动开发的朋友,对于...

Linux中iptables的原理

Linux中iptables的原理

阅读(222)

iptables简介 netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换(NAT)等功能。 iptables基础 规则(rules)其实就是网络管理员预定义的条件,规则一般的定义为如果数据包头符合这样的条件,就这样处理这个数据包。规则存储在内核空间的信息包过滤表中,这些规则分别指定了源地址、目的地址、传输协议(如TCP、UDP、I...

linux驱动之定时器的使用

linux驱动之定时器的使用

阅读(404)

Linux的内核中定义了一个定时器的结构: #includelinux/timer.h struct timer_list { struct list_head list; unsigned long expires; //定时器到期时间 unsigned long data; //作为参数被传入定时器处理函数 void (*function)(unsigned long); }; 利用这个结构我们可以在驱动中很方便的使用定时器。 一: timer的API函数: 初始化定时器: void init_tim...

Linux内核特性之VDSO

Linux内核特性之VDSO

阅读(301)

这段时间看Linux内核源码的时候,经常碰到vdso这个东西(像在Feature-fixup中,获取时间等操作时),网上搜了一下,才知道了含义,原来这是Linux为了解决和glibc兼容而想出的绝招...