1.什么嵌入式
2.Linuxåµå
¥å¼ç³»ç»å¼åçç®å½
3.总结uboot的源码重要概念,不知道的分析看过来
什么嵌入式
这主要是从应用对象上加以定义,从中可以看出嵌入式系统是源码软件和硬件的综合体,还可以涵盖机械等附属装置。分析
国内普遍认同的源码嵌入式系统定义为:以应用为中心,以计
嵌入式Web技术
算机技术为基础,分析铺助网源码软硬件可裁剪,源码适应应用系统对功能、分析可靠性、源码成本、分析体积、源码功耗等严格要求的分析专用计算机系统。
可以这样认为,源码嵌入式系统是分析一种专用的计算机系统,作为装置或设备的源码一部分。通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是是由单个程序实现整个控制逻辑。
编辑本段
嵌入式培训
嵌入式图标
[1]嵌入式培训是满足广大嵌入式爱好者需求而开设的高级课程。一般培训结构的就业班都是从职业规划角度出发,系统性的对广大爱好者进行培训。
培养一批精英的嵌入式开发和嵌入式系统工程师需要更多的教学经验,需要更多的实践经验。
嵌入式培训一般分为如下几个类别:
1、针对高校学生及转行的就业培训(长期培训),一般要求被培训人员具有编程基础,时间为四或五个月左右,一般的机构是保证就业的;
2、针对在职工程师的充电培训,一般时间较短,学习实践一般在周末及节假日,学习者具备一定基础;
编辑本段
嵌入式系统的组成
一个嵌入式系统装置一般都由嵌入式计算机系统和执行装置组成,嵌入式计算机系统是整个嵌入式系统的核心,由硬件层、中间层、系统软件层和应用软件层组成。执行装置也称为被控对象,它可以接受嵌入式计算机系统发出的控制命令,执行所规定的操作或任务。执行装置可以很简单,如手机上的一个微小型的电机,当手机处于震动接收状态时打开;也可以很复杂,如SONY 智能机器狗,上面集成了多个微小型控制电机和多种传感器,proxy 源码从而可以执行各种复杂的动作和感受各种状态信息。
下面对嵌入式计算机系统的组成进行介绍。
1)硬件层
硬件层中包含嵌入式微处理器、存储器(SDRAM、ROM、Flash等)、通用设备接口和I/O接口(A/D、D/A、I/O等)。在一片嵌入式处理器基础上添加电源电路、时钟电路和存储器电路,就构成了一个嵌入式核心控制模块。其中操作系统和应用程序都可以固化在ROM中。
(1)嵌入式微处理器
嵌入式系统硬件层的核心是嵌入式微处理器,嵌入式微处理器与通用CPU最大的不同在于嵌入式微处理器大多工作在为特定用户群所专用设计的系统中,它将通用CPU许多由板卡完成的任务集成在芯片内部,从而有利于嵌入式系统在设计时趋于小型化,同时还具有很高的效率和可靠性。
嵌入式微处理器的体系结构可以采用冯·诺依曼体系或哈佛体系结构;指令系统可以选用精简指令系统(Reduced Instruction Set Computer,RISC)和复杂指令系统CISC(Complex Instruction Set Computer,CISC)。RISC计算机在通道中只包含最有用的指令,确保数据通道快速执行每一条指令,从而提高了执行效率并使CPU硬件结构设计变得更为简单。
嵌入式微处理器有各种不同的体系,即使在同一体系中也可能具有不同的时钟频率和数据总线宽度,或集成了不同的外设和接口。据不完全统计,目前全世界嵌入式微处理器已经超过多种,体系结构有多个系列,其中主流的体系有ARM、MIPS、PowerPC、X和SH等。但与全球PC市场不同的是,没有一种嵌入式微处理器可以主导市场,仅以位的产品而言,就有种以上的嵌入式微处理器。嵌入式微处理器的选择是根据具体的应用而决定的。
(2)存储器
嵌入式系统需要存储器来存放和执行代码。嵌入式系统的存储器包含Cache、主存和辅助存储器,其存储结构如图1-2所 示。
1>Cache
Cache是一种容量小、速度快的存储器阵列它位于主存和嵌入式微处理器内核之间,存放的是最近一段时间微处理器使用最多的程序代码和数据。在需要进行数据读取操作时,微处理器尽可能的从Cache中读取数据,而不是从主存中读取,这样就大大改善了系统的性能,提高了微处理器和主存之间的日程 源码数据传输速率。Cache的主要目标就是:减小存储器(如主存和辅助存储器)给微处理器内核造成的存储器访问瓶颈,使处理速度更快,实时性更强。
在嵌入式系统中Cache全部集成在嵌入式微处理器内,可分为数据Cache、指令Cache或混合Cache,Cache的大小依不同处理器而定。一般中高档的嵌入式微处理器才会把Cache集成进去。
2>主存
主存是嵌入式微处理器能直接访问的寄存器,用来存放系统和用户的程序及数据。它可以位于微处理器的内部或外部,其容量为KB~1GB,根据具体的应用而定,一般片内存储器容量小,速度快,片外存储器容量大。
常用作主存的存储器有:
ROM类 NOR Flash、EPROM和PROM等。
RAM类 SRAM、DRAM和SDRAM等。
其中NOR Flash 凭借其可擦写次数多、存储速度快、存储容量大、价格便宜等优点,在嵌入式领域内得到了广泛应用。
3>辅助存储器
辅助存储器用来存放大数据量的程序代码或信息,它的容量大、但读取速度与主存相比就慢的很多,用来长期保存用户的信息。
嵌入式系统中常用的外存有:硬盘、NAND Flash、CF卡、MMC和SD卡等。
(3)通用设备接口和I/O接口
嵌入式系统和外界交互需要一定形式的通用设备接口,如A/D、D/A、I/O等,外设通过和片外其他设备的或传感器的连接来实现微处理器的输入/输出功能。每个外设通常都只有单一的功能,它可以在芯片外也可以内置芯片中。外设的种类很多,可从一个简单的串行通信设备到非常复杂的.无线设备。
目前嵌入式系统中常用的通用设备接口有A/D(模/数转换接口)、D/A(数/模转换接口),I/O接口有RS-接口(串行通信接口)、Ethernet(以太网接口)、USB(通用串行总线接口)、音频接口、VGA视频输出接口、I2C(现场总线)、SPI(串行外围设备接口)和IrDA(红外线接口)等。listview源码
2)中间层
硬件层与软件层之间为中间层,也称为硬件抽象层(Hardware Abstract Layer,HAL)或板级支持包(Board Support Package,BSP),它将系统上层软件与底层硬件分离开来,使系统的底层驱动程序与硬件无关,上层软件开发人员无需关心底层硬件的具体情况,根据BSP 层提供的接口即可进行开发。该层一般包含相关底层硬件的初始化、数据的输入/输出操作和硬件设备的配置功能。BSP具有以下两个特点。
硬件相关性:因为嵌入式实时系统的硬件环境具有应用相关性,而作为上层软 件与硬件平台之间的接口,BSP需要为操作系统提供操作和控制具体硬件的方法。
操作系统相关性:不同的操作系统具有各自的软件层次结构,因此,不同的操作系统具有特定的硬件接口形式。
实际上,BSP是一个介于操作系统和底层硬件之间的软件层次,包括了系统中大部分与硬件联系紧密的软件模块。设计一个完整的BSP需要完成两部分工作:嵌入式系统的硬件初始化以及BSP功能,设计硬件相关的设备驱动。
编辑本段
嵌入式系统
嵌入式系统(Embedded System)--“嵌入到特定设备中的计算机系统。
一、定义:
嵌入式系统是一种“完全嵌入到受控器件内部,为特定应用而设计的专用计算机系统”。
二、说明:
受控器件:
1.消费电子:mp3、手机、电梯、汽车...
2.智能家电:数字电视、微波炉、数码相机、空调...
3.网络设备:交换机、路由器...
4.医疗仪器:...
5.航天设备:卫星、航天飞机、月球探测仪...
6.... ...
计算机系统:包括硬件和软件系统、且软、硬件均可裁剪。
编辑本段
嵌入式系统硬件初始化
系统初始化过程可以分为3个主要环节,按照自底向上、从硬件到软件的次序依次为:片级初始化、板级初始化和系统级初始化。
片级初始化
完成嵌入式微处理器的初始化,包括设置嵌入式微处理器的核心寄存器和控制寄存器、嵌入式微处理器核心工作模式和嵌入式微处理器的局部总线模式等。片级初始化把嵌入式微处理器从上电时的默认状态逐步设置成系统所要求的工作状态。这是一个纯硬件的初始化过程。
板级初始化
完成嵌入式微处理器以外的其他硬件设备的初始化。另外,还需设置某些软件的wince 源码数据结构和参数,为随后的系统级初始化和应用程序的运行建立硬件和软件环境。这是一个同时包含软硬件两部分在内的初始化过程。
系统初始化
该初始化过程以软件初始化为主,主要进行操作系统的初始化。BSP将对嵌入式微处理器的控制权转交给嵌入式操作系统,由操作系统完成余下的初始化操作,包含加载和初始化与硬件无关的设备驱动程序,建立系统内存区,加载并初始化其他系统软件模块,如网络系统、文件系统等。最后,操作系统创建应用程序环境,并将控制权交给应用程序的入口。
(2)硬件相关的设备驱动程序
BSP的另一个主要功能是硬件相关的设备驱动。硬件相关的设备驱动程序的初始化通常是一个从高到低的过程。尽管BSP中包含硬件相关的设备驱动程序,但是这些设备驱动程序通常不直接由BSP使用,而是在系统初始化过程中由BSP将他们与操作系统中通用的设备驱动程序关联起来,并在随后的应用中由通用的设备驱动程序调用,实现对硬件设备的操作。与硬件相关的驱动程序是BSP设计与开发中另一个非常关键的环节。
3)系统软件层
系统软件层由实时多任务操作系统(Real-time Operation System,RTOS)、文件系统、图形用户接口(Graphic User Interface,GUI)、网络系统及通用组件模块组成。RTOS是嵌入式应用软件的基础和开发平台。
(1)嵌入式操作系统
嵌入式操作系统(Embedded Operation System,EOS)是一种用途广泛的系统软件,过去它主要应用与工业控制和国防系统领域。EOS负责嵌入系统的全部软、硬件资源的分配、任务调度,控制、协调并发活动。它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。目前,已推出一些应用比较成功的EOS产品系列。随着Internet技术的发展、信息家电的普及应用及EOS的微型化和专业化,EOS开始从单一的弱功能向高专业化的强功能方向发展。嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固化以及应用的专用性等方面具有较为突出的特点。EOS是相对于一般操作系统而言的,它除具有了一般操作系统最基本的功能,如任务调度、同步机制、中断处理、文件处理等外,还有以下
编辑本段
嵌入式操作系统的特点
1)可裁剪性。支持开放性和可伸缩性的体系结构。
2)强实时性。EOS实时性一般较强,可用于各种设备控制中。
3)统一的接口。提供设备统一的驱动接口。
4)操作方便、简单、提供友好的图形GUI和图形界面,追求易学易用。
提供强大的网络功能,支持TCP/IP协议及其他协议,提供TCP/UDP/IP/PPP协议支持及统一的MAC访问层接口,为各种移动计算设备预留接口。
5)强稳定性,弱交互性。嵌入式系统一旦开始运行就不需要用户过多的干预、这就要负责系统管理的EOS具有较强的稳定性。嵌入式操作系统的用户接口一般不提供操作命令,它通过系统的调用命令向用户程序提供服务。
6)固化代码。在嵌入式系统中,嵌入式操作系统和应用软件被固化在嵌入式系统计算机的ROM中。
7)更好的硬件适应性,也就是良好的移植性。
编辑本段
嵌入式系统的文件系统
通用操作系统的文件系统通常具有以下功能:
提供用户对文件操作的命令。
提供用户共享文件的机制。
管理文件的存储介质。
提供文件的存取控制机制,保障文件及文件系统的安全性。
提供文件及文件系统的备份和恢复功能。
提供对文件的加密和解密功能。
嵌入式文件系统比较简单,主要提供文件存储、检索和更新等功能,一般不提供保护和加密等安全机制。它以系统调用和命令方式提供文件的各种操作,主要有:
设置、修改对文件和目录的存取权限。
提供建立、修改、改变和删除目录等服务。
提供创建、打开、读写、关闭和撤销文件等服务。
编辑本段
嵌入式文件系统的特点
1)兼容性。嵌入式文件系统通常支持几种标准的文件系统,如FAT、JFFS2、YAFFS等。
2)实时文件系统。除支持标准的文件系统外,为提高实时性,有些嵌入式文件系统还支持自定义的实时文件系统,这些文件系统一般采用连续的方式存储文件。
3)可裁剪、可配置。根据嵌入式系统的要求选择所需的文件系统,选择所需的存储介质,配置可同时打开的最大文件数等。
4)支持多种存储设备。嵌入式系统的外存形式多样了,嵌入式文件系统需方便的挂接不同存储设备的驱动程序,具有灵活的设备管理能力。同时根据不同外部存储器的特点,嵌入式文件系统还需要考虑其性能、寿命等因素,发挥不同外存的优势,提高存储设备的可靠性和使用寿命。
编辑本段
图形用户接口(GUI)
GUI的广泛应用是当今计算机发展的重大成就之一,他极大地方便了非专业用户的使用人们从此不再需要死记硬背大量的命令,取而代之的是可用用通过窗口、菜单、按键等方式来方便地进行操作。而嵌入式GUI具有下面几个方面的基本要求:轻型、占用资源少、高性能、高可靠性、便于移植、可配置等特点。
嵌入式系统中的图形界面,一般采用下面的几种方法实现:
针对特定的图形设备输出接口,自行开发相关的功能函数。
购买针对特定嵌入式系统的图形中间软件包。
采用源码开放的嵌入式GUI系统。
使用独立软件开发商提供的嵌入式GUI产品。
4)应用软件层
应用软件层是由基于实时系统开发的应用程序组成,用来实现对被控对象的控制功能。功能层是要面对被控对象和用户,为方便用户操作,往往需要提供一个友好的人机界面。
对于一些复杂的系统,在系统设计的初期阶段就要对系统的需求进行分析,确定系统的功能,然后将系统的功能映射到整个系统的硬件、软件和执行装置的设计过程中,称为系统的功能实现。
编辑本段
嵌入式就业前景
嵌入式就业发展空间相对较大。嵌入式系统是当前最热门、最具发展前途的IT应用领域之一。包括手机、电子字典、可视电话、数字相机(DC)、数字摄像机(DV)、U-Disk、机顶盒(Set Top Box)、高清电视(HDTV)、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、家电控制系统、医疗仪器、航天航空设备等都是典型的嵌入式系统。因此,通过嵌入式培训成为专业的嵌入式技术人才,其职业发展空间较大。
编辑本段
嵌入式在中国高校的开展
中国北部小硅谷坐落于河北省邯郸的高校区,这里有邯郸学院,河北工程大学,邯郸职业技术学院等高校,其中以邯郸学院的电子最为著名,在高校区周围,建立了许多高科技电子企业,邯郸学院是中国第一个开嵌入式系统工程的高校,其多数毕业生已进入国际著名的大公司进行开发工作,也为邯郸本地的高科技电子行业提供了源源的动力。
编辑本段
嵌入式人才的发展方向
嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一。嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器、存储器等)非常有限,并且对成本很敏感,有时对实时响应要求很高等。特别是随着消费家电的智能化,嵌入式更显重要。像我们平常常见到的手机、PDA、电子字典、可视电话、VCD/DVD/MP3 Player、数字相机(DC)、数字摄像机(DV)、U-Disk、机顶盒(Set Top Box)、高清电视(HDTV)、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、家电控制系统、医疗仪器、航天航空设备等等都是典型的嵌入式系统。
嵌入式系统是软硬结合的东西,搞嵌入式开发的人有两类。
一类是学电子工程、通信工程等偏硬件专业出身的人,他们主要是搞硬件设计,有时要开发一些与硬件关系最密切的最底层软件,如BootLoader、Board Support Package(像PC的BIOS一样,往下驱动硬件,往上支持操作系统),最初级的硬件驱动程序等。他们的优势是对硬件原理非常清楚,不足是他们更擅长定义各种硬件接口,但对复杂软件系统往往力不从心(例如嵌入式操作系统原理和复杂应用软件等)。
另一类是学软件、计算机专业出身的人,主要从事嵌入式操作系统和应用软件的开发。如果我们学软件的人对硬件原理和接口有较好的掌握,我们完全也可写BSP和硬件驱动程序。嵌入式硬件设计完后,各种功能就全靠软件来实现了,嵌入式设备的增值很大程度上取决于嵌入式软件,这占了嵌入式系统的最主要工作(目前有很多公司将硬件设计包给了专门的硬件公司,稍复杂的硬件都交给台湾或国外公司设计,国内的硬件设计力量很弱,很多嵌入式公司自己只负责开发软件,因为公司都知道,嵌入式产品的差异很大程度在软件上,在软件方面是最有“花头“可做的),所以我们搞软件的人完全不用担心我们在嵌入式市场上的用武之地,越是智能设备越是复杂系统,软件越起关键作用,而且这是目前的趋势。
Linuxåµå ¥å¼ç³»ç»å¼åçç®å½
第1ç« åµå ¥å¼ç³»ç»æ¦è¿° 11.1 åµå ¥å¼ç³»ç»çæ¦å¿µ 1
1.1.1 åµå ¥å¼ç³»ç»çå®ä¹ 1
1.1.2 åµå ¥å¼ç³»ç»çç¹ç¹ 2
1.2 åµå ¥å¼ç³»ç»çç»æ 2
1.2.1 åµå ¥å¼å¤çå¨ 2
1.2.2 å¤å´è®¾å¤ 3
1.2.3 åµå ¥å¼æä½ç³»ç» 3
1.2.4 åºç¨è½¯ä»¶ 3
1.3 åµå ¥å¼å¤çå¨ 4
1.3.1 åµå ¥å¼å¤çå¨çåç±» 4
1.3.2 åµå ¥å¼å¾®å¤çå¨ 5
1.3.3 åµå ¥å¼å¾®æ§å¶å¨ 5
1.3.4 åµå ¥å¼DSPå¤çå¨ 6
1.3.5 åµå ¥å¼çä¸ç³»ç» 6
1.3.6 éæ©åµå ¥å¼å¤çå¨ 7
1.4 åµå ¥å¼æä½ç³»ç» 7
1.4.1 æä½ç³»ç»çæ¦å¿µååç±» 7
1.4.2 å®æ¶æä½ç³»ç» 8
1.4.3 常ç¨çåµå ¥å¼æä½ç³»ç»
1.5 æ°åçåµå ¥å¼æä½ç³»ç»
1.5.1 Android
1.5.2 MontaVista
1.6 åµå ¥å¼ç³»ç»çåºç¨
1.7 åµå ¥å¼ç³»ç»çåå±è¶å¿
1.7.1 åµå ¥å¼ç³»ç»é¢ä¸´çææ
1.7.2 åµå ¥å¼ç³»ç»çåå±åæ¯
1.8 æ¬ç« å°ç»
第2ç« åµå ¥å¼ç³»ç»å¼åè¿ç¨
2.1 åµå ¥å¼è½¯ä»¶å¼åä»ç»
2.1.1 åµå ¥å¼è½¯ä»¶å¼åçç¹æ®æ§
2.1.2 åµå ¥å¼è½¯ä»¶çåç±»
2.1.3 åµå ¥å¼è½¯ä»¶çå¼åæµç¨
2.1.4 åµå ¥å¼è½¯ä»¶å¼åå·¥å ·çåå±è¶å¿
2.2 åµå ¥å¼è½¯ä»¶çè°è¯ææ¯
2.2.1 è°è¯ææ¯ä»ç»
2.2.2 åºäºJTAGçARMç³»ç»è°è¯
2.3 åµå ¥å¼è½¯ä»¶æµè¯ææ¯
2.3.1 宿主æº-ç®æ æºå¼å模å¼
2.3.2 ç®æ çæ§å¨
2.4 åµå ¥å¼ç³»ç»éæå¼åç¯å¢
2.4.1 ADSçä»ç»
2.4.2 ADS建ç«å·¥ç¨ç使ç¨ä»ç»
2.4.3 AXDè°è¯å¨ç使ç¨ä»ç»
å®ä¾2-1ï¼ARMå¼åç¯å¢ADSç使ç¨å®ä¾
2.5 æ¬ç« å°ç»
第3ç« ARMä½ç³»ç»æ
3.1 ARMä½ç³»ç»ææ¦è¿°
3.1.1 ARMä½ç³»ç»æç®ä»
3.1.2 ARMä½ç³»ç»æçææ¯ç¹å¾
3.1.3 CISCçä½ç³»ç»æ
3.1.4 RISCçä½ç³»ç»æ
3.1.5 RISCç³»ç»åCISCç³»ç»çæ¯è¾
3.2 ARMå¾®å¤çå¨çåç±»
3.2.1 ARM7å¾®å¤çå¨
3.2.2 ARM9å¾®å¤çå¨
3.2.3 ARM9Eå¾®å¤çå¨
3.2.4 ARMEå¾®å¤çå¨
3.2.5 ARMå¾®å¤çå¨
3.2.6 SecurCoreå¾®å¤çå¨
3.2.7 trongARMå¾®å¤çå¨
3.2.8 XScaleå¾®å¤çå¨
3.3 ARMå¾®å¤çå¨çåºç¨
3.3.1 ARMå¾®å¤çå¨çåºç¨éå
3.3.2 S3Cå¤çå¨
3.4 åå¨å¨
3.4. 1 åå¨å¨ç®ä»
3.4.2 SDRAMæä½
3.4.3 Flash
3.5 ARMç¼ç¨æ¨¡å
3.5.1 æ°æ®ç±»å
3.5.2 åå¨å¨æ ¼å¼
3.5.3 å¤çå¨å·¥ä½ç¶æ
3.5.4 å¤çå¨è¿è¡æ¨¡å¼
3.5.5 å¯åå¨ç»ç»
3.5.6 å é¨å¯åå¨
3.6 ARMæ令ç寻åæ¹å¼
3.6.1 ç«å³å¯»å
3.6.2 å¯åå¨å¯»å
3.6.3 å¯åå¨é´æ¥å¯»å
3.6.4 ç¸å¯¹å¯»å
3.6.5 å æ 寻å
3.6.6 åå¤å¶å¯»å
3.6.7 åå寻å
3.6.8 å¤å¯åå¨å¯»å
3.7 ARMæ令é
3.7.1 ARMæ令çæ ¼å¼
3.7.2 ARMæ令åç±»
3.7.3 Thumbæ令ä»ç»
3.7.4 Thumbæ令åç±»
3.7.5 ARMæ令éåThumbæ令éçåºå«
3.8 ARMå¾®å¤çå¨çå¼å¸¸
3.8.1 ARMä½ç³»ç»æææ¯æçå¼å¸¸ç±»å
3.8.2 å¼å¸¸åé表
3.8.3 å¼å¸¸ä¼å 级
3.8.4 åºç¨ç¨åºä¸çå¼å¸¸å¤ç
3.8.5 åç±»å¼å¸¸çå ·ä½æè¿°
3.9 æ¬ç« å°ç»
第4ç« Linuxåºæ¬æä½
4.1 Linuxç³»ç»çä»ç»
4.1.1 Linuxçæ¦åµ
4.1.2 Linuxæä½ç³»ç»çææ
4.1.3 Linux常è§çåè¡çæ¬
4.1.4 Linuxå æ ¸çç¹ç¹
4.2 Linuxå½ä»¤ç使ç¨
4.3 viç¼è¾å¨ç使ç¨
4.3.1 viç¼è¾å¨çè¿å ¥
4.3.2 å½ä»¤æ¨¡å¼çå½ä»¤
4.3.3 æ«è¡æ¨¡å¼çå½ä»¤
å®ä¾4-1ï¼viç¼è¾å¨ä½¿ç¨å®ä¾
4.4 Shellç¼ç¨
4.4.1 Shellåºç¡ä»ç»
4.4.2 Shellç¨åºçåéååæ°
4.4.3 è¿è¡Shellç¨åº
4.4.4 Shellç¨åºè®¾è®¡çæµç¨æ§å¶
4.4.5 Shellè¾å ¥ä¸è¾åº
4.4.6 bashä»ç»
4.5 综åå®ä¾
å®ä¾4-2ï¼ç¼åæ¸ é¤/var/logä¸çlogæ件综åå®ä¾
å®ä¾4-3ï¼ç¼å寻æ¾æ»é¾æ¥æ件综åå®ä¾
4.6 æ¬ç« å°ç»
第5ç« Linuxè¿ç¨
5.1 è¿ç¨æ¦è¿°
5.1.1 è¿ç¨ç»æ
5.1.2 è¿ç¨çæ§å¶æä½
5.1.3 è¿ç¨çå±æ§
5.1.4 è¿ç¨çå建åè°åº¦
5.1.5 Linuxè¿ç¨å½ä»¤
5.2 ç³»ç»è°ç¨
5.2.1 ç³»ç»è°ç¨ç®è¿°
5.2.2 ç³»ç»è°ç¨çè¿å ¥
5.2.3 ä¸è¿ç¨ç®¡çç¸å ³çç³»ç»è°ç¨
5.3 管é
5.3.1 管éç³»ç»è°ç¨
5.3.2 管éçåç±»
å®ä¾5-1ï¼ç®¡ééä¿¡å®ä¾
5.4 ä¿¡å·
5.4.1 常è§çä¿¡å·ç§ç±»
5.4.2 ç³»ç»è°ç¨å½æ°
5.4.3 ä¿¡å·çå¤ç
5.4.4 ä¿¡å·ä¸ç³»ç»è°ç¨çå ³ç³»
å®ä¾5-2ï¼ä¿¡å·å®ä¾
5.5 ä¿¡å·é
5.5.1 ä¿¡å·éæ¦è¿°
5.5.2 ç¸å ³çæ°æ®ç»æ
5.5.3 ç¸å ³çå½æ°
å®ä¾5-3ï¼ä¿¡å·éå®ä¾
5.6 å ±äº«å å
5.6.1 å ±äº«å ååç
5.6.2 å ±äº«å å对象çç»æ
5.6.3 ç¸å ³çå½æ°
å®ä¾5-4ï¼å ±äº«å åå®ä¾
5.7 æ¶æ¯éå
5.7.1 æå ³çæ°æ®ç»æ
5.7.2 ç¸å ³çå½æ°
å®ä¾5-5ï¼æ¶æ¯éåå®ä¾
5.8 综åå®ä¾
å®ä¾5-6ï¼å¤çº¿ç¨ç¼ç¨å®ä¾
5.9 æ¬ç« å°ç»
第6ç« å»ºç«Linuxå¼åç¯å¢
6.1 建ç«Linuxå¼åç¯å¢
6.1.1 Cygwinå¼åç¯å¢
6.1.2 VMware Workstationå¼åç¯å¢
6.2 交åç¼è¯ç使ç¨
6.2.1 GNU交åå·¥å ·é¾ç设置
6.2.2 ARM GNU常ç¨æ±ç¼è¯è¨
6.2.3 GNU交åå·¥å ·é¾ç常ç¨å·¥å ·
6.2.4 交åç¼è¯ç¯å¢
6.3 Linuxä¸çCç¼ç¨
6.3.1 Linuxç¨åºè®¾è®¡ç¹ç¹
6.3.2 Linuxä¸Cè¯è¨ç¼ç çé£æ ¼
6.3.3 Linuxç¨åºåºç¡
6.3.4 Linuxä¸Cç¼ç¨çåºä¾èµ
6.4 gccç使ç¨ä¸å¼å
6.4.1 gccç®ä»å使ç¨
6.4.2 gccé项
6.4.3 gccçé误类å
å®ä¾6-1ï¼gccç¼è¯å¨ç¯å¢çåºç¨å®ä¾
6.5 gdbè°è¯å¨çä»ç»å使ç¨
6.5.1 gdbè°è¯å¨ç使ç¨
6.5.2 å¨gdbä¸è¿è¡ç¨åº
6.5.3 æååæ¢å¤ç¨åºè¿è¡
6.5.4 è¿ç¨è°è¯
å®ä¾6-2ï¼gdbè°è¯å¨ç¯å¢çåºç¨å®ä¾
6.6 GNU makeåMakefileç使ç¨
6.6.1 Makefileçåºæ¬ç»æ
6.6.2 Makefileçåé
6.6.3 Makefileçéå«è§å
6.6.4 Makefileçå½ä»¤ä½¿ç¨
6.6.5 Makefileçå½æ°ä½¿ç¨
6.6.6 Makefileæ件çè¿è¡
6.6.7 Makefileè§å书åå½ä»¤
å®ä¾6-3ï¼Makefileçå½ä»¤ä½¿ç¨å®ä¾
6.7 autoconfåautomakeç使ç¨
6.7.1 autoconfç使ç¨
6.7.2 Makefileçç¼å
6.7.3 automakeç使ç¨
6.7.4 使ç¨automakeåautoconf产çMakefile
6.7.5 èªå¨çæMakefileçæ¹æ³
6.8 综åå®ä¾
å®ä¾6-4ï¼gccç¼è¯å¨ç综åå®ä¾
å®ä¾6-5ï¼gdbè°è¯å¨ç综åå®ä¾
å®ä¾6-6ï¼Makefileç综åå®ä¾
6.9 æ¬ç« å°ç»
第7ç« Linuxæä½ç³»ç»ç§»æ¤
7.1 移æ¤çæ¦å¿µ
7.1.1 Linuxå¯ç§»æ¤æ§åå±
7.1.2 Linuxç移æ¤æ§
7.2 Linuxå æ ¸ç»æ
7.2.1 Linuxå æ ¸ç»æ
7.2.2 åç³»ç»ç¸äºé´çå ³ç³»
7.2.3 ç³»ç»æ°æ®ç»æ
7.2.4 Linuxå æ ¸æºä»£ç
7.3 Linuxå æ ¸é ç½®
å®ä¾7-1ï¼Linuxå æ ¸é ç½®å®ä¾
7.4 Linuxæä½ç³»ç»ç§»æ¤ä»ç»
7.4.1 Linuxç³»ç»ç§»æ¤ç两大é¨å
7.4.2 å æ ¸æ件çä¿®æ¹
7.4.3 ç³»ç»ç§»æ¤æå¿ éçç¯å¢
7.5 综åå®ä¾
å®ä¾7-2ï¼ç¼è¯Linuxå æ ¸åºç¨å®ä¾
å®ä¾7-3ï¼Linuxå æ ¸çç§åå®ä¾
å®ä¾7-4ï¼ä½¿ç¨Kgdbæ建Linuxå æ ¸è°è¯ç¯å¢
7.6 æ¬ç« å°ç»
第8ç« Bootloaderç使ç¨
8.1 Bootloader æ¦è¿°
8.1.1 Bootloaderçä½ç¨
8.1.2 Bootloaderçåè½
8.1.3 Bootloaderçç§ç±»
8.1.4 Bootloaderçå·¥ä½æ¨¡å¼
8.1.5 Bootloaderçå¯å¨æ¹å¼
8.1.6 Bootloaderçå¯å¨æµç¨
8.1.7 Bootloaderä¸ä¸»æºçéä¿¡
8.2 vivi
8.2.1 viviç常ç¨å½ä»¤åæ件ç»æ
8.2.2 vivi第ä¸é¶æ®µçåæ
8.2.3 vivi第äºé¶æ®µçåæ
8.2.4 viviçé ç½®ä¸ç¼è¯
8.3 U-boot
8.3.1 U-boot常ç¨å½ä»¤åæºä»£ç ç®å½ç»æ
8.3.2 U-bootæ¯æç主è¦åè½
8.3.3 U-bootçç¼è¯åæ·»å å½ä»¤
8.3.4 U-bootçå¯å¨ä»ç»
8.3.5 U-bootç移æ¤å使ç¨
8.3.6 U-bootçå¯å¨è¿ç¨
8.3.7 U-bootçè°è¯
8.4 å ¶ä»å¸¸è§çBootloader
8.5 综åå®ä¾
å®ä¾8-1ï¼viviç¼è¯å®ä¾
å®ä¾8-2ï¼U-bootå¨S3Cä¸ç移æ¤å®ä¾
å®ä¾8-3ï¼Bootloader设计å®ä¾
8.6 æ¬ç« å°ç»
第9ç« æ建Linuxæ ¹æ件系ç»
9.1 Linuxæ件系ç»æ¦è¿°
9.1.1 Linuxæ件系ç»çç¹ç¹
9.1.2 å ¶ä»å¸¸è§çåµå ¥å¼æ件系ç»
9.1.3 Linuxæ ¹æ件ç®å½ç»æ
9.1.4 Linuxæ件å±æ§ä»ç»
9.2 使ç¨BusyBoxçæå·¥å ·é
9.2.1 BusyBoxæ¦è¿°
9.2.2 BusyBoxè¿ç¨åç¨æ·ç¨åºå¯å¨è¿ç¨
9.2.3 ç¼è¯/å®è£ BusyBox
å®ä¾9-1ï¼ç¨BusyBox建ç«ç®åçæ ¹æ件系ç»
9.3 æå»ºæ ¹æ件系ç»
å®ä¾9-2ï¼æå»ºæ ¹æ件系ç»
9.4 é ç½®yaffsæ件
9.4.1 yaffsæ件系ç»è®¾ç½®
9.4.2 yaffsæ件系ç»æµè¯
9.5 综åå®ä¾
å®ä¾9-3ï¼å¶ä½/使ç¨yaffsæ件系ç»æ åæ件
å®ä¾9-4ï¼å¶ä½/使ç¨jffs2æ件系ç»æ åæ件
9.6 æ¬ç« å°ç»
ç¬¬ç« è®¾å¤é©±å¨ç¨åºå¼å
.1 设å¤é©±å¨ç¨åºæ¦è¿°
.1.1 驱å¨ç¨åºçç®ä»
.1.2 设å¤åç±»
.1.3 设å¤å·
.1.4 设å¤èç¹
.1.5 驱å¨å±æ¬¡ç»æ
.1.6 设å¤é©±å¨ç¨åºçç¹ç¹
.2 设å¤é©±å¨ç¨åºä¸æ件系ç»
.2.1 设å¤é©±å¨ç¨åºä¸æ件系ç»çå ³ç³»
.2.2 设å¤é©±å¨ç¨åºä¸æä½ç³»ç»çå ³ç³»
.2.3 Linux设å¤é©±å¨ç¨åºçæ¥å£
.2.4 设å¤é©±å¨ç¨åºå¼åçåºæ¬å½æ°
.2.5 Linux驱å¨ç¨åºçå è½½
.3 设å¤é©±å¨ç¨åºç使ç¨
.3.1 驱å¨ç¨åºæ¨¡åçå è½½
.3.2 å建设å¤æ件
.3.3 使ç¨è®¾å¤
.4 ç½ç»è®¾å¤åºç¡ç¥è¯
.4.1 ç½ç»åè®®
.4.2 ç½ç»è®¾å¤æ¥å£åºç¡
.5 ç½ç»è®¾å¤é©±å¨ç¨åºçæ¶æ
.5.1 ç½ç»è®¾å¤é©±å¨ç¨åºä½ç³»ç»æ
.5.2 ç½ç»è®¾å¤é©±å¨ç¨åºæ¨¡ååæ
.5.3 ç½ç»è®¾å¤é©±å¨ç¨åºçå®ç°æ¨¡å¼
.5.4 ç½ç»è®¾å¤é©±å¨ç¨åºçæ°æ®ç»æ
.6 综åå®ä¾
å®ä¾-1ï¼é®ç驱å¨å¼åå®ä¾
å®ä¾-2ï¼I2Cæ»çº¿é©±å¨çç¼åå®ä¾
å®ä¾-3ï¼TFT-LCDæ¾ç¤ºé©±å¨å®ä¾
.7 æ¬ç« å°ç»
ç¬¬ç« åµå ¥å¼GUIå¼å
.1 åµå ¥å¼ç³»ç»ä¸çGUIç®ä»
.1.1 åµå ¥å¼GUIç³»ç»çä»ç»
.1.2 åºäºåµå ¥å¼LinuxçGUIç³»ç»åºå±å®ç°åºç¡
.1.3 åµå ¥å¼GUIç³»ç»çåæä¸æ¯è¾
.2 åµå ¥å¼ç³»ç»ä¸MiniGUIçå®ç°
.2.1 å¾å½¢ç¨æ·çé¢MiniGUIç®ä»
.2.2 MiniGUIçåå¸çæ¬
.2.3 MiniGUIå¨S3Cå¤çå¨ä¸ç移æ¤è¿ç¨
.3 Qt/Embeddedåµå ¥å¼å¾å½¢å¼ååºç¡
.3.1 Qt/Embeddedå¼åç¯å¢çå®è£
.3.2 Qt/Embeddedåºå±æ¯æåå®ç°ä»£ç åæ
.3.3 Qt/Embeddedä¿¡å·åæ槽æºå¶
.3.4 Qt/Embeddedçªå£é¨ä»¶
.3.5 Qt/Embeddedå¾å½¢çé¢ç¼ç¨
.3.6 Qt/Embedded对è¯æ¡è®¾è®¡
.3.7 æ°æ®åº
å®ä¾-1ï¼Qt/Embeddedå¾å½¢å¼ååºç¨å®ä¾
.4 Qtopia移æ¤
.4.1 Qtopiaç®ä»
.4.2 交åç¼è¯ãå®è£ Qtopia
å®ä¾-2ï¼Qtopia移æ¤åºç¨å®ä¾
.5 Qt/Embeddedåºç¨å¼å
.5.1 åµå ¥å¼ç¡¬ä»¶å¼åå¹³å°çéæ©
.5.2 Qt/Embedded常ç¨å·¥å ·çä»ç»
.5.3 交åç¼è¯Qt/Embeddedçåº
.5.4 Qt/Eç¨åºçç¼è¯ä¸æ§è¡
å®ä¾-3ï¼Qt/Embeddedå®ææ¼ç»
.6 综åå®ä¾
å®ä¾-4ï¼Helloï¼Qt/Embeddedåºç¨ç¨åº
å®ä¾-5ï¼åºæ¬ç»å¾åºç¨ç¨åºçç¼å
.7 æ¬ç« å°ç»
ç¬¬ç« ç»¼åå·¥ç¨å®ä¾
.1 æ件系ç»ççæä¸ç§å
.1.1 yaffsæ件系ç»çå¶ä½ä¸çæ
.1.2 jffs2æ件系ç»çå¶ä½ä¸çæ
.2 åºäºLinuxçæ°ç ç¸æ¡
.2.1 ç³»ç»éæ±åæ
.2.2 ç³»ç»æ»ä½è®¾è®¡
.2.3 软件设计å®ç°
.2.4 软硬件éæ
.3 åºäºLinuxçMPlayer解ç ææ¾å¨
.3.1 å¯è¡æ§åææ¥å
.3.2 ç³»ç»æ»ä½è®¾è®¡
.3.3 软件æ»ä½è®¾è®¡
.3.4 软件详ç»è®¾è®¡
.3.5 软硬件éæ
.4 åºäºLinuxçGPS导èªç³»ç»çå¼å
.4.1 åµå ¥å¼å¼åæµç¨å¾
.4.2 GPS导èªå®ä½ç³»ç»çç³»ç»å®ä¹
.4.3 GPS导èªç³»ç»çå¯è¡æ§åææ¥å
.4.4 GPS导èªç³»ç»éæ±åæ
.4.5 GPS导èªç³»ç»æ»ä½è®¾è®¡å®ç°
.4.6 GPS导èªç³»ç»ç¡¬ä»¶è®¾è®¡å®ç°
.4.7 GPS导èªç³»ç»è½¯ä»¶æ¦æ¬è®¾è®¡
.4.8 GPS导èªç³»ç»è½¯ä»¶è¯¦ç»è®¾è®¡
.4.9 GPS导èªç³»ç»æ°æ®åºçé 置设计
.4. GPS导èªç³»ç»è½¯ä»¶å®ç°
.5 æ¬ç« å°ç»
总结uboot的重要概念,不知道的看过来
本篇内容不讲解uboot源码,只总结面试中高频问到的重要知识点。内容适用于嵌入式新人了解uboot,对老手有复习和查漏补缺的作用。
1、PC机启动:上电后,BIOS程序初始化DDR内存和硬盘,从硬盘读取OS镜像到DDR,跳转执行OS。
2、嵌入式Linux系统启动:上电后执行uboot,初始化DDR、Flash,将OS从Flash读到DDR,启动OS。
3、uboot定义与作用:uboot属于bootloader,作为单线程裸机程序,主要作用是初始化硬件、内存、flash等,引导内核启动。
4、uboot启动阶段(不同平台差异):MTK平台:boot rom -> preloader -> lk -> kernel;RK平台:bootrom -> spl(miniloader) -> uboot -> trust -> kernel;NXP平台:bootrom -> bl2 -> ATF -> uboot -> kernel。
5、uboot支持多种启动方式:SPI Flash/eMMC/Nvme/SD/Hard Disk/U-Disk/net。启动方式不同,固件存放位置也不同。
6、掌握uboot的关键点:命令和环境变量。uboot启动后大部分工作在shell中完成,命令用于操作,环境变量如bootcmd和bootargs,用于设置启动参数。
7、bootargs参数详解:root用于指定rootfs位置,console用于设置控制台,mem用于指定内核使用内存大小,ramdisk_size用于设置ramdisk大小,initrd用于指定initrd参数,init用于指定启动脚本,mtdparts用于设置分区。
8、常用bootargs组合:文件系统为ramdisk、jffs2类型、nfs等不同情况下的bootargs设置示例。
总结,了解uboot是嵌入式开发的基础,掌握其启动过程和关键参数,对提高开发效率和解决问题有重要作用。