Listing 3. Simple Sound Playback /* This example reads standard from input and writes to the default PCM dev
最近做opengl模拟器的时候,需要从用户虚拟地址得到实际的物理地址,在网上找到一个不错的参考(http://www.eefocus.com/html/09-05/71993s.shtml),稍微修改了一下(用current替代了find_task_by_pid. #include <linux/sched.h> #include <linux/m
http://linux.chinaunix.net/bbs/viewthread.php?tid=1143601 如何调整Linux内核启动中的驱动初始化顺序【问题】此处我要实现的是将芯片的ID用于网卡MAC地址,网卡驱动是enc28j60_init。但是,读取芯片ID的函数,在as352x_afe_init模块中,所以要先初始化as352x_afe_init。此处,内核编译完之后,在生成的s
看看arch/arm/kernel/setup.c函数early_mem() 会根据你的kernel command line读出memory的起始地址和大小。然后通过arm_add_memory()注册该memory。再通过arch/arm/mm/init.c中的bootmem_init把该memory映射到对应的虚拟地址。映射函数为__phys_to_virt,定义为:#define __ph
在setup_arch()中: 1. parse_cmdline(): 根据uboot传递的mem信息,调用early_mem()通过arm_add_memory()把物理内存信息添加到meminfo结构体中。 2. paging_init(): 这个就是关键的初始化页表的函数,在里面会调用bootmem_init()->bootmem_init_node
对于我们的软件代码来说,不但要自己读得懂,而且要让其他人能很快的了解的这些代码的主要功能,便于其他工程师进行代码维护。另一方面,对于项目经理来说,他可能不会去直接读你的代码,更多的是你需要提供一个代码说明文档给他,如何写一份规范的代码说明文档?这里我给大家简单介绍一下非常不错的工具Doxgen,大家照着下面的方法做就能得到一份规范的代码文档。 前提: 1. 假设你已经创建了te
如果要在linux下记录某个程序运行的时间,可以使用time命令,但是,需要注意的是,linux有两个time命令,一个是shell自带的time命令,另外一个是GNU time命令,自带的那个没有输出到文件的功能,而GNU time功能更加强大,具有很多选项。 下面是一个例子: /usr/bin/time -o output.txt dmesg 把运行dmesg的时间记录下来保存到outp
linux进程间的同步方法
包括我自己在内,很多人对内核,进程,线程同步都不是很清楚,下面稍微总结一下: 内核同步: 主要是防止多核处理器同时访问修改某段代码,或者在对设备驱动程序进行临界区保护。主要有一下几种方式: 1. Mutex(互斥) 头文件: #include <linux/mutex.h> 初始化方法: DEFINE_MUTEX(name);或者 void&n
一般来说我们编译完内核树以后都会得到好几个不同格式的内核映像,下面我就稍微做一个简单的介绍: 1. kernel\vmlinux: 这是一个没有压缩ELF映像文件,含有符号表,可以用于调试。 2. kernel\arch\arm\boot\Image: 这是vmlinux出去符号表只剩下内核代码和数据的影响 3. kernel\arch\arm\boot\compressed\vmlinux
zz from: [url]http://hi.baidu.com/deep_pro/blog/item/b451e687101a302cc65cc390.html[/url]一个2.6内核字符设备驱动hello world 注释超详细2008-07-17 17:02本例是冯国进的 《嵌入式Linux 驱动程序设计从入门到精通》的第一个例子感觉真是
嵌入应用:如何制作和使用Jffs2文件系统 (zhuan)[url]http://www.cnitblog.com/zouzheng/archive/2007/11/16/36384.html[/url] 本文主要介绍如何在AT91SAM9261EK板子上制作和使用jffs2文件系统,使用的是linux-2.6.21内核。 首先配置MTD
在U-Boot可能早就有了对JFFS2和U盘的支持,但是由于我没有移植是注意到,就没有使用。在这次的移植中,我通过往网上的资料在开发板的配置文件中添加了对这两项的支持,并使用成功。在这里写下备忘,以备后用. 一、U-Boot对JFFS2文件系统的支持 我在include/configs/tekkaman2440.h文件中添加了: #define CONFIG_CMD_JFFS2
实例:mkfs.jffs2 -r rootfs -o rootfs.jffs2 -e 0x4000 --pad=0x1000000 -s 0x200 -n mkfs.jffs2: Usage: mkfs.jffs2 [OPTIONS] Make a JFFS2 file system p_w_picpath from an existing directory tree Options:
JFFS2是Flash上应用最广的一个日志结构文件系统。它提供的垃圾回收机制,不需要马上对擦写越界的块进行擦写,而只需要将其设置一个标志,标明为 脏块,当可用的块数不足时,垃圾回收机制才开始回收这些节点。同时,由于JFFS2基于日志结构,在意外掉电后仍然可以保持数据的完整性,而不会丢失数 据。 本文阐述如
[url]http://blog.ednchina.com/hndeng06/60502/message.aspx[/url]mkp_w_picpath使用详解 (-a 和 –c参数指定的地址异同和差别) uboot源代码的tools/目录下有mkp_w_picpath工具,这个工具可以用来制作不压缩或者
这个应该对我有帮助,使我能够更好的了解uboot。 具体内容如下: U-Boot的命令为用户提供了交互功能,并且已经实现了几十个常用的命令。如果开发板需要很特殊的操作,可以添加新的U-Boot命令。 U-Boot的每一个命令都是通过U_Boot_CMD宏定义的。这个宏在include/command.h头文件中定
http://it.21cn.com/software/czxt/2008/04/07/4564934.shtml作者:sixth 一、在一个已建好的文件系统上进行修改 设已建立好的文件系统压缩文件为ramdisk.gz 1、解压 #cd ramdisk.gz所在目录 #gunzip ramdisk.gz 在解压后,得到文件系统镜象文件ramdisk,
TARGET = PREFIX_BIN = CC = gcc INCLUDES = LIBS = CFLAGS =-Wall -Werror LINKFLAGS = C_SOURCES = C_OBJS = $(patsubst %.c, %.o, $(C_SOURCES)) .c.o: &nbs
[url]http://blog.iyi.cn/hily/archives/2006/05/post_12.html[/url]Linux中包含有一个很有用的调试工具--gdb(GNU Debuger),它可以用来调试C和C++程序,功能不亚于Windows下的许多图形界面的调试工具。 和所有常用的调试工具一样,gdb提供了以下功能: # 监视程序中变量的值 # 在程序中设置断点
[url]http://linux.chinaunix.net/bbs/thread-1012674-1-12.html[/url]Linux是Unix操作系统的一种变种,在Linux下编写 驱动程序的原理和思想完全类似于其他的Unix系统,但它dos或window环境下的驱动程序有很大的区别。在Linux环境下设计驱动程序,思想简 洁,操作方便,功能也很强大,但是支持函数少,只能依
http://linux.chinaunix.net/bbs/thread-1022616-1-10.html 1. Linux的I2C驱动架构Linux中I2C总线的驱动分为两个部分,总线驱动(BUS)和设备驱动(DEVICE)。其中总线驱动的职责,是为系统中 每个I2C总线增加相应的读写方法。但是总线驱动本身并不会进行任何的通讯,它只是存在在那里,等待设备驱动调用其函数。
http://linux.chinaunix.net/bbs/thread-138124-1-2.html驱动程序的使用可以按照两种方式编译,一种是静态编译进内核,另一种是编译成模块以供动态加载。由于 uClinux不支持模块动态加载,而且嵌入式LINUX不能够象桌面LINUX那样灵活的使用insmod/rmmod加载卸载设备驱动程序,因而这里 只介绍将设备驱动程序静态编译进uClinux内核
内核一般通过jiffies值来获取当前时间。尽管该数值表示的是自上次系统启动到当前的时间间隔,但因为驱动程序的生命期只限于系统的运行期(uptime),所以也是可行的。驱动程序利用jiffies的当前值来计算不同事件间的时间间隔。 硬件给内核提供一个系统定时器用以计算和管理时间,内核通过编程预设系统定时器的频率,即节拍率(tick rate),每一个周期称作一个tick(节拍)。Linux内核从2
1.Linux device drivers 3rd Edition2.Building Embedded Linux Systems这两本书对我今后的帮助相当的大,发现做驱动开发,没有必要专门去研究内核,都驱动开发的书顺便就把内核理清楚了,这样有目的地去学习内核,效果更好!
Linux 2.6.19.x 内核编译配置选项简介[url]http://lamp.linux.gov.cn/Linux/kernel_options.html[/url]作者:金步国版权声明本文作者是一位自由软件爱好者,所以本文虽然不是软件,但是本着 GPL 的精神发布。任何人都可以自由使用、转载、复制和再分发,但必须保留作者署名,亦不得对声明中的任何条款作任何形式的修改,也不得附加任何其它条件
[url]http://linux.chinaunix.net/bbs/thread-1010900-1-2.html[/url]/Documentation 文档资料/arch 体系结构相关代码/drivers linux支持的外围设备的驱动程序/fs linux支持的所有文件系统在fs目录下都有一个对应的子目录/include linux源程序树中大部分.h文件 /li
1)u-boot版本1.1.3,gcc version 3.3.3 (DENX ELDK 3.1.1 3.3.3-9) 2)在Makefile中加入 bks2410_config : unconfig @./mkconfig $(@:_config=) arm arm920t bks2410 NULL s3c24x0 我把我的板子起名叫bks2410,可以依自己
Printenv 打印环境变量。 Uboot> printenv baudrate=115200 ipaddr=192.168.1.1 ethaddr=12:34:56:78:9A:BC serverip=192.168.1.5 Environment size: 80/8188 bytes Setenv 设置新的变量 Uboot> setenv myboard AT91RM9200D
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号