linux
文章平均质量分 90
平凡的人
不经历风雨 怎么见彩虹
展开
-
ubuntu20.04安装repo
ubuntu20.04系统使用repo原创 2022-08-15 17:25:34 · 14665 阅读 · 0 评论 -
持续集成(CI)系统
持续集成(CI)系统gitlab、gerrit、jenkins三大系统整体框架开发本地从gerrit下载代码进行开发后将代码git push review到Gerrit系统上, Jenkins 在监听 Gerrit 上的项目事件会触发构建任务来测试代码,Jenkins把测试结果通过 ssh gerrit 给这个项目打上 Ve...原创 2020-03-31 14:39:13 · 3645 阅读 · 2 评论 -
ramdisk,ramfs和tmpfs
1, ramfs不是ramdisk ramdisk是在一块内存区域中创建的块设备,用于存放文件系统。ramdisk的容量是固定的,不能象ramfs一样动态增长。ramdisk需要内核的文件系统驱动程序(如ext2)来操作其上的数据,而ramfs则是内核的天然特性,无需额外的驱动程序。ramdisk也象其他文件系统设备一样,需要在块设备和内存中的磁盘高速缓存之间复制数据,而这种数据复制实际不原创 2011-12-08 14:01:40 · 1291 阅读 · 0 评论 -
linux HID 问题
linux驱动中HID设备的驱动不支持read,write系统调用,而要使用ioctl,但ioctl将数据写下去后不能马上回读,要有大于400毫秒的延迟,否则读出来的数据是不正确的。所以发现ioctl通信的效率是很低的,不知道有什么方法可以解决。 Linux 2.6内核中包含了HID驱动,能够自动把USB Key等HID外设识别成“/dev/hiddev0”之类的设备。但是该驱转载 2012-02-09 09:54:37 · 2239 阅读 · 0 评论 -
SLC和MLC闪存芯片的区别
许多人对闪存的SLC和MLC区分不清。就拿目前热销的MP3随身听来说,是买SLC还是MLC闪存芯片的呢?在这里先告诉大家,如果你对容量要求不高,但是对机器质量、数据的安全性、机器寿命等方面要求较高,那么SLC闪存芯片的首选。但是大容量的SLC闪存芯片成本要比MLC闪存芯片高很多,所以目前2G以上的大容量,低价格的MP3多是采用MLC闪存芯片。大容量、低价格的MLC闪存自然是受大家的青睐,但是其固有转载 2012-02-09 15:24:58 · 881 阅读 · 0 评论 -
LINUX USB 系统(1)
1、 简述: USB 出自豪门,一问世便有 IBM,Microsoft,compaq 等前呼后拥,不红实在是没有道理,以致于连三岁小毛孩都知道买游戏手柄要买 USB 的。USB 名气这么大,但 USB 是什么呢?要是想找份写驱动的活谋生,常会被问到这样的要求: “ 给我讲讲 USB 。 ” 无论你是谁,遇到这样的问题一定要扭头就跑,不然一定被雷死。 USB 使用方便,硬件设转载 2012-02-24 16:09:49 · 576 阅读 · 0 评论 -
《Linux设备驱动程序》学习2—高级字符设备驱动ioctl
天进入《Linux设备驱动程序》第六章高级字符设备驱动程序操作的学习,学习的过程和简单字符设备驱动程序的学习是一样的,看书,看程序,然后就是看Tek的博客笔记。依然tek的博客中对于这一部分的知识点概括的很详细了,所以我依旧谈谈对这一部分自己的理解体会。 总的来说这一块虽然叫做高级字符设备驱动程序操作,涉及的知识点特别是函数比简单字符设备驱动少多了,但是仅仅是考虑这一点的话那就错了。前面转载 2012-03-02 16:51:57 · 1126 阅读 · 0 评论 -
工作笔记(二)
openfirmware>kernel是放在offset为0的地方,而uboot放在了最上面,这跟一直了解的地方很是不同; 这与PPC的启动向量位置有关系了,MIPS放在0xBFC00000。具体什么位置要看你的CPU型号,比如E500,启动向量就在0xFFFFFFFC,所以u-boot就放在最顶端了。>>不知道内核中是如何使用这种dts文件的 需要用dtc将dts编译成dtb原创 2012-06-04 17:45:51 · 997 阅读 · 0 评论 -
堆栈的作用
在计算机领域,堆栈是一个不容忽视的概念,但是很多人甚至是计算机专业的人也没有明确堆栈其实是两种数据结构。 堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。 要点: 堆:顺序随意 栈:后进先出(Last-In/First-Out)编辑本段堆和栈的区别 一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的转载 2012-06-11 14:03:55 · 3026 阅读 · 0 评论 -
高内聚 低耦合
我们一直追求着,高内聚,低耦合。对于低耦合,我粗浅的理解是:一个完整的系统,模块与模块之间,尽可能的使其独立存在。也就是说,让每个模块,尽可能的独立完成某个特定的子功能。模块与模块之间的接口,尽量的少而简单。如果某两个模块间的关系比较复杂的话,最好首先考虑进一步的模块划分。这样有利于修改和组合。对于高内聚,我粗浅的理解是:在一个模块内转载 2012-06-11 16:11:19 · 2259 阅读 · 1 评论 -
imx53 QSB添加模拟I2C
修改在文件/arch/arm/freescale/mach-mx5/mx53_loco.c A,在此文件中添加头文件 #include B,根据自己的板,选择没有使用的GPIO口: #define GPIO_I2C4_SDA_3_28 (2*32+28) #define GPIO_I2C4_SCL_3_21 (2*32+21)原创 2012-07-25 09:55:23 · 1853 阅读 · 0 评论 -
工作笔记(一)
在工作中做的一些笔记,没有整理,原来是什么样,发上来的也就是什么样,原汁原味是现代人的一种时尚。:)------------------------------------------------------------------ 可以去除补丁,恢复旧版本patch -RE -p0 左移X位就是乘以2的X次方,右移X位就是除以2的X次方的整数部分。15右移两位就是15/(原创 2012-06-01 16:53:31 · 2393 阅读 · 0 评论 -
SVR4标准
SVR4 串讲 -1、什么是SVR4,我们为什么要选择SVR4SVR4是UNIX操作系统的一种新的内核标准,是迄今为止内核版本最新的UNIXSVR4并不代表一个具体的UNIX变体,而只是一个内核的标准。SVR4有极高的标准性,那意味着你学好了SVR4可以在所有SVR4内核的操作系统上进行统一的操作(不会产生学习了一个UNIX系统还要学习另外的困惑)SVR4(UNIX S转载 2012-10-29 09:03:14 · 769 阅读 · 0 评论 -
工作笔记(三)
/usr/share/xsessions===============================/etc/init.d/networking restartttyPSC1 /workdir/4mod-fr-X1-9.04-rootfs/etc/event.d/exec /sbin/getty 115200 ttyPSC011,删除文件中的块 dd of=xxxx原创 2012-06-05 16:28:13 · 1670 阅读 · 0 评论 -
Pthreads并行编程之spin lock与mutex性能对比分析
POSIX threads(简称Pthreads)是在多核平台上进行并行编程的一套常用的API。线程同步(Thread Synchronization)是并行编程中非常重要的通讯手段,其中最典型的应用就是用Pthreads提供的锁机制(lock)来对多个线程之间共 享的临界区(Critical Section)进行保护(另一种常用的同步机制是barrier)。Pthreads提供了多种锁机制:转载 2013-07-23 18:00:39 · 1032 阅读 · 0 评论 -
I2C上拉电阻
I2C的上拉电阻可以是1.5K,2.2K,4.7K, 电阻的大小对时序有一定影响,对信号的上升时间和下降时间也有影响,一般接1.5K或2.2K I2C上拉电阻确定有一个计算公式:Rmin={Vdd(min)-o.4V}/3mARmax=(T/0.874) *c, T=1us 100KHz, T=0.3us 400KHzC是Bus capacitanceRp最大值由总线最转载 2011-12-07 14:59:03 · 968 阅读 · 0 评论 -
I/O控制方式
1,程序I/O控制方式:适用于结构简单,只需少量硬件的电路;2,中断驱动I/O控制方式:适用于高效场合;3,直接存储访问DMA I/O控制方式:适用于无须CPU介入的控制器来控制内存与外设之间的数据交流的场合;4,I/O通道控制方式:适用于以字节为单位的干预,同时实现CPU,通道和I/O设备三者并行操作的场合。原创 2011-10-21 09:59:42 · 1022 阅读 · 0 评论 -
HID 设备开发
市面上一些无驱的usbkey 一直是技术卖点,象招商银行的usbkey 就一直以无需安装驱动自豪。无驱动的usbkey确是比较方便,尤其在使用别人的计算机的时候。刚好最近在研究一款HID 设备,在这方面做了一些探索。首先工具一定要利索,最好能武装到牙齿,下面的三个工具最好都有,否则就回到了石器时代bus houndusb device viewerhid descriptor转载 2011-09-07 18:22:40 · 2667 阅读 · 1 评论 -
BSP和PC机主板上的BIOS区别
BSP和PC机主板上的BIOS区别很大,BIOS主要是负责在电脑开启时检测、初始化系统设备(设置栈指针,中断分配,内存初始化..)、装入操作系统并调度操作系统向硬件发出的指令,它的Firmware代码是在芯片生产过程中固化的,一般来说用户是无法修改。其实是为下载运行操作系统做准备转载 2011-08-09 13:41:13 · 1273 阅读 · 0 评论 -
编译VLC
============== 重编译vlc ============== apt-get -f install gcc apt-get -f install g++ apt-get -f install ffmpeg libavcodec-dev原创 2011-08-09 16:13:52 · 662 阅读 · 0 评论 -
linux下截取gdm登录界面的方法
(1) ssh [email=username@ip]username@ip[/email] 登录到后台。 (2) export DISPLAY=:0 (3) dd if=/dev/fb0 of=login.pic(随便取名)[将fb0中的内容放入到文件中原创 2011-08-09 16:20:34 · 1215 阅读 · 0 评论 -
常用的APT命令参数
常用的APT命令参数 apt-cache search package 搜索包 apt-cache show package 获取包的相关信息,如说明、大小、版本等 sudo apt-get install package 安装包 sudo apt-get原创 2011-08-09 16:18:37 · 832 阅读 · 0 评论 -
linux-bus,device,driver,class
总线总线是处理器和一个或多个设备之间的通道,在设备模型中, 所有的设备都通过总线相连, 甚至是内部的虚拟"platform"总线。总线可以相互插入。设备模型展示了总线和它们所控制的设备之间的实际连接。在 Linux 设备模型中, 总线由 bus_type 结构表示, 定义转载 2011-08-11 14:32:26 · 1180 阅读 · 0 评论 -
胡言乱语话USB
首先,要明白两个观点。第一,USB总线上所有的事务(数据流传输)都是由USB Host主动发起,而USB设备永远永远都是只是被动地接收然后处理USB Host发来的各种各样的命令(要求)。第二,中断是USB Host和USB设备之间的信令员,USB Host所有的要求都是通过这个转载 2011-09-23 11:04:15 · 727 阅读 · 0 评论 -
select, poll和epoll的区别
select()系统调用提供一个机制来实现同步多元I/O:#include #include #include int select (int n,fd_set *readfds,fd_set *writefds,fd_set *exceptf转载 2011-09-28 09:04:16 · 850 阅读 · 0 评论 -
kmalloc详解
在设备驱动程序中动态开辟内存,不是用malloc,而是kmalloc,或者用get_free_pages直接申请页。释放内存用的是kfree,或free_pages. 对于提供了MMU(存储管理器,辅助操作系统进行内存管理,提供虚实地址转换等硬件支持)的处理器而言,Linux提供了复杂的存储管理系统,使得进程所能访问的内存达到4GB。 进程的4GB内存空间被人为的分为两个部分--转载 2011-08-11 15:23:21 · 2080 阅读 · 2 评论 -
SPI设备驱动简单测试例子
内容如下: /*test spi device driveradd by zjh 2011-08-10*/#include #include #include #include #include #include #include #include #define TEST_REG 0x08static int read_reg(stru原创 2011-08-10 16:37:24 · 2910 阅读 · 0 评论 -
kmalloc vmalloc kzalloc malloc 和 get_free_page()
kmalloc vmalloc kzalloc get_free_page()是内核空间申请内存空间函数malloc是用户空间申请内存函数 一 ,kmalloc() 与 kfree() 和get_free_page的区别1,用于申请较小的、连续的物理内存:使用的是内存分配器slab一小片。申请的内存位于物理内存的映射区域。其正真的物理地址只相差一个固定的偏移。 可以用这两原创 2011-08-15 21:55:35 · 2350 阅读 · 0 评论 -
likely/unlikely剖析
这两个宏对程序运行结果没有影响,只是用于提高程序效率。其实现和gcc编译器密切相关。具体点说,就是如果你觉得程序运行时候一般param = 0的可能性比较大,那么就加上likely的macro;反之则加unlikely。首先要明确: if(likely(value)) 等价于 if(value) if(unlikely(value)) 也转载 2011-08-11 16:43:11 · 927 阅读 · 0 评论 -
HID ioctl 命令详解 .
ioctl(): This is the control interface. There are a number of controls:HIDIOCGVERSIONint (read)Gets the version code out of the hiddev driver.HIDIOCAPPLICATION(none)This ioctl ca转载 2011-09-08 10:02:00 · 1821 阅读 · 0 评论 -
USB命令(请求)和USB描述符
一、USB命令 在USB规范里,对命令一词提供的单词为“Request”,但这里为了更好的理解主机与设备之间的主从关系,将它定义成“命令”。 所有的USB设备都要求对主机发给自己的控制命令作出响应,USB规范定义了11个标准命令,它们分别是:Clear_Feature、Get_Configuration、Get_Descriptor、Get_Interface、Get_Status、S转载 2011-09-06 17:13:44 · 908 阅读 · 0 评论 -
编译Wifi驱动ar6102
编译Wifi驱动ar6102 环境变量设置 修改文件:localmake.linux.inc 添加以下内容: export ATH_EEPROM_FILE_USED:=yes export ATH_SOFTMAC_USED:=yes export ATH_ANDROID_ENV:=yes export ATH_BUILD_TYPE=c原创 2011-08-10 17:10:24 · 2642 阅读 · 4 评论 -
开源协议如BSD, GPL, LGPL,MIT
开源协议如BSD, GPL, LGPL,MIT 我们在常见的开源协议如BSD, GPL, LGPL,MIT等都是OSI批准的协议。如果要开源自己的代码,最好也是选择这些被批准的开源协议。这里我们来看四种最常用的开源协议及它们的适用范围,供那些准备开源或者使用开源产品的转载 2011-08-05 15:24:13 · 727 阅读 · 0 评论