摘要:/inclue/linux/tty_driver.h/* Use TTY_DRIVER_* flags below */#define tty_alloc_driver(lines, flags) \ __tty_alloc_driver(lines, THIS_MODULE, flags)/* * DEPRECATED Do not use this in new code, use tty_alloc_driver instead. * 不赞成使用这个新代码,通常使用tty_alloc_driver来代替。其实他们实际意义是一样的 * (And chang...
        
阅读全文
 
        
     
    
        
        
摘要:底行模式:%s/^\s*[0-9]*\s*//g恢复缩进,在普通模式下gg//至段首v//visual模式G//段尾=//恢复缩进
        
阅读全文
 
        
     
    
        
        
摘要:struct tty_operations { struct tty_struct * (*lookup)(struct tty_driver *driver, struct inode *inode, int idx);//返回对应的tty设备, 若为NULL则返回ERR_PTR, 在tty_mutex函数中调用//该项可选,默认为使用ttys array int (*install)(struct tty_driver *driver, struct tty_struct *tty);//install一个tty设...
        
阅读全文
 
        
     
    
        
        
摘要:编译器 arm-linux-gccarm-linux-gcc hello.c -o hello 反汇编器 arm-linux-objdumparm-linux-objdump -D -S hello//-D, --disassemble-all Display assembler contents of all sections//-S, --source Intermix source code with disassembly ELF文件查看工具 arm-linux-readelfarm-linux-readelf -a hello //check the data and ...
        
阅读全文
 
        
     
    
        
        
摘要:1、minicom串口的传输 一般在linux下直接检测到U转串的驱动了,若为虚拟机,先装主机驱动,然后将usbserial分配给虚拟机即可,若主机为linux系统,接上即可自动安装驱动。$ lsmod | grep pl2303 或者 $ lsmod | grep usbserial 可以看到设备如下 安装minicom$ sudo apt-get install minicom$ sudo apt-get install lrzsz 配置minicom$ sudo mincom -s 首先设置serial port setup 通常情况下只用改第一个,改为ttyUSB0(通...
        
阅读全文
 
        
     
    
        
        
摘要:在linux内核中,主要的静态发生于以下几种情况: 1、对称多处理器(SMP)的多个CPU: 多个CPU共同使用系统总线,可访问共同点的外设和存储器。 2、单CPU内核进程与抢占它的进程: 一个进程的执行可被另一高优先级进程打断。 3、中断(硬中断、软中断、Tasklet,底半部)与进程之间: 中断可以打断正在执行的进程,若访问该进程正在访问的空间,将引发竞态。 上述并发的发生出了SMP是真正的并行以外,其他的都是“宏观并行,微观串行”的,但其引发的实质问题与SMP相似。 访问共享字段的代码区域成为临界区(critical sections) 中断屏蔽: 使用方法loc...
        
阅读全文
 
        
     
    
        
        
摘要:想要了解字符设备的内部实现,最直接的方法是先来看struct file_operations,在结构体中封装的函数,实际上就是字符设备可以实现的功能。struct file_operations { struct module *owner;//拥有该结构体的模块指针,一般设为THIS_MODULE loff_t (*llseek) (struct file *, loff_t, int);//修改文件当前的读写认为,对应为llseek()函数 ssize_t (*read) (struct file *, char __user *, size_...
        
阅读全文
 
        
     
    
        
        
摘要:总的说来,字符设备驱动程序的实现包含两个大的方面,所以分2篇来讨论。 这两个个方面分别为:设备注册与驱动加载、字符设备的内部实现(个人分类,仅作参考)一、设备的创建 1)原程序中dev_t devno = MKDEV(globalmem_major, 0); //加载函数中对MKDEV的调用 2)索引的函数/include/linux/kedev_t.h#define MINORBITS 20#define MKDEV(ma,mi) (((ma) << MINORBITS) | (mi)) 3)这是一个创建设备的函数,也算不上一个函数,可以看成一个运算:将ma(j...
        
阅读全文
 
        
     
    
        
        
摘要:CTDIY means Copy to DIY. 首先来copy一个例程来试试字符设备到底是如何//globalmem.c 本例程来源于《linux设备驱动开发详解》#include<linux/module.h>#include<linux/types.h>#include<linux/fs.h>#include<linux/errno.h>#include<linux/mm.h>#include<linux/sched.h>#include<linux/init.h>#include<linux/cd
        
阅读全文
 
        
     
    
        
        
摘要:1、若是在win7下,先安装win7下的驱动再分配USB端口给虚拟机(略过) 2、不管是在虚拟机还是纯linux中,先下载minicomsudo apt-get install minicom 3、minicom中的设置lsmod | grep pl2303//首先查看pl2303驱动是否正确安装,在ubuntu下,接入接口则自动安装ls /dev | grep ttyUSB*//查看所使用的设备端口,在我电脑上显示为ttyUSB0//以下进入minicom设置sudo minicom -s//选择serial port setup,按下A,将端口改为ttyUSB0(按个人情况)//双...
        
阅读全文
 
        
     
    
        
        
摘要:linux内存管理的任务 1)组织规划整个系统的物理和虚拟存储空间分布; 2)为虚拟存储空间(线性地址空间)建立页表,即建立虚拟地址到物理地址的映射关系; 3)设置不同存数空间的访问控制属性,保护系统存储空间不被非法访问; 4)内存分配和释放。1 linux中的物理和虚拟存储空间的分布 支持MMU的32位微处理器上,linux物理存储空间和虚拟存储空间寻址范围都是0x0000_0000~0xFFFF_FFFF,为4GB。 但是linux运行在虚拟存储空间中,而实际使用中将远小于4GB的物理内存映射为虚拟内存的4GB。 物理存储空间分布(引用《嵌入式系统linux内核开发实战指南(...
        
阅读全文
 
        
     
    
        
        
摘要:1 struct pglist_data pg_data_ttypedef struct pglist_data { struct zone node_zones[MAX_NR_ZONES]; struct zonelist node_zonelists[MAX_ZONELISTS]; int nr_zones;#ifdef CONFIG_FLAT_NODE_MEM_MAP /* means !SPARSEMEM */ struct page *node_mem_map;#ifdef CONFIG_CGROUP_MEM_RES_CTL...
        
阅读全文
 
        
     
    
        
        
摘要:1 struct per_cpu_pagesetstruct per_cpu_pageset { struct per_cpu_pages pcp;#ifdef CONFIG_NUMA //NUMA系统专用 s8 expire;#endif#ifdef CONFIG_SMP s8 stat_threshold; s8 vm_stat_diff[NR_VM_ZONE_STAT_ITEMS];#endif}; 2 struct per_cpu_pagesstruct per_cpu_pages { i...
        
阅读全文
 
        
     
    
        
        
摘要:struct page { unsigned long flags; /* Atomic flags, some possibly * updated asynchronously */ atomic_t _count; /* Usage count, see below. */ union { atomic_t _mapcount; /* Count of ptes mapped i...
        
阅读全文
 
        
     
    
        
        
摘要:linux内存管理 嵌入式处理器的分页管理为二级映射,内存空间与I/O空间统一编址,而x86处理器采用三级映射,内存空间与I/O空间独立编址。 在32位嵌入式系统中,存储空间的地址范围从0x0000_0000到0xFFFF_FFFF,内存和I/O共享从这4GB地址空间范围。 其主要包含以下几种存储空间: 1)设备空间(MT_DEVICE):二级分页 2)内部高速SRAM空间(MT_CACHECLEAN):一级分段 3)内部mini cache空间(MT_MINICLEAN):一级分段 4)低端中断向量(MT_LOW_VECTORS):两级分页 5)高端中断向量(MT_HIGH_...
        
阅读全文
 
        
     
    
        
        
摘要:第三章 进程进程、轻量级进程和线程 进程定义:进程是程序执行是的一个实例 从内核观点看,进程的目的就是担任分配系统资源(CPU时间、内存等)的实体在linux源代码中,常将进程成为任务(task)或线程(thread) Linux早期版本中,父子进程间只能通过数据拷贝来实现进程数据保护。 Linux现在使用轻量级进程(LWP/LightWeight Process)对多线程应用程序提供更好的支持。两个轻量级进程可以共享一些资源,诸如地址空间、打开的文件等。 只要轻重一个修改共享资源,另一个马上能看到这种修改。 当然,当两个线程访问共享资源是就必须同步它们自己。 进程描述符都是task str.
        
阅读全文
 
        
     
    
        
        
摘要:第二章 内存寻址物理地址 logical address 由段地址(segment)和偏移量(offset)构成。线性地址/虚拟地址 linear/virtual address 32位无符号整数0x0000 0000 – 0xffff ffff 寻址4GB。物理地址 physical address 32位或36位无符号整数表示。 内存控制单元(Memorty Management Unit/MMU)通过一种称为分段单元(Segmentation Unit)的硬件电路把一个逻辑地址转换成线性地址;接着,第二个称为分页单元(Paging Unit)的硬件电路吧线性地址转换成一个物理地址。附录一
        
阅读全文
 
        
     
    
        
        
摘要:首先,rhel5系统安装的时候其实已经有yum了,只是因为如果用官方的网站更新的话除非你是用钱买的rhel5.否则它会提示注册之类的。所以只要把yum的更新地址改成开源的就行了。而限定yum更新地址的文件在/etc/yum.repos.d/里。先把它们改成备份文件,即在后面加.bak。[root@killgoogle ~]# mv /etc/yum.repos.d/rhel-debuginfo.repo /etc/yum.repos.d/rhel-debuginfo.repo.bak[root@killgoogle ~]# mv /etc/yum.repos.d/rpmforge.repo.r
        
阅读全文
 
        
     
    
        
        
摘要:1、安装Cscopesudo apt-get install cscope2、在/etc/vim/vimrc文件中加入以下内容"enable the cscope in vimif filereadable("cscope.out") cs add cscope.outendif3、进入想要看的文件夹目录: 例/home/linx/kernel/linux-3.6.3/drivers/charcd kernel/linux-3.6.3/drivers/char/4、建立索引cscope -Rbq#-R Recurse directories for files.#
        
阅读全文
 
        
     
    
        
        
摘要:1、downloadthedeepin python-gtk2 deepinmusic-uianddeepinmusichttp://packages.linuxdeepin.com/deepin/pool/main/p/pygtk/python-gtk2_2.24.0-3deepin2_i386.debhttp://packages.linuxdeepin.com/deepin/pool/main/d/deepin-ui/http://cdimage.linuxdeepin.com/releases/12.06/beta2/desktop/2、first installthedeepinpy
        
阅读全文