博客首页
注册
建议与交流
排行榜
加入友情链接
宝宝相册的专门空间
推荐
投诉
搜索:
帮助
jiuzhuaxiong
创造属于你的天空,有了问题可以跟大家一起讨论! 在LINUX和VXWORKS嵌入式开发中学到了一些经验跟大家分享!
jiuzhuaxiong.cublog.cn
管理博客
发表文章
留言
收藏夹
· 下载搜索
· 电子博客好友
博客圈
音乐
· 家乡音乐
相册
· 开发照片
导入文章
文章
· C语言技巧讨论
· 前辈经验
· 嵌入式LINUX开发
}
· AT9200 LINUX2.6.10内核移植
· S2C2410LINUX2.6.20内核移植
· U-BOOT移植
· AT91RM9200开发笔记
· LINUX交叉编译器的制作
· SHELL命令学习
· U-BOOT POWERPC移植
· UCLINUX开发笔记
· JFFS2文件系统制作
· 在嵌入式Linux系统中挂载 jffs2 根文件系统
· RAMDISK系统的制作
· LINUX系统启动
}
· LINUX驱动开发笔记
· LINUX内核移植
· ARM嵌入式开发
· MAKEFILE制作
· AVR在LINUX平台下开发
· 嵌入式VXWORKS开发
}
· VXWORKS BSP开发
· VXWORKS在AT91RM9200上的移植
· VXWORKS在MPC860上的移植
· VXWORKS启动过程
· VXWORKS多任务机制
· TCP IP 网络协议
首页
关于作者
姓名:HugBear2008 QQ:280051265 年龄:25 位置:中国.广州 E-MAIL:jiuzhuaxiong@163.com
||
<<
>>
||
我的分类
文章列表 - 嵌入式LINUX开发
嵌入式linux启动信息完全注释
<DIV> <TABLE style="BORDER-COLLAPSE: collapse" borderColor=#a5bd6b cellSpacing=1 cellPadding=0 width="100%" border=1> <TBODY> <TR> <TD align=middle> <TABLE style="BORDER-COLLAPSE: collapse; WORD-WRAP: break-word" cellSpacing=0 cellPadding=0 width="100%" border=0> <TBODY> <TR> <TD align=middle> <TABLE style="BORDER-COLLAPSE: collapse; WORD-WRAP: break-word" cellSpacing=0 cellPadding=0 width="100%" border=0> <TBODY> <TR> <TD> <DIV id=art style="MARGIN: 15px"> <DIV> <TABLE cellSpacing=0 cellPadding=0 width="100%" border=0> <TBODY> <TR> <TD align=middle height=25><FONT color=#ff9900 size=4><B>嵌入式linux启动信息完全注释(自学存档用)</B></FONT></B></FONT><BR></TD></TR> <TR> <TD bgColor=#d2dee2 height=1></TD></TR> <TR> <TD bgColor=#ffffff height=1></TD></TR> <TR> <TD align=middle> <TABLE cellSpacing=0 cellPadding=0 width="100%" border=0> <TBODY> <TR> <TD width="100%"> <P width=100%><FONT size=3><B>嵌入式linux启动信息完全注释</B><BR>from:http://www.embedlin……
查看全文
发表于:2008-06-03 ┆
阅读(68)
┆
评论(0)
嵌入式linux启动信息完全注释
<DIV> <TABLE style="BORDER-COLLAPSE: collapse" borderColor=#a5bd6b cellSpacing=1 cellPadding=0 width="100%" border=1> <TBODY> <TR> <TD align=middle> <TABLE style="BORDER-COLLAPSE: collapse; WORD-WRAP: break-word" cellSpacing=0 cellPadding=0 width="100%" border=0> <TBODY> <TR> <TD align=middle> <TABLE style="BORDER-COLLAPSE: collapse; WORD-WRAP: break-word" cellSpacing=0 cellPadding=0 width="100%" border=0> <TBODY> <TR> <TD> <DIV id=art style="MARGIN: 15px"> <DIV> <TABLE cellSpacing=0 cellPadding=0 width="100%" border=0> <TBODY> <TR> <TD align=middle height=25><FONT color=#ff9900 size=4><B>嵌入式linux启动信息完全注释(自学存档用)</B></FONT></B></FONT><BR></TD></TR> <TR> <TD bgColor=#d2dee2 height=1></TD></TR> <TR> <TD bgColor=#ffffff height=1></TD></TR> <TR> <TD align=middle> <TABLE cellSpacing=0 cellPadding=0 width="100%" border=0> <TBODY> <TR> <TD width="100%"> <P width=100%><FONT size=3><B>嵌入式linux启动信息完全注释</B><BR>from:http://www.embedlinux.cn/ShowPost.asp?ThreadID=377<BR><BR></P></FONT> <P width=100%><B><FONT size=3>摘要</FONT></B></P> <P width=100%><FONT size=3>我们在这里讨论的是对嵌入式linux系统的启动过程的输出信息的注释,通过我们的讨论,大家会对嵌入式linux启动过程中出现的、以前感觉熟悉的、但却又似是而非的东西有一个确切的了解,并且能了解到这些输出信息的来龙去脉。</FONT></P> <P width=100%><FONT size=3>嵌入式linux的启动信息是一个很值得我们去好好研究的东西,它能将一幅缩影图呈现在我们面前,来指导我们更加深入地理解linux内核。</FONT></P> <P width=100%><FONT size=3></FONT> </P> <P width=100%><FONT size=3><B>关键字</B>:linux,嵌入式,启动,bootloader</FONT></P> <P width=100%><B><FONT size=3>正文</FONT></B></P> <P width=100%><FONT size=3>作为一名嵌入系统开发者,你一定遇到过下面的情景:</FONT></P> <P width=100%><FONT size=3>在某论坛上看到一篇帖子,上面贴着嵌入式linux开发板启动时的有关信息,然后大家在帖子里讨论着这个启动过程中出现的问题,随机举例如下:</FONT></P> <P width=100%> <TABLE cellSpacing=0 cellPadding=0 border=1> <TBODY> <TR> <TD vAlign=top width=657> <P><FONT size=3>Linux version 2.4.20-uc0 (root@Local) (gcc version 2.95.3 <BR>20010315 (release)(ColdFire patches - 20010318 from http://f <BR>(uClinux XIP and shared lib patches from http://www.snapgear.com/)) #20 三 6月 1 <BR>8 00:58:31 CST 2003 <BR>Processor: Samsung S3C4510B revision 6 <BR>Architecture: SNDS100 <BR>On node 0 totalpages: 4096 <BR>zone(0): 0 pages. <BR>zone(1): 4096 pages. <BR>zone(2): 0 pages. <BR>Kernel command line: root=/dev/rom0 <BR>Calibrating delay loop... 49.76 BogoMIPS <BR>Memory: 16MB = 16MB total <BR>Memory: 14348KB available (1615K code, 156K data, 40K init) <BR>Dentry cache hash table entries: 2048 (order: 2, 16384 bytes) <BR>Inode cache hash table entries: 1024 (order: 1, <BR>Mount-cache hash table entries: 512 (order: 0, 4096 bytes) <BR>Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes) <BR>Page-cache hash table entries: 4096 (order: 2, 16384 bytes) <BR>POSIX conformance testing by UNIFIX <BR>Linux NET4.0 for Linux 2.4 <BR>Based upon Swansea University Computer Society NET3.039 <BR>Initializing RT netlink socket <BR>Starting kswapd <BR>Samsung S3C4510 Serial driver version 0.9 (2001-12-27) with no serial options en <BR>abled <BR>ttyS00 at 0x3ffd000 (irq = 5) is a S3C4510B <BR>ttyS01 at 0x3ffe000 (irq = 7) is a S3C451 <BR>Blkmem copyright 1998,1999 D. Jeff Dionne <BR>Blkmem copyright 1998 Kenneth Albanowski <BR>Blkmem 1 disk images: <BR>0: BE558-1A5D57 [VIRTUAL BE558-1A5D57] (RO) <BR>RAMDISK driver initialized: 16 RAM disks of 1024K size 1024 blocksize <BR>Samsung S3C4510 Ethernet driver version 0.1 (2002-02-20) <mac@os.nctu.edu.tw> <BR>eth0: 00:40:95:36:35:34 <BR>NET4: Linux TCP/IP 1.0 for NET4.0 <BR>IP Protocols: ICMP, UDP, TCP <BR>IP: routing cache hash table of 512 buckets, 4Kbytes <BR>TCP: Hash tables configured (established 1024 bind 1024) <BR>VFS: Mounted root (romfs <BR>Freeing init memory: 40K</FONT></P></TD></TR></TBODY></TABLE></P> <P width=100%><FONT size=3>上面的这些输出信息,也可能包括你自己正在做的嵌入式linux开发板的输出信息,其中的每一行,每一个字的含义,你是否深究过,或者说大部分的含义你能确切地知道的?本人想在这里结合本人在实践中一些体会来和广大嵌入式linux的开发者一起读懂这些信息。</FONT></P> <P width=100%><FONT size=3>我们在这里将以一个真实的嵌入式linux系统的启动过程为例,来分析这些输出信息。启动信息的原始内容将用标记标出,以区别与注释。</FONT></P> <P width=100%><FONT size=3></FONT> </P> <P width=100%><FONT size=3>嵌入式linux的启动主要分为两个阶段:</FONT></P> <P width=100%><FONT size=3>① 第一部分bootloader启动阶段</FONT></P> <P width=100%><FONT size=3>② 第二部分linux 内核初始化和启动阶段</FONT></P> <P width=100%><FONT size=3>第一节:start_kernel</FONT></P> <P width=100%><FONT size=3>第二节:用户模式( user_mode )开始,start_kernel结束</FONT></P> <P width=100%><FONT size=3>第三节:加载linux内核完毕,转入cpu_idle进程</FONT></P> <P width=100%><B><FONT size=3></FONT></B> </P> <P align=center width=100%><FONT size=3><B>第一部分 : bootloader</B><B>启动</B></FONT></P> <P width=100%> <TABLE cellSpacing=0 cellPadding=0 border=1> <TBODY> <TR> <TD vAlign=top width=657> <P><FONT size=3>Boot loader v0.12</FONT></P> <P><FONT size=3>NOTE: this boot loader is designed to boot kernels made with the</FONT></P> <P><FONT size=3>2.4.xx releases</FONT></P> <P><FONT size=3>bootloader for XV</FONT></P> <P><FONT size=3>Built at Nov 20 2005 10:12:35</FONT></P></TD></TR></TBODY></TABLE></P> <P width=100%><FONT size=3>Bootloader头信息,版本,编译时间等,这个因不同的bootloader的设计而有所不同,由此你能看出bootloader的版本信息,有很多使用的是通用的bootloader,如u-boot,redboot等。</FONT></P> <P width=100%> <TABLE cellSpacing=0 cellPadding=0 border=1> <TBODY> <TR> <TD vAlign=top width=657> <P><FONT size=3>Loaded to 0x90060000</FONT></P></TD></TR></TBODY></TABLE></P> <P width=100%><FONT size=3>将bootloader加载到内存ram中的0x90060000处,即将bootloader加载到内存的高端地址处。</FONT></P> <P width=100%><FONT size=3>Linux内核将被bootloader加载到0x90090000处。</FONT></P> <P width=100%><FONT size=3></FONT> </P> <P width=100%> <TABLE cellSpacing=0 cellPadding=0 border=1> <TBODY> <TR> <TD vAlign=top width=657> <P><FONT size=3>Found boot configuration</FONT></P></TD></TR></TBODY></TABLE></P> <P width=100%><FONT size=3>查找到了启动boot的配置信息</FONT></P> <P width=100%><FONT size=3></FONT> </P> <P width=100%> <TABLE cellSpacing=0 cellPadding=0 border=1> <TBODY> <TR> <TD vAlign=top width=657> <P><FONT size=3>Booted from parallel flash</FONT></P></TD></TR></TBODY></TABLE></P> <P width=100%><FONT size=3>从flash中启动代码,此处的flash为并行闪存。Flash的分类列举如下:</FONT></P> <P width=100%><FONT size=3>闪存分三类:并行,串行,不可擦除。</FONT></P> <P width=100%><FONT size=3>①并行Parallel flash</FONT></P> <P width=100%><FONT size=3> NOR Flash,Intel于1988年发明.随机读取的速度比较快,随机按字节写,每次可以传输8Bit。一般适合应用于数据/程序的存贮应用中.NOR还可以片内执行(execute-in-place)XIP.写入和擦除速度很低。</FONT></P> <P width=100%><FONT size=3> NAND Flash,1989年,东芝公司发明.是以块和页为单位来读写的,不能随机访问某个指定的点.因而相对来说读取速度较慢,而擦除和写入的速度则比较快,每次可以传输16Bit,一般适用在大容量的多媒体应用中,容量大。如:CF,SM.</FONT></P> <P width=100%><FONT size=3>②串行Serial Flash 是以字节进行传输的,每次可以传输1-2Bit.如:MMC,SD,MS卡.串行闪存器件体积小,引脚也少,成本相对也更低廉。 </FONT></P> <P width=100%><FONT size=3>③不可擦除Mask Rom Flash的特点是一次性录入数据,具有不可更改性,经常运用于游戏和需版权保护文件等的录入。其显著特点是成本低。 </FONT></P> <P width=100%><FONT size=3><B>注意:</B>任何flash器件的写入操作只能在空或已擦除的单元内进行,所以大多数情况下,在进行写入操作之前必须先执行擦除。NAND器件执行擦除操作是十分简单的,而NOR则要求在进行擦除前先要将目标块内所有的位都写为0。</FONT></P> <P width=100%><FONT size=3>从上面的信息,我们可以对flash类型特点有个比较明确的了解。</FONT></P> <P width=100%><FONT size=3></FONT> </P> <P width=100%> <TABLE cellSpacing=0 cellPadding=0 border=1> <TBODY> <TR> <TD vAlign=top width=657> <P><FONT size=3>CPU clock rate: 200 MHz</FONT></P></TD></TR></TBODY></TABLE></P> <P width=100%><FONT size=3>开发板上所使用的CPU的主频为200MHZ.</FONT></P> <P width=100%><FONT size=3></FONT> </P> <P width=100%> <TABLE cellSpacing=0 cellPadding=0 border=1> <TBODY> <TR> <TD vAlign=top width=657> <P><FONT size=3>DRAM size is 128MB (128MB/0MB)</FONT></P></TD></TR></TBODY></TABLE></P> <P width=100%><FONT size=3>动态内存ram大小为128M。这里我们列举一下内存的类型及工作原理。</FONT></P> <P width=100%><FONT size=3>根据内存的工作原理可以划分出两种内存:DRAM和SRAM</FONT></P> <P width=100%><FONT size=3>①DRAM表示动态随机存取存储器。这是一种以电荷形式进行存储的半导体存储器。DRAM中的每个存储单元由一个晶体管和一个电容器组成。数据存储在电容器中。电容器会由于漏电而导致电荷丢失,因而DRAM器件是不稳定的。为了将数据保存在存储器中,DRAM器件必须有规律地进行刷新。 </FONT></P> <P width=100%><FONT size=3>②SRAM是静态的,因此只要供电它就会保持一个值。一般而言,SRAM 比DRAM要快,这是因为SRAM没有刷新周期。每个SRAM存储单元由6个晶体管组成,而DRAM存储单元由一个晶体管和一个电容器组成。相比而言,DRAM比SRAM每个存储单元的成本要高。照此推理,可以断定在给定的固定区域内DRAM的密度比SRAM 的密度要大。 </FONT></P> <P width=100%><FONT size=3></FONT> </P> <P width=100%><FONT size=3>SRAM常常用于高速缓冲存储器,因为它有更高的速率;而DRAM常常用于PC中的主存储器,因为其拥有更高的密度。 </FONT></P> <P width=100%><FONT size=3>在嵌入式系统中使用DRAM内存的设计比较广泛。</FONT></P> <P width=100%><FONT size=3></FONT> </P> <P width=100%><FONT size=3>地址辅助说明:</FONT></P> <P width=100%><FONT size=3>先说明一下内存地址数字情况,主要是为了方便记忆。</FONT></P> <P width=100%><FONT size=3>可以访问的内存为4G。</FONT></P> <P width=100%><FONT size=3>0x40000000是1GB处;0x00040000是256K处,0x00020000是128K处,0x90000000是2GB多的地方。</FONT></P> <P width=100%><FONT size=3>1M->0x00100000, </FONT></P> <P width=100%><FONT size=3>2M->0x00200000,</FONT></P> <P width=100%><FONT size=3>8M->0x00800000</FONT></P> <P width=100%><FONT size=3>16M->0x01000000, </FONT></P> <P width=100%><FONT size=3>32M->0x02000000</FONT></P> <P width=100%><FONT size=3>256M->0x10000000</FONT></P> <P width=100%><FONT size=3>64K->0x
查看全文
发表于:2008-06-03 ┆
阅读(66)
┆
评论(0)
嵌入式linux启动信息完全注释
<DIV> <TABLE style="BORDER-COLLAPSE: collapse" borderColor=#a5bd6b cellSpacing=1 cellPadding=0 width="100%" border=1> <TBODY> <TR> <TD align=middle> <TABLE style="BORDER-COLLAPSE: collapse; WORD-WRAP: break-word" cellSpacing=0 cellPadding=0 width="100%" border=0> <TBODY> <TR> <TD align=middle> <TABLE style="BORDER-COLLAPSE: collapse; WORD-WRAP: break-word" cellSpacing=0 cellPadding=0 width="100%" border=0> <TBODY> <TR> <TD> <DIV id=art style="MARGIN: 15px"> <DIV> <TABLE cellSpacing=0 cellPadding=0 width="100%" border=0> <TBODY> <TR> <TD align=middle height=25><FONT color=#ff9900 size=4><B>嵌入式linux启动信息完全注释(自学存档用)</B></FONT></B></FONT><BR></TD></TR> <TR> <TD bgColor=#d2dee2 height=1></TD></TR> <TR> <TD bgColor=#ffffff height=1></TD></TR> %3
查看全文
发表于:2008-06-03 ┆
阅读(70)
┆
评论(0)
嵌入式linux启动信息完全注释
<DIV> <TABLE style="BORDER-COLLAPSE: collapse" borderColor=#a5bd6b cellSpacing=1 cellPadding=0 width="100%" border=1> <TBODY> <TR> <TD align=middle> <TABLE style="BORDER-COLLAPSE: collapse; WORD-WRAP: break-word" cellSpacing=0 cellPadding=0 width="100%" border=0> <TBODY> <TR> <TD align=middle> <TABLE style="BORDER-COLLAPSE: collapse; WORD-WRAP: break-word" cellSpacing=0 cellPadding=0 width="100%" border=0> <TBODY> <TR> <TD> <DIV id=art style="MARGIN: 15px"> <DIV> <TABLE cellSpacing=0 cellPadding=0 width="100%" border=0> <TBODY> <TR> <TD align=middle height=25><FONT color=#ff9900 size=4><B>嵌入式linux启动信息完全注释(自学存档用)</B></FONT></B></FONT><BR></TD></TR> <TR> <TD bgColor=#d2dee2 height=1></TD></TR> <TR> <TD bgColor=#ffffff height=1></TD></TR> <TR> <TD align=middle> <TABLE cellSpacing=0 cellPadding=0 width="100%" border=0> <TBODY> <TR> <TD width="100%"> <P width=100%><FONT size=3><B>嵌入式linux启动信息完全注释</B><BR>from:http://www.embedlin……
查看全文
发表于:2008-06-03 ┆
阅读(45)
┆
评论(0)
嵌入式linux启动信息完全注释
<DIV> <TABLE style="BORDER-COLLAPSE: collapse" borderColor=#a5bd6b cellSpacing=1 cellPadding=0 width="100%" border=1> <TBODY> <TR> <TD align=middle> <TABLE style="BORDER-COLLAPSE: collapse; WORD-WRAP: break-word" cellSpacing=0 cellPadding=0 width="100%" border=0> <TBODY> <TR> <TD align=middle> <TABLE style="BORDER-COLLAPSE: collapse; WORD-WRAP: break-word" cellSpacing=0 cellPadding=0 width="100%" border=0> <TBODY> <TR> <TD> <DIV id=art style="MARGIN: 15px"> <DIV> <TABLE cellSpacing=0 cellPadding=0 width="100%" border=0> <TBODY> <TR> <TD align=middle height=25><FONT color=#ff9900 size=4><B>嵌入式linux启动信息完全注释(自学存档用)</B></FONT></B></FONT><BR></TD></TR> <TR> <TD bgColor=#d2dee2 height=1></TD></TR> <TR> <TD bgColor=#ffffff height=1></TD></TR> <TR> <TD align=middle> <TABLE cellSpacing=0 cellPadding=0 width="100%" border=0> <TBODY> <TR> <TD width="100%"> <P width=100%><FONT size=3><B>嵌入式linux启动信息完全注释</B><BR>from:http://www.embedlin……
查看全文
发表于:2008-06-03 ┆
阅读(67)
┆
评论(0)
制作JFFS2 IMG
<DIV><SPAN class=bold>如何创建JFFS2 image</SPAN><BR><BR> <DIV style="FONT-SIZE: 12px">JFFS2是redhat公司开发的一种文件系统,现在被普遍用在嵌入式设备的文件系统组织中.在handheld.org中看到他们的项目中也是使用JFFS的.<BR> 抽空尝试了一下JFFS2,以下是我学到的,share:<BR><BR> 1.下载image打包工具<BR> mkfs.jffs2<BR>JFFS2 filesystem image utility mkfs.jffs2.x86 (md5sum) and mkfs.jffs2.arm (md5sum) from the Memory Technology Device (MTD) Subsystem for Linux built from CVS source from June 23, 2001 on Linux for the x86 and Strong Arm processors. Use this to create jffs2 images to upload to devices like the. <BR> 在使用前需要测试系统是否支持md5sum.(我还不是很清除这个)<BR>2007.12.29, md5sum是用来检测下载的包是否正确,就是"校验"一下<BR>____________________________________________________________<BR>[root@mic sourccode]# cp root.jffs2 /tftpboot/<BR>[root@mic sourccode]# md5sum --check mkfs.jffs2.x86.md5sum<BR>mkfs.jffs2.x86:……
查看全文
发表于:2008-06-03 ┆
阅读(116)
┆
评论(0)
AT91sam9263EK使用NFS根文件系统
<DIV> <TABLE style="BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=0 width="96%" border=0> <TBODY> <TR> <TD width="100%" bgColor=#f3f3f3></TD> <TD width=7 height=7><IMG alt="" src="http://blog.chinaunix.net/templates/tech/images/w_right_top.gif" border=0></TD></TR> <TR> <TD align=middle bgColor=#f3f3f3 colSpan=3> <TABLE style="BORDER-COLLAPSE: collapse; WORD-WRAP: break-word" cellSpacing=0 cellPadding=0 width="100%" border=0> <TBODY> <TR> <TD align=middle height=25></B></FONT><BR></TD></TR> <TR> <TD bgColor=#d2dee2 height=1></TD></TR> <TR> <TD bgColor=#ffffff height=1></TD></TR> <TR> <TD align=middle> <TABLE style="BORDER-COLLAPSE: collapse; WORD-WRAP: break-word" cellSpacing=0 cellPadding=0 width="100%" border=0> <TBODY> <TR> <TD width="100%"> <DIV id=art style="MARGIN: 15px" width="100%">AT91sam9263EK使用NFS根文件系统<BR>OneWind 发表于 2007-5-29 15:36:00 <BR>AT91sam9263EK使用NFS根文件系统<BR>张驿风<BR>2007-5-28<BR>cbuilder@peoplemail.com.cn<BR>一. t91sam9……
查看全文
发表于:2008-06-03 ┆
阅读(84)
┆
评论(0)
嵌入式Linux系统中挂载 jffs2 根文件系统
<DIV> <TABLE style="BORDER-COLLAPSE: collapse; WORD-WRAP: break-word" cellSpacing=0 cellPadding=0 width="100%" border=0> <TBODY> <TR> <TD align=middle height=25></B></FONT><STRONG><FONT color=#02368d></FONT></STRONG><BR></TD></TR> <TR> <TD bgColor=#d2dee2 height=1></TD></TR> <TR> <TD bgColor=#ffffff height=1></TD></TR> <TR> <TD align=middle> <TABLE style="BORDER-COLLAPSE: collapse; WORD-WRAP: break-word" cellSpacing=0 cellPadding=0 width="100%" border=0> <TBODY> <TR> <TD width="100%"> <DIV id=art style="MARGIN: 15px" width="100%"> <P align=center><STRONG><FONT color=#0000ff size=4>在嵌入式Linux系统中挂载 jffs2 根文件系统</FONT></STRONG></P> <DIV>我已经在《<FONT color=#02368d><FONT size=2><STRONG><U>构建基本的嵌入式Linux根文件系统</U></STRONG><FONT color=#000000>》介绍了</FONT></FONT></FONT>如何建立基本的嵌入式Linux根文件系统,并用NFS挂载成功。如果要以挂载JFFS2格式的根文件系统,其基本方法就是<FONT color=#0000ff size=3>将这个建立好的根文件系统制作成jffs2镜像,烧到FLASH中……
查看全文
发表于:2008-06-03 ┆
阅读(130)
┆
评论(0)
Linux驱动开发学习的一些必要步骤
<DIV> <TABLE style="BORDER-COLLAPSE: collapse; WORD-WRAP: break-word" cellSpacing=0 cellPadding=0 width="100%" border=0> <TBODY> <TR> <TD align=middle height=25></B></FONT><BR></TD></TR> <TR> <TD bgColor=#d2dee2 height=1></TD></TR> <TR> <TD bgColor=#ffffff height=1></TD></TR> <TR> <TD align=middle> <TABLE style="BORDER-COLLAPSE: collapse; WORD-WRAP: break-word" cellSpacing=0 cellPadding=0 width="100%" border=0> <TBODY> <TR> <TD width="100%"> <DIV id=art style="MARGIN: 15px" width="100%"> <DIV> 1. 学会写简单的makefile <P> 2. 编一应用程序,可以用makefile跑起来</P> <P> 3. 学会写驱动的makefile</P> <P> 4. 写一简单char驱动,makefile编译通过,可以insmod, lsmod, rmmod. 在驱动的init函数里打印hello world, insmod后应该能够通过dmesg看到输出。</P> <P> 5. 写一完整驱动, 加上read, write, ioctl, polling等各种函数的驱动实现。 在ioctl里完成从用户空间向内核空间传递结构体的实现。</P> <P>&n……
查看全文
发表于:2008-06-03 ┆
阅读(75)
┆
评论(0)
arm开发经验[转载]
<DIV> <TABLE style="BORDER-COLLAPSE: collapse; WORD-WRAP: break-word" cellSpacing=0 cellPadding=0 width="100%" border=0> <TBODY> <TR> <TD align=middle height=25></B></FONT><BR></TD></TR> <TR> <TD bgColor=#d2dee2 height=1></TD></TR> <TR> <TD bgColor=#ffffff height=1></TD></TR> <TR> <TD align=middle> <TABLE style="BORDER-COLLAPSE: collapse; WORD-WRAP: break-word" cellSpacing=0 cellPadding=0 width="100%" border=0> <TBODY> <TR> <TD width="100%"> <DIV id=art style="MARGIN: 15px" width="100%"> <DIV> <P><FONT size=2>第一章 STARTUP <BR>1 ARM的启动 <BR>一般的嵌入式系统在主程序执行之前都需要执行一些初始化的过程以创造嵌入式程序运行的环境,尤其是一些高级的嵌入式系统,由于核心芯片使用内存映射、内存保护等机制以及编程使用高级语言C,C++甚至JAVA语言,都需要先创建一个适合程序运行的硬件环境,然后初始化或者配置或者剪裁run-time library, 这些工作都必须在主程序运行前完成,所以一个startup程序或者程序组对于一个嵌入式系统来说是非常重要的。要编写startup程序,需要对编译器、链接器和汇编器的细节有一……
查看全文
发表于:2008-06-03 ┆
阅读(67)
┆
评论(0)
sd卡驱动移植到2.6.24内核时出错
<DIV> <TABLE style="BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=0 width="100%" align=center border=0> <TBODY> <TR> <TD align=middle bgColor=#bbf0ff> </TD> <TR> <TD> <TABLE style="BORDER-COLLAPSE: collapse" borderColor=#bbf0ff cellSpacing=1 cellPadding=0 width="100%" border=1> <TBODY> <TR> <TD align=middle> <TABLE style="BORDER-COLLAPSE: collapse; WORD-WRAP: break-word" cellSpacing=0 cellPadding=0 width=650 border=0> <TBODY> <TR> <TD align=middle> <TABLE style="BORDER-COLLAPSE: collapse; WORD-WRAP: break-word" cellSpacing=0 cellPadding=0 width="100%" border=0> <TBODY> <TR> <TD width=650> <DIV id=art style="MARGIN: 15px"> <DIV>[root@localhost6 Kernel]# make zImage<BR> CHK include/linux/version.h<BR>make[1]: “include/asm-arm/mach-types.h”是最新的。<BR> CHK include/linux/utsrelease.h<BR> CALL scripts/checksyscalls.sh<BR><stdin>:1097:2: warning: #warning syscall fadv……
查看全文
发表于:2008-06-03 ┆
阅读(108)
┆
评论(0)
嵌入式系统中常用文件系统的制作总结
<DIV> <TABLE style="BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=0 width="100%" align=center border=0> <TBODY> <TR> <TD align=middle bgColor=#fed0e4> </TD> <TR> <TD> <TABLE style="BORDER-COLLAPSE: collapse" borderColor=#fed0e4 cellSpacing=1 cellPadding=0 width="100%" border=1> <TBODY> <TR> <TD align=middle> <TABLE style="BORDER-COLLAPSE: collapse; WORD-WRAP: break-word" cellSpacing=0 cellPadding=0 width="100%" border=0> <TBODY> <TR> <TD align=middle> <TABLE style="BORDER-COLLAPSE: collapse; WORD-WRAP: break-word" cellSpacing=0 cellPadding=0 width="100%" border=0> <TBODY> <TR> <TD> <DIV id=art style="MARGIN: 15px"> <DIV><STRONG>Creating a Compressed RAM Disk</STRONG> <DIV>a) Decide on the RAM disk size that you want. Say 8 MB for this example.</DIV> <DIV><BR> dd if=/dev/zero of=ramdisk bs=1k count=8192</DIV> <DIV> </DIV> <DIV>b) Make a filesystem on it. Say ext2fs for this example.</DIV> <DIV> </DIV> <DIV……
查看全文
发表于:2008-05-18 ┆
阅读(141)
┆
评论(0)
和使用jffs2文件系统如何制作和使用jffs2文件系统
<DIV> <TABLE style="BORDER-COLLAPSE: collapse; WORD-WRAP: break-word" cellSpacing=0 cellPadding=0 width=760 align=center bgColor=#ffffff border=0> <TBODY> <TR> <TD align=middle height=30><FONT style="FONT-SIZE: 14pt" color=#02368d><B>如何制作</B></FONT></TD></TR> <TR> <TD align=middle height=9><IMG height=9 alt="" src="http://blog.chinaunix.net/templates/default/images/right_line.gif" width=502 border=0></TD></TR> <TR> <TD align=middle> <TABLE style="BORDER-COLLAPSE: collapse; WORD-WRAP: break-word" cellSpacing=0 cellPadding=0 width=740 border=0> <TBODY> <TR> <TD width=740> <DIV id=art style="MARGIN: 15px" width="560"><B><SPAN style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体">如何制作和使用<SPAN lang=EN-US>jffs2</SPAN>文件系统<BR><BR><SPAN lang=EN-US><?XML:NAMESPACE PREFIX = O /><O:P></O:P></SPAN></SPAN></B> <P class=MsoNormal style="TEXT-INDENT: 26.1pt; TEXT-ALIGN: left" align=left><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">本文主要介绍如何在<SPAN lang=EN-US>AT91SAM9261EK……
查看全文
发表于:2008-05-18 ┆
阅读(198)
┆
评论(0)
LINUX 2.6 内核下多C文件模块编译方法
<DIV> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align=center><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"></SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></B> </P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align=center><FONT size=3><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt"><SPAN style="mso-tab-count: 10"><FONT face="Times New Roman">  ……
查看全文
发表于:2008-05-04 ┆
阅读(191)
┆
评论(1)
UBOOT在普光ARM-9200嵌入式开发板过程
<DIV> <TABLE style="BORDER-COLLAPSE: collapse; WORD-WRAP: break-word" cellSpacing=0 cellPadding=0 width="100%" border=0> <TBODY> <TR> <TD align=middle height=25></B></FONT><BR></TD></TR> <TR> <TD bgColor=#d2dee2 height=1></TD></TR> <TR> <TD bgColor=#ffffff height=1></TD></TR> <TR> <TD align=middle> <TABLE style="BORDER-COLLAPSE: collapse; WORD-WRAP: break-word" cellSpacing=0 cellPadding=0 width="100%" border=0> <TBODY> <TR> <TD width="100%"> <DIV id=art style="MARGIN: 15px" width="100%"> <P>u-boot是德国DENX小组的开发用于多种嵌入式CPU的bootloader程序,在LINUX下可以通过CVS来得到当前正在开发的u-boot软件。当前版本号:u-boot 1.0.2,见include/version.h中的定义。 </P> <P></P> <P>#cvs –d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/u-boot login</P> <P>#cvs –z3 –d :pserver:anonymous@cvs.sourceforge.net:/cvsroot/u-boot checkout –P u-boot</P> <P>本文讲述S3C2410中u-boot的移植过程:S3C2410的硬件配置是:</P> <P>l CPU:S3C2410</P> <P>lNOR: 16M,INTEL EP28F128J3A</P> <P>lSD……
查看全文
发表于:2008-05-01 ┆
阅读(183)
┆
评论(0)
从零构建一个400K的嵌入式Linux根文件系统UCFS(转载)
<table style="border-collapse: collapse;" border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td align="center" height="25"><br> </td></tr> <tr><td bgcolor="#d2dee2" height="1"><br></td></tr> <tr><td bgcolor="#ffffff" height="1"><br></td></tr> <tr><td align="center"> <table style="border-collapse: collapse;" border="0" cellpadding="0" cellspacing="0" width="100%"> <tbody><tr><td width="100%"> <div id="art" width="100%" style="margin: 15px;"> <font size="3"><font face="楷体_GB2312 ">在查阅了无数资料后,基于buildroot、uclibc和busybox的根文件系统已经建立起来了,在我学习嵌入式的过程中,得到了CU广大坛友的支持,所以,为了回馈CU,为了响应开源精神,我也将我的笔记整理成文档与大家分享,如有疏漏或错误,敬请批评指正。 </font><br> <br> ++++++++++++++++++++++++++++++++++++++++ <br> 作者:惆怅的桶(tongmvp)<br> 日期:2008-2-22<br> 版权声明:转载请注明出处 <br> ++++++++++++++++++++++++++++++++++++++++ <br> <br> <b>从零构建一个400K的嵌入式Linux根文件系统UCFS</b><br> <br>……
查看全文
发表于:2008-04-23 ┆
阅读(246)
┆
评论(0)
at91rm9200移植u-boot
<DIV><STRONG><BR><BR></STRONG>1 U-BOOT简介<BR> U-BOOT是由德国的工程师Wolfgang Denk从8XXROM代码发展而来的,它支持很多处理器,比如PowerPC、ARM、MIPS和x86。目前,U-BOOT源代码在sourceforge网站的社区服务器中,Internet上有一群自由开发人员对其进行维护和开发,它的项目主页是<BR>[url=http://sourceforge.net/projects/U-BOOT]http://sourceforge.net/projects/U-BOOT[/url]<BR>。U-BOOT的最新版本源代码可以在Sourceforge的CVS服务器中匿名获得。<BR>#cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/U-BOOT login<BR>#cvs -z6 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/U-BOOT \ co -P modulename<BR>1.1 U-BOOT源代码目录结构<BR>◆ board:和一些已有开发板有关的文件,比如Makefile和u-boot.lds等都和具体开发板的硬件和地址分配有关。<BR>◆ common:与体系结构无关的文件,实现各种命令的C文件。<BR>◆ cpu:CPU相关文件,其中的子目录都是以U-BOOT所支持的CPU为名,比如有子目录arm926ejs、mips、mpc8260和nios等,每个特定的子目录中都包括cpu.c和interrupt.c,start.S。其中cpu.c初始化CPU、设置指令Cache和数据Cache等;interrupt……
查看全文
发表于:2008-04-21 ┆
阅读(220)
┆
评论(0)
串口Xmodem协议的发送数据 程序
<font style="font-size: 14pt;" color="#d52847"><b><br></b></font> <div><font color="#767676">/*</font></div> <div><font color="#767676">博主说明:此文章收录纯属是从完善本xmodem题目以其系统性考虑。由于下面代码只有发送部分,所以供</font></div> <div><font color="#767676">读者参考程序设计的框架更有意义。</font></div> <div><font color="#767676">*/</font></div> <div> </div> <div> </div> <div> </div> <div><font color="#767676"><font color="#c7c7c7">/**********************************************************<br>日期:2007-05-21<br>编写:李猛<br>功能:编程实现简化<b style="color: black; background-color: rgb(255, 255, 102);">Xmodem协议</b>,为实现标准的<b style="color: black; background-color: rgb(255, 255, 102);">Xmodem协议</b>做基础<br>备注:此程序中430为发送方<br>说明:1.程序开始时,会循环等待NAK的到来,只要收到的不是NAK,<br> 就会一直等待下去,直到收到了NAK,才开始数据的发送;<br>  ……
查看全文
发表于:2008-04-18 ┆
阅读(140)
┆
评论(0)
AT91RM9200读取ADS7843触摸屏源代码
<table style="border-collapse: collapse;" border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td align="center" height="25"><br> </td></tr> <tr><td bgcolor="#d2dee2" height="1"><br></td></tr> <tr><td bgcolor="#ffffff" height="1"><br></td></tr> <tr><td align="center"> <table style="border-collapse: collapse;" border="0" cellpadding="0" cellspacing="0" width="100%"> <tbody><tr><td width="100%"> <div id="art" width="100%" style="margin: 15px;"> <div> <table bgcolor="#cccccc" border="1" bordercolor="#000000" cellpadding="3" cellspacing="2" width="100%"> <tbody> <tr> <td><font size="2"> <font face="Courier">AT91RM9200读取ADS7843触摸屏源代码(gliet</font></font><a href="http://www.daxia.com/bbs/http%29" target="_blank"><font color="#0000ff" face="Courier" size="2">http)</font></a><br><font face="Courier" size="2">//--------------------------------------------------------------<br>typedef struct __xTouch_value<br>{<br> uint16 x;<br>  ……
查看全文
发表于:2008-04-18 ┆
阅读(152)
┆
评论(0)
ARM中的异常和中断
<font style="font-size: 14pt;" color="#d52847"><b><br></b></font> <div id="art" style="margin: 15px;"> <div><br><font size="3"> <a href="http://www.wangzj.cn/MCU/ramyichang.htm">http://www.wangzj.cn/MCU/ramyichang.htm</a> </font></div> <div> </div> <div> </div> <div><font size="3"> A<span class="style56">RM中的异常和中断</span></font></div> <p align="left"> ARM处理器中主要有7个异常(2个中断异常):<br><br> <strong>1、复位异常</strong>;在以ARM为核的单片机中,常把下列事件作为引起复位的原因。<br><br> • 上电复位:在上电后,复位使内部达到预定的状态,特别是程序跳到初始入口;<br><br> • 复位引脚上的复位脉冲:这是由外部其他控制信号引起的;<br><……
查看全文
发表于:2008-04-18 ┆
阅读(116)
┆
评论(0)