﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-linansengling-随笔分类-ARM and Liunx</title><link>http://www.blogjava.net/linansengling/category/15125.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 02 Mar 2007 06:59:54 GMT</lastBuildDate><pubDate>Fri, 02 Mar 2007 06:59:54 GMT</pubDate><ttl>60</ttl><item><title>嵌入式系统入门</title><link>http://www.blogjava.net/linansengling/archive/2006/11/06/79394.html</link><dc:creator>周先有</dc:creator><author>周先有</author><pubDate>Mon, 06 Nov 2006 06:09:00 GMT</pubDate><guid>http://www.blogjava.net/linansengling/archive/2006/11/06/79394.html</guid><wfw:comment>http://www.blogjava.net/linansengling/comments/79394.html</wfw:comment><comments>http://www.blogjava.net/linansengling/archive/2006/11/06/79394.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/linansengling/comments/commentRss/79394.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/linansengling/services/trackbacks/79394.html</trackback:ping><description><![CDATA[这久以来听了我的一个老师关于后PC时代的到来，对嵌入式系统产生了极大兴趣，投入了很大的精力在学，有很多的收获写出来与朋友分享。<br /><br />    对于刚进入嵌入式系统的学习首先是象学J2EE那样看不懂且不知所云的名字，所以先要搞定这些名词：<br /><br /><strong>嵌入式软件系统的几种模式</strong>：<br /><br />􀁺 一   简单嵌入式系统，包含简单的硬件初始化以及应用代码。<br />􀁺 二   简单嵌入式系统，包含bootloader以及应用代码，bootloader与应用紧密集成在一起，构成一个嵌<br />            入式系统。<br />􀁺 三   复杂嵌入式系统，包含bootloader、操作系统、应用软件。<br /><br /><strong>开发编绎环境</strong>：<br /><br />      ads1.2                         arm的编译器arm公司开发的<br />     arm-elf-gcc                  Liunx环境下的arm编绎器<br />      cygwin+armtools          windows下模拟linux的程序和运行在cygwin下的arm的编译器<br />      ARM_SDT_2.51         arm比较早版本的编译器<br />这么多开发编绎环境选择适合的就行如果你用操作系统是Linux编辑工具是vi之类一般是arm-elf-gcc 如果操作系统是windows见意ads1.2 。<br /><br /><strong>嵌入式操作系统：</strong><br /><br />        VxWorks            实时性最好，要付费，一般用在高端实时领域，好像美国的飞船上就用它。<br />         uc/os-II              简单适合入门，好多书都讲这个操作系统，其代码量也不大如果要看它的源码的话。<br />         winCE                微软的东四，收费一般小应用就不用它的，高端手机比如多普达上用的就是它。<br />        uclinux                 是为适应没有MMC硬件的CPU（arm7TDMI）开发的liunx的版本，开源、免费，相信 <br />                                   是今天后的趋势，学习有一定的难度，网上资料还是很多的。<br />        liunx                    开源、免费,ARM9上就可以跑<br /><br /><strong>其它名词：</strong><br /><br />       SkyEye             是开源软件 的一个项目，SkyEye的目标是在Linux和Windows操作系统里提供一个完全的<br />                                仿真环境。SkyEye仿真环境相当于一个嵌入式计算机系统，你可以在SkyEye里运行一些<br />                                嵌入式Linux操作系统，如ARMLinux，uClinux，uc/OSII(ucos-ii)等，并能分析和调试它们<br />                                的源代码。<br />Boot Loader             就是在操作系统内核运行之前运行的一段小程序。通过这段小程序，我们可以初始化<br />                                件设备、建立内存空间的映射图，从而将系统的软硬件环境带到一个合适的状态，以便<br />                                为最终调用操作系统内核准备好正确的环境。相当于PC机中的BIOS。<br /><br />Blob、Bootldr、Redboot、U-Boot、ABLE<br />              <br />     Boot Loader 是严重地依赖于硬件而实现的，除了依赖于CPU 的体系结构外，Boot Loader实际上也依赖于具体的嵌入式板级设备的配置。这也就是说，对于两块不同的嵌入式板而言，即使它们是基于同一种CPU 而构建的，要想让运行在一块板子上的Boot Loader 程序也能运行在另一块板子上，通常也都需要修改BootLoader 的源程序。Blob、Bootldr、Redboot、U-Boot、ABLE都是人们对于CPU 的体系结构外开发的通用的BootLoader程序，你只需对这些程序进行移植就行了。<br /><br /><strong>嵌入式处理器的启动过程：<br /></strong>     <br />􀁺 通常系统上电（或者复位）以后，程序从地址空间的0x0开始􀁺 即PC（程序计数器）指针，指向0x0。从这个地址开始读取指令并运行。通常这个地址对应的是Bank0。因为系统是从bank0上引导的，所以，在Bank0上连接保存有启动代码的FlashROM，这就是我们常说的Boot ROM即Bootloader程序。<br />     <br />Bootloader要实现：<br /><br />􀁺 硬件系统自检。<br /><br />􀁺 配置其他Bank或者端口、外设等工作模式。<br /><br />􀁺 处理中系统的中断– 在不支持remap的处理器中，中断必然要经过Boot ROM的空间，这时，Boot ROM<br />      需要处理的任务就是把固定的中断向量映射到一个可编程的中断处理子程序的地址。<br /><br />     引导操作系统<br />– 系统配置完成以后， Bootloader需要把操作系统（或者其他程序）装载到SDRAM（就是系统的RAM区），然后，把PC指针指向程序的RAM空间，使操作系统启动，这就是引导。<br /><br />     Flash（Boot ROM）编程<br />– 对引导Flash（或者其他的非易失性存储器）编程，通过串口或者以太网口下载编译成功的操作系统或者应用程序，甚至Boot ROM本身。– 要想实现Boot ROM的自编程，必须让Boot程序是在RAM中运行<img src ="http://www.blogjava.net/linansengling/aggbug/79394.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/linansengling/" target="_blank">周先有</a> 2006-11-06 14:09 <a href="http://www.blogjava.net/linansengling/archive/2006/11/06/79394.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>