linux和android
文章平均质量分 84
荷兰风车
这个作者很懒,什么都没留下…
展开
-
STM32驱动开发(二)--USB Device RNDIS虚拟网卡(usb hound抓包完整数据流分析)
关于STM32的USB驱动文章转载 2022-07-27 17:16:35 · 3971 阅读 · 0 评论 -
C语言变量声明加冒号的用法
有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几 个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。这样就可以把几个不同的对象用一个字节的二进制位域来表示。一、位 域的定义和位域变量的说明位域定义与结构定义相仿,其形式为:struct 位域结构名{.转载 2022-02-17 14:11:04 · 818 阅读 · 0 评论 -
使用diff命令打补丁详解
对于开源源码修改过程中的必经阶段:对源码打补丁,总是不够精通,搜索了补丁的原理的详细过程,如下:在移植或版本升级过程中,手动比对(用比对工具)转换是很费力的事情,特别是发生变化的文件非常多的情况下,“制作补丁、打补丁”可以简化这个过程。主要用到diff和patch转载 2011-09-01 21:37:13 · 5794 阅读 · 0 评论 -
嵌入式系统内存管理
1、概述 操作系统的内存管理功能用于向操作系统提供一致的地址映射功能和内存页面的申请、释放操作。在嵌入式实时系统中,系统支持的虚拟内存管理机制,对于另外一些系统,可能只有flat式的简单内存管理机制。 2、内存管理机制: 大体上来说,嵌入式系统所用到的内存管理机制主要有以下两种: 虚拟内存管理机制: 有一些嵌入式处理器提供了MMU,在MMU具备内存地址映射和寻址功能,它使操作系统的内存管理更加方便转载 2011-06-08 14:41:00 · 1341 阅读 · 0 评论 -
移植linux的范例(芯片在linux中是没有的)--我们一般移植对象都是内核中已存在的处理器如2410 2440 6410等。
研究高频电路大半年,主要关注在高频电路信号完整性和电源完整性,也对各种电路仿真器深入研究了一番,通过通读几本国外这方面教材对仿真软件的建模原理和仿真对象有了深入了解,不像以前用软件只是按键操作,现在在掌握理论后再使用仿真软件仿真电路有了进一步的理解。微波以及3D全波仿真软件,MAXWELL方程还是有点读不透,电磁场理论太复杂了,以后再研究吧。 linux内核已有一原创 2011-06-08 15:38:00 · 1125 阅读 · 0 评论 -
USB驱动开发(2)
在上一节中了解了大致模型,现在了解其他方面的知识。原创 2010-07-17 15:15:00 · 1601 阅读 · 1 评论 -
USB驱动开发(3)
3原创 2010-07-19 23:02:00 · 1077 阅读 · 0 评论 -
USB驱动开发(1)
usb是嵌入式系统中很重要的数据传输工具,所以linux usb驱动的开发显得尤为重要。原创 2010-07-15 22:19:00 · 1023 阅读 · 0 评论 -
I2C驱动开发(2)
可利用/dev/i2c-0.1.2.3......在应用层完成对i2c设备的操作,但很多时候我们还是习惯为i2c设备在内核层编写驱动程序。目前内核支持两种编写i2c驱动程序的方式。两种方式为“Adapter方式(LEGACY)”和“Probe方式(new style)”。 (1) Adapter方式(LEGACY)● 构建i2c_driverstatic原创 2010-02-19 22:15:00 · 3178 阅读 · 0 评论 -
I2C驱动开发(1)
I2C驱动有两部分组成:I2C总线驱动和I2C设备构成。 I2C总线驱动是对适配器端的实现,其含有适配器数据结构struct i2c_adapter,适配器算法数据结构struct i2c_algorithm。I2C设备驱动是对设备端的实现和控制,其含有设备驱动结构i2c_driver和设备客户端结构struct i2c_client。struct i2c_adapter原创 2010-02-11 14:38:00 · 3238 阅读 · 0 评论 -
深入分析Linux内核源码
一个很好的网站,可以下载下来看看 http://oss.org.cn/kernel-book/index.htm原创 2011-08-10 13:21:10 · 1003 阅读 · 0 评论 -
君正4740 CPU linux BSP分析1
linux-2.6.24.3为例: 分析linux原包和打补丁包,分析如下。arch/mips/boot添加compressed,由dummy.c head.S ld.script Makefile misc.c构成,arch/mips/bo原创 2011-09-14 21:25:37 · 2053 阅读 · 0 评论 -
Linux下source命令详解
source命令作用在当前bash环境下读取并执行FileName中的命令。*注:该命令通常用命令“.”来替代。使用范例:source filename . filename(中间有空格)123123source命令(从 C Shell 而来)是bash shell的内置命令。点命令,就是个点符号,(从Bourne Shell而来)是source转载 2017-06-02 14:29:42 · 585 阅读 · 0 评论 -
Ubuntu 下安装Source Insight
安装Source Insight之前需要先安装Wine,然后用Wine去安装Source Insight。1. 安装Wine在终端输入以下命令:sudo apt-get install wine安装完成之后会在你的用户主目录下生成一个隐藏的.wine目录,内容如下图:drive_c 即相当于Windows系统中的C盘:转载 2017-06-05 10:33:16 · 529 阅读 · 0 评论 -
一张图让你读懂Linux内核运行原理
转载 2016-03-11 17:16:01 · 1443 阅读 · 0 评论 -
linux常用命令
系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性 hdparm -tT /dev/sda 在磁盘上执行测试性读取操作 cat /proc/cpui转载 2015-02-03 13:23:53 · 468 阅读 · 0 评论 -
repo 命令的用法
下载 repo 的地址: http://android.git.kernel.org/repo ,可以用 wgethttp://android.git.kernel.org/repo 或者 curl http://android.git.kernel.org/repo >~/bin/repo 来下载 repo , chmod a+x ~/bin/repo 用repo sync 在抓去 a转载 2015-01-27 13:26:33 · 742 阅读 · 0 评论 -
sync 命令的用法
sync synchronization,同步,使内存中的数据与磁盘中的数据相同,Linux/Unix系统命令。 功能:将内存缓冲区中的数据写入磁盘 语法:sync [--help] [ --version ] 用法说明:在Linux/Unix系统中,在文件或数据处理过程中一般先放到内存缓冲区中,等到适当的时候再写入磁盘,以转载 2015-01-27 13:20:32 · 3416 阅读 · 0 评论 -
android应用开机自动运行程序
景知识:当Android启动时,会发出一个系统广播,内容为ACTION_BOOT_COMPLETED,它的字符串常量表示为 android.intent.action.BOOT_COMPLETED。只要在程序中“捕捉”到这个消息,再启动之即可。记住,Android框架说:Don't call me, I'll call you back。我们要做的是做好接收这个消息的准备,而实现的手段就是实现一个转载 2014-07-31 14:30:36 · 738 阅读 · 0 评论 -
君正4740 CPU linux BSP分析2
linux修改的地方有如下所示。Linux-2.6.24内核源代码的目录结构如下:• arch/mips/:MIPS 体系相关目录和文件o kernel/:MIPS 内核相关文件o mm/:MIPS 内存管理相关文件o lib/:MIP原创 2011-09-22 21:09:33 · 1521 阅读 · 0 评论 -
块设备驱动(3)
在操作系统中块是文件系统最小寻址单位,而扇区是最小物理单位。 块设备由于其操作IO速度很慢,故而为了加快其操作速度需要将一个基本块读取到内存中将其缓存起来;当需要读取块设备某一扇区时先查找该扇区是否被缓存,若被缓存则直接读取缓存,反之则读取扇区。这样进过缓存后可以大大加快IO操作速度。 一个块不能超过页大小,但可包含一个或多个扇区,所以一个页可以包含多个块。每个块缓冲区由缓冲区头和相应的缓冲页面来原创 2010-02-01 03:15:00 · 1033 阅读 · 0 评论 -
硬件平台初始化笔记
对一个不知名的芯片如何移植呢?应选择同一内核的芯片来使用,仿造该芯片生成arch/arm/mach-xxx包和include/asm-arm/arch-xxx包,之后才根据具体芯片的配置来修改相应的文件和Makefile以及Kconfig.在移植过程中需要了解bootloader将控制权移交给内核时,与硬件平台相关的内核是如何处理的。 uboot将cpu标志号和启动参数传给arch/arm/k原创 2010-02-01 03:08:00 · 953 阅读 · 0 评论 -
2410触摸屏驱动
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef CONFIG_PM#include #endif/* debug m原创 2010-02-01 02:36:00 · 1252 阅读 · 1 评论 -
信号和AIO
异步阻塞IO:阻塞通知非阻塞io,即io操作发出后不阻塞IO操作,将通知阻塞,直到采用select查询后才获得操作结果; 异步非阻塞IO:即io操作发出后不阻塞IO操作也不阻塞通知,当操作完成后内核通过信号或回调方式主动通知调用进程,而不需要等待调用者主动进行查询。 在异步IO操作中,当IO资源可用时驱动释放相应的信号给调用进程;当调用者捕获到信号后执行相关的信号处理函数;对于应用程序需通原创 2010-02-01 02:51:00 · 1073 阅读 · 0 评论 -
2410 DMA初始化代码导读笔记(2)
#include #ifdef CONFIG_S3C2410_DMA_DEBUG#define DEBUG#endif#include #include #include #include #include #include #include #include #include #include #include #include #include #include #includ原创 2010-02-01 02:44:00 · 1833 阅读 · 0 评论 -
2410 DMA初始化代码导读笔记(1)
鉴于DMA的重要性花了2天时间读了一下初始化代码,做一下相关笔记。首先有一些重要的数据结构如下:typedef enum {S3C2410_DMA_IDLE, //器件空闲S3C2410_DMA_RUNNING,//器件运行S3C2410_DMA_PAUSED //器件暂停} s3c2410_dma_state_t;//描述DMA器件状态typedef enum {S3C2410_DM原创 2010-02-01 02:43:00 · 1625 阅读 · 0 评论 -
一个很好用的软件
H-JTAG可以调试和烧写flash,速度比三星的sjf2410快的多。www.hjtag.com原创 2010-02-01 02:39:00 · 924 阅读 · 0 评论 -
2410实时时钟驱动
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include /* need this for the RTC_AF definitions */#include //原创 2010-02-01 02:31:00 · 1277 阅读 · 0 评论 -
平台设备使用介绍
设备驱动中,平台设备作为一个虚拟的设备和总线可以大大简化设计难度。 其由两部分构成 platform_device和 platform_driver。其设计顺序为定义 platform_device -> 注册 platform_device-> 定义 platform_driver-> 注册 platform_driver 。platform_device 来描述该结构一个重要的原创 2010-02-01 02:59:00 · 3720 阅读 · 2 评论 -
等待队列
在阻塞IO操作中,用于实现阻塞进程的唤醒和阻塞,其常常与进程的调度函数混合使用。当将当前进程加入等待队列链表后通常使用__set_current_state(TASK_INTERRUPTIBLE)和schedule()将进程睡眠,资源可使用后,释放资源的进程通过wake_up_interruptible唤醒需要资源的已睡眠进程,再将该进程的等待队列删除。struct __wait_queue原创 2010-02-01 02:50:00 · 642 阅读 · 0 评论 -
信号量和自旋锁的选择
自旋锁是专为防止多处理器并发而引入的一种锁,它在内核中大量应用于中断处理等部分;自旋锁最多只能被一个内核任务持有;在单处理器上,自旋锁仅仅当作一个设置内核抢占的开关,内核不能被抢占。 信号量是一种睡眠锁。如果有一个任务试图获得一个已被持有的信号量时,信号量会将其推入等待队列,然后让其睡眠;当持有信号量的进程将信号量释放后,在等待队列中的一个任务将被唤醒,从而便可以获得这个信号量;信号量不同于自原创 2010-02-01 02:49:00 · 984 阅读 · 0 评论 -
中断和定时器
为了提高吞吐量势必要求中断程序尽可能短小,所以将中断处理程序分解为两个部分:top half和bottom half.顶半部只需完成底半部的调度即可,底半部则完成中断函数大部分。 Tasklet ,工作队列,软中断为底半部调度机制。他们的使用方式都是如下: 先定义Tasklet 工作队列 软中断和相关的处理函数,再初始化相关结构体,最后在顶半部开启调度函数即可。原创 2010-02-01 02:53:00 · 1005 阅读 · 0 评论 -
移植笔记
附加uboot移植笔记 硬件平台:优龙 FS2410 开发板 Bootloader: uboot.1.1.6 Os 内核: linux-2.6.14.1 根文件系统格式:cramfs 编译情况:在编译 u-boot 和 linux 内核时出现一些情况。 在使用 cross-3.3.2 交叉编译环境编译 uboot 时没有出现任何问题,在编译 linux 内核时出现 arm-原创 2010-02-01 03:03:00 · 1002 阅读 · 0 评论 -
linux/compile.h头文件说明
#ifndef __ASSEMBLY__ #ifdef __CHECKER__ //如果使用Sparse对代码进行检查,那么内核代码就会定义__CHECKER__宏,否则就不定义。 # define __user __attribute__((noderef, address_space(1))) //是用来修饰一个变量的,这个变量必须是非解除参考(no dereference)的,即原创 2010-02-01 03:05:00 · 978 阅读 · 0 评论 -
2410看门狗驱动程序
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #undef S3C24XX_VA_WATCHDOG#define S3C24XX_VA_WATCHDOG (0)#include原创 2010-02-01 02:21:00 · 2144 阅读 · 1 评论 -
网络设备驱动(3)
本人电路板使用的网卡为CS8900,鉴于其datasheet过于庞大没有做深究只是了解了一下其IO模式。其驱动程序如下#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include原创 2010-02-01 03:38:00 · 1080 阅读 · 0 评论 -
网卡驱动(2)
本人阅读的DM9000驱动程序是2.6.32.1内核的,较以前的内核驱动程序发生了较大的差别。用于定时检测连接状态的定时器被定时工作队列替代,net_device结构体中的操作函数以前需要分别赋值而现在全归列到struct net_device_ops结构体中,并且在驱动中增加了支持使用ethool工具内核调用函数来支持ethool工具。struct delayed_work { st原创 2010-02-01 03:34:00 · 2149 阅读 · 0 评论 -
网卡驱动(1)
在嵌入式系统中网络有着很重要的作用,那么网卡的驱动也是很重要。 有的ARM嵌入MAC控制器可以直接使用PHY网卡(如S3C4510),有的ARM没有嵌入MAC控制器则需要使用MAC的网卡(如S3C2410).常用的PHY网卡有DM9161.IP101等。常用的带MAC控制器网卡有DM9000系列.CS8900等。对嵌入式系统资源有限而言DM9000使用A系列较好,因为A系列虽没片外拓展MII原创 2010-02-01 03:32:00 · 1978 阅读 · 0 评论 -
ramdisk
一 什么是RamDiskRam:内存,Disk:磁盘,在Linux中可以将一部分内存当作分区来使用,称之为RamDisk。对于一些经常被访问、并且不会被更改的文件,可以将它们通过RamDisk放在内存中,能够明显地提高系统性能。RamDisk工作于虚拟文件系统(VFS)层,不能格式化,但可以创建多个RamDisk。虽然现在硬盘价钱越来越便宜,但对于一些我们想让其访问速度很高的情况下,RamDisk原创 2010-02-01 03:19:00 · 1862 阅读 · 0 评论 -
块设备驱动(2)
结构gendisk是通用硬盘的描述,其结构体如下:struct gendisk { int major;//主设备号 int first_minor;//第一个词设备号 int minors; //描述被磁盘使用的设备号的成员. 至少, 一个驱动器必须使用最少一个次编号. 如果你的驱动会是可分//区的, 但是(并且大部分应当是), 你要分配一个次编号给每个可能的分区. 次编号的原创 2010-02-01 03:13:00 · 1302 阅读 · 0 评论