
其它
junllee
这个作者很懒,什么都没留下…
展开
-
ioremap 与 mmap
内存映射 对于提供了MMU(存储管理器,辅助操作系统进行内存管理,提供虚实地址转换等硬件支持)的处理器而言,Linux提供了复杂的存储管理系统,使得进程所能访问的内存达到4GB。 进程的4GB内存空间被人为的分为两个部分--用户空间与内核空间。用户空间地址分布从0到3GB(PAGE_OFFSET,在0x86中它等于0xC0000000),3GB到4GB为内核空间,如下图:转载 2012-03-31 14:43:02 · 9492 阅读 · 0 评论 -
linux 的 sys_read 在哪里定义?
声明:syscalls.h asmlinkage long sys_read(unsigned int fd, char __user *buf, size_t count);定义: syscalls.hC/C++ code#define SYSCALL_DEFINEx(x, name, ...) \ asmlinka转载 2012-04-24 09:43:19 · 3004 阅读 · 0 评论 -
linux内存管理浅析
[地址映射](图:左中)linux内核使用页式内存管理,应用程序给出的内存地址是虚拟地址,它需要经过若干级页表一级一级的变换,才变成真正的物理地址。想一下,地址映射还是一件很恐怖的事情。当访问一个由虚拟地址表示的内存空间时,需要先经过若干次的内存访问,得到每一级页表中用于转换的页表项(页表是存放在内存里面的),才能完成映射。也就是说,要实现一次内存访问,实际上内存被访问了N+1次(N=页表转载 2012-04-27 23:04:13 · 778 阅读 · 0 评论 -
解析:signal_pending与返回-ERESTARTSYS
解析:signal_pending与返回-ERESTARTSYS经常我们在睡眠的代码中 会看到这样的例子: if (signal_pending(current)) { ret = -ERESTARTSYS; return ret; } 关于 -ERESTARTSYS 到底是什么意思?转载 2012-04-23 21:43:02 · 1549 阅读 · 0 评论 -
双核互斥问题
想利用cmpxchg指令来实现双核对临界资源的互斥访问。如下代码:static volatile __com u32 spinlock;void spin_lock(void){ u32 lock = 1; u32 ret0 = 0; u32 ret1 = 1; u32 unlock; s32 ret; while(1){ unlock = 0;原创 2012-05-18 11:18:00 · 2659 阅读 · 0 评论 -
ubuntu下折腾ffmpeg小记(音视频录制、转换)
前几天编译了个mplayer 1.0rc2,我几乎就找不到播不了的音视频了,正开心中,发现mencoder好像不能转换音频, 提示说非要有视频不可,狂晕,什么玩意儿~反正现在也在乎多折腾一个了,再把最新的ffmpeg装上吧:sudo apt-get build-dep ffmpeg 到http://ffmpeg.mplayerhq.hu下载最新的ffmpeg源代码解压,安装转载 2012-05-22 22:20:04 · 2395 阅读 · 2 评论 -
Setup linux timer for tick/jiffies
1. timer is configured at ba_set_mode() function CLOCK_EVT_MODE_PERIODIC switch(file:arch/ba/kernel/time.c): mtspr(SPR_TTMR,SPR_TTMR_IE|SPR_TTMR_RT|(LATCH&SPR_TTMR_PERIOD)); LATCH is the clock t原创 2012-07-13 09:24:53 · 1472 阅读 · 0 评论 -
jffs2_scan_inode_node(): Data CRC failed on node at ... Read ... calculated ...
【问题】jffs2_scan_inode_node(): Data CRC failed on node at ... Read ... calculated ...Empty flash at ...之前用jffs2的时候,就遇到过此问题,但是一直没有搞懂具体的原因。今天去google了一下,找到一些解释,说的应该是比较清楚了,现摘录如下:1.http://www.inf转载 2012-08-03 23:43:03 · 6012 阅读 · 0 评论 -
jffs2 cleanmarker
What is cleanmarker and what it is used for?Cleanmarker is a special JFFS2 node which is written to the beginning of ablock just after the block has been erased. On NOR flashes it is a specialsmall JF转载 2012-08-03 22:13:46 · 2075 阅读 · 0 评论 -
如何制作和使用Jffs2文件系统
本文主要介绍如何在AT91SAM9261EK板子上制作和使用jffs2文件系统,使用的是linux-2.6.21内核。首先配置MTD $ make menuconfig 进入 Memory Technology Devices (MTD) ---> Memory Technology Device (转载 2012-07-28 16:37:16 · 1237 阅读 · 0 评论 -
SD+FAT16文件系统学习笔记1
SD+FAT16文件系统学习笔记12010-08-12 23:17一、物理扇区0(MBR)物理扇区0常称为引导扇区(MBR).读取出SD卡的物理扇区0,在物理扇区0的0x1C6~0x1C9这4个字节中,可以得到逻辑扇区0(主引导区)的物理扇区地址.可能是因为我不会用WinHex,无法打开物理扇区,只能选择打开逻辑扇区.所以只有从开发板上读出物理扇区0的信息,转载 2012-08-30 11:05:07 · 915 阅读 · 0 评论 -
ffmpeg configure遇到的奇怪问题
今天在对编译ffmpeg时,首先进行./configure, 结果提示如下错误: xxx-linux-gcc is unable to create an executable file. C compiler test failed. 仔细看configure文件,错误信息显示如下:# compiler sanity checkcheck_exec in原创 2012-09-25 16:47:27 · 9508 阅读 · 6 评论 -
linux的nand中计算ECC的时候buf地址不4字节对齐的问题
最近发现的 __nand_calculate_ecc(buf,eccsize,code)中buf地址非4字节对齐导致的异常问题, 经查发现是由于fs/jffs2/gc.c中jffs2_garbage_collect_live()函数中获取的start值非对齐引起,这个start值传给给jffs2_garbage_collect_dnode(),在jffs2_garbage_collect_原创 2012-10-23 13:42:06 · 1470 阅读 · 1 评论 -
7大嵌入式开发技巧,你知道吗?
成为一个正式的工程师。它是一个艰辛的过程,需要开发人员维护和管理系统的每个比特和字节。从规范完善的开发周期到严格执行和系统检查,开发高可靠性嵌入式系统的技术有许多种。今天给大家介绍7个易操作且可以长久使用的技巧,它们对于确保系统更加可靠地运行并捕获异常行为大有帮助。技巧1——用已知值填充软件开发人员往往都是非常乐观的一群人,只要让他们的代码忠实地长时间地运行就可以了,仅此而已。微控制器跳出转载 2017-12-20 09:24:51 · 580 阅读 · 0 评论 -
Linux 下SVN 常用的命令
Linux 下SVN 常用的命令 1、将文件checkout到本地目录svn checkout path(path是服务器上的目录)例如:svn checkout svn://192.168.1.1/pro/domain简写:svn co 2、往版本库中添加新的文件svn add file例如:svn addtest.php(添加test.ph转载 2012-02-26 22:20:09 · 591 阅读 · 0 评论 -
关于SWAP指令用于实现多CPU的互斥信号量
1楼:提问atomic load and store operation, allowing a MEMORY semaphore to be loaded and alteredwithout interruption. semaphore instructions用于进程同步, 不是很理解。记得操作系统中进程同步用信号量,底层实现用这个指令?atomic load an转载 2012-02-03 14:25:28 · 6598 阅读 · 2 评论 -
Makefile的介绍
概述——什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefil转载 2011-06-09 23:30:00 · 603 阅读 · 0 评论 -
进位与溢出
对于无符号数来说,不存在溢出的问题,它的进位就相当于有符号数中的溢出而对有符号数来说,不存在进位的问题一个字节(8位) 的数有256个 (2的8次方)一个字(16位) 的数有65536个 (2的16次方)8个二进制位能够表达的无符号数范围是:0 ~ 255 16位表达的无符号数转载 2011-07-25 13:33:28 · 1473 阅读 · 0 评论 -
GCC Inline Assembly-HOWTO
v0.1, 01 March 2003. This HOWTO explains the use and usage of the inline assembly feature provided by GCC. There are only two prerequisi转载 2011-09-26 09:48:06 · 1323 阅读 · 0 评论 -
linux的嵌入汇编的一个问题(关于earlyclobber)
linux的嵌入汇编的一个问题"=&a"(retval)这是输出部,把寄存器eax的值放如retval中我想请问的是 &a的前面的&符号是做什么用的呢?albcamus 发表于 2009-06-09 10:41笔记:=========2转载 2011-09-26 11:12:19 · 1894 阅读 · 1 评论 -
VI使用总结
本文的目标不是一个VI编辑器的教材。它只是个人在使用VI编程的过程中,对自认为比较有用的一些编辑功能及其它功能的一些整理。有一些功能,比如hjkl键移动光,个人并不习惯使用,同时也并不认为对提高编辑效率有多大帮助,所以没有列入其中。与编程风格,编程规范这些东西恰恰相反,编辑器的使用习惯对程序员来说,是一件很个人化,很个性化的事情。每个人都可以有自己的使用习惯和偏好,只要有利于工作的高效即可转载 2011-10-21 23:08:51 · 571 阅读 · 0 评论 -
vim命令大全
vim命令大全2009-08-04 08:34这时vim最常用的命令大全,没事常阅读,最重要的事,有问题了,尝试用这些东西去解决问题,而不是求助Windows。vim是linux下命令行一款经典编辑器操作简单功能强大,这是很多unix上元老级程序员的挚爱。我本地机器上一直使用的是vim+ctags组合,很受用。进入vi的命令vi filename :打开或新转载 2011-10-21 23:11:27 · 457 阅读 · 0 评论 -
Android系统级深入开发之OpenMax系统结构和移植内容
Android系统级深入开发之OpenMax系统结构和移植内容2011-03-01 16:36 | 1169次阅读 | 来源:电子工业出版社 【已有0条评论】发表评论关键词:图书,调试,移植,移动开发,Android | 作者:韩超 梁泉 | 收藏这篇资讯<!--pre {white-space:pre-wrap; font-size:14p转载 2011-12-05 15:18:21 · 1690 阅读 · 0 评论 -
ALSA声音编程介绍(译文)
英文原文:http://www.linuxjournal.com/article/6735period(周期):硬件中中断间的间隔时间。它表示输入延时。声卡接口中有一个指针来指示声卡硬件缓存区中当前的读写位置。只要接口在运行,这个指针将循环地指向缓存区中的某个位置。frame size = sizeof(one sample) * nChannelsalsa中配置的缓存(buffe转载 2011-12-19 20:44:52 · 980 阅读 · 0 评论 -
linux 2.6内核源代码目录树简介
linux 2.6内核具有O(1)调度算法、改进的NPTL线程模型、内核态抢占等特性,以及良好的响应能力。可以把内核源代码目录树分为系统最核心组件和系统次核心组件:其中,系统最核心组件包括:scripts目录该目录中不包含任何核心代码,该目录下存放了用来配置内核的脚本和应用程序源码。lib目录该目录主要包含两部分内容:gnuzip解压缩算法,用于在系统启动过程中将压缩的内核转载 2011-12-09 09:20:18 · 793 阅读 · 0 评论 -
linux根目录下各目录的功能
/bin:存入普通用户可以使用的命令文件.目录/usr/bin 也可用来贮存用户命令。/sbin: 一般存放非普通用户使用的命令(有时隔不久普通用户也可能会用到).目录/usr/sbin中也包括了许多系统命令。/etc:系统的配置文件。/root:系统管理员(root或超级用户)的主目录。/usr:包括与系统用户直接相关的文件和目录,一些主要的应用程序了保存在该目转载 2011-12-09 09:15:02 · 578 阅读 · 0 评论 -
list_head结构的使用
在Linux内核中,提供了一个用来创建双向循环链表的结构list_head。使用list_head提供的相应接口,链表操作将变得相当简单。下面就是kernel中的list_head结构定义:struct list_head { struct list_head *next, *prev;};#defineLIST_HEAD_INIT(name) { &(n转载 2011-12-12 13:55:04 · 7648 阅读 · 0 评论 -
交叉编译 Linux 内核 for ARM
交叉编译Linux内核for ARM本文以三星S5PC100芯片为例,采用codesourcery公司出品的ARM平台交叉编译工具链,编译最新的内核源代码2.6.33。1. 交叉编译工具链1) 访问codesourcery官方网站下载最新的ARM交叉编译工具链,当前最新版本是arm-2009q3:http://www.codesourcery.com/sgpp/lite/arm/p转载 2011-12-11 00:01:06 · 6316 阅读 · 0 评论 -
运用autoconf和automake生成makefile文件
模拟需求假设源文件按如下目录存放,如图1所示,运用autoconf和automake生成makefile文件。图 1文件目录结构假设src是我们源文件目录,include目录存放其他库的头文件,lib目录存放用到的库文件,然后开始按模块存放,每个模块都有一个对应的目录,模块下再分子模块,如apple、orange。每个子目录下又分core,include,shell三个目录转载 2011-12-21 14:07:46 · 493 阅读 · 0 评论 -
kmalloc vmalloc malloc区别
kmalloc()和vmalloc()介绍kmalloc()用于申请较小的、连续的物理内存1. 以字节为单位进行分配,在linux/slab.h>中2. void *kmalloc(size_t size, int flags) 分配的内存物理地址上连续,虚拟地址上自然连续3. gfp_mask标志:什么时候使用哪种标志?如下:———————————转载 2011-12-16 17:06:47 · 730 阅读 · 0 评论 -
ALSA驱动、设备函数调用关系
soc_probe==> snd_soc_register_card或者snd_soc_register_dai或者snd_soc_register_platform或者snd_soc_register_codec==> snd_soc_instantiate_cards==> snd_soc_instantiate_card==> codec_dev->probe(uda134x转载 2011-12-21 16:34:24 · 676 阅读 · 0 评论 -
2.4GHz RF-SIM卡及读写终端技术概述
2.4GHz RF-SIM卡及读写终端技术概述 1. 2.4GHz RF-SIM卡技术概要 (1)、使用2.4GHz频段, 自动选频; (2)、通信速率1Mbps,高可靠性连接与通信; (3)、支持自动感应和主动触发连接两种通信方法; (4)、双向通信距离10CM-500CM,可以根据应用调整; (5)、单向数据广播(半径100M); (6转载 2011-06-09 23:49:00 · 4447 阅读 · 0 评论