博客首页
注册
建议与交流
排行榜
加入友情链接
推荐
投诉
搜索:
帮助
Linux Ares
om.cublog.cn
管理博客
发表文章
留言
收藏夹
博客圈
音乐
相册
文章
· 工作总结
· 转载文章
首页
关于作者
姓名:ck 职业:软件工程师 年龄:26 位置:沈阳 研究:嵌入式系统 email:cuikai1981@gmail.com
||
<<
>>
||
我的分类
最新文章
·
信号量与自旋锁
·
cs8900网卡的移植以及cs8..
·
linux内核的移植与遭遇问..
·
日记 [2007年10月27日]bo..
·
U-BOOT下使用bootm引导内..
最新留言
最新评论
·
你好,兄台。
我按照你上..
·
大哥,请问ARM_Linux_Kern..
·
不错,看了你的整个博客,很..
最新收藏
统计信息
·
总访问量:11248
·
文章个数:11
·
评论条数:3
·
留言条数:0
·
网友推荐:
信号量与自旋锁
<font style="font-size: 14pt;" color="#000066"><b>信号量和自旋锁(ZHUAN)</b></font> <div id="art" style="margin: 15px;"> <font color="#000000" size="4"> 内核同步措施<br> <br> 为了避免并发,防止竞争。内核提供了一组同步方法来提供对共享数据的保护。 我们的重点不是介绍这些方法的详细用法,而是强调为什么使用这些方法和它们之间的差别。<br> Linux 使用的同步机制可以说从2.0到2.6以来不断发展完善。从最初的原子操作,到后来的信号量,从大内核锁到今天的自旋锁。这些同步机制的发展伴随 Linux从单处理器到对称多处理器的过度;伴随着从非抢占内核到抢占内核的过度。锁机制越来越有效,也越来越复杂。<br> 目前来说内核中原子操作多用来做计数使用,其它情况最常用的是两种锁以及它们的变种:一个是自旋锁,另一个是信号量。我们下面就来着重介绍一下这两种锁机制。<br> <br> <br> 自旋锁<br> ------------------------------------------------------<br> <font color="#800000"><strong> 自旋锁是专为防止多处理器并发而引入……
查看全文
发表于:2007-11-08 ┆
阅读(445)
┆
评论(0)
cs8900网卡的移植以及cs8900初始化代码分析
上一篇,总结linux2.6.20.3的移植,在此,并将cs8900的移植过程进行简单的记录,并将我读取的cs8900网卡初始化的流程附上。<br><br> 移植过程参照ARM_Linux_Kernel_Porting_(MBA2410).pdf(我上一篇引导部分的内容这里也有,早知道就看看它就没必要自己花时间跟了),并修改了一些不合适的问题,linux 2.6.20.3参照此步骤,网卡是绝对可以驱动得上的。<span style="color: rgb(255, 1, 2);">但是必需要注意网卡硬件的布线,比如片选引脚以及中断引脚等。<br> <span style="color: rgb(0, 1, 2);">以下的修改内容<span style="color: rgb(0, 1, 255);">蓝色为添加</span>,<span style="color: rgb(255, 1, 2);">红色为原有的,<span style="color: rgb(255, 1, 255);">该色为要被替换的。</span></span></span><br></span> (1)修改 arch/arm/mach-s3c2410/Kconfig<br> 找到config ARCH_SMDK2410修改为如下内容<br><table style="border: 1px solid rgb(153, 153, 153); width: 80%; font-size: 12px; color: rgb(0, 1, 255);" align="center"><tbody><tr><td><spa……
查看全文
发表于:2007-11-05 ┆
阅读(1748)
┆
评论(2)
linux内核的移植与遭遇问题的解决
前些日子,完成u-boot的移植,随后所作的事情就是进行linux内核的移植,在移植的过程中遭遇了一些莫名其妙的错误,但无论如何,已经实现了最终的移植工作,在移植的过程中学会了一些内核的debug方法,依据此方法对内核启动过程进行了跟踪,相关的内容也将在本章节内进行阐述。<br> 移植硬件平台 <span style="color: rgb(255, 1, 2);">友善之臂 s3c2410</span>,内核版本 <span style="color: rgb(255, 1, 2);">linux 2.6.20.3</span>,交叉编译器<span style="color: rgb(255, 1, 2);">gcc4.0.2</span>。<br> 交叉编译器的建立文章参见<a href="http://blog.chinaunix.net/u1/34474/showart_361455.html" target="_blank">ARM-Linux交叉编译工具链制作攻略</a>。<br><br> linux内核移植过程:<br> (1)解压内核并进入内核代码树工作目录。<br><br><table style="border: 1px solid rgb(153, 153, 153); width: 80%; font-size: 12px;" align="center"><tbody><tr><td><span style="color: rgb(0, 1, 255);">tar xjvf linux-2.6.20.3.tar.bz2</span><br style="color: rgb(……
查看全文
发表于:2007-11-05 ┆
阅读(1702)
┆
评论(0)
日记 [2007年10月27日]bootm引导linux总结
参照转载文章<a id="viewpost1_TitleUrl" class="postTitle2" href="http://www.cnitblog.com/luofuchong/archive/2007/01/12/21834.html">U-BOOT下使用bootm引导内核方法</a>初步实现了使用u-boot固化linux系统并实现其自动引导的功能。到现在为止,我的工作一直是建立在别人的基础之上,而自己实现的部分少之又少,除了查找资料的“计两”有所提高外,和这些原创作者相比,自觉羞愧不已。早立自己的建树,才是最最珍贵。<br> 言归正传,上述文章中非常详细的讲解了整个bootm引导内核的整个流程,在此,仅仅是对该流程进行抽象,作为高速应用手册之用。<br><br><span style="color: rgb(255, 1, 2);">方案一</span><br> 1. 使用 u-boot/tools/mkimage为linux内核加头。<br> <br><table style="border: 1px solid rgb(153, 153, 153); width: 80%; font-size: 12px; color: rgb(0, 1, 255); font-family: Times New;" align="center"><tbody><tr><td><font size="4"><span style="font-size: 9pt;"><span lang="EN-US">mkimage -n 'linux-2.6.20' -A arm -O linux -T kernel -C none……
查看全文
发表于:2007-10-28 ┆
阅读(296)
┆
评论(1)
U-BOOT下使用bootm引导内核方法
原文如下:<br><table style="border: 1px solid rgb(153, 153, 153); width: 600px; font-size: 12px; height: 24px;" align="center"><tbody><tr><td><div class="postTitle"> <a id="viewpost1_TitleUrl" class="postTitle2" href="http://www.cnitblog.com/luofuchong/archive/2007/01/12/21834.html">U-BOOT下使用bootm引导内核方法</a> </div> <p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"> <span style="font-size: 9pt; color: rgb(85, 85, 85); font-family: 宋体;"> <font size="3">注:</font> <span lang="EN-US"> <br> <font size="3"> u-boot</font> </span> <font size="3">使用的是打上:</font> <span lang="EN-US"> <br> <a href="http://www.hhcn.com/cgi-bin/topic.cgi?forum=3&topic=651&show=0" target="_blank"> <span style="color: rgb(51, 51, 51); text-decoration: none;"> <font size="3">http://www.hhcn.com/cgi-bin/topic.cgi?forum=3&topic=651&show=0</fon……
查看全文
发表于:2007-10-28 ┆
阅读(346)
┆
评论(0)
u-boot 命令大全
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US"><strong><span style="color: blue;">Printenv</span></strong> </span><span style="font-family: 宋体;">打印环境变量。</span></p> <blockquote> <p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">Uboot> printenv<br>baudrate=115200<br>ipaddr=192.168.1.1<br>ethaddr=12:34:56:78:9A:BC<br>serverip=192.168.1.5<br>Environment size: 80/8188 bytes</span></p> </blockquote> <p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US"><strong><span style="color: blue;">Setenv</span></strong> </span><span style="font-family: 宋体;">设置新的变量</span></p> <blockquote> <p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">Uboot> setenv myboard AT91RM9200DK<br>Uboot> printenv<br>baudrate=115200<br>ipaddr=192.168.1.1<br>ethaddr=12:34:56:78:9A:BC<br>serverip=192.168.1.5<br>myboard=AT91RM9200DK<br>Environment size: 102/8188 bytes</span></p> </blo……
查看全文
发表于:2007-10-28 ┆
阅读(789)
┆
评论(0)
tftp设置心得
<br>一个tftp服务器的搭建有如下若干步骤:<br> 1. 查看tftp server是否安装。(rpm -q tftp-server)<br> 2. 如果服务器没有安装,则到linux系统光盘中寻找该包并安装。<br> 3. 安装tftp之后对本地tftp进行设置:<br> a.编辑tftp服务(vi <font size="2"><span></span><span><font face="Times New Roman">/etc/xinetd.d/tftp</font></span></font>)并按如下过程修改内容。<br> <br><table style="border: 1px solid rgb(153, 153, 153); width: 80%; font-size: 12px;" align="center"><tbody><tr><td><p style="margin: 0cm 0cm 0pt; text-indent: 21.75pt;"><span><font face="Times New Roman" size="2">service tftp</font></span></p><p style="margin: 0cm 0cm 0pt; text-indent: 21.75pt;"><span><font face="Times New Roman" size="2">{<span> </span>socket_type<span> </span>=dgram</font></span></p><p style……
查看全文
发表于:2007-10-28 ┆
阅读(653)
┆
评论(0)
u-boot的环境变量
<span style="font-family: 宋体; letter-spacing: 0.3pt;">有点类似</span><span style="letter-spacing: 0.3pt;" lang="EN-US">Shell</span><span style="font-family: 宋体; letter-spacing: 0.3pt;">,</span><span style="letter-spacing: 0.3pt;" lang="EN-US">U-Boot</span><span style="font-family: 宋体; letter-spacing: 0.3pt;">也使用环境变量。可以通过</span><span style="letter-spacing: 0.3pt;" lang="EN-US">printenv</span><span style="font-family: 宋体; letter-spacing: 0.3pt;">命令查看环境变量的设置。</span> <p class="a0" style="line-height: 9pt;"><span lang="EN-US"> </span></p> <p class="a8"><span lang="EN-US">U-Boot> printenv</span></p> <p class="a8"><span lang="EN-US">bootdelay=3</span></p> <p class="a8"><span lang="EN-US">baudrate=115200</span></p> <p class="a8"><span lang="EN-US">netmask=255.255.0.0</span></p> <p class="a8"><span lang="EN-US">ethaddr=12:34:56:78:90:ab</span></p> <p class="a8"><span lang="EN-US">bootfile=uImage</span></p> <p class="a8"><span lang="EN-US">bootarg……
查看全文
发表于:2007-10-28 ┆
阅读(410)
┆
评论(0)
日记 [2007年10月26日]u-boot Samsung 的patch
发布一个patch,在附件中。该patch主要是针对Samsung flash芯片K9f1208U0B的体系结构信息进行设置。全部的修改该只有一行代码,但是分析工作是更加重要,以下的陈述针对flash芯片的移植工作的流程以及思考方向。<br> <br> 整个u-boot在arm体系环境下的引导过程是从lib_arm 目录下board.c void start_armboot (void)函数开始的。在其中第305行,见到如下函数的调用。<br> <br><table style="border: 1px solid rgb(153, 153, 153); width: 600px; font-size: 12px; height: 25px;" align="center"><tbody><tr><td>nand_init(); /* go init the NAND */</td></tr></tbody></table> <br> 该函数的主要作用就是进行flash芯片的初始化工作。该函数位drivers/nand_legacy<br>/nand_legacy.c 文件的第99行。实现代码很简短如下所示:<br><br><table style="border: 1px solid rgb(153, 153, 153); width: 600px; font-size: 12px; height: 25px;" align="center"><tbody><tr><td>void nand_init(void)<br>{<br>  ……
查看全文
发表于:2007-10-27 ┆
阅读(597)
┆
评论(0)
日记 [2007年10月25日]-> u-boot移植
所谓u-boot的移植,并非是个人独创,而是建立在<a href="http://piaoxiang.cublog.cn/" target="_blank">super</a>的patch基础之上。这位开发人员的开发思路非常的清晰,扎实稳固。这样的研究精神值得我去思考。<br> <br> 整个过程以浮躁开始,耽误了不少的时间,实际静心思考,有很多问题甚至称之不上为问题,问题要由面拆分为线,断其为点,之后再攻破不但可以集中战斗力,减少注意力的分散,并可以些点制定开发里程碑,提高开发积极性。<br><br> 该部分参考文章为如下连接引导:<br> <a href="http://www.cublog.cn/u/21948/showart_385046.html" target="_blank">成功移植U-boot-1.2.0到S3C2410</a><br> <br> 具体的应用,只要打上patch就可以使用。<br> <span style="color: rgb(255, 1, 2);">但是唯有一点点遭遇需要补充:</span><br> 首次烧写u-boot到flash后,运行u-boot在启动过程中会出现如下的信息提示:<br> *** Warning - bad CRC or NAND, using default environment<……
查看全文
发表于:2007-10-26 ┆
阅读(434)
┆
评论(0)
Linux文件查找命令find,xargs详述
<br><p><font id="00" size="4"><b>前言:关于find命令</b></font></p> <p> 由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限。</p> <p> 在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统)。</p> <p><font id="1" size="4"><b><br> 一、find 命令格式<br> </b></font></p> <p><font id="1.1" size="3"><b><br> 1、find命令的一般形式为;<br> </b></font></p> <div class="codeblock"><code>find pathname -options [-print -exec -ok ...]</code></div> <p><font id="1.2" size="3"><b><br> 2、find命令的参数;<br> </b></font></p> <div class="codeblock"><code>pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。<br> -print: find命令将匹配的文件输出到标准输出。<br> -exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;,注……
查看全文
发表于:2007-10-26 ┆
阅读(232)
┆
评论(0)