关于4412的开发手册(上册))

EdisonGate 20 0 PDF 2020-10-19 09:10:49

第1章嵌入式 Linux开发板选型 为例,当选定硬件平台之后,处理器的性能已经被限定了,怎样使得手机的操作更人性化 菜单响应更快捷、具备更多更好的功能,这完全取决于软件了。需要驱动程序和应用程序配 合,最大程序地发挥硬件的性能。也许读者见过这类手机,它的屏幕总是经过很长时间才熄 灭,这使得它的电池很快耗光,只要在编写软件时进行改进,就可能成倍地延长电池的使用 时间。一个优秀的嵌入式系统,对硬件性能的“压榨”、对软件的细致调节,已经到了精益求 益的地步。有时候甚至为了节省几秒的启时间而大动脑筋:调整程序的启动顺序让耗时的程 序稍后运行、改变程序的存储方式以便更快地加载等等,甚至通过显示一个进度条让用户觉 得时间没那么长 1.1.2嵌入式技术的发展历史 嵌入式技术在20世纪70年代起源于微型机,从此之后,通用计算机与嵌入式计算机就 走上了两条不同的道路。通用计算机系统的技术要求是高速、海量的数值计算;技术发展方 向是总线速度的无限提升,存储容量的无限扩大。而嵌入式计算机系统的技术要求则是对象 的智能化控制能力;技术发展方向是与对象系统密切相关的嵌入性能、控制能力与控制的可 靠性。 嵌入式技术的发展日新月异,经历了单片机(SCM)、微控制器(MCUD)、系统级芯片(SoC) 三大阶段 SCM(Single Chip Microcomputer 又称单片微型计算机,简称单片机,是指随眷大规模集成电路的出现及其发展,将计算 机的CPU、RAM、ROM、定时数器和多种10接目集成在一片芯片上,形成芯片级的计算机 这个阶段主要是“寻求”单片形态嵌入式系统的最佳体系结构,也是从这个阶段起,嵌 入式计算机技术与通用计算机技术走上两条不同的道路 2. MCU(Micro Controller Unit)_Y MCU即微控制器阶段的特征是:满足”各类嵌入式应用,根据对象系统要求扩展各种外 围电路与接口电路,突显其对象的智能化控制能力。它所涉及的领域都与对象系统相关,因 此,发展MCU的重任不可避免地落在电气、电子技术厂家。 实际上,MU、SCM之间的概念在日常工作中并不严格区分,很多时候一概以“单片机” 称呼。随着能够运行更复杂软件(比如操作系统)的SoC的岀现,“单片机”通常是指不运行操 作系统的、功能相对单一的嵌入式系统一一这不是绝对的,比如8051上就可以运行一个名为 RIX51的实时操作系统,它只有6K左右,相比于 Linux、 Windows ce等操作系统而言比较简 3. SoC(System On a Chip) 随着设计与制造技术的发展,集成电路设计从晶体管的集成发展到逻辑门的集成,现在 又发展到IP的集成,即SoC( System on a Chip)设计技术。SoC可以有效地降低电子/信息系 统产品的开发成本,缩短开发周期,提高产品的竞争力,是未来工业界将采用的最主要的产 品开发方式。 第1章嵌入式 Linux开发板选型 虽然SoC一词多年前就已出现,但到底什么是SOoC则有各种不同的说法。在绎过了多年 的争论后,专家们就SoC的定义达成了一致意见。这个定义虽然不是非常严格,但明确地表 明了SoC的特征 1实现复杂系统功能的VISI; 2采用超深亚微米工艺技术 3使用一个以上嵌入式CPU/数字信号处理器(DSP); 4外部可以对芯片进行编程; 5主要采用第三方IP进行设计。 从上述SoC的特征来看,SoC中包含了微处理器/微控制器、存储器以及其他专用功能逻 辑,但并不是包含了微处理器、存储器以及其他专用功能逻辑的芯片就是SoC8051就集 成了微处理器、存储器时部件,但它不属于SoC。SoC技术被广泛认同的根本原因,并不在于 SoC可以集成多少个晶体管,而在于SoC可以用较短时间被设计出来。这是SoC的主要价值 所在——缩短产品的上市周期,因此,SoC更合理的定义为:SoC是在一个芯片上由于广泛使 用预定制模块IP( Intellectual Property)而得以快速开发的集成电路 本书介绍的S3C2410/3c2440就属于SoC,比如它们集成了处理器、内存管理单元M) NAND Flash控制器等部件,而处理器是基于ARM公司的IP设计的。 嵌入式软件随着硬件的发展,也发坐了很大的变化。在SCNM、MCU阶段,嵌入式软件的编 写通常由相关行业的电气、电子技术家编写计算机专业队伍并没有真正进入单片机应用 领域。因此,电子技术应用工程师以自己习惯性的电子技术应用模式,从事单片机的应用开 发。这种应用模式最重要的特点是:软、硬件的底层性和随意性:对象系统专业技术的密切 相关性;缺少计算机工程设计衣法。少 随着嵌入式处理器性能的快速提高,网络、通信、多媒体技术得以发展,很多嵌入式设 备都具备收发邮件、编写文档、视听等功能,计算机专业人士开始进入嵌入式领域。这形成 了明显的技术特点:基于操作系纨、以网络、通信为主的“非嵌入式底层”应用——除要完 成的功能比较特殊、性能比较苛刻外,嵌入式应用软件的开发已经与普通软件开发没有差别 实际上,很多基于操作系统的嵌入式应用程序就是先在PC上模拟验证,最后才移入嵌入式设 备的。 以一个浅显的例子说明:以前基于单片机编写的软件,通常是在main函数中定义一个无 限循环,然后在里面査询各类输入事件,并作出相应处理,它直接操作硬件;而基于SoC的 软件多是在操作系统上面运行,通过驱动程序操作硬件,这使得软件开发以分工的形式进行, 术有专攻。 第1章嵌入式 Linux开发板选型 1.2基于ARM处理器的嵌入式 Linux系统 1.2.1ARM处理器介绍 1.ARM的概念 嵌入式处理器种类繁多,有ARM、MIPS、PPC等多种架构。ARM处理器的文档非富,各类 嵌入式软件大多(往往首选)支持ARM处理器,使用ARM开发板来学习嵌入式开发是个好选择。 基于不同架构CPU的开发是相通的,掌握ARM架构之后,在使用其他CPU时也会很快上手。 当然,作为产品进行选材时,需要考量的因素就非常多了,这不在本书的介绍范围之内。 ARM( Advanced risc machine),既可以认为是一个公司的名字,也可以认为是对一类微 处理器的通称,还可以认为是一种技术的名字。ARM公司是32位嵌入式RISC微处理器技术 的领导者,自从1990年创办公司以来,基于ARM技术PP核的微处理器的销售量已经超过了 100亿。ARM公司并不生产芯片,而是出售芯片技术授权。其合作公司针对不同需求搭配各类 硬件部件,比如UART、SDI、I2C等,设计出不同的SoC芯片。ARM公司在技术上的开放性使 得它的合作伙伴既有世界顶级的半导体公司,也有各类中、小型公司。随着合作伙伴的增多 也使得AM处理器可以得到更多的第三方工具、制造和软件支持,又使整个系统成本降低, 使新品上市时间加快,从而具有更大的竞争优势。 基于ARM的处理器以其高速度、低功耗、价格低等优意而得到非常广泛的应用,它可以 应用于以下领域: 1为无级通信、消费电子、成像设备等产品,提供可运行复杂操作系统的开放应用平台; 2在海量存储、汽车电子、工业控制和网络应用等领域,提供实时嵌入式应用 3安全系统,比如信用卡、M等。 2.ARM体系架构的版本: ARM体系架构的版本就是它所使用的指令集的版本。ARM架构支持32位的ARM指令集和 16位的 Thumb指令集,后者使得代码的存储空间大减小。还提供了一些扩展功能,比如Java 加速器(Jaκelle)、用以提高安全性能的 Trustzone技术、智能能源管理(IEM,Iη telligent Energy Manager)、SIMD和 NEONTM等技术。 还在使用的ARM指令集(ISA, Instruction set Architecture)有以下版本 (1)ARMv4。 这是当今市场上最老的版本,所有之前的些已经废弃。ARMV4只支持32位的指令集,支 持32位的地址空间。一些ARM7系列的处理器和 Intel公司的 StrongArM处理采用ARMv4指 令集 (2)ARMv4。 增加了16位的 Thumb指令集,它可以产生更紧凑的代码,与相同功能的ARM代码相比, 可以节省超过35%的存储空间,同时具备32位代码的所有优点。 第1章嵌入式 Linux开发板选型 (3) ARMV5TE 在1999年,ARMv5TE版本改进了 Thumb指令集:增加了一些“增强型DSP指令”,简称 为E指令集。 这些指令用于增强处理器对一些典型的DSP算法的处理性能,使得音频DSP应用可以提 升70%的性能。许多系统在使用微控制器来进行各类控制的同时,还需要具备数据处理能力, 传统的做法要么是使用更高级的处理器(这使得成本增加),要么是使用多个处理器(这使得系 统复杂度增高)。通过E指令集可以在一个普通CPU中增加DSP的功能,这在成本、性能、简 化设计等方面都有优势。 (4)ARMv5TEJ。 在2000年,ARMv5J版本中增加了 Jazelle技术用于提供Java加速功能。相比于仅用 软件实现的Java虚拟机, Jazelle技术使得Java代码的运行速度提高8位,而功耗降低80%。 Jazelle技术使得可以在一个单后的处理器上运行Java程序、已经建立好的操作系统和 应用程序。 (5)ARMv6。 在2001年,ARMv6问世。它在很多方面都有改进;存储系统、异常处理,最重要的是增 加了对多媒体功能的支持。ARMv6中包含孑些媒体指令以支持SIMD媒体功能扩展。SIMD 媒体功能扩展为音频视频的处理提供了优化功能可以使音频/视频的处理性能提高4倍。 ARM6中,还引入了Thmb-2和 stone技术,这是两个可选的技术。之前的版本中 ARM指令和 Thumb指令分别运行于不同的处理器状态,执行不同指令集的指令前要进行切换 Thumb-2技术增加了混合模式的功能,定义了个新的32位指令集,使得可以运行32位指 令与传统16位指令的混合代码这能够提供ARM指令级别的性能”与“ Thumb指令级别的 代码密度”。 Trustzon技术在便件上提供了两个隔离的地址空间:安全域( secure world)和 非安全域( non-secure world,给系统提供了一个安全机制。 (6)ARMv。 ARMv7架构使用 Thumb-2技术,还使用了NE0N技术,将DSP和媒体处理能力提高了近4 倍,并支持改良的浮点运算,满足下一代3D图形、游戏物理应用以及传统嵌入式控制应用的需 求 可以总结:版本名中的T表示 Thumb指令集,E表示增强型DSP指令,J表示Java加速 器 3.ARM处理器系列 在相同指令集下,搭配不同部件就可以组装出具有不同功能的处理器,比如有无内存管 理单元、有无调试功能等等。它们可以分为8个系列,系列名中的后缀含义如下 1T:表示支持 Thumb指令集 2D:表示支持片上调试( Debug) 第1章嵌入式 Linux开发板选型 3M:表示内嵌硬件乘法器( Multiplier) 4I:支持片上断点和调试点 5E:表示支持增强型DSP功能 6J:表示支持 Jazelle技术,即Java加速器 7S:表示全合成式( full synthesizable) 这8个系列中,ARM7、ARM9、ARM9E和ARM10为4个通用处理器系列,每一个系列提供 套相对独特的性能来满足不同应用领域的需求。 Securcore系列专门为安全要求较髙的应 用而设计。 下面简要说明它们的特点如下,要了解更详细的信息请参考ARM公司的网站 (http://www.arm.com) (1)ARM7。 ARM7系列处理器是低功耗的32位RISC微处理器,它主要用于对成本、功耗特别敏感的 产品。最高主频可以达到130MIPS,支持 Thumb16位指令集和ARM32位指令集 ARM7系列微处理器包括如下几种类型的核:ARM7TDMI、ARM7TDMI-S、ARM720T、ARM7EJ-S。 其中,ARM7TMDI是目前使用最广泛的32位嵌入式RISC处理器,属低端ARM处理器核。 ARM7系列的处理器没有内存管理单元(M (2)ARM9。 与ARM7相比,ARM9的最大差别在于:有MU和 CACHE。它的指令执行效率较ARM7有较 大提高,最高主频可达到:0M ARM7系列微处理器有A920和ARN92T两种类型。 (3)ARM9E。 AR9E系列微处理器在单令的处理器内核上提供了微控制器、DSP、Java应用系统的解决 方案,极大的减少了芯片的面积利系统的复杂程度。ARM9E系列微处理器提供了增强的DsP 处理能力,很适合于那些需要同时使用DSP和微控制器的应用场合。 它有ARM926EJ-S、ARM946E-S、ARM966E-S、ARM968E-S和ARM996HS共5种类型。 (4)ARM1OE。 ARM10E系列微处理器具有更加杰出的高性能、低功耗两个特点;由于使用了新的体系结 构,它拥有所有ARM系列中最高的主频。 ARMIOE系列微处理器采用了一种新的省电模式,支 持“64- bit load- store micro- architecture”,含有浮点运算协处理器(符合IEEE754标准, 支持向量运算)。 它有ARM1020E、ARM1022E和ARM1026EJ-S共3种类型。 (5)ARM1l。 ARMII系列微处理器是ARM公司近年推出的新一代RISC处理器,它是ARM新指令架构 ARMv6的第一代设计实现。ARM1的媒体处理能力和低功耗特点,特别适用于无线和消费 类电子产品;其髙数据吞吐量和髙性能的结合非常适合网络处理应用;另外,也在实时性能 第1章嵌入式 Linux开发板选型 和浮点处理等方面ARM11可以满足汽车电子应用的需求。可以预言,基于AMRv6体系结构的 ARM11系列处理器将在上述领域发挥巨大的作用。 它有这4种类型: ARMIl MPCore,ARM1136J(F)-S,ARM1156T2(F)-S和ARM1176JZ(F)-S。 (6) Cortex Cortex系列处理器是基于ARMv7架构的,分为 Cortex-A、 Cortex-R和 Cortex-M三类。 Cortex-A为传统的、基于虚拟存储的操作系统和应用程序而设计,支持ARM、 Thumb和 Thumb-2 指令集; Cortex-R针对实时系统设计,支持ARM、 Thumb和 Thumb-2指令集; Cortex-M为对 价格敏感的产品设计,只支持 Thumb-2指令集。 (7) Securcore。 SecurCore系列微处理器专为安全需要而设计,提供了完善的32位RISC技术的安全解 决方案,因此, Securcore系列微处理器除了具有ARM体系结构的低功耗、髙性能的特点舛 还具有其独特的优势,即提供了对安全解决方案的支持 Securcore系列微处理器有如下类型: SecurCoreSC100、 SecurCore sce200。 (8)OptimoDE Data Engines 这是一个新的IP核,针对高性能的嵌入式信号处理应用而设计。 另外, Intel公司的 StrongARM Xscale系列处理器也属于ARM架构。 IntelstrongARM 处理器是便携式通讯产品和消费类电子产品的理想选择,已成功应用于多家公司的掌上电脑 系列产品。 Xscale处理器是基于ABM5体系结构的解决方案,是一款全性能、高性价比 低功耗的处理器。它支持16位的Thmb指令和BsP指令集,已使用在数字移动电话、个人数 字助理和网络产品等场合Xae处理器也是 Intel目前主要推广的一款ARM微处理器。 1.2.2在嵌入式系统中选择 Linux的理由 随着技术的发展及人们需求的增加,各种消费类电子产品的功能越来越强大,使得随身 携带的电子设备变得“等同于PC”:上面有键盘、触摸屏、LCD等输入输出设备,可以观看视 频、听音乐,可以浏览网站、接收邮件、可以査看、编辑文档等。在工业控制领域,系统级 芯片(SoO)以更低廉的价格提供了更丰富的功能,使得可以在一个嵌入式系统中同时完成更多 的控制功能。 当系统越来越大,应用越来越多,使用操作系统就成为一个值得考虑的选择。操作系统 的作用有:统一管理系统资源,为用户提供访问硬件的接口,调度多个应用程序,管理文件 系统,等等。在嵌入式领域可以选择的操作系统有很多,比如: Linux、 VXWorks、 Windows ce、 uC/0S-II等。 VXWorks是美国 Windriver公司开发的嵌入式实时操作系统。单就性能而言,它是非常 优秀的操作系统:具有可裁剪的微内核结构,髙效的仼务管理,灵活的仼务间通讯,微秒级 第1章嵌入式 Linux开发板选型 的中断处理,支持 POSIX1003.1b实时扩展标准,支持多种物理介质及标准、完整的TCP/IP 网络协议等。缺点是它支持的硬件相对较少,并且源代码不开放,需要专门的技术人员进行 开发和维护,并且授权费比较高 Windows ce是微软公司针对嵌入式设备开发的32位、多任务、多线程的操作系统。它 支持κ86、ARM、MIPS、SH等架构的CPU,硬件驱动程序丰富,比如支持WiFi、USB2.0等新 型设备,并具有强大的多媒体功能;可以灵活裁剪以减小系统体积;与PC上的 Windows操作 系统相通,开发、调试工具使用方便,应用程序的开发流程与PC上的 Windows程序上的开发 流程相似。就开发的便利性而言(特别是对于习惯在 Windows下开发的程度员), Windows ce 是最好的。但是,其源代码没有开放(目前开放了一小部分),开发人员难以进行更细致的定 制;占用比较多的内存,整个系统相对庞大;版权许可费用也比较高。 uC/0S-∏I是 Micrium公司开发的操作系统,可用于8位、16位和32位处理器。可裁剪, 对硬件要求较低;可以运行最多64个任务;调度方式为抢占式,即总是运行最高优先级的就 绪任务。可以获得uC/0sS-II的全部代码,但它不是开放源码的免费软件,作为研究和学习, 可以通过购买相关书藉获得源码;用于商业目的时,必须购买其商业授权。相对于其他按照 每个产品收费的操作系统,uC/0s-II采用一次性的收费方式,可谓低廉。需要说明的是, uC/0s-∏仅是一个实时内核,用户需要完成其他吏多的工作,比如编写硬件驱动程序、实现 文件系统操作(使用文件的话)等。 Linux是遵循GPL协议的开放源码的操作系统,使用时无需交纳许可费用。内核可任意 裁剪,几乎支持所有的32位、64位C内核电麦持的硬件种类繁多,几乎可以从网络上找 到所有硬件驱动程序;支持几乎所网络协议有大量的应用程序可用,从编译工具、调试 工具到GUI程序,几乎都有遵循研物议的相关版本;有庞大的开发人员群体,有数量众多 的技术论坛,大多问题基本可以得剑快速而免的解答。其缺点在于实时性,虽然26版本 的Linx在实时性方面有较天改进,但是仍无法称为实时操作系统。有不少变种imx在实 时性方面做了很大改进,如 RTLinux达到了硬实时, TimeSys linux提高了实时性。这些 改进的 Linux版本既有遵循G协议的免费版本,也有要付费的商业版本。 正是由于Lmx开放源代码、易于移植、资源丰富、免费等优点,使得它在嵌入式领域 越来越来流行。更重要的一点,由于嵌入式 Linux与 PC Linux源于同一套内核代码,只是裁 剪的程度不一样,这使得很多为PC开发的软件再次编译之后,可以直接在嵌入式设备上运行, 这使得软件资源“极大”非富,比如各类实用的函数库、小游戏等。 第1章嵌入式 Linux开发板选型 1.3嵌入式 Linux开发板选型 1.3.1概念纠正 开发板类型很多,如何选择?ARM9是不是已经过时了? 首先更正一些概念:ARM9并没有过时 1.写驱动不涉及CPU,只涉及CPU之外的设备 嵌入式芯片被称为SoC( System on Chip),它上面既有CPU还有其他模块,比如内存控 制器、USB、UART等。 如果你是软件工程师,无论是ARM9、ARM11、A8还是A9,对我们来说是没有差别的;差 別不在于CPU核,差别在于CPU之外的模块的寄存器操作不一样。因为我们写驱动并不涉及 CPU核,只是操作CPU之外的设备,只是读写这些设备的寄存器。 2.一理通,百理明:掌握了原理,通吃所有芯片 本书作者从2005年入行,在ARM架构方面经历了ARM9,ARM11, CORTEX A8/A9,现在又到 了多核;期间用过MPs, Blackfin等架构的芯片,但是所用到的知识跟S3C2440所学的知 识,完全没变过!根本没变过! “我学S3C240千嘛?工作中又不用S3C20c0 此话大错特错,你是用S3C240学习知识。不是学习5302140这个芯片本身 即使你现在选择很牛的芯来学匀,再过1年它也过时了;追芯片,怎么追得上!? “S3C244快停产了还学铊干嘛大错错,理由同上。 从2008年起三星就想停S3C244,2013年也确实停过一会,但是马上又恢复生产了 需求量太大了。 我们是学习知识,不是学习芯片,万一停产了又有什么关系?工作中几乎可以肯定不用 S3C2440,也不一定会使用某款牛芯片! 3.2怎么选择开发板呢? 1.对于初学者:我建议用S3C2440入门。 因为S3C2440的资料是最丰富的,无论是网络上的贴子、书籍、视频,都已经形成了 个完整的体系。 你碰到的大多数问题,别人都已经碰到并解决了。 2.学完S3C240后再换另一种开发板重写代码 为什么要换开发板? 这是对你所学知识的检验与煅炼,把S3C2440上所有的代码,都在新板子上自己重新写

用户评论
请输入评论内容
评分:
暂无评论