博客首页
注册
建议与交流
排行榜
加入友情链接
推荐
投诉
搜索:
帮助
Linux & Technology
邻窝 - http://muddoghole.spaces.live.com/
muddogxp.cublog.cn
管理博客
发表文章
留言
收藏夹
博客圈
音乐
相册
文章
首页
关于作者
姓名:muddog 职业:linux programer 年龄:24 位置:Suzhou 个性介绍:
||
<<
>>
||
我的分类
最新文章
·
-fomit-frame-pointer an..
·
重新开始研究kernel network
·
hrtimer + clockevent + ..
·
Workaround for
·
Linux memory fragment
最新留言
·
qingfeng
锐极嵌入式Linux免费培训开..
·
zhangzijian
呵呵,交个朋友.对linux性..
·
bob
这个家伙挺强!顶一下, 多..
·
GYC
顶一个~
·
GYC
顶一个~
最新评论
·
哥们,能不能讲讲将hrtime..
·
兄台,研究很透彻,受益颇..
·
You are doing a very goo..
·
你们好,我现在正在AT7X25..
·
跟X86等PC构架比较,嵌入式..
最新收藏
统计信息
·
总访问量:25610
·
文章个数:44
·
评论条数:43
·
留言条数:15
·
网友推荐:
-fomit-frame-pointer and WCHAN
GCC 里经常碰到的option: -fomit-frame-pointer,意思是:<br>Don’t keep the frame pointer in a register for functions that don’t need one. This avoids the instructions to save, set up and restore frame pointers; it also makes an extra register available in many functions. It also makes debugging impossible on some machines.<br>其实就是在x86编译的时候忽略EBP, 在arm编译时忽略r11。这两个东东其实就是栈基地址。<br><br>kernel默认都是忽略fp,可以通过kernel debug选项开启。但是sched.c默认是用……
查看全文
发表于:2008-07-23 ┆
阅读(11)
┆
评论(0)
重新开始研究kernel network
最近慢慢翻翻《linux kernel network internals》,重新温顾一下bridge, netfilter, ipv4。<br>找了俩个big picture放这里:<br><br><img style="cursor: -moz-zoom-out; width: 2417px; height: 733px;" alt="http://ebtables.sourceforge.net/br_fw_ia/PacketFlow.png" src="http://ebtables.sourceforge.net/br_fw_ia/PacketFlow.png"><br><br><img src="file:///D:/Profiles/b03824.FSL/LOCALS%7E1/Temp/moz-screenshot.jpg" alt=""><img src="file:///D:/Profiles/b03824.FSL/LOCALS%7E1/Temp/moz-screenshot-1.jpg" alt=""><br>……
查看全文
发表于:2008-04-18 ┆
阅读(145)
┆
评论(0)
hrtimer + clockevent + Timekeeping
kernel-2.6.22中的arm arch加入了对dynticks, clocksource/event支持. imx31的BSP在clock这里有一些改动. 找了些kernel clock及timer子系统近来的变化, 总结一下. <br> 一般来说Soft-Timer (timer wheel / hrtimer) 都是由Hardware-Timer(时钟中断之类)以及相关的clock source(e.g GPT in Soc)驱动, 所以我打算先从clock这层开始介绍, 接着是soft-timer, kernel timekeeping, 最后来看一些应用.<br><br><h2 style="color: rgb(0, 128, 255);">Clock Source</h2……
查看全文
发表于:2007-11-06 ┆
阅读(376)
┆
评论(2)
Workaround for
刚go through了一下2.6.23的change log. 发现一个叫 "Lumpy" reclaim 的新feature. 可以缓解上一篇文章里所说的memory fragment的现象. 它并不是在分配机制上下手(以前看到一个patch是给分配的页归为Kernel, UserSpace, Reserve三类去管理), 而是在page reclaim的算法上做了个变动, 改动在try_to_free_pages里, 将原先只scan LRU链上指定数量的inactive页来回收, 改为:<br>1) 查找LRU每个指定scan的页, 如果能回收, 放入队列<br>2) 将该页开始的物理连续页都遍历(遍历数量是由caller指定), 如果在LRU上并能回收,……
查看全文
发表于:2007-10-22 ┆
阅读(292)
┆
评论(0)
Linux memory fragment
<span id="BlogViewId" be:sortmode="Normal" be:sortkey="" be:firsthandle="cns!85CADA79FB3E7AA8!1756" be:lasthandle="cns!85CADA79FB3E7AA8!1677"> Devtech 2.6.19的kernel在内存分配上和2.6.16最大的区别是IPU内存全用dma alloc。导致蛮严重的内存fragment。原因很简单:ipu需要的dma内存分配时把大块的memory block打碎,省下的split出来内存被应用层拿去,导致最终很难将两者合并,大块block就越来越少。举个例子:目前buddy有512KB大小 的内存block 5个,256KB的block0个,ipu申请了256KB(ipu申请的内存大……
查看全文
发表于:2007-06-02 ┆
阅读(361)
┆
评论(0)
qemu调试内核
qemu(http://fabrice.bellard.free.fr/qemu/)一个快速处理器仿真器,目前可以仿真x86, arm, PowerPC, SPARC等处理器。在qemu的全系统仿真(full system emulation)环境下行为类似VMware。但是它又能方便的利用自带的gdb stub调试内核。(不过据说vmware的6.0版本已经在linux host上支持gdb,还没try过)<br> 借着调试mxc_hw_event模块的机会,我试了一把qemu:<br> 首先,ubuntu下安装qemu很方便,直接去源里取,版本目前是0.8.……
查看全文
发表于:2007-05-27 ┆
阅读(437)
┆
评论(0)
利用netlink统一外设异步事件传递
开发板都会有很多外设异步事件,这里主要讨论由用户触发的事件。这些事件都一般需要通过kernel将事件路由到应用层,交有某个处理程序去处理,包括:耳机(显示耳机图标,打开音频输出)、麦克风、AV/CVBS线、SD卡(挂载分区,可以由udev来做)、充电器插拔(显示充电状态),休眠按键等等。它们的事件获取,包括ISR,操作外设代码都在各自的驱动内,如果由每个驱动都去导出这样的异步事件接收接口给应用层,应用程序需要开启多个线程去等待(比较通用的kernel->user的接口,如read/write/ioctl/pr……
查看全文
发表于:2007-05-26 ┆
阅读(422)
┆
评论(0)
Linux Kernel 内存分配方式
<pre>这周BSP那边碰到一个蛮严重的issue:<br>循环放电影,v4l2 output driver的 dma_alloc很容易就失败,kernel panic,dump出当前buddy系统的状态。<br>初步分析是由于内存fragment导致没有足够大的连续内存分配给v4l output driver。开始debug<br>首先通过/proc/buddyinfo 在播放电影时候不间断的dump buddy状态,发现大块内存块:256K - 4MB block<br>减少的很迅速,1-2小时后,buddy中就不存在大块连续内存。这证明了初步分析是正确的,但是还不知道<br>是谁导致了fragment,是应用层,还是v4l2 driver本身?<br>接下来添加一……
查看全文
发表于:2007-04-08 ┆
阅读(686)
┆
评论(1)
Vim command/user manual
Vim command/user manual<br><br>'J' 删除当前行的换行<br>'CTRL-r' Redo<br>'U' undo line<br>'w' word move 'b' word move back 'e' word move end 'ge' word move end back<br>'nG' -> ':n'<br>'zz' 'zt' 'zb' 当前行移动到屏幕中央,顶部,底部<br>'c' 比'd'多一个insert结果<br>'r' replace a char 'R' Replace mode<br>'daw' delete a word<br>':args' 显示当前编辑的文件名,load 多文件<br>':saveas'<br>'C-w +/-' 增加,减少窗口大小<br>'qn' 记录命令于寄存器n<br>'@n' 应用寄存器n中的命令序列<br……
查看全文
发表于:2007-03-10 ┆
阅读(356)
┆
评论(0)
前途何在
给人打工总是不爽的,特别是底层的打工阶级。所有的活都是上级的指示,想要有些自己的想法,那是基本不可能。对提供最底层技术的公司来,尤其是芯片公司, 需求总是是跟着其他上游企业的需求走。赚钱的也是那些上游企业,那些最终设备供应商,服务商。公司的项目只是为了展示公司的某些产品,但整套方案没有客 户,项目就变的没有动力,前途也就不再明朗。技术总是需求驱动的,做就要做有市场的,有客户的,有发展前途的项目。切勿大而全,想当然。
查看全文
发表于:2007-03-10 ┆
阅读(426)
┆
评论(4)
Linux Framebuffer Driver writing HOWTO
<span style="font-weight: bold;"></span><br> Table of Contents<br><br> 1. Introduction<br><br> 1.1 Acknowledgments<br> 1.2 Revision History<br> 1.3 New versions of this document<br> 1.4 Feedback<br> 1.5 Distribution Policy<br><br> 2. Framebuffer Video Card Technology<br><br> 2.1 Monitor<br> 2.2 Video Card<br><br> 3. Setting a video mode<br> <br> 3.1 Fixed Frequency Monitors<br> 3.2 Multi Frequency Monitors<br> 3.3 Receipe for multisync monitors<br>……
查看全文
发表于:2007-02-08 ┆
阅读(311)
┆
评论(3)
4G的胡思乱想
<span id="BlogViewId" be:sortmode="Normal" be:sortkey="" be:firsthandle="cns!85CADA79FB3E7AA8!670" be:lasthandle="cns!85CADA79FB3E7AA8!653"><div id="msgcns!85CADA79FB3E7AA8!670"><div><font size="3">刚听说4G在上海组建试验网,感觉革命性的进步即将到来。</font></div> <div><font size="3"><span style="font-size: 12pt; color: black; font-family: 宋体;">目前国际电联给</span><span style="font-size: 12pt; color: black;" lang="EN-US"><font face="Times New Roman">4G</font></span><span style="font-size: 12p……
查看全文
发表于:2007-01-31 ┆
阅读(384)
┆
评论(0)
今年的一个目标
今年的一大计划是:参与一个OpenSource项目。并能在该项目中锻炼OO设计及对设计模式分析的能力。<br>
查看全文
发表于:2007-01-24 ┆
阅读(343)
┆
评论(2)
浮躁
都说很多中国的软件从业者是浮躁的,软件业发展的不够迅速和这个脱不了干系。我开始还不以为然,但这两天,人是相当的不爽,是该发发牢骚。周围的浮躁气息越来越弥漫,本以为工作之余可以找人聊聊技术,谈谈趋势;没想到是那么困难。使人受不了。<br>以下举一些浮躁事例:<br>1)抱怨自己手头的项目,声称对此不感兴趣,挑着挑那;挑完后又觉得不是自己想要的,到头来什么也没做好。<br>2)对自己所知皮毛之事,非得显得自己相当熟悉,和人争吵的面红耳赤,到头来灰不溜秋,不学无数。<br>3)8小时中无事可做事,情愿浪费时间,也不愿意把……
查看全文
发表于:2007-01-18 ┆
阅读(447)
┆
评论(1)
Thread supported in Kernel
<font size="3"> 最近QA报来的一个bug,引发了我对2.6.x linux线程实现的兴趣。以前一直以为pthread只是简单的利用clone() syscall来实现,2.4和2.6的kernel在这方面应该没有什么大改进。可稍微研究一下,才发现自己错了。<br> Linux 2.6.x kernel 加入了对POSIX标准线程的支持。而在应用层,有LinuxThread和NPTL两个不同的库,不过接口都一样,库名也都是pthread。 LinuxThread是比较早的pthread实现,在glibc 2.2.x里都有集成;而NPTL(Native POSIX Thread Library)则是Linux 线程的一个新实……
查看全文
发表于:2007-01-07 ┆
阅读(409)
┆
评论(1)
Building consumer products with open source
<center><font face="Arial,Helvetica" size="3"><b>Building consumer products with open source</b><br><br>by Ari Jaaksi</font></center><font face="Arial,Helvetica" size="3"><br><br><table align="right" border="2" bordercolor="#de0000" cellpadding="10" cellspacing="0" hspace="10" vspace="5"><tbody><tr><td><center><font size="2"><i>Spread the word:<br><a href="http://digg.com/linux_unix/About_Nokia_s_770_Tablet_open_source_experience" target="new"><u>digg this story</u></a></i></font></center></td><……
查看全文
发表于:2007-01-03 ┆
阅读(323)
┆
评论(0)
Linux Devices in 2006
<font face="Arial,Helvetica" size="3">As 2006 winds to a close, the editors of LinuxDevices.com have assembled a retrospective aimed at highlighting major trends and events in the world of embedded Linux. Of the approximately 1,200 stories we published this year, these were the most important, in our opinion. <br><br>For embedded Linux, 2006 was shaped by a handful of mega-trends. We've identified the following trends to be among the year's most visible, if not important:</font><ul><font ……
查看全文
发表于:2006-12-23 ┆
阅读(538)
┆
评论(0)
DevTek GCC toolchian 有点问题
以前用MontaVista的toolchian编译的好好的bootloader, 用DevTek带的arm-linux就有问题, 而且是莫名其妙。出问题的代码如下:<br> register int i;<br> for (i = 0; i < j; i++) ; // j 是运行期变量<br>这 段代码本意是自循环,达到delay效果。但是用arm-linux编译后, 这段代码死活不能delay(优化选项打开 -O2 -Os, 都试过)。当时就觉得相当奇怪,在尝试延长循环次数和其他方法无效后,只能-S 直接汇编。汇编的结果是这段loop被编译器直接remove掉了。当然不打开优化选项一点问题都没有,但bootloader哪能不优……
查看全文
发表于:2006-12-19 ┆
阅读(304)
┆
评论(0)
ioctl 的原子性
<pre>ioctl在linux系统中属于原子操作, 实际就是带锁的操作.<br>在写内核或驱动时,使用ioctl和应用层交互要比/proc来得安全的多.<br>以下是对ioctl原子性的代码分析:<br><br></pre><h3>1) do_ioctl, 用户层调用ioctl都会陷入到这里.</h3><pre>static long <a href="http://lxr.linux.no/ident?i=do_ioctl">do_ioctl</a>(struct <a href="http://lxr.linux.no/ident?i=file">file</a> *<a href="http://lxr.linux.no/ident?i=filp">filp</a>, unsigned int <a href="http://lxr.linux.no/ident?i=cmd">cmd</a>,<br> ……
查看全文
发表于:2006-12-19 ┆
阅读(553)
┆
评论(0)
开源-爱你不容易
崇尚自由,崇尚知识的分享,是开源的精神。技术狂们一旦接触,就如染上“毒瘾”,一发不可收拾;疯狂的吸收他人的精华,同时也毫不掩饰的展现自己的才华。 一代又一代的技术爱好者们,推动着庞大的开源社区前进,推动着技术的进步。开源有它积极和先进的一面,但它的弱点也是暴露无疑。<br> 开源总是被刻上技术爱好者的把玩的烙印,导致普通用户对于其望而却步。它有时总是不那么另人满意,就拿前些天ALSA library来说,源码包解开后,居然没有编译成功,还必须自己修改代码才能过。这样的情况不在少数,想用开源的东西,必须要求某……
查看全文
发表于:2006-11-07 ┆
阅读(399)
┆
评论(1)