- 博客(39)
- 资源 (22)
- 收藏
- 关注
转载 嵌入式 linux下cp带进度条的实现示例代码
实现Linux下带进度显示的cp命令 - xcpLinux下复制文件的命令cp非常强大,就是有一点不是很好:没有进度提示。尤其是在复制很多大文件时,控制台仅仅停在那里什么信息都没有让人非常不爽。当然可以通过shell脚本实现进度提示,不过我喜欢直接一点的方式:用C程序解决。1.遍历想要知道进度首先要统计源文件的个数和大小,然后再复制,所以需要对源文件做两次遍历。当然也可以只遍历
2014-08-30 15:35:15 1481
转载 嵌入式 Linux 虚拟系统文件交换器剖析
Linux 最显著特征是灵活性和扩展性,例如它的虚拟文件系统交换器(VFS)。您可以在各种设备上创建文件系统,包括传统的磁盘、USB flash 驱动、内存以及其他储存设备。您还可以在另一个文件系统环境中嵌入文件系统。探索导致 VFS 如此强大的因素,并了解 VFS 的主要接口和进程。 Linux 文件系统的灵活性和扩展性支持直接源于一组抽象接口。这组接口的核心就是虚拟文件系统交
2014-08-29 23:14:10 765
转载 嵌入式 nand flash坏块管理OOB,BBT,ECC
0.NAND的操作管理方式NAND FLASH的管理方式:以三星FLASH为例,一片Nand flash为一个设备(device),1 (Device) = xxxx (Blocks),1 (Block) = xxxx (Pages),1(Page) =528 (Bytes) = 数据块大小(512Bytes) + OOB 块大小(16Bytes,除OOB第六字节外,通常至少把OOB的前3
2014-08-29 23:13:25 1058
转载 嵌入式 Linux消息队列之命令行相关
消息队列 (也叫做报文队列)是Unix系统V版本中3种进程间通信机制之一。另外两种是信号灯和共享内存。这些IPC机制使用共同的授权方法。只有通过系统调用将标志符传递给核心之后,进程才能存取这些资源。这种系统IPC对象使用的控制方法和文件系统非常类似。使用对象的引用标志符作为资源表中的索引。消息队列就是一个消息的链表。就是把消息看作一个记录,并且这个记录具有特定的格式以及特定的优先级。对消息队列
2014-08-29 17:54:21 685
转载 嵌入式 Linux 进程间通信之信号灯的几点注意事项
1. 关于union semun结构体的定义和头文件的包含在用信号灯进行通信时,包含头文件:#include #include #include 但是,在编译程序的时候提示错误,提示union semun对应的类型不存在看到有加头文件:#include (不便于程序移植,如果包含该头文件,则不能移到UNIX系统下)但在加上该头文件之后,又会提示,说有些数据结构被重
2014-08-29 17:53:19 705
转载 嵌入式 Linux 进程间通信之消息队列的几点注意事项
1. 由于消息队列是属于内核的,因此在执行时,必须有Root权限才可以,否则会在访问消息队列时,出现EACCES错误,即访问权限的问题2. msgbuf.mtype的设置int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg);msgp指向结构体:struct msgbuf {
2014-08-29 17:52:42 2086
转载 嵌入式 Linux环境进程间通信(五): 共享内存(上)
共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式。两个不同进程A、B共享内存的意思是:同一块物理内存被映射到进程A、B各自的进程地址空间。进程A可以即时看到进程B对共享内存中数据的更新,反之亦然。由于多个进程共享同一块内存区域,必然需要某种同步机制,互斥锁和信号量都可以。采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管
2014-08-29 17:50:57 1250
转载 嵌入式 Linux环境进程间通信(四):信号灯
一、信号灯概述信号灯与其他进程间通信方式不大相同,它主要提供对进程间共享资源访问控制机制。相当于内存中的标志,进程可以根据它判定是否能够访问某些共享资源,同时,进程也可以修改该标志。除了用于访问控制外,还可用于进程同步。信号灯有以下两种类型:二值信号灯:最简单的信号灯形式,信号灯的值只能取0或1,类似于互斥锁。注:二值信号灯能够实现互斥锁的功能,但两者的关注内容不同。信号灯强调共享
2014-08-29 17:26:16 1258
转载 嵌入式 Linux环境进程间通信(三):消息队列
概念解释:IPC随进程持续、随内核持续以及随文件系统持续的定义:随进程持续:IPC一直存在到打开IPC对象的最后一个进程关闭该对象为止。如管道和有名管道;随内核持续:IPC一直持续到内核重新自举或者显示删除该对象为止。如消息队列、信号灯以及共享内存等;随文件系统持续:IPC一直持续到显示删除该对象为止。消息队列(也叫做报文队列)能够克服早期unix通信机制的一些缺点。作
2014-08-29 17:23:54 834
转载 嵌入式 Linux环境进程间通信(二):有名管道(FIFO)
1 有名管道相关的关键概念管道应用的一个重大限制是它没有名字,因此,只能用于具有亲缘关系的进程间通信,在有名管道(named pipe或FIFO)提出后,该限制得到了克服。FIFO不同于管道之处在于它提供一个路径名与之关联,以FIFO的文件形式存在于文件系统中。这样,即使与FIFO的创建进程不存在亲缘关系的进程,只要可以访问该路径,就能够彼此通过FIFO相互通信(能够访问该路径的进程以及F
2014-08-29 17:22:46 780
转载 嵌入式 Linux 进程间通信几种方式小结
一、进程间通信概述进程通信有如下一些目的:A、数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几M字节之间B、共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程应该立刻看到。C、通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。D、资源共享:多个进程之间共享同样的资源。为
2014-08-29 17:21:23 2131
转载 嵌入式 Linux环境进程间通信(一):管道
1 管道相关的关键概念管道是Linux支持的最初Unix IPC( Inter process commuication )形式之一,具有以下特点:1> 管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道;2> 只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程);3> 单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文
2014-08-29 17:20:02 727
转载 嵌入式 Linux 通过信号机制在进程间传递参数中的几个主要函数解析
1. sigqueue() 用于信号的发送函数功能:发送信号给特定的某个进程使用头文件:#include 函数原型: int sigqueue(pid_t pid, int sig, const union sigval value);参数:pid是指定接收信号的进程号;sig确定即将发送的信号;value是一个联合数据结构union sigval,
2014-08-29 17:19:06 675
原创 嵌入式 linux下进程间通过信号进行通信的KILL小结
kill函数用来发送信号给指定的进程,在Shell下输入man 2 kill可获取其函数原型如下:#include #include int kill(pid_t pid,int sig);该函数的行为与第一个参数pid的取值有关,第二个参数sig表示信号编号。如果pid是正数,则发送信号sig给进程号为pid的进程;如果pid为0,则发送信号sig给当前进程所属进程组里的
2014-08-29 17:17:10 1025
转载 嵌入式 Linux信号详解经典啊
一 信号的种类可靠信号与不可靠信号, 实时信号与非实时信号可靠信号就是实时信号, 那些从UNIX系统继承过来的信号都是非可靠信号, 表现在信号不支持排队,信号可能会丢失, 比如发送多次相同的信号, 进程只能收到一次. 信号值小于SIGRTMIN的都是非可靠信号.非可靠信号就是非实时信号, 后来, Linux改进了信号机制, 增加了32种新的信号, 这些信号都是可靠信号, 表
2014-08-29 17:15:41 702
转载 嵌入式 linux下bus、devices和platform的基础模型
一、kobject的定义:kobject是Linux2.6引入的设备管理机制,在内核中由struct kobject结构表示,这个结构使所有设备在底层都具有统一的接口.kobject提供了基本的对象管理能力,是构成Linux2.6设备模型的核心结构,它与sysfs文件系统紧密联系,每个在内核中注册kobject对象都对应与sysfs文件系统中的一个目录;kobject--->sysfs.dir
2014-08-29 16:51:37 1057
转载 嵌入式 linux下MMC/SD/SDIO识别与操作
从上篇文章的最后,我们知道host在扫描卡的过程中,其识别的顺序为SDIO SD MMC,并且从它的注释可以看出,这个顺序是很重要的。那这篇文章,我们就看看SDIO的识别过程,它对应的函数就是mmc_attach_sdio(host) (函数位于文件drivers/mmc/core/sdio.c) 这个函数大概来说做了如下的工作
2014-08-29 16:50:30 4843
转载 嵌入式 分析platform_get_resource
有如下实例:static struct resource net_resources[] = {[0] = { .start = ETHERNET_BASE, .end = ETHERNET_BASE + SZ_4K - 1, .flags = IORESOURCE_MEM,}, [1] = {
2014-08-29 15:42:04 5943
原创 嵌入式 ubuntu开启SSH服务
SSH分客户端openssh-client和openssh-server如果你只是想登陆别的机器的SSH只需要安装openssh-client(ubuntu有默认安装,如果没有则sudo apt-get install openssh-client),如果要使本机开放SSH服务就需要安装openssh-serversudo apt-get install openssh-server
2014-08-29 14:07:30 1560
转载 嵌入式 NAND flash文件系统JFFS2和YAFFS比较
JFFS是由瑞典的Axis Communications Ab公司开发的(1999,以GNU发布),针对flash设备的特性为嵌入式设备开发的JFFS1和JFFS2的设计中都考虑到了FLASH的特性特别是满足了上述3个条件,包括了垃圾回收,坏块管理等功能. 这两种文件系统属于LFS(Log-structured File System).这种文件系统的特点是一旦数据出错,容易恢复,但是系统
2014-08-27 21:45:07 6415
转载 嵌入式 NAND Flash的坏块管理设计
NAND Flash的坏块管理设计 摘要:主要介绍了基于嵌入式Linux的NAND Flash坏块管理设计和实现方案,详细阐述了坏块映射表的建立、维护及其相关算法,同时分析了此坏块算法在Linux内核及Bootloader中的具体应用。测试结果表明该算法能够处理NANDFlash的相关坏块问题,具有较高的稳定性。关键词:NAND Flash;嵌入式IAnux;映射表;坏块管理
2014-08-27 21:38:24 2526
原创 嵌入式 C语言实现在0x1000地址处写入一个单字节的整数
char a=2;*(char *)0x1000=a;Memset((char *)0x1000,2,1);
2014-08-27 12:41:23 2259
转载 嵌入式 Linux驱动虚拟地址和物理地址的映射
一般情况下,Linux系统中,进程的4GB内存空间被划分成为两个部分------用户空间和内核空间,大小分别为0~3G,3~4G。 用户进程通常情况下,只能访问用户空间的虚拟地址,不能访问到内核空间。 每个进程的用户空间都是完全独立、互不相干的,用户进程各自有不同的页表。而内核空间是由内核负责映射,它并不会跟着进程改变,是固定的。内核空间地址有自己对应的页表,内核的虚拟空间独立于其
2014-08-27 11:00:05 3287
转载 嵌入式 栈溢出的几种情况
导致堆栈溢出主要有以下几种情况:一、局部数组过大。当函数内部的数组过大时,有可能导致堆栈溢出。例如:stack.c[cpp] view plaincopy#include #define SIZE 1 * 1024 * 1024 int main() { int b[SIZE]; int i;
2014-08-27 10:47:13 2558
原创 嵌入式 linux下以及arm下sd卡mmc的自动挂载以及自动卸载小结
1、自动挂载与卸载脚本优化:放在目录/ect/下:root@u12d32:/opt/qy_test/qy_avserver/a3518_80/create_auto_start# cat sd_card_removing #!/usr/bin/env sh #Author : kj #Timer : 2014-08-22 #Function : mount mmc de
2014-08-22 22:39:58 7247
原创 嵌入式 指定网卡名称的信息以及网络连通状态以及重连机制代码示例
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include
2014-08-19 21:22:51 1451
转载 嵌入式 嵌入式Linux驱动工程师/BSP开发工程师面试笔试题集锦
以下题目可能与原题目有差入,但力争使题目与原题目接近。【一、来自Q群友】1. linux内核里面,内存申请有哪几个函数,各自的区别?2. IRQ和FIQ有什么区别,在CPU里面是是怎么做的?3.int *a;char *b;a 和 b本身是什么类型?a、b里面本身存放的只是一个地址,难道是这两个地址有不同么?4. 中断的上半部
2014-08-08 21:50:49 2728
转载 嵌入式 Linux工作队列实现机制
工作项、工作队列和工作者线程把推后执行的任务叫做工作(work),描述它的数据结构为work_struct ,这些工作以队列结构组织成工作队列(workqueue),其数据结构为workqueue_struct ,而工作线程就是负责执行工作队列中的工作。系统默认的工作者线程为events。工作队列(work queue)是另外一种将工作推后执行的形式。工作队列可以把工作推后,交由一
2014-08-08 21:43:28 979
转载 嵌入式 tasklet使用workqueue示例
asklet的使用比较简单,只需要定义tasklet及其处理函数并将两者关联例子:Void my_tasklet_func(unsigned long)DECLARE_TASKLET(my_tasklet.my_tasklet_func,data)代码DECLARE_TASKLET实现了定义名称为my_tasklet的tasklet并将其与my_tasklet_fu
2014-08-08 21:39:46 753
转载 嵌入式 中断处理与【irqsoft】、【tasklet】和【work queue】使用实例
中断处理由于I/O操作的不确定因素,以及处理器和I/O设备之间速度的不匹配,设备往往通过某种硬件信号异步地唤起处理器的注意。这些硬件信号就是所谓的中断。每个中断设备都被分配给一个相关的标识符,被称为中断请求(IRQ)号。当处理器检测到某一IRQ号对应的中断产生时,它将停止它现在的工作,并引用该IRQ所对应的中断服务例程(ISR)。中断处理函数ISR在中断上下文执行。中断上下文ISR是与
2014-08-08 21:05:23 786
转载 嵌入式 softirq,tasklet和workqueue的分析
对Softirq,tasklet和workqueue做一个简单的总结和分析。其实softirq和taskled都属于软中断,而工作队列是和软中断无关,仅仅是内核中的一个内核线程在等待工作任务,工作队列可以发送工作任务。不过他们还是有个共同点,就是都有延后执行的作用。1.首先看 do_softirq如何被调用和如何处理。#ifdef __ARCH_IRQ_EXIT_IRQS_
2014-08-08 21:00:51 676
转载 嵌入式 最全面的linux信号量解析
信号量一.什么是信号量信号量的使用主要是用来保护共享资源,使得资源在一个时刻只有一个进程(线程)所拥有。信号量的值为正的时候,说明它空闲。所测试的线程可以锁定而使用它。若为0,说明它被占用,测试的线程要进入睡眠队列中,等待被唤醒。二.信号量的分类在学习信号量之前,我们必须先知道——Linux提供两种信号量:(1) 内核信号量,由内核控制路径使用(2) 用户态进程
2014-08-08 20:50:09 1678
转载 嵌入式 自旋锁及其衍生锁
自旋锁自旋锁(spinlock)是用在多个CPU系统中的锁机制,当一个CPU正访问自旋锁保护的临界区时,临界区将被锁上,其他需要访问此临界区的CPU只能忙等待,直到前面的CPU已访问完临界区,将临界区开锁。自旋锁上锁后让等待线程进行忙等待而不是睡眠阻塞,而信号量是让等待线程睡眠阻塞。自旋锁的忙等待浪费了处理器的时间,但时间通常很短,在1毫秒以下。 自旋锁用于多个CPU系
2014-08-08 20:36:35 733
转载 嵌入式 自旋锁与信号量小结
自旋锁的功能是为实现保护共享资源,保护共享资源在Linux中主要有以下几种: 自旋锁(spin lock)、信号量(semaphore)、原子操作、中断屏蔽 、BKL(Big Kernel Lock)、rwlock、brlock(只包含在2.4内核中)、RCU和seqlock(只在2.6内核中). (一)自旋锁(spin lock) 自旋锁(spin lock)
2014-08-08 20:35:33 993
原创 嵌入式 uboot下tftp代码追踪
一、网卡驱动的添加 网络在uboot中的启动是在uboot的第二阶段启动代码中 /lib_arm/board.cvoid start_armboot (void){}里面有网络初始化函数eth_initialize(gd->bd);进入函数你会发现一系列的网卡初始化函数#if defined(CONFIG_MCFFEC) mcffec_
2014-08-03 18:09:34 1013
原创 嵌入式 setjmp和longjmp小结
C语言的setjmp:异常处理与构建协作式多任务系统int setjmp(jmp_buf envbuf)宏函数setjmp()在缓冲区envbuf中保存系统堆栈里的内容,供longjmp()以后使用,setjmp()必须使用头文件setjmp.h。调用setjmp()宏时,返回值为0,然而longjmp()把一个变原传递给setjmp(),该值(恒不为0)就是调用longjmp()
2014-08-02 21:45:03 637
tracepoint_lttng使用详解
2015-03-23
多路径multipath配置文档和相关概念
2015-01-07
ceph-fs-rpm-build
2014-12-08
ceph-cognize-docs_zh-v1.3
2014-11-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人