- 博客(54)
- 资源 (3)
- 收藏
- 关注
原创 linux驱动知识点总结
1、Makefile2、连接脚本 查看ld工具默认连接脚本:ld -verbose3、ELF格式 常见的elf格式文件: 可重定位的对象文件(Relocatable file) 可执行的对象文件(Executable file) 可被共享的对象文件(Sh
2015-09-26 18:03:01
559
原创 Linux Kernel Learning
http://www.360doc.com/content/09/0221/15/36491_2606566.shtmlhttp://blog.youkuaiyun.com/pottichu/article/details/4261212http://blog.youkuaiyun.com/pottichu/article/details/4261150http://blog.youkuaiyun.com/van
2015-02-02 18:36:13
484
转载 Linux内存管理之slab机制(初始化)
Linux内存管理之slab机制(初始化)一、内核启动早期初始化 start_kernel()->mm_init()->kmem_cache_init() 执行流程: 1,初始化静态initkmem_list3三链; 2,初始化cache_cache的nodelists字段为1中的三链; 3,根据内存情况初始化每个slab占用的页面
2015-02-02 15:22:13
757
原创 Slab分配机制
http://oss.org.cn/kernel-book/ch06/6.3.3.htmslab分配机制包括:kmalloc、vmalloc、页高速缓存、内存池
2015-02-02 14:27:17
528
转载 PCB分层及堆叠
1. 概述 多层印制板为了有更好的电磁兼容性设计。使得印制板在正常工作时能满足电磁兼容和敏感度标准。正确的堆叠有助于屏蔽和抑制EMI。 2. 多层印制板设计基础。 多层印制板的电磁兼容分析可以基于克希霍夫定律和法拉第电磁感应定律。 根据克希霍夫定律,任何时域信号由源到负载的传输都必须有一个最低阻抗的路径。见图一。图中I=I′,大小相等,方向相反。图中I我们称为信号电流,I′
2015-01-27 16:30:38
1063
原创 原理图与PCB设计基础
原理图与PCB设计基础 一、 达成目标l 熟练制作元件库(元件原理图库、元件封装库、元件集成库,包括元件在不同元件库、原理图、PCB板之间的复制)、原理图、PCB板l 熟练使用各种快捷键l 熟悉各种设置二、 重点l 原理图设计:Ø 设置图纸Ø 设置原理图优先设置Ø 层次电路设计Ø 元器件自动标注Ø 编译原理图/项目Ø
2015-01-27 16:20:53
2367
原创 常见存储器分类
一、RAM(Ramdom Access Memory)存储器分类:1.SRAM 静态随机存储器(Static RAM)2.DRAM 动态随机存储器(Dynamic RAM)3.SDRAM 同步动态随机存储器(Synchronous Dynamic RAM)4.DDR SDRAM 双倍速率同步动态随机存储器(Double Data Rate SDRAM)5
2015-01-23 18:10:47
894
转载 Linux下的IO操作
Linux异步IO Linux中最常用的输入/输出(I/O)模型是同步 I/O。在这个模型中,当请求发出之后,应用程序就会阻塞,直到请求满足为止。这是很好的一种解决方案,因为调用应用程序在等待 I/O 请求完成时不需要使用任何中央处理单元(CPU)。但是在某些情况中,I/O 请求可能需要与其他进程产生交叠。可移植操作系统接口(POSIX)异步 I/O(AIO)应用程序接口(API)就提供了这
2013-01-19 19:05:43
493
原创 FPGA问答
1.modelsim怎么仿真xilinx的IP核(软核和硬核) 使用xilinx仿真库2.synplify怎么综合xilinx的IP和(软核和硬核) synplify综合xilinx的IP核(软核和硬核),将使用IP核的接口进行综合,所以不用理会它是怎么综合的,synplify全部使用.v文件进行综合。
2013-01-05 18:53:49
491
原创 modelsim教程
一、建立库 vlib work(库名)二、映射库到物理目录 vmap work(映射的逻辑名称) work(存放的物理地址)三、编译源代码 vlog ../src/MUX_4_8.vvlog ../src/MUX_4_8_tb.v四、启动仿真器 vsim -novopt(参数) work(库名).MUX_4_8
2013-01-05 18:52:51
3401
原创 DSP问答
1.SYS/BIOS串口终端上无打印消息怎么办。 a.#include stdio.h> #include #include b.设置堆的大小位0x400,printf需要超过400字节的空间,相对SYS/BIOS提供的System_Printf,速度慢100倍,需要1000个机器周期; c.
2013-01-02 23:40:45
1442
原创 USB触摸屏驱动
#include #include #include #include #include #include #include #include #define DRIVER_VERSION "v0.6"#define DRIVER_AUTHOR "Zhang Chunyang"#define DRIVER_DESC "USB Touchscreen
2012-10-02 15:51:36
6330
1
原创 DM9000网卡驱动
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #i
2012-10-02 15:50:34
1179
1
原创 nfs文件系统的应用
一. Ubuntu系统安装nfs-kernel-server#sudo apt-get install portmap nfs-kernel-server#sudo apt-get install portmap nfs-common二. Ubuntu系统建立共享文件夹#sudo mkdir /home/app#sudo chmod 777 /home/app三. 配置服务
2012-10-02 15:48:55
479
原创 有关MAC、PHY和MII
以太网(Ethernet)是一种计算机局域网组网技术,该技术基于IEEE制定的IEEE 802.3标准,它规定了包括物理层的连线、电信号和介质访问层协议的内容。以太网是当前应用最普遍的局域网技术。它很大程度上取代了其他局域网标准,如令牌环、FDDI和ARCNET。历经100M以太网在上世纪末的飞速发展后,目前千兆以太网甚至10G以太网正在国际组织和领导企业的推动下不断拓展应用范围。基于以太网的应用
2012-09-23 14:03:14
491
原创 OMAP3 Linux中的中断
内部中断定义在/arch/arm/plat-omap/include/mach/irqs.h中,如:#define INT_34XX_BENCH_MPU_EMUL 3#define INT_34XX_ST_MCBSP2_IRQ 4#define INT_34XX_ST_MCBSP3_IRQ 5#define INT_34XX_SSM_ABORT_IRQ 6#define INT
2012-09-20 21:41:03
1203
原创 LDD3读书笔记(第17章 PCI设备驱动程序)
#include 这个头文件包含PCI寄存器的符号名称,以及若干厂商和设备ID值。struct pci_dev; 代表内核中PCI设备的结构体。struct pci_driver; 代表PCI驱动程序的结构体。所有的PCI驱动程序必须定义该结构体。struct pci_device_id; 描述该驱动程序所支持的PCI设备类型的结构体。in
2012-09-14 18:30:07
3290
原创 LDD3读书笔记(第16章 USB驱动程序)
本节总结本章中介绍的符号:#include 和USB相关的所有内容所在的头文件。所有的USB设备驱动程序都必须包括该文件。struct usb_driver 描述USB驱动程序的结构体。struct usb_device_id 描述该驱动程序支持的USB设备类型的结构体。int usb_register(struct usb_driver *d);
2012-09-14 18:29:07
719
原创 LDD3读书笔记(第15章 Linux设备模型)
kobject#include 包含文件中包含了对kobject的定义,以及相关的结构和函数。void kobject_init(struct kobject *kobj);int kobject_set_name(struct kobject *kobj,const char *format,...); kobject的初始化函数。struct kobjec
2012-09-14 18:27:58
555
原创 LDD3读书笔记(第14章 tty设备驱动)
本节提供了一些本章所讲述概念的参考介绍。它还介绍了tty驱动程序所需要的各个头文件的作用。当tty_driver和tty_device结构中的每一个成员,这里就不再重复了。#include 包含tty_driver结构定义,以及在该结构中一些不同标志位的声明。#include 该头文件包含了tty_struct结构的定义以及许多不同的宏定义,使得对termios结构
2012-09-13 22:47:15
640
原创 LDD3读书笔记(第13章 网络设备驱动)
这个小节给出了本章介绍过的概念的快速参考,同时解释了驱动程序应该包含的每个头文件。但是net_device和sk_buff结构的成员不会在这里重复。#include 这个头文件保存有net_device和net_device_stats结构的定义,并包含了网络驱动程序需要的其他几个头文件。struct net_device *alloc_netdev(int sizeof_pr
2012-09-13 22:46:13
985
原创 LDD3读书笔记(第12章 块设备驱动程序)
#include int register_blkdev(unsigned int major,counst char *name);int unregister_blkdev(unsigned int major,const char *name); register_blkdev用来向内核注册一个块设备驱动程序,还可以获得主设备号。一个驱动程序可以使用unregister_b
2012-09-12 22:22:43
608
原创 LDD3读书笔记(第10章 内核数据类型)
#include typedef u8;typedef u16;typedef u32;typedef u64; 确保是8、16、32和64位的无符号整数值类型。对应的有符号类型同样存在。在用户空间,读者可以使用__u8和__u16等类型。#include PAGE_SIZEPAGE_SHIFT 定义了当前体系结构的每页字节数和页偏移位数(4KB页为
2012-09-11 21:51:18
504
原创 LDD3读书笔记(第9章 与硬件通信)
#include void barrier(void) 这个“软件”内存屏障要求编译器考虑执行到该指令时所有的内存易变性。#include void rmb(void);void read_barrier_depends(void);void wmb(void);void mb(void); 硬件内存屏障。要求CPU(和编译器)执行该指令时检查所有必需的
2012-09-11 21:50:30
969
原创 LDD3读书笔记(第8章 时间、延迟及延缓操作)
计时#include HZ HZ符号指出每秒钟产生的时钟滴答数。#include volatile unsigned long jiffiesu64 jiffies_64 jiffies_64变量会在每个时钟滴答递增,也就是说,它会在每秒递增HZ次。内核代码大部分情况下使用jiffies,在64位平台上,它和jiffies_64是一样的,而在32位平台上,j
2012-09-11 21:48:40
478
原创 LDD3读书笔记(第7章 中断处理)
顶半部中断处理#include int request_irq(unsigned int irq,irqreturn_t(*handler)(),unsigned long flags,const char *dev_name,void *dev_id);void free_irq(unsigned int irq,void *dev_id); 上面这些调用用来注册和注销中断
2012-09-11 00:24:16
637
原创 LDD3读书笔记(第6章 内存映射和DMA)
1、介绍性材料#include #include 和内存管理相关的大部分函数和结构, 原型和定义在这些头文件.void *__va(unsigned long physaddr);unsigned long __pa(void *kaddr);在内核逻辑地址和物理地址之间转换的宏定义.PAGE_SIZEPAGE_SHIFT 常量, 给出底层硬件的页的大小(字节)
2012-09-10 22:21:34
1226
原创 LDD3读书笔记(第5章 内存分配)
#include void *kmalloc(size_t size, int flags);内存分配函数后备高速缓存#include kmem_cache_t *kmem_cache_create(const char *name,size_t size,size_t offset,unsigned long flags,
2012-09-09 20:18:25
438
原创 LDD3读书笔记(第11章 高级字符驱动程序操作)
本章的目的是让读者知道:1.内核与用户空间同步2.如何使进程休眠(并唤醒)3.如何实现非阻塞I/O4.设备可读取或写入时如何通知用户空间#include 这个头文件声明了用于定义ioctl命令的所有的宏。它现在包含在中。_IOC_NRBITS_IOC_TYPEBITS_IOC_SIZEBITS_IOC_DIRBITS ioctl命令的不同位
2012-09-06 22:27:46
416
原创 LDD3读书笔记(第4章 并发与竞态)
#include //定义信号量和其上操作的包含文件. 信号量的定义和初始化(1)静态定义及初始化DECLARE_MUTEX(name);DECLARE_MUTEX_LOCKED(name); (2)动态定义及初始化struct semaphore semvoid init_MUTEX(struct semaphore *sem);void init_MUT
2012-09-06 20:48:44
351
原创 LDD3读书笔记(第3章 字符驱动)
#include dev_tdev_t 是用来在内核里代表设备号的类型.int MAJOR(dev_t dev);int MINOR(dev_t dev);从设备编号中抽取主次编号的宏.dev_t MKDEV(unsigned int major, unsigned int minor);从主次编号来建立 dev_t 数据项的宏定义.#include "文件系统"头文件
2012-09-06 20:47:02
366
原创 LDD3读书笔记(第2章 建立和运行模块)
一、内核符号表 内核符号表是linux内核提供给内核代码的一部分引用,所指的“内核代码”包括内核以及驱动程序等运行在内核内存空间的程序,“引用”包括对变量的引用,对函数的引用等。最常见的内核符号引用如printk打印输出。通常内核符号是由一部分内核代码提供给其他内核代码访问其内部数据的接口。在驱动程序中,如果该驱动程序中有被其他内核代码调用的部分,可以用EXPORT_SYMBOL导出
2012-09-06 20:34:12
511
原创 TMS320C5402的存储器、系统启动与中断、时钟(PLL)
一、TMS320C5402的存储器 TMS320C5402共有192K bytes的可寻址存储空间。这192K bytes的存储空间分成3个独立的可选择空间,分别为: (1)64K bytes的程序存储空间; (2)64K bytes的数据存储空间; (3)64K bytes的I/O空间。 TMS320C
2012-07-07 00:56:17
6921
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人