![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux
文章平均质量分 89
发稿咋胸前
嵌入式系统应用 openwrt软件开发
展开
-
linux iw 命令
无线网络飞速发展的今天,许多设备都提供了连接无线网络的功能。那么Linux下的wifi到底该怎么配置、连接呢??开始配置之前,我们要说说iw家族。iw是linux下常用的wifi配置工具,网上有相应的库和源码。全名为wirelessTools。配置wifi模块,并连接相应的无线网络过程:主要使用iwpriv命令1. 扫描可用的无线网络:[cpp] view plai转载 2015-01-12 14:44:56 · 18300 阅读 · 0 评论 -
linux devmem 开发工具
在Linux开发中着实用到的调试工具并不是很多。devmem的方式是提供给驱动开发人员,在应用层能够侦测内存地址中的数据变化,以此来检测驱动中对内存或者相关配置的正确性验证。 devmem2使用方法: devmem2 { address } [ type [ data ] ] address : 物理地址转载 2015-05-15 20:15:09 · 1167 阅读 · 0 评论 -
ioremap
原型: void *ioremap(unsigned long phys_addr, unsigned long size) void * __ioremap(unsigned long phys_addr, unsigned long size, unsigned long flags) 入口: phys_addr:要映射的起始的IO地址; size:要映射的空间的大小;转载 2015-05-16 10:11:48 · 862 阅读 · 0 评论 -
[经典]Linux内核中ioremap映射的透彻理解
几乎每一种外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器、状态寄存器和数据寄存器三大类,外设的寄存器通常被连续地编址。根据CPU体系结构的不同,CPU对IO端口的编址方式有两种: (1)I/O映射方式(I/O-mapped) 典型地,如X86处理器为外设专门实现了一个单独的地址空间,称为"I/O地址空间"或者"I/O端口空间",CPU通过专门的I/O指令(如X86的转载 2015-05-16 10:11:49 · 345 阅读 · 0 评论 -
linux led子系统
数据结构/include/linux/leds.henum led_brightness { LED_OFF = 0, LED_HALF = 127, LED_FULL = 255,};led_classdev代表led的实例:struct led_classdev { const cha转载 2015-05-18 13:06:35 · 433 阅读 · 0 评论 -
(六)洞悉linux下的Netfilter&iptables:如何理解连接跟踪机制?【中】
Netfilter连接跟踪的详细流程 上一篇我们了解了连接跟踪的基本框架和大概流程,本篇我们着重分析一下,数据包在连接跟踪系统里的旅程,以达到对连接跟踪运行原理深入理解的目的。 连接跟踪机制在Netfilter框架里所注册的hook函数一共就五个:ip_conntrack_defrag()、ip_conntrack_in()、ip_conntrack_local()、ip_co转载 2015-05-26 13:07:30 · 490 阅读 · 0 评论 -
(九)洞悉linux下的Netfilter&iptables:网络地址转换原理之DNAT
网络地址转换:NAT Netfitler为NAT在内核中维护了一张名为nat的表,用来处理所有和地址映射相关的操作。诸如filter、nat、mangle抑或raw这些在用户空间所认为的“表”的概念,在内核中有的是以模块的形式存在,如filter;有的是以子系统方式存在的,如nat,但它们都具有“表”的性质。因此,内核在处理它们时有很大一部操作都是相同的,例如表的初始化数据、表的注册、转载 2015-05-26 13:07:53 · 532 阅读 · 0 评论 -
(五)洞悉linux下的Netfilter&iptables:如何理解连接跟踪机制?【上】
如何理解Netfilter中的连接跟踪机制? 本篇我打算以一个问句开头,因为在知识探索的道路上只有多问然后充分调动起思考的机器才能让自己走得更远。连接跟踪定义很简单:用来记录和跟踪连接的状态。问:为什么又需要连接跟踪功能呢?答:因为它是状态防火墙和NAT的实现基础。OK,算是明白了。Neftiler为了实现基于数据连接状态侦测的状态防火墙功能和NAT地址转换功能才开发出了连接转载 2015-05-26 13:06:44 · 525 阅读 · 0 评论 -
(十)洞悉linux下的Netfilter&iptables:网络地址转换原理之SNAT
源地址转换:SNAT SNAT主要应用于下列场景: 这种情况下,我们只有一个公网地址A,而又有三台主机需要同时上网,这时就需要SNAT了。它的主要作用是将那些由私网发来的数据包skb的源地址改成防火墙的公网地址A,这是因为目的主机在响应源地址为私网地址的数据包时,私网地址不能在网络上路由的缘故。 SNAT仅可以在LOCAL_OUT和POSTROUTING点转载 2015-05-26 13:10:37 · 585 阅读 · 0 评论 -
(三)洞悉linux下的Netfilter&iptables:内核中的rule,match和target
作为ipchains的后继者,iptables具有更加优越的特性,良好的可扩展功能、更高的安全性以及更加紧凑、工整、规范的代码风格。 在2.6的内核中默认维护了三张表(其实是四张,还有一个名为raw的表很少被用到,这里不对其进行分析介绍了):filter过滤表,nat地址转换表和mangle数据包修改表,每张表各司其职。我们对这三张表做一下简要说明: 1)、filt转载 2015-05-26 13:03:03 · 597 阅读 · 0 评论 -
(七)洞悉linux下的Netfilter&iptables:如何理解连接跟踪机制?【下】 2012-04-13 21:10:00
连接跟踪系统的初始化流程分析 有了前面的知识,我们再分析连接跟踪系统的初始化ip_conntrack_standalone_init()函数就太容易不过了。还是先上ip_conntrack_standalone_init()函数的流程图:该函数的核心上图已经标出来了“初始化连接跟踪系统”和“注册连接跟踪的hook函数”。其他两块这里简单做个普及,不展开讲。至少让大家明白连接跟踪为转载 2015-05-26 13:08:15 · 499 阅读 · 0 评论 -
一)洞悉linux下的Netfilter&iptables:什么是Netfilter? 2
本人研究linux的防火墙系统也有一段时间了,由于近来涉及到的工作比较纷杂,久而久之怕生熟了。趁有时间,好好把这方面的东西总结一番。一来是给自己做个沉淀,二来也欢迎这方面比较牛的前辈给小弟予以指点,共同学习,共同进步。 能在CU上混的人绝非等闲之辈。因此,小弟这里说明一下:本系列博文主要侧重于分析Netfilter的实现机制,原理和设计思想层面的东西,同时从用户态的iptables到内核转载 2015-05-26 13:01:18 · 771 阅读 · 0 评论 -
(八)洞悉linux下的Netfilter&iptables:状态防火墙
基于连接跟踪机制的状态防火墙的设计与实现连接跟踪本身并没有实现什么具体功能,它为状态防火墙和NAT提供了基础框架。前面几章节我们也看到:从连接跟踪的职责来看,它只是完成了数据包从“个性”到“共性”抽象的约定,即它的核心工作是如何针对不同协议报文而定义一个通用的“连接”的概念出来,具体的实现由不同协议自身根据其报文特殊性的实际情况来提供。那么连接跟踪的主要工作其实可以总结为:入口处,收到一个数据转载 2015-05-26 13:07:17 · 674 阅读 · 0 评论 -
(二)洞悉linux下的Netfilter&iptables:内核中的ip_tables小觑
Netfilter框架为内核模块参与IP层数据包处理提供了很大的方便,内核的防火墙模块(ip_tables)正是通过把自己所编写的一些钩子函数注册到Netfilter所监控的五个关键点(NF_IP_PRE_ROUTING,NF_IP_LOCAL_IN,NF_IP_FORWARD,NF_IP_LOCAL_OUT,NF_IP_POST_ROUTING)这种方式介入到对数据包的处理。这些钩子函数功能转载 2015-05-26 13:03:28 · 415 阅读 · 0 评论 -
手机ROM简单制作过程
1.安卓基础知识普及:Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。目前,最新版本为Android 2.4Gingerbread和Android 3.0Honeycomb。①底包:官方的系统包,转载 2015-03-31 13:49:41 · 4111 阅读 · 1 评论 -
linux relay
Relay 要解决的问题对于任何在内核工作的程序而言,如何把大量的调试信息从内核空间传输到用户空间都是一个大麻烦,对于运行中的内核更是如此。特别是对于哪些用于调试内核性能的工具,更是如此。对于这种大量数据需要在内核中缓存并传输到用户空间需求,很多传统的方法都已到达了极限,例如内核程序员很熟悉的 printk() 调用。此外,如果不同的内核子系统都开发自己的缓存和传输代码,造成很大的转载 2015-03-30 17:04:18 · 575 阅读 · 0 评论 -
uclinux 与 linux 区别
对uCLinux来说,其设计针对没有MMU的处理器,不能使用处理器的虚拟内存管理技术。uCLinux仍然采用存储器的分页管理,系统在启动时把实际存储器进行分页。在加载应用程序时程序分页加载。但是由于没有MMU管理,所以实际上uCLinux采用实存储器管理策略。uCLinux系统对于内存的访问是直接的,所有程序中访问的地址都是实际的物理地址。操作系统对内存空间没有保护,各个进程实际上共享一个运行空间转载 2015-01-13 08:56:16 · 1110 阅读 · 0 评论 -
linuc scp
scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。可能会稍微影响一下速度。当你服务器硬盘变为只读 read only system时,用scp可以帮你把文件移出来。另外,scp还非常不占资源,不会提高多少系统负荷,在这一点上,rsync就远远不及它了。虽然 rsync比scp会快一点转载 2015-01-12 11:12:03 · 441 阅读 · 0 评论 -
linux端口转发
设置linux端口转发 假设有两台服务器,A和B。我需要把访问A服务器的8081端口的数据转发到B服务器的8081端口,并接收B服务器的响应数据。 www.2cto.com 命令如下:#echo 1 > /proc/sys/net/ipv4/ip_forward#iptables -t nat -I PREROUTING -p tcp --dport 8081转载 2015-02-03 10:11:58 · 632 阅读 · 0 评论 -
socket tcp 链接状态
TCP连接断线后, 1.正常断线,如何检测? 2.意外掉线,如何检测? 我不希望通过发送数据来检测TCP连接! 谢谢! --------------------------------------------------------------- 通常情况下都是采用heartbeat来持续检测连接的,如果不希望采用这种方式的话,也即在转载 2014-12-31 10:13:53 · 500 阅读 · 0 评论 -
欢迎使用CSDN-markdown编辑器
声波传输是利用声音作为传输方式的一种数据通讯方法。用户声音传输信号其实我们每天都会用到,比如说我们说话其实就是一个使用声波进行信号传输的典型例子,说话过程可以理解成把信号编码成声音的过程,而我们聆听的过程就相当于把音频信号解码成语言文字的过程,而我们使用的中文文字与拼音之间的对应关系就相当于该通讯过程的音频协议。而音乐可以同样理解成一种声波通讯的方式,只是其音频协议与说话不一样,音乐的音频协议可以理转载 2015-02-13 09:33:59 · 394 阅读 · 0 评论 -
3分钟为你的应用添加声波通讯功能
前一段时间为了实现声波传输,网上找了半天,好不容易找到一个实现,但准确性远不能满足要求,没办法,只好自己写了一个。后来一哥们要求在mipsel平台和arm平台上使用,就帮他用c移植到了mipsel平台,实现了在不到普通电脑千分之一cpu的系统平台上的运行。搞定这个后cpu消耗非常低,基本上应该算是没有运行不了的平台了。一、准确性准确性95%以上,如果有识别有问题的情况,你可以开转载 2015-02-13 09:04:53 · 692 阅读 · 0 评论 -
Linux之module_param()函数学习
模块参数引导模块时,可以向它传递参数。要使用模块参数加载模块,这样写:insmod module.ko [param1=value param2=value ...]为了使用这些参数的值,要在模块中声明变量来保存它们,并在所有函数之外的某个地方使用宏MODULE_PARM(variable, type) 和 MODULE_PARM_DESC(variable转载 2015-03-09 09:04:31 · 3152 阅读 · 0 评论 -
linux内核错误码汇总
linux/errno.h#ifndef _LINUX_ERRNO_H#define _LINUX_ERRNO_H#include #ifdef __KERNEL__/* Should never be seen by user programs */#define ERESTARTSYS 512#define ERESTARTNOINTR转载 2015-03-09 09:34:38 · 3710 阅读 · 0 评论 -
linux wirelss 驱动框架学习
1. 无线网络驱动(ath9k_htc) ath9k_htc是一个基于USB接口的SoftMAC无线网络适配器。为了其驱动能正常工作,首先必须调用usb_register来注册驱动定义的usb_driver,以借助USB Core的力量来处理与USB协议相关的事件。其代码如下:[cpp] view plaincopystat转载 2015-03-28 09:39:56 · 854 阅读 · 0 评论 -
Linux内核配置系统浅析
随着 Linux 操作系统的广泛应用,特别是 Linux 在嵌入式领域的发展,越来越多的人开始投身到 Linux 内核级的开发中。面对日益庞大的 Linux 内核源代码,开发者在完成自己的内核代码后,都将面临着同样的问题,即如何将源代码融入到 Linux 内核中,增加相应的 Linux 配置选项,并最终被编译进 Linux 内核。这就需要了解 Linux 的内核配置系统。众所周知,Linux转载 2015-03-09 17:46:54 · 383 阅读 · 0 评论 -
linux mac80211
1. 基本概念 • cfg80211: 用于对无线设备进行配置管理。与FullMAC, mac80211和nl80211一起工作。(Kernel态) • mac80211: 是一个driver开发者可用于为SoftMAC无线设备写驱动的框架 (Kernel态)。 • nl80211: 用于对无线设备进行配置管理,它是一个基本Netlink的用户态转载 2015-03-28 09:37:06 · 1000 阅读 · 0 评论 -
Makefile中include、-include、sinclude的区别
如果指示符“include”指定的文件不是以斜线开始(绝对路径,如/usr/src/Makefile...),而且当前目录下也不存在此文件;make将根据文件名试图在以下几个目录下查找:首先,查找使用命令行选项“-I”或者“--include-dir”指定的目录,如果找到指定的文件,则使用这个文件;否则继续依此搜索以下几个目录(如果其存在):“/usr/gnu/include”、“/usr/loc转载 2015-03-10 13:49:29 · 425 阅读 · 0 评论 -
Makefile中用宏定义进行条件编译(gcc -D)/在Makefile中进行宏定义-D
在源代码里面如果这样是定义的:#ifdef MACRONAME//可选代码#endif那在makefile里面gcc -D MACRONAME=MACRODEF或者gcc -D MACRONAME 这样就定义了预处理宏,编译的时候可选代码就会被编译进去了。对于GCC编译器,有如下选项: -D macro=string,等转载 2015-03-10 13:36:32 · 437 阅读 · 0 评论 -
(四)洞悉linux下的Netfilter&iptables:包过滤子系统iptable_filter 2
今天我们讨论一下防火墙的数据包过滤模块iptable_filter的设计原理及其实现方式。 内核中将filter模块被组织成了一个独立的模块,每个这样独立的模块中都有个类似的init()初始化函数。编写完该函数后,用module_init()宏调用初始化函数;同样当模块被卸载时调用module_exit()宏将该模块卸载掉,该宏主要调用模块的“析构”函数。这当中就牵扯到内核ko模块的一些转载 2015-05-26 13:03:48 · 763 阅读 · 0 评论