- 博客(32)
- 资源 (3)
- 收藏
- 关注
原创 常用硬件总线对比和描述
名称硬件连线数量同步Or异步有无时钟线是否有起始位停止位最大传输位速率bit/s最大传输距离m是否支持多主点对点or点对多I2C2SCLSDA同步有有100k400k3.4M7
2022-02-10 10:26:46
590
转载 linux内存分配方法
linux内存分配方法 基于linux 驱动开发以及应用开发. 当想要分配内存的时候,要面对很多的内存分配函数: malloc kmalloc vmalloc alloc_page dma_alloc ... 简单归纳如下:malloc: 分配用户空间内存 .不保证物理连续.linux中用户空间和内核空间不能直接互相访问内存,要通过copy_from_us
2013-04-29 16:59:51
937
转载 命令行下调速wifi命令
因为用默认的shell不好,所以就用busybox的sh来代替,后来发现adb install无法安装程序。到了bin目录看了一下,发现几个好用的脚本。1。svc命令。这个脚本在/system/bin目录下,这个命令可以用来控制电源管理,wifi开关,数据开关(就是上网流量)2.svc power stayon [true|false|usb|ac] 这个是控制usb插入的时候屏幕
2012-09-12 14:34:06
1974
转载 Android Fastboot
Android Fastboot1.Fastboot简介Fastboot是Android快速升级的一种方法,Fastboot的协议fastboot_protocol.txt在源码目录./bootable/bootloader/legacy下可以找到。Fastboot客户端是作为Android系统编译的一部分,编译后位于./out/host/linux-x86/bin/fastboot目
2012-07-06 09:51:38
2605
转载 initrd and initramfs
InitrdFrom Texas Instruments Embedded ProcessorsWikiJump to: navigation,searchInitrdAfter kernel booted, it tries to mount a filesystem. Using Linux on DaVinci, there are several options w
2012-03-28 15:26:01
730
转载 C语言中如何使用宏 包括单双井号 可变参数
C(和C++)中的宏(Macro)属于编译器预处理的范畴,属于编译期概念(而非运行期概念)。下面对常遇到的宏的使用问题做了简单总结。关于#和##在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号。比如下面代码中的宏:#define WARN_IF(EXP) / do{ if
2012-03-15 11:32:58
1302
原创 u-boot如何向内核传递Flash的分区信息
1.如何对nand 分区。修改mtdparts环境变量就可以了么?对于目前的U-boot而言,是的.而且, 设置了mtdparts变量之后,你可以在nand read/write/erase命令中直接使用分区的名字而不必指定分区的偏移位置.set bootargs noinitrd console=ttySAC0 root=/dev/mtdblock3 rootfstype=jffs2
2012-02-24 16:40:53
1502
转载 分析uboot是如何启动内核的
1.uboot启动内核的代码缩减如下:s = getenv ("bootcmd");debug ("### main_loop: bootcmd=\"%s\"\n", s ? s : "");if (bootdelay >= 0 && s && !abortboot (bootdelay)){ run_command (s, 0);}2.假设bootc
2012-01-30 11:42:14
813
转载 S3c2410 LINUX下如何访问IO端口
ARM体系结构中访问IO需使用驱动模块,可在模块初始化中使用 request_mem_region()函数申请IO内存,然后通过ioremap()函数对获得的IO内存进行重映射.如控制s3c2410的LED显示,使用GPF口,可用如下代码段进行访问#define GPF 0x56000000...static void * GPF_BASE; //一定要定义成void *型
2012-01-29 17:31:44
518
转载 数组指针和指针数组的区别
数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。如要将二维数组赋给一指针,应这样赋值:int a[3][4];int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。 p=a;
2012-01-10 15:16:26
437
转载 dup,dup2函数
这两个函数的功能是输出的重定向 定义这两个函数的头文件是unistd.h,有兴趣的可以自己看看这个头文件包含的内容 要提的是这个头文件同时定义了下面三个常量STDERR_FILENO = 2 标准错误输出STDIN_FILENO = 0 标准输入STDOUT_FILENO = 1 标准输出 兄弟们学习网络编程用0,1,2
2012-01-06 14:33:41
446
转载 linux下的音频设备文件编程
1. Linux下的音频设备文件/dev/console:与扬声器相关的设备文件。 /dev/dsp:与声卡设备上的DSP相关的设备文件,提供了数字采样和数字录音的功能。声卡设备通过DSP实现模拟信号和数字信号的转换。向该设备写入数据将激活声卡上的数模转换器播放声音。而从该设备上读取数据,则会激活声卡上的模数转换进行录音操作。 /dev/audio:与/dev/dsp类似。使用
2011-12-31 14:56:34
2584
转载 Kconfig文档与Makefile的作用
linux允许设备驱动在编译时候静态的连接在内核中,一如传统的驱动程序;也允许动态地在运行时安装,被称为模块;还允许在运行状态下当需要某模块时候,有系统自动安装。故而做驱动移植时候,有两种方式:一种是直接加到kernel 中编译,另一种是以模块的形式挂接。如果把驱动编译到内核,会涉及到Kconfig 和Makefile 两文件的修改。2.6内核的源码树目录下一般都会有两
2011-12-22 11:38:16
713
转载 我为何而生——伯兰特·罗素自传前言
The Prologue to Bertrand Russell's AutobiographyWhat I Have Lived ForThree passions, simple but overwhelmingly strong, have governed my life: the longing for love, the search for knowledge, and un
2011-12-11 20:55:59
1422
原创 痛苦造就性格(也许还造就产品)
"Time always softens the pain and makes things look like more fun than they really were.时间总是淡化痛苦,让一切变得比实际情况更轻松。But who said everything has to be fun?但是谁说生活一定是轻松的?Pain builds character. (Someti
2011-12-11 20:54:04
578
转载 嵌入式系统程序可移植性设计及性能优化之三 ――――函数设计
嵌入式系统程序可移植性设计及性能优化之三――――函数设计 转自:http://blog.youkuaiyun.com/sailor_8318/archive/2008/07/20/2679385.aspx 【摘要】本章介绍了函数设计的一些基本规则。合理对各种参数进行封装,不但有利于模块的交互,更能够减少参数提高函数调用性能。其次介绍了模块划分的原则,如何减少模块间的耦合度。接着分
2011-12-06 16:29:22
723
转载 嵌入式系统程序可移植性设计及性能优化之二 --数据结构设计
嵌入式系统程序可移植性设计及性能优化之二--数据结构设计 转自:http://blog.youkuaiyun.com/sailor_8318/archive/2008/07/17/2663633.aspx 【摘要】本章介绍了结构体中成员的对齐规则,及在此规则上如何调整成员顺序或填充部分字段保证其所占内存大小不会因为编译器的不同导致差异。然后介绍了如何利用位域设计网络通信协议及
2011-12-06 16:27:20
1113
转载 嵌入式系统程序可移植性设计及性能优化之一――宏定义设计
嵌入式系统程序可移植性设计及性能优化之一――――宏定义设计 转自:http://blog.youkuaiyun.com/sailor_8318/archive/2008/07/16/2663254.aspx 【摘要】本节介绍了嵌入式系统程序设计中采用宏定义进行常量定义的必要性。说明了宏常量定义的基本规则以及如何采用依赖关系定义宏常量来保证其可移植性和裁减性。最后介绍了如何利用
2011-12-06 16:20:07
698
原创 linux下的智能压缩/解压bash脚本
今天无聊,于是把之前写的一个具有解压文件功能的bash脚本修改了一下,并加入了压缩功能,支持多种压缩文件格式:.gz 、.bz2、 .xz、 .lzma 、.tar 和 .gzip,而且都经过测试。脚本内容如下,我把它命名为samrtzip.sh: 以下是我测试的结果(压缩一个hello文件夹)bash-4.1$ ./smartzip.sh helloyou
2011-12-02 18:00:00
1632
3
转载 Linux设备驱动子系统- I2C
本文转自:http://blog.youkuaiyun.com/qianjin0703/article/details/58948691. Overview2. Data Structure3. Adapter4. I2C-core5. Slave Device 1. Overview 1.1 Definition I2C Inter-
2011-12-01 09:19:18
827
原创 uboot下的nand flash驱动分析
Nand flash芯片工作原理:------------------------------------ Nand flash芯片型号为Samsung K9F2G08U0A,数据存储容量为256MB,总线宽度为8bit,页大小为2048字节,需要5个寻址命令,采用块页式存储管理。8个I/O引脚充当数据、地址、命令的复用端口。 芯片内部存储布局及存储操作特点:
2011-11-29 14:17:14
6761
转载 中小公司小团队的项目管理
转自:http://blog.youkuaiyun.com/coolbacon/article/details/6326017中国的中小型公司,一般因为创业者关注到某个市场特殊的需求,几个人拉着风投就干起来了。大都在盈利模式或市场上有过人之处。公司的老板将大部分注意力放在盈利模式和市场的维持与拓展上,关注内部的管理相对较少。道理也显而易见:盈利模式或市场是“开源”,而内部管理其实是“节流”。比如说,一个互
2011-11-28 17:27:12
2739
原创 uboot下用do_run()函数来执行U_BOOT_CMD定义的命令
今天研究了一下uboot中怎么用do_run()函数来执行定义好的一些命令,发现其实也挺简单的,关键是得把do_run函数的几个参数吃透,这几个参数都是由uboot commmod 的cmd_tbl_s结构体决定的,U_BOOT_CMD的宏定义也取决于它,如下:#define U_BOOT_CMD(name,maxargs,rep,cmd,usage,help) \cmd_tbl_t __
2011-11-24 11:02:06
6883
原创 printk的日志级别和控制台级别
printk根据日志级别(loglevel)对消息进行分类。日志级别用宏定义,日志级别宏展开为一个字符串,在编译时由预处理器将它和消息文本拼接成一个字符串,因此printk 函数中日志级别宏和格式字符串间不能有逗号。下面是两个printk的例子,一个用于打印调试信息,另一个用于打印临界条件信息。printk(KERN_DEBUG "Here I am: %s:%i/n", _ _FIL
2011-11-22 11:04:35
802
转载 eclipse下如何配置arm-linux-gcc编译器
常规方法:1.设置arm-linux-gcc下载arm-linux-gcc 3.4.1,解压之,会得到文件夹/usr/local/arm ,将arm拷到系统的/usr/local中,之后输入命令,gedit /etc/profile ,在最后一行加入export PATH=$PATH:/usr/local/arm/3.4.1/bin,目的是将arm-linux-gc
2011-11-18 17:37:20
6393
原创 Linux 2.6下的platform_driver和platform_device(结合G870加密磁头驱动分析)
首先介绍一下注册一个驱动的步骤:1、定义一个platform_driver结构2、初始化这个结构,指定其probe、remove等函数,并初始化其中的driver变量3、实现其probe、remove等函数看platform_driver结构,定义于include/linux/platform_device.h文件中:struct platform_driver {
2011-11-17 17:26:53
900
原创 Linux字符设备驱动入门(二)——加入ioctl功能
平台:VMware 7.0 + Linux ubuntu 3.0.0-12-generic编译器:gcc参考资料:LDD 3功能:实现ioctl功能 在Linux字符设备驱动入门(一)中,我们实现了字符设备的简单读写字符功能,接下来我们要在这个基础上加入ioctl功能。首先,我们先来看看3.0内核下../include/linux/fs.h中file_oper
2011-11-17 16:37:20
8066
转载 Linux Platform Device and Driver
从Linux 2.6起引入了一套新的驱动管理和注册机制:Platform_device和Platform_driver。 Linux中大部分的设备驱动,都可以使用这套机制, 设备用Platform_device表示,驱动用Platform_driver进行注册。 Linux platform driver机制和传统的device driver 机制(通过driver_r
2011-11-17 15:39:35
672
原创 uboot下的DRAM的初始化
在G870中,C版的SDRAM为128MB(DDR2),E版的SDRAM为64MB(MDDR),它们在系统存储空间的基地址都为0x8000_0000,具体见iMAX25RM的数据手册: 在uboot中,我们必须设置好这些参数,主要是基地址和SDRAM的大小等。这里主要采用到了uboot的一个全局的结构体变量: bd_t : board info数据结构定义,位于文件
2011-11-17 11:42:30
4401
原创 Linux字符设备驱动入门(一)
先亮一下装备:平台:VMware 7.0 + Linux ubuntu 3.0.0-12-generic编译器:gcc参考资料:LDD 3功能:实现简单的字符操作(从用户空间向内核空间写入一串字符;从内核空间读一个字符到内核空间) 众所周知,字符设备是linux下最基本,也是最常用到的设备,它是学习Linux驱动入门最好的选择,计算机的东西很多都是相通的,掌握
2011-11-17 10:15:46
5700
原创 G870 uboot启动流程
硬件平台:飞思卡尔iMX258 ARM9 CPU +256MB的Nand Flash(uboot存放在此中) 首先通过uboot的链接文件,其中text段为uboot的代码段,我们可以看到uboot运行时执行的第一段代码在start.S中:OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-litt
2011-11-16 10:10:23
1263
转载 bootload分析
一、Bootloader基本概念Bootloader是在操作系统运行之前执行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射表,从而建立适当的系统软硬件环境,为最终调用操作系统内核做好准备。对于嵌入式系统,Bootloader是基于特定硬件平台来实现的。因此,几乎不可能为所有的嵌入式系统建立一个通用的Bootloader,不同的处理器架构都有不同的Bootloade
2011-01-09 15:26:00
1706
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人