
Linux
文章平均质量分 71
viewsky11
这个作者很懒,什么都没留下…
展开
-
ubuntu-16.04 qemu 嵌入式arm模拟
下载内核源码下载内核有两种方法,一种是用git直接下载内核代码树,方便后面的内核开发。另一种是直接到内核社区下载稳定版本(详见:https://www.kernel.org/pub/linux/kernel/v4.x/)。下面演示从Linux kernel主线下载代码进行编译。git clone git://git.kernel.org/pub/scm/linux/kernel/git/t...原创 2018-05-16 15:08:32 · 3495 阅读 · 0 评论 -
mac80211解析一
解析mac80211从ieee80211_alloc_hw函数分配 和ieee80211_register_hw 函数注册开始。以pci无线网络设备为例,底层pci实现连接并注册pci设备之后,开始在ieee80211_alloc_hw函数中实现无线网络设备的一些列初始化和设备分配,并关联ieee80211_ops操作函数,实现mac层的操作。struct ieee80211_hw *ieee802原创 2017-02-16 23:30:27 · 5572 阅读 · 1 评论 -
Linux内核中读写文件数据的方法
有时候需要在Linux kernel--大多是在需要调试的驱动程序--中读写文件数据。在kernel中操作文件没有标准库可用,需要利用kernel的一些函数,这些函数主要有: filp_open() filp_close(), vfs_read() vfs_write(),set_fs(),get_fs()等,这些函数在linux/fs.h和asm/uaccess.h头文件中声明。下面介绍主要步骤:转载 2016-11-04 16:34:47 · 1221 阅读 · 0 评论 -
Linux 服务器模型
当我们用socket进行编程的时候,细节上都是选择一个AF_LOCAL,AF_INET再根据相应的类型填充地址,其实根据通信需求,有几种简单的服务模型可供选用,掌握了这些框架再结合socket高度的抽象,可以为我们编写简单的服务器程序提供指导循环服务用户请求服务需要排队,服务器一次只能服务一个客户,服务完才能对下一个客户进行服务。ATM机就是这个1vs1模型。udp服务器也经常使用这个模型//模型伪转载 2016-11-15 15:07:02 · 311 阅读 · 0 评论 -
判断ipv6地址是否合法
Linux本身已经有ipv6合法性的判断宏#include <netinet/in.h>int IN6_IS_ADDR_UNSPECIFIED(const struct in6_addr *aptr);int IN6_IS_ADDR_LOOPBACK(const struct in6_addr *aptr);int IN6_IS_ADDR_MULTICAST(const struct in6_原创 2016-11-02 11:16:25 · 17586 阅读 · 2 评论 -
linux信号
信号是Linux编程中非常重要的部分,本文将详细介绍信号机制的基本概念、Linux对信号机制的大致实现方法、如何使用信号,以及有关信号的几个系统调用。 信号机制是进程之间相互传递消息的一种方法,信号全称为软中断信号,也有人称作软中断。从它的命名可以看出,它的实质和使用很象中断。所以,信号可以说是进程控制的一部分。 一、信号的基本概念 本节先介绍信号的一些基本概念,然后给出一转载 2016-10-28 17:24:59 · 295 阅读 · 0 评论 -
conntrack-tools的使用
conntrack-tools 是一套Linux用户空间连接跟踪工具,用于系统管理员进行交互连接跟踪系统,该模块提供了iptables的状态数据包检查。它包括了用户空间的守护进程conntrackd和命令行界面conntrack。详细信息参看 manual http://conntrack-tools.netfilter.org/manual.html原创 2016-10-28 15:31:17 · 13167 阅读 · 0 评论 -
struct net_device网络设备结构体详解
在linux中使用struct net_device结构体来描述每一个网络设备。同时这个用来刻画网络设备的struct net_device结构体包含的字段非常的多,以至于内核的开发者都觉得在现在的linux内核中,这个struct net_device是一个大的错误。 在本篇文章中,只介绍struct net_device中的一些字段,其他的字段在以后使用的时候再说。#define IFN转载 2016-11-05 18:07:30 · 20709 阅读 · 0 评论 -
内核线程
【摘要】本文首先介绍了进程和线程的区别,接着分析了内核线程、轻量级LWP线程以及常见的用户线程的特点,同时介绍了内核线程和进程的区别。分析了创建内核线程kernel_thread函数的实现过程,介绍了一个在驱动中使用内核线程的实例。最后针对内核线程创建销毁的特点,给出了通用的内核线程操作函数API,使用该API可在自己的驱动或内核代码中方便的使用内核线程。【关键词】线程,进程,内核线程,用户线程,L转载 2016-11-02 22:11:11 · 771 阅读 · 0 评论 -
open和fopen
open和fopen的区别:1.缓冲文件系统缓冲文件系统的特点是:在内存开辟一个“缓冲区”,为程序中的每一个文件使用,当执行读文件的操作时,从磁盘文件将数据先读入内存“缓冲区”, 装满后再从内存“缓冲区”依此读入接收的变量。执行写文件的操作时,先将数据写入内存“缓冲区”,待内存“缓冲区”装满后再写入文件。由此可以看出,内存 “缓冲区”的大小,影响着实际操作外存的次数,内存“缓冲区”越大原创 2016-09-22 11:29:21 · 449 阅读 · 0 评论 -
openembedded中的bitbake
在使用bitbake时出现了许多错误,结合openembedded的使用手册和bitbake的usr manual来梳理一下这个过程 直接查看oe的中文手册,请查看: http://blog.chinaunix.net/uid-25909619-id-3767317.html省去源码git步骤,直接查看主要文件:OE使用6个目录来存放bitbake元数据conf 目录用来保存bitbake.原创 2016-08-26 14:51:20 · 2119 阅读 · 0 评论 -
PCI驱动程序实现
1、数据结构: PCI设备上有三种地址空间:PCI的I/O空间、PCI的存储空间和PCI的配置空间。CPU可以访问PCI设备上的所有地址空间,其中I/O空间和存储空间提供给设备驱动程序使用,而配置空间则由Linux内核中的PCI初始化代码使用。内核在启动时负责对所有PCI设备进行初始化,配置好所有的PCI设备,包括中断号以及I/O基址,并在文件/proc/pci中列出所有找到的PC原创 2016-08-13 18:33:52 · 1529 阅读 · 0 评论 -
wifidog中的wdctl命令
新的wifidog源码增加了wdctl的命令,看了一下,是一个很好命令行的模板。收藏! wdctl.h文件#ifndef _WDCTL_H_#define _WDCTL_H_#define DEFAULT_SOCK "/tmp/wdctl.sock"#define WDCTL_UNDEF 0#define WDCTL_STATUS 1#define WDCTL_S原创 2016-08-23 11:45:55 · 2825 阅读 · 0 评论 -
libhttpd的使用
LibHttpd是一个开源轻量级嵌入式Web server,LibHttpd实现了下述功能:实现了HTTP的子集;使用表格技术自动处理Html Form数据;产生的内容既可以是静态的网页,也可以是调用C函数动态产生的(callback); LibHttpd提供API,利用这些API,用户可以很方便地将自己的Web内容加入到程序当中。libhttpd中带有英文的使用手册,也增加了使用实例源码原创 2016-09-13 10:46:05 · 2169 阅读 · 0 评论 -
Bundler的简单安装
偶尔看到一个好用的vimrc,就拷贝过来了自己用,也分享出来。 博客地址: http://blog.chinaunix.net/uid-20671208-id-4910091.html 感谢博主分享,但是按照博主的方法无法安装Bundler,就找到了: https://github.com/gmarik/ 原作者也有安装步骤: 拷贝过来是:$ mkdir -p /tmp/vimtest原创 2016-08-19 14:39:41 · 610 阅读 · 0 评论 -
使用 /sys 文件系统访问 Linux 内核
sysfs 是 Linux 内核中设计较新的一种虚拟的基于内存的文件系统,它的作用与 proc 有些类似,但除了与 proc 相同的具有查看和设定内核参数功能之外,还有为 Linux 统一设备模型作为管理之用。相比于 proc 文件系统,使用 sysfs 导出内核数据的方式更为统一,并且组织的方式更好,它的设计从 proc 中吸取了很多教训。本文就 sysfs 的挂载点 /sys 目录结构、其与 L转载 2015-06-08 09:56:44 · 590 阅读 · 0 评论 -
cfg80211 subsystem中的wiphy
无线网络设备驱动使用cfg80211需要硬件设备在cfg80211中实现注册。实现注册就要定义一系列的硬件功能描述的结构体。 每个设备的基础性结构体是wiphy,设备连接到系统时,都要使用。每个wiphy有0个,1个或者许多个虚拟接口相关联。 struct wiphy定义在内核include/net/cfg80211.h中struct wiphy { /* assign these f原创 2017-02-09 17:23:09 · 9644 阅读 · 1 评论 -
cfg80211 subsystem中的cfg80211_ops
每个无线设备和每个无线虚拟接口都要提供一组配置操作和功能操作,这些操作都由用户空间激发,进而调用驱动操作,每一个操作的执行都是在操作结构体重分开描述和关联。 结构体struct cfg80211_ops描述了无线的配置操作,它通过fullmac或者无线协议注册来关联相应的接口请求操作。 /** * struct cfg80211_ops - backend description for原创 2017-02-11 17:29:32 · 8708 阅读 · 0 评论 -
嵌入式 Linux面试基础题
## 请问uboot启动过程都做了些什么? 1、cpu刚开始初始化的时候,还未设置栈,所以先使用汇编代码,构建异常项链表,然后设置cpu为svc(特权)模式,同时关闭FIQ和IRQ(防止突发中断程序跑飞了) 注:在跳转到内核之前,要满足CPU出在SVC模式下。 2、对cp15协处理器进行设置,这里主要是关闭MMU和cache 3、进入到板级初始化阶段,这里会进行时钟、内存、串口的初始...原创 2018-05-22 10:00:57 · 12847 阅读 · 2 评论 -
u-boot.lds链接文件详解
GNU编译器生成的目标文件缺省为elf格式,elf文件由若干段(section)组成,如不特殊指明,由C源程序生成的目标代码中包含如下段:.text(正文段)包含程序的指令代码;.data(数据段)包含固定的数据,如常量、字符串;.bss(未初始化数据段)包含未初始化的变量、数组等。C++源程序生成的目标代码中还包括.fini(析构函数代码).init(构造函数代码)等. ...转载 2018-04-25 17:34:44 · 698 阅读 · 0 评论 -
u-boot分析一
同步于简书: https://www.jianshu.com/p/c60cf237ffd1 以及个人博客: https://hades2013.github.iou-boot分析以ar9331和ar953x 的为例。 获取u-boot源码git clone https://github.com/pepe2k/u-boot_mod.git 一般u-boot的初始化过程: - 硬...原创 2018-04-25 17:14:07 · 571 阅读 · 0 评论 -
构建goahead webserver
goahead官方下载源码: http://embedthis.com/goahead/download.html 解压并安装$tar -xvf goahead-4.0.0-src.tgz$ cd goahead-4.0.0$ make $ sudo make install 安装时出现如下错误:goahead: 0: Unable to read key self.key原创 2017-12-09 11:51:39 · 1060 阅读 · 0 评论 -
libcoap的使用和CoAP协议分析二
以下分析libcoap client.c,客户端请求使用客户端命令进行请求,反馈如下 $ ./coap-client -m get coap://127.0.0.1/ $./ coap-client -m get coap://127.0.0.1/.well-known/core coap-client 参数类型及说明-A type 设置期望获取的媒体类型原创 2018-01-02 19:04:13 · 7868 阅读 · 0 评论 -
MitraStar DSL-2401HN-T1C-GV硬件与启动信息
硬件 SoC MT7510T - MediaTek xDSL SoC (MIPS 34Kc 650 MHz ) RAM M14D5121632A - ESMT 512 Mbit (64 MB) DDR2 SDRAM Flash MX30LF1G18AC - Macronix 1 Gbit (128 MB) NAND Switch Integrado USB Nã原创 2017-03-14 10:38:06 · 4720 阅读 · 1 评论 -
mac80211解析二
在实现无线网络设备分配时,ieee80211_register_hw关联了ieee80211_ops结构体:ieee80211_ops结构体是mac80211到设备驱动的回调操作函数集合,定义如下:/** * struct ieee80211_ops - callbacks from mac80211 to the driver * * This structure contains vari原创 2017-02-17 14:18:33 · 3762 阅读 · 0 评论 -
wireless-tools源码分析-iwpriv
iwpriv是Wireless Extensions 操作的特定驱动。通过iwpriv,可以得到AP的一些参数设置,也可以设置自己的WIFI参数。[root@root- /]#iwprivwlan0 Available private ioctls : extscan (8BFA) : set 0 int & get 2 char ho原创 2017-02-24 12:19:25 · 6194 阅读 · 0 评论 -
wireless-tools源码分析-iwlist
iwlistiwlist主要用来显示无线网卡的一些附加信息。 iwlist的用法: useage: iwlist [interface] options scanning 扫描一定范围内的无线接入点和Ad-Hoc单元信息,包括ESSID,信号质量,频段以及无线模式等 frequency 频率 channel显示设备支持的频道及当前所在的频道 rate/bitrate 设备支持的速率原创 2017-02-24 00:07:40 · 5855 阅读 · 0 评论 -
wireless-tools源码分析-iwconfig
Wireless Tools包含了一下工具: iwconfig:设置基本无线参数 iwlist:扫描、列出频率,比特率,密钥等 iwspy:获取每个节点链接的质量(只能查阅与之相连的节点) iwpriv:操作Wireless Extensions 特定驱动 ifrename: 基于各种静态标准命名接口大多数 Linux 发行版本都在其网络初始化脚本中集成Wir原创 2017-02-23 22:12:08 · 5983 阅读 · 1 评论 -
hostapd_cli命令源码分析
hostapd提供了控制命令hostapd_cli,使用方法可以查看usage。源码中的main函数:int main(int argc, char *argv[]){ int warning_displayed = 0; int c; int daemonize = 0; if (os_program_init())//不同操作体统平台下执行不同的环境初始化原创 2017-02-15 14:33:43 · 7577 阅读 · 0 评论 -
qcacld-2.0的wlan分析之二
在设备进行pci总线注册之后,进入pci驱动的probe函数,该函数中最为重要的就是开启wlan的主机设备驱动,即hdd_wlan_startup()函数:/**--------------------------------------------------------------------------- \brief hdd_wlan_startup() - HDD init funct原创 2017-02-14 23:37:59 · 5712 阅读 · 0 评论 -
mac80211概览
mac80211是linux kernel中的一个子系统,它为无线设备soft-MAC/half-MAC提供了分享实施方案,包含MLME和另外一些代码。 mac80211的架构 其他相关联的还有TX/RX路径(包含一些软件加密) 为网络管理,IBSS,mesh等提供的控制路径 一些AP的管理,如省电缓冲 mac80211的代码结构最重要的是kernel提供的驱动API,该文件定义了mac8011原创 2017-02-11 19:56:57 · 9888 阅读 · 1 评论 -
linux设备驱动中的completion(kernel-4.7)
completion定义定义的目录:include/linux/completion.h/* * struct completion - structure used to maintain state for a "completion" * * This is the opaque structure used to maintain the state for a "completio原创 2017-02-23 00:42:21 · 4795 阅读 · 0 评论 -
mac80211解析三
在ieee80211_register_hw函数中,实现了无线网络设备的的注册,网络接口的注册和建立主要由ieee80211_if_add 函数来完成,即:result = ieee80211_if_add(local, "wlan%d", NULL, NL80211_IFTYPE_STATION, NULL); 一般注册生成wlan0,函数ieee80211_原创 2017-02-20 23:08:55 · 3632 阅读 · 0 评论 -
/sys/class/gpio 操作方法
在嵌入式设备中对GPIO的操作是最基本的操作。一般的做法是写一个单独驱动程序,网上大多数的例子都是这样的。其实linux下面有一个通用的GPIO操作接口,那就是我要介绍的 “/sys/class/gpio” 方式。下面以友坚4412开发板上调试为例子说明流程: 首先,看看系统中有没有“/sys/class/gpio”这个文件夹。 如果没有请在编译内核的时候加入 Device Drivers转载 2015-06-05 16:53:19 · 4180 阅读 · 0 评论 -
Openwrt启动后的脚本运行(二)
Openwrt启动脚本的运行分为两个阶段, preinit完成系统的初始化, rcS依次启动了各个应用程序模块。执行/etc/preinit脚本之后boot_hook_init preinit_essentialboot_hook_init preinit_mainboot_hook_init failsafeboot_hook_init initramfsboot_hook_init原创 2015-05-22 10:24:12 · 4738 阅读 · 0 评论 -
shell脚本编程四 ——shell字符串处理
shell字符串的处理截取;shell字符串的截取的问题:一、Linux shell 截取字符变量的前8位,有方法如下:1.expr substr “$a” 1 82.echo $a|awk ‘{print substr(,1,8)}’3.echo $a|cut -c1-84.echo $5.expr $a : ‘\(.\\).*’6.echo $a|dd bs原创 2014-01-06 15:46:14 · 878 阅读 · 0 评论 -
shell脚本学习笔记二
while命令的使用while test commanddo other commandsdoneutil命令until test commandsdo other commandsdone文件数据循环 通过改变环境变量IFS,可以迫使for 命令将文件中的每行作为单独的一项来处理控制循环 break命令 用在处理过程中跳出循环原创 2014-01-02 15:24:02 · 692 阅读 · 0 评论 -
Linux中cp和scp命令的使用方法
Linux为我们提供了两个用于文件copy的命令,一个是cp,一个是scp,但是他们略有不同。 cp --- 主要是用于在同一台电脑上,在不同的目录之间来回copy文件 scp --- 主要是在不同的Linux系统之间来回copy文件 关于cp的具体用法: 命令基本格式: cp [OPTIONS] SOURCE DEST --- 从源路径copy文件到目的路径原创 2013-12-06 17:54:34 · 1175 阅读 · 0 评论 -
Linux内核中的双向循环链表学习
Linux内核中的双向循环链表学习原创 2013-11-12 17:31:31 · 925 阅读 · 0 评论 -
基于mini2440触摸屏驱动
驱动路径:drivers/input/touchscreen/s3c2410_ts.c在static int __init s3c2410ts_init(void)函数中注册了两个中断1.if (request_irq(IRQ_ADC, stylus_action, IRQF_SHARED|IRQF_SAMPLE_RANDOM, "s3c2410_action", dev))原创 2013-09-23 18:01:38 · 906 阅读 · 0 评论