实际的基于arm产品是怎样运行手机应用程序停止运行的

Windows运行Android应用程序实现应用兼容
作者:快科技
Windows运行Android应用程序早已经不是什么新鲜的事情,因为微软最新的&Project Astoria&项目就是让Windows 10系统通过内置的Android子系统实现应用兼容,开发者几乎不费吹灰之力就能让自己的应用作为Windows通用应用来运行,他们要做的只是调整Windows对应的API接口而已。那么,让Android运行Windows应用程序,这样的事情你可曾想过吗?
近日,一家名为CodeWeavers的开发工作室,发布了一个有趣的跨平台项目&CrossOver for Android&,即让Android平板电脑和智能手机通过旗下的&兼容层&来运行Windows平台上的应用程序。
CrossOver是啥玩意?
CodeWeavers其实是一家专门做应用兼容层的公司,他们大多时间都在做允许Windows应用程序在非Windows系统运行的开源兼容层,早期也曾利用&Wine&项目让Linux和Mac OS X运行Windows应用程序。这一次他们考虑的是Android平台,他们认为有些时候 Android 用户也很想用原版 Microsoft Office,或者运行一些 Windows 的实用程序。
CodeWeavers认为CrossOver近乎完美缺陷很少,它根本不需要VMWare这种虚拟化的功能来实现,而是利用硬件上的兼容层来实现,并且所兼容的第三方应用程序本质上运行起来与Windows上没有区别,速度也很快。
需要说明的是,CodeWeavers开发的项目CrossOver要求Android平板电脑内置x86架构的芯片,至少是Atom级别,所以目前大多数基于ARM芯片的Android平板电脑就不用考虑了。同时,由于CrossOver项目不是让平板运行Windows系统,所以一些Windows特定的功能将无法受益,比如x64应用、Continuum功能和一些应用的推送机制等。
另外,虽然CrossOver在一定程度上定然可以让Android平板电脑提高生产力,但是相信大家也很清楚,Windows桌面上很多应用程序的设计都不支持触摸,或者没有针对触摸优化,所以额外准备一套键盘和鼠标还是很有必要的事情。
CrossOver何时来呢?其他要求呢?
从CodeWeavers相关网站的信息了解,CrossOver项目将在不久之后推出一个技术预览版本,年底正式登陆Android,没有测试版本,而且软件也完全免费。换句话说,Android平板电脑现在的可玩性将更高,而且也不用再去研究是否可以运行Windows系统。
当然,运行CrossOver的Android平板电脑配置要求最低搭载Atom或者AMD处理器,至少有2GB的运行内存,市面上已经有一些不错的产品,比如联想的Yoga 2、戴尔的Venue 10 7000系列以及Nokia N1平板电脑,手机则有联想的K900或华硕的ZenFone 2。
CodeWeavers称预览版将率先在Android平板电脑上试验,不清楚何时登陆手机。官方的信息还显示,一些大型的应用如 Adobe Creative Suite 6 和 QuickBooks 2015 暂时被列为&未经验证&,所以是否能够让用户安装使用还是未知数。
其实可以不用那么折腾
说实话,CrossOver 只是一种比较折腾的解决方案,要想平板电脑真正能够完美运行Windows应用程序,直接购买Windows平板电脑即可,而且市面上大把Windows平板比Android平板便宜,它们都提供了完整的Windows体验,而且有些还支持双系统,或提供兼容层运行Android应用程序。
想要在Android设备上玩更强大的Windows功能,还有另外一种玩法,那就是准备一台时刻开机的Windows电脑,接着在Android设备上安装远程桌面应用,通过远程控制家中的电脑展开工作也是不错的方式,还能增加续航。
官方微博/微信
每日头条、业界资讯、热点资讯、八卦爆料,全天跟踪微博播报。各种爆料、内幕、花边、资讯一网打尽。百万互联网粉丝互动参与,TechWeb官方微博期待您的关注。
↑扫描二维码
想在手机上看科技资讯和科技八卦吗?想第一时间看独家爆料和深度报道吗?请关注TechWeb官方微信公众帐号:1.用手机扫左侧二维码;2.在添加朋友里,搜索关注TechWeb。
Windows运行Android应用
Android应用程序
相关的资讯有:
Windows运行Android应用
Android应用程序
相关的博文有:
既然大家想提前知道iPhone 7长什么样子,苹果也就不藏着掖着了,这是在说梦话吗???...
下周三,小米将在北京召开发布会,正式发布旗下的新机红米Pro。就在刚刚,雷军在微博...
目前已经有多款国产手机配备了多达6GB内存,能不能用到且不说,至少看上去很唬人。有...
根据在线旅行和费用管理服务提供商Certify公布的数据,2016年第二季度,Uber仍然受到...
据路透社报道,电商巨头亚马逊将与富国银行合作,进军学生贷款业务,为付费订阅Prime ...
有消息称投资者在Uber的投资者有意与滴滴签署合作协议,并在探讨Uber中国区与滴滴之间...
iOS 10正式版还要一段时间到来,而苹果也是在不断完善它,现在新系统又开启了一个隐藏...
MIUI 8重磅功能曝光!小米Pay来了
很早之前就有消息称小米将进军移动支付领域,而且去...
在QQ 8.4正式版更新多次之后,腾讯在日前正式放出了QQ 8.5体验版。QQ 8.5体验版的版本...
近日,精灵宝可梦系列制作人增田顺一表示《精灵宝可梦:GO》在日本及其他亚洲国家正式......
大话西游手游七圣降世资料片即将推出,各种新地图和套装等待大家,下面为大家介绍新资......
倩女幽魂手游公测已近两月,表现持续强势。在7、8两个月倩女手游将推出首个大型资料片......
芒果互娱携手湖南卫视、芒果TV于5月26日在北京举行了一场以“1+N,一起玩”为主题的游......
Copyright (C)
All rights reserved.
请选择一张图片分享
要转发到新浪微博,请
要转发到QQ空间,请用GNU工具开发基于ARM的嵌入式系统_通信产品_中国百科网
用GNU工具开发基于ARM的嵌入式系统
      摘要:介绍如何利用GNU的工具开发基于ARM的嵌入式系统,以及使用编译器、连接器和调试工具的具体方法,为广大嵌入式系统开发人员提供一种低成本的开发手段。 &&& 关键词:ARM GNU MC928MX1 gcc gdb gdbserver&&& 当前,ARM公司的32位RISC处理器,以其内核耗电少、成本低、功能强、特有16/32位双指令集,已成为移动通信、手持计算、多媒体数字消费等嵌入式解决方案的RISC标准,市场占有率超过了75 %。多家公司都推出了自己的基于ARM内核的处理器产品,越来越多的开发人员开始了针对ARM平台的开发。通常开发人员需要购买芯片厂商或第三方提供的开发板,还需要购买开发软件,如C编译器或者集成了实时操作系统的开发环境。开发板的价格从数百到上千美元,而编译器、实时操作系统价格更是动辄数千到数万美元。这样,在开发初期,软硬件上的投资就需要上万美元,对于国内大多数开发人员来说,无疑是太贵了。  庆幸的是,GNU所倡导的自由软件给开发者带来了福音。1984 年,旨在开发一个类似 Unix 的,并且是完全免费的完整操作系统和配套工具:GNU 系统(发音为"guh-NEW")。GNU的操作系统和开发工具都是免费的,遵循GNU 通用公共许可证 (GPL)协议,任何人都可以从网上获取全部的源代码。关于GNU和公共许可证协议的详细资料,读者可参看GNU网站的中文介绍:http://www.gnu..html。  除了大家熟知的Linux操作系统外,GNU的软件还包括编译器(gcc,g++)、二进制转换工具(objdump,objcopy)、调试工具(gdb,gdbserver,kgdb)和基于不同硬件平台的开发库。GNU开发工具的主要缺点是采用命令行方式,用户掌握和使用比较困难,不如基于Windows系统的开发工具好用。但是,GNU工具的复杂性是由于它更贴近编译器和操作系统的底层,并提供了更大的灵活性。一旦学习和掌握了相关工具,也就了解了系统设计的基础知识,为今后的开发工作打下基础。GNU的开发工具都是免费的,遵循GPL协议,任何人都可以从网上获取。笔者参与了一个基于ARM平台的嵌入式Linux系统开发,采用的是摩托罗拉龙珠系列的MC928MX1。从测试代码、引导程序、嵌入式Linux移植、应用程序、图形界面都可以用GNU工具进行开发,不需要在开发工具上做额外的投入。本文所介绍的开发方法同样适用于其它公司的基于ARM的产品。1 硬件平台  MC928MX1(以下简称MX1)是摩托罗拉公司基于ARM核心的第一款MCU,主要面向高端嵌入式应用。内部采用ARM920T内核,并集成了SDRAM/Flash、LCD、USB、蓝牙(bluetooth)、多媒体闪存卡(MMC)、CMOS摄像头等控制器。关于MX1的详细资料,感兴趣的读者可以参考.cn/semiconductors/。作为应用开发的最小系统必须包括RAM(程序运行空间)、Flash(存放目标代码)和串行接口(用于调试和下载程序)。MX1提供了6个片选端(CS0~CS5),内置了SDRAM控制器,数据宽度32位。在笔者的系统中采用了2片8M×16位的SDRAM和2片4M×16位的同步Flash存储器,分别接入数据线的低16位和高16位,如图1所示。  图1中SDRAM接片选端CS2,Flash接片选端CS3,其余为SDRAM/Flash的控制信号。最小系统还包括至少1个串行接口,可以采用MX1内置的UART控制器,图略。2 自举模式  目前,许多嵌入式处理器都提供了自举模式(Bootstrap),供用户写入引导代码。自举模式利用了固化在芯片内部的一段引导程序,当处理器复位时,如果在特定引脚上加信号,则处理器将在复位后执行固化ROM中的程序。例如,MX1提供了4条复位引脚,复位时引脚不同的电平组合可以从不同的片选端启动系统。自举ROM中的程序完成串口的初始化,然后等待用户从串口写入用户代码。自举模式所能接受的是一种专门格式的文本文件,包括数据和要写入/读出的地址。关于自举模式的代码格式,可参考相关芯片的手册。在摩托罗拉的网站还提供了许多小工具,帮助开发者将其它格式的文件转换成为自举模式格式。通过自举模式下载的通常是一段和上位机软件(如超级终端)通信的程序,完成接收数据并写入Flash的操作。写入的数据可以是用户自己的应用程序、数据或者操作系统的内核。通过自举模式下载的引导程序同样可以用GNU工具开发。3 GNU的编译器和开发工具  GNU提供的编译工具包括汇编器as、C编译器gcc、C++编译器g++、连接器ld和二进制转换工具objcopy。基于ARM平台的工具分别为arm-linux-as、arm-linux-gcc、arm-linux-g++、arm -linux-ld 和arm-linux-objcopy。GNU的所有开发工具都可以从www.gnu.org上下载,基于ARM的工具可以从www.uclinux.org获得。GNU的编译器功能非常强大,共有上百个操作选项,这也是这类工具让初学者头痛的原因。不过,实际开发中只需要用到有限的几个,大部分可以采用缺省选项。GNU工具的开发流程如下:编写C、C++语言或汇编源程序,用gcc或g++生成目标文件,编写连接脚本文件,用连接器生成最终目标文件(elf格式),用二进制转换工具生成可下载的二进制代码。GNU工具都运行在Linux下,开发者需要1台运行Linux的PC作为上位机。由于篇幅所限,不能完整地介绍整个嵌入式操作系统的开发过程,将以第二节中提到的通过自举模式下载的引导程序为例,说明开发的过程。对于像Linux这样的大系统,基本的开发流程是一样的。  引导程序将通过自举模式下载到MX1的片内RAM,从地址0x开始并执行。完成串口和SDRAM的初始化后,引导程序将等待接收应用程序或操作系统内核,将接收到的数据放在SDRAM中。数据接收完毕后,引导程序将SDRAM中的数据写入Flash,下一次就可以从Flash中直接引导系统了。由于操作系统的内核比较大,如Linux有1 MB以上,下载过程必须考虑纠错。因此,接收部分采用Xmode协议,可以用Windows下超级终端的Xmode发送方式发送文件。&&& (1)编写C、C++语言或汇编源程序  通常汇编源程序用于系统最基本的初始化,如初始化堆栈指针、设置页表、操作ARM的协处理器等。初始化完成后就可以跳转到C代码执行。需要注意的是,GNU的汇编器遵循AT&T的汇编语法,读者可以从GNU的站点(www.gnu.org)上下载有关规范。汇编程序的缺省入口是start标号,用户也可以在连接脚本文件中用ENTRY标志指明其它入口点(见下文关于连接脚本的说明)。&&& (2)用gcc或g++生成目标文件  如果应用程序包括多个文件,就需要进行分别编译,最后用连接器连接起来。如笔者的引导程序包括3个文件:init.s(汇编代码、初始化硬件) xmrecever.c(通信模块,采用Xmode协议)和flash.c(Flash擦写模块)。分别用如下命令生成目标文件:arm-linux-gcc-c-O2-o init.o init.sarm-linux-gcc-c-O2-o xmrecever.o xmrecever.carm-linux-gcc-c-O2-o flash.o flash.c其中-c命令表示只生成目标代码,不进行连接;-o 命令指明目标文件的名称;-O2表示采用二级优化,采用优化后可使生成的代码更短,运行速度更快。如果项目包含很多文件,则需要编写makefile文件。关于makefile的内容,请感兴趣的读者参考相关资料。(3)编写连接脚本文件  gcc等编译器内置有缺省的连接脚本。如果采用缺省脚本,则生成的目标代码需要操作系统才能加载运行。为了能在嵌入式系统上直接运行,需要编写自己的连接脚本文件。编写连接脚本,首先要对目标文件的格式有一定了解。GNU编译器生成的目标文件缺省为elf格式。elf文件由若干段(section)组成,如不特殊指明,由C源程序生成的目标代码中包含如下段:.text(正文段)包含程序的指令代码;.data(数据段)包含固定的数据,如常量、字符串;.bss(未初始化数据段)包含未初始化的变量、数组等。C++源程序生成的目标代码中还包括.fini(析构函数代码)和.init(构造函数代码)等。有关elf文件格式,读者可自行参考相关资料。连接器的任务就是将多个目标文件的.text、.data和.bss等段连接在一起,而连接脚本文件是告诉连接器从什么地址开始放置这些段。例如笔者的引导程序连接文件link.lds为:ENTRY(begin)SECTION{ .=0x;.text : { *(.text) }.data: { *(.data) }.bss: { *(.bss) }}  其中,ENTRY(begin)指明程序的入口点为begin标号;.=0x指明目标代码的起始地址为0x,这一段地址为MX1的片内RAM;.text : { *(.text) }表示从0x开始放置所有目标文件的代码段,随后的.data: { *(.data) }表示数据段从代码段的末尾开始,再后是.bss段。(4)用连接器生成最终目标文件  有了连接脚本文件,如下命令可生成最终的目标文件:arm-linux-ld-nostadlib-o bootstrap.elf-T link.lds init.o xmrecever.o flash.o其中,ostadlib表示不连接系统的运行库,而是直接从begin入口;-o指明目标文件的名称;-T指明采用的连接脚本文件;最后是需要连接的目标文件列表。(5)生成二进制代码  连接生成的elf文件还不能直接下载执行,通过objcopy工具可生成最终的二进制文件:arm-linux-objcopy-O binary bootstrap.elf bootstrap.bin其中-Obinary指定生成为二进制格式文件。Objcopy还可以生成S格式的文件,只需将参数换成-O srec。如果想将生成的目标代码反汇编,还可以用objdump工具:arm-linux-objdump-D bootstrap.elf  至此,所生成的目标文件就可以直接写入Flash中运行了。如果要通过自举模式下载,还需要转换为自举模式的文件格式,相关转换工具可以在摩托罗拉的网站上找到。  掌握了GNU工具后,开发者就可以开发或移植C或C++代码的程序。用户可以不需要操作系统,直接开发简单应用程序。但对于更复杂的应用来说,操作系统必不可少。目前流行的源代码公开的操作系统如Linux、μC/OS都可以用GNU工具编译。ARM的Linux已有很多成熟的版本,可以支持ARM720、ARM920、ARM1020等多种处理器,读者可从www.uclinux.org或上获取最新信息。Linux移植过程中和处理器相关的代码都放在arch/arm目录下。对于内核,用户需要做的是设定自己系统的内存映像,RAM起始地址,I/O地址空间和虚拟I/O地址空间,参看arch/arm/mach-integrator/arch.c文件。除了内核外,用户还需要为自己的系统编制各种各样的驱动程序。4 调试工具  Linux下的GNU调试工具主要是gdb、gdbserver和kgdb。其中gdb和gdbserver可完成对目标板上Linux下应用程序的远程调试。gdbserver是一个很小的应用程序,运行于目标板上,可监控被调试进程的运行,并通过串口与上位机上的gdb通信。开发者可以通过上位机的gdb输入命令,控制目标板上进程的运行,查看内存和寄存器的内容。gdb5.1.1以后的版本加入了对ARM处理器的支持,在初始化时加入-target==arm参数可直接生成基于ARM平台的gdbserver。gdb工具可以从ftp://ftp.gnu.org/pub/gnu/gdb/上下载。  对于Linux内核的调试,可以采用kgdb工具,同样需要通过串口与上位机上的gdb通信,对目标板的Linux内核进行调试。由于篇幅所限,感兴趣的读者可以从/projects/kgdb/上了解具体的使用方法。结束语  本文以一个具体的实例为例,对GNU工具中的常用功能作了介绍。其实GNU工具的功能还远不止这些,更进一步的操作有:针对不同处理器,不同算法的软件优化、高效的内嵌汇编、大型项目管理功能等。相信GNU能成为越来越多开发人员的选择。
Copyright by ;All rights reserved.如何学习基于ARM嵌入式系统开发
1.4 如何学习基于 ARM 嵌入式系统开发
ARM 微处理器因其卓越的低功耗、高性能在 32
位嵌入式应用中已位居世界第一,是高性能、低功耗嵌入式处理器的代名词,为了顺应当今世界技术革新的潮流,了解、学习和掌握嵌入式技术,就必然要学习和掌握以
ARM 微处理器为核心的嵌入式开发环境和开发平台,这对于研究和开发高 性能微处理器、DSP 以及开发基于微处理器的 SoC
芯片设计及应用系统开发是非常必要的。
那么究竟如何学习嵌入式的开发和应用?技术基础是关键。技术基础决定了一个人学习知识、掌握技能的能力。嵌入式技术融合具体应用系统技术、嵌入式微处理器/DSP
技术、系统芯片 SoC
设计制造技术、应用电子技术和嵌入式操作系统及应用软件技术,具有极高的系统集成性,可以满足不断增长的信息处理技术对嵌入式系统设计的要求。因此学习嵌入式系统首先是基础知识学习,主要是相关的基本硬件知识,如一般处理器及接口电路(Flash/
SRAM/SDRAM /Cache, UART,Timer, GPIO, Watchdog、USB、IIC
等...)等硬件知识,至少了解一种 CPU
的体系结构;至少了解一种操作系统(中断,优先级,任务间通信,同步...)。对于应用编程,要掌握 C、C++及汇编语言程序设 计(至少会
C),对处理器的体系结构、组织结构、指令系统、编程模式、一般对应用编程要有一定的了解。在此基础上必须在实际工程实践中掌握一定的实际项目开发技能。
其次对于嵌入式系统开发的学习,必须要有一个较好的嵌入式开发教学平台。功能全面的开发平台一方面为学习提供了良好的开发环境,另一方面开发平台本身也是一般的典型实际应用系统。在教学平台上开发一些基础例程和典型实际应用例程,对于初学者和进行实际工程应用也是非常必要的。
嵌入式系统的学习必须对基本内容有深入的了解。在处理器指令系统、应用编程学习的基础上,重要的是加强外围功能接口应用的学习,主要是人机接口、通讯接口,如
USB 接口、A/D 转换、 GPIO、以太网、IIC 串行数据通信、音频接口、触摸屏等知识的掌握。
嵌入式操作系统也是嵌入式系统学习重要的一部分,在此基础上才能进行各种设备驱动应用程 序的开发。
ARM+LINUX路线,主攻嵌入式Linux操作系统
(1) 掌握主流嵌入式微处理器的结构与原理(初步定为arm9)
(2) 必须掌握一个嵌入式操作系统 (初步定为uclinux或linux,版本待定)
(3) 必须熟悉嵌入式软件开发流程并至少做一个嵌入式软件项目。
从事嵌入式软件开发的好处是:
(1)目前国内外这方面的人都很稀缺。这一领域入门门槛较高,所以非专业IT人员很难切入这一领域;另一方面,
是因为这一领域较新,目前发展太快,大多数人无条件接触。
(2)与企业计算等应用软件不同,嵌入式领域人才的工作强度通常低一些(但收入不低)。
(3)哪天若想创业,搞自已的产品,嵌入式不像应用软件那样容易被盗版。硬件设计一般都是请其它公司给订做(
这叫“贴牌”:OEM),都是通用的硬件,我们只管设计软件就变成自己的产品了。
(4)兴趣所在,这是最主要的。
从事嵌入式软件开发的缺点是:
(1)入门起点较高,所用到的技术往往都有一定难度,若软硬件基础不好,特别是操作系统级软件功底不深,则可能
不适于此行。
(2)这方面的企业数量要远少于企业计算类企业。
(3)有少数公司经常要硕士以上的人搞嵌入式,主要是基于嵌入式的难度。但大多数公司也并无此要求,只要有经验
(4)平台依托强,换平台比较辛苦。
兴趣的由来:
1、成功观念不同,不虚度此生,就是我的成功。
2、喜欢思考,挑战逻辑思维。
C是一种能发挥思维极限的语言。关于C的精神的一些方面可以被概述成短句如下:
相信程序员。
不要阻止程序员做那些需要去做的。
保持语言短小精干。
一种方法做一个操作。
使得它运行的够快,尽管它并不能保证将是可移植的。
4、喜欢底层开发,讨厌vb类开发工具(并不是说vb不好)。
5、发展前景好,适合创业,不想自己要死了的时候还是一个工程师。
方法步骤:
1、基础知识:
目的:能看懂硬件工作原理,但重点在嵌入式软件,特别是操作系统级软件,那将是我的优势。
科目:数字电路、计算机组成原理、嵌入式微处理器结构。
汇编语言、C/C++、编译原理、离散数学。
数据结构和算法、操作系统、软件工程、网络、数据库。
方法:虽科目众多,但都是较简单的基础,且大部分已掌握。不一定全学,可根据需要选修。
主攻书籍:the c++ programming language(一直没时间读)、数据结构-C2。
2、学习linux:
目的:深入掌握linux系统。
   方法:使用linux—〉linxu系统编程开发—〉驱动开发和分析linux内核。先看深,那主讲原理
。看几遍后,看情景分析,对照深看,两本交叉,深是纲,情是目。剖析则是0.11版,适合学习。最后
深入代码。
主攻书籍:linux内核完全剖析、unix环境高级编程、深入理解linux内核、情景分析和源代。
3、学习嵌入式linux:
目的:掌握嵌入式处理器其及系统。
方法:(1)嵌入式微处理器结构与应用:直接arm原理及汇编即可,不要重复x86。
   (2)嵌入式操作系统类:ucOS/II简单,开源,可供入门。而后深入研究uClinux。
   (3)必须有块开发板(arm9以上),有条件可参加培训(进步快,能认识些朋友)。
   主攻书籍:毛德操的《嵌入式系统》及其他arm9手册与arm汇编指令等。
4、深入学习:
   A、数字图像压缩技术:主要是应掌握MPEG、mp3等编解码算法和技术。
   B、通信协议及编程技术:TCP/IP协议、802.11,Bluetooth,GPRS、GSM、CDMA等。
   C、网络与信息安全技术:如加密技术,数字证书CA等。
   D、DSP技术:Digital Signal Process,DSP处理器通过硬件实现数字信号处理算法。
    说明:太多细节未说明,可根据实际情况调整。重点在于1、3,不必完全按照顺序作。对于学习c++,理
由是c++不只是一种语言,一种工具,她还是一 种艺术,一种文化,一种哲学理念、但不是拿来炫耀得东西。对
于linux内核,学习编程,读一些优秀代码也是有必要的。
   注意: 要学会举一反多,有强大的基础,很多东西简单看看就能会。想成为合格的程序员,前提是必须
熟练至少一种编程语言,并具有良好的逻辑思维。一定要理论结合实践。
   不要一味钻研技术,虽然挤出时间是很难做到的,但还是要留点余地去完善其他的爱好,比如宇宙,素
描、机械、管理,心理学、游戏、科幻电影。还有一些不愿意做但必须要做的!
   技术是通过编程编程在编程编出来的。永远不要梦想一步登天,不要做浮躁的人,不要觉得路途漫上。
而是要编程编程在编程,完了在编程,在编程!等机会来了在创业(不要相信有奇迹发生,盲目创业很难成功
,即便成功了发展空间也不一定很大)。
很多ARM初学者都在犹豫,是选择ARM7好还是ARM9好?下面就从3个方面详细的介绍
ARM7与ARM9对于初学者学习
中的帮助。
和ARM7相比,应该说ARM9在性能方面有很大提高,但ARM9更适合作为产品开发平台,并不适合初学者用于学习。
主要原因如下:
从硬件设计方面,ARM7主频在100MHz以内,学生完全可以掌握其设计技术,而ARM9在200-600MHz左右,属高速设
计,至少有3年以上经验的硬件工程师才可能进行设计,一般学生很难掌握。
从软件设计方面,在教学中采用源码开发的操作系统已成为共识,ARM7资源紧凑,适合运行ucos和ucLinux等源
码开放的操作系统,在教学中能够充分体现嵌入式系统对资源、成本、可靠性有严格需要的特点;而ARM9是系统
集成度更高的SOC,适合跑WinCE、Linux等高级操作系统,用于教学是“大马拉小车”,这样造成学生在设计时往
往不会关注资源、成本、可靠性的限制,就如同用一台PC进行教学一样,无法体现嵌入式教学的特点。
从应用方面,而ARM7芯片价格比ARM9低得多,而且ARM7芯片是目前嵌入式产品市场的主流,很多手机、小灵通等
产品都是基于ARM7的,占到市场份额的90%以上;采用ARM7就如同目前单片机开发与教学绝大多数采用51体系一
样,ARM7就是32位微处理器领域的51,有着持久的生命力。
&由于嵌入式主要分为操作系统和硬件两个方面,所以嵌入式工程师的就业方向要比一般的软件工程师更广、更深,同时其就业机会和入职待遇也要比普通软件工程师好。嵌入式工程师一般主要做嵌入式系统设计和开发的工作,其中包括硬件系统的建立和相关软件开发、移植、调试等工作。被认可的嵌入式工程师必须具备C/C++语言、汇编语言、操作系统等基础知识,并且要熟悉模拟电子技术和数字电子技术等硬件知识。除此之外,还要了解处理器体系结构的相关知识。
具体说来,嵌入式工程师需要去开发一些与硬件关系最密切的最底层软件,例如BootLoader、Board Support
Package以及一些最初级的硬件驱动程序。嵌入式工程师还需要去开发嵌入式操作系统和一些相应的应用软件,因为嵌入式硬件设计完后,各种功能基本是全靠软件来实现的,由此可见嵌入式设备的增值很大程度上取决于嵌入式软件,所以这部分的工作堪称整个嵌入式系统中最重要的工作。
虽然嵌入式工程师的工作内容涉及到硬件和软件两个大方面,但是从目前的形式来看,大多公司都是将硬件部分外包给一些专门的硬件设计公司的,而他们自己主要只负责软件的开发。
学习ARM嵌入式开发,尤其对于初学者而言,不应该过早地、过多地将精力用在嵌入式系统移植、Linux内核的研究和学习上,这些诱人的“热点”很容易使初学者迷失方向,进而忽视对基础知识的深入学习。以下是针对Linux系统的ARM嵌入式开发学习步骤:
& 第一,学习基本的裸机编程
对于学硬件的人而言,必须先对硬件的基本使用方法有感性的认识,更必须深刻认识该硬件的控制方式,如果一开始就学linux系统、学移植那么只会马上就陷入一个很深的漩涡。我在刚刚开始学ARM的时候是选择ARM7(主意是当时ARM9还很贵),学ARM7的时候还是保持着学51单片机的思维,使用ADS去编程,第一个实验就是控制led。学过一段时间ARM的人都会笑这样很笨,实际上也不是,我倒是觉得有这个过程会好很多,因为无论做多复杂的系统最终都会落实到这些最底层的硬件控制,因此对这些硬件的控制有了感性的认识就好很多了
学习裸机的编程的同时要好好理解这个硬件的构架、控制原理,这些我称他为理解硬件。所谓的理解硬件就是说,理解这个硬件是怎么组织这么多资源的,这些资源又是怎么由cpu、由编程进行控制的。比如说,s3c2410中有AD转换器,有GPIO(通用IO口),还有nandflash控制器,这些东西都有一些寄存器来控制,这些寄存器都有一个地址,那么这些地址是什么意思?又怎么通过寄存器来控制这些外围设备的运转?还有,noRFlash内部的每一个单元在这个芯片的内存中都有一个相应的地址单元,那么这些地址与刚刚说的寄存器地址又有什么关系?他们是一样的吗?而与norflash相对应的nandflash内部的储存单元并不是线性排放的,那么s3c2410怎么将nandflash的地址映射在内存空间上进行使用?或者简单地说应该怎么用nandflash?再有,使用ADS进对ARM9行编程时都需要使用到一个初始化的汇编文件,这个文件究竟有什么用?他里面的代码是什么意思?不要这个可以吗?
诸如此类都是对硬件的理解,理解了这些东西就对硬件有很深的理解了,这对以后更深一步的学习将有很大的帮助,如果跳过这一步,我相信越往后学越会觉得迷茫,越觉得这写东西深不可测。因为,你的根基没打好。
不过先声明一下,本人并没有使用ADS对ARM9进行编程,我是学完ARM7后直接就使用ARM9学linux系统的,因此涉及使用ADS对ARM9进行编程的问题我很难回答^_^,自己去研究研究吧。
对于这部分不久将提供一份教程,这个教程中的例程并不是我为我们所代理的板子写的,是我在我们学院实验室拿的,英培特为他们自己的实验箱写的,不过很有借鉴意义,可以作为一份有价值的参考。
& 第二,使用linux系统进行一些基本的实验
在买一套板子的时候一般会提供一些linux的试验例程,好好做一段时间这个吧,这个过程也是很有意义的,也是为进一步的学习积累感性认识,你能想象一个从没有使用过linux系统的人能学好linux的编程吗?好好按照手册上的例程做一做里面的实验,虽然有点娃娃学走路,有点弱智,但是我想很多高手都会经历这个过程。
在这方面我们深蓝科技目前没有计划提供相应的例程,主要是开发板的提供商会提供很丰富的例程,我们不做重复工作,只提供他们没有的、最有价值的东西给大家。
& 第三,研究完整的linux系统的的运行过程
& 所谓完整的linux系统包括哪些部分呢?
三部分:bootloader、linuxkernel(linux内核)、rootfile(根文件系统)。
那么这3部分是怎么相互协作来构成这个系统的呢?各自有什么用呢?三者有什么联系?怎么联系?系统的执行流程又是怎么样的呢?搞清楚这个问题你对整个系统的运行就很清楚了,对于下一步制作这个linux系统就打下了另一个重要的根基。介绍这方面的资料网上可以挖掘到几吨,自己好好研究吧。
& 第四,开始做系统移植
上面说到完整的linux有3部分,而且你也知道了他们之间的关系和作用,那么现在你要做的便是自己动手学会制作这些东西。
当然我不可能叫你编写这些代码,这不实现。事实上这个3者都能在网下载到相应的源代码,但是这个源代码不可能下载编译后就能在你的系统上运行,需要很多的修改,直到他能运行在你的板子上,这个修改的过程就叫移植。在进行移植的过程中你要学的东西很多,要懂的相关知识也很多,等你完成了这个过程你会发现你已经算是一个初出茅庐的高手了。
在这个过程中如果你很有研究精神的话你必然会想到看源代码。很多书介绍你怎么阅读linux源代码,我不提倡无目的地去看linux源代码,用许三多的话说,这没有意义。等你在做移植的时候你觉得你必须去看源代码时再去找基本好书看看,这里我推荐一本好书倪继利的《linux内核的分析与编程》,这是一本针对linux-2.6.11内核的书,说得很深,建议先提高自己的C语言编程水平再去看。
至于每个部分的移植网上也可以找到好多吨的资料,自己研究研究吧,不过要提醒的是,很多介绍自己经验的东西都或多或少有所保留,你按照他说的去做总有一些问题,但是他不会告诉你怎么解决,这时就要靠自己,如果自己都靠不住就找我一起研究研究吧,我也不能保证能解决你的问题,因为我未必遇到过你的问题,不过我相信能给你一点建议,也许有助你解决问题。
这一步的最终目的是,从源代码的官方主页上(都是外国的,悲哀)下载标准的源代码包,然后进行修改,最终运行在板子上。
盗用阿基米德的一句话:“给我一根网线,我能将linux搞定”。
& 第五,研究linux驱动程序的编写
移植系统并不是最终的目的,最终的目的是开发产品,做项目,这些都要进行驱动程序的开发。
Linux的驱动程序可以说是五花八门,linux2.4和linux2.6的编写有相当大的区别,就是同为linux2.6但是不同版本间的驱动程序也有区别,因此编写linux的驱动程序变都不是那么容易的事情,对于最新版本的驱动程序的编写甚至还没有足够的参考资料。那么我的建议就是使用、移植一个不算很新的版本内核,这样到时学驱动的编程就有足够的资料了。
这部分的推荐书籍可以参考另一篇文章《推荐几本学习嵌入式linux的书籍》。
& 第六,研究应用程序的编写
做作品做项目除了编写驱动程序,最后还要编写应用程序。现在的趋势是图形应用程序的开发,而图形应用程序中用得最多的还是qt/e函数库。我一直就使用这个函数库来开发自己的应用程序,不过我希望你能使用国产的MiniGUI函数库。盗用周杰伦的广告词就是“支持国产,支持MiniGUI”。MiniGUI的编程比较相似Windows下的VC编程,比较容易上手,效果应该说是相当不错的,我曾使用过来开发ARM7的程序。不过MiniGUI最大的不好就是没有像qtopia这样的图形操作平台,这大大限制了他的推广,我曾经幻想过与北京飞漫公司(就是MiniGUI的版权拥有者)合作使用MiniGUI函数库开发像qtopia这样的图形操作平台,不过由于水平有限这只能是幻想了,呵呵。
&1、简易的JTAG制作:
& 原理图及PCB(protel99)下载
& & 2、H-JTAG调试代理
H-JTAG是一个免费的ARM调试代理,程序没有任何限制,希望能给ARM的爱好者提供一
& 个简单实用的学习工具。
& blog提供了安装程序的下载,同时,也提供了常见的Q&A.
& 0. 支持ARM7/ARM9,支持自动检测和手动指定内核
& 1. 使用RDI接口,支持SDT,ADS,REALVIEW和IAR
& 2. 支持ADS1.2和SDT2.51和RREAL VIEW
& 3. 支持个硬件断点或者数量不限的软件断点
& 4. 支持ARM/THUMB模式
& 5. 支持LITTLEENDIAN & BIGENDIAN
& 6. 支持SEMIHOSTING
& 7. 支持WIGGLER SDTJTAG和自定义接口
& 3、LPC2000系列ISP工具
& a、飞利普官方网站下载工具
& 4、Macraigor Systems Wiggler 调试工具
& 5、J-LINK
& IAR公司的J-LINK是一款小巧的ARM
JTAG硬件调试器,它是通过USB口与PC机相连。
& IAR的J-LINK与该公司的嵌入式开发平台紧密结合,且完全支持即插即用。
& 主要特征:
& 1)l支持所有ARM7和ARM9
& 2)l下载速度高达600KB/sec
&无需电源供电,可直接通过USB取电
& 4)lJTAG速度是8MHz
& 5)l自动辨速
& 6)l监控所有的JTAG管脚信号,测量电压
& 7)l20pin标准JTAG连接器
& 8)l配带USB口和20pin插槽
& 9) &支持Windows 2000 和Windows
& 更强的几点:
1、支持ADS,KEIL,IAR,WINARM,RV等几乎所有开发环境;并且可以和IAR无缝连接
2、支持FLASH软件断点,可以设置2个以上断点(无限个断点),极大的提高调试效率;
& 3、带J-Link TCP/IP server,允许通过TCP/ IP
网络使用J-Link
& 4、支持几乎所有ARM7,ARM9,暂时不支持XSCALE;
& * ARM7TDMI(Rev 1)
& * ARM7TDMI(Rev 3)
& * ARM7TDMI-S(Rev 4)
& * ARM720T
& * ARM920T
& * ARM926EJ-S
& * ARM946E-S
& 6、U-LINK
TDMI结构的Keil开发套件采用最新设计的超豪华uVision3集成开发环境,内嵌C编译器/汇编器/工程管理器/调试器等功能功能模块,是一款稳定/可靠/高效的开发工具,适用于不同层次的的用户,完全满足从专业的应用开发工程师到初学嵌入式软件开发的学生的所有使用要求。类似于8051的智能平台将大幅度缩短您的开发周期,各大半导体厂商的所有ARM型号将逐一得到全面支持。
& Keil uVision调试器可以帮助用户准确地调试ARM器件的片内外围功能(I2C、
CAN、UART、SPI、中断、I/O口、A/D转换器、D/A转换器和PWM模块等功能)。ULINK
USB-JTAG转换器将PC机的USB端口与用户的目标硬件相连(通过JTAG或OCD),使用户可在目标硬件上调试代码。通过使用Keil
uVision IDE/调试器和ULINK
USB-JTAG转换器,用户可以很方便地编辑、下载和在实际的目标硬件上测试嵌入的程序。
& 支持Philips、Samsung、 Atmel、 Analog Devices、 Sharp、
ST等众多厂商ARM7内核的ARM微控制器。
& 高效工程管理的uVision3集成开发环境
Project/Target/Group/File的重叠管理模式,并可逐级设置;
& * 高度智能彩色语法显示;
& * 支持编辑状态的断点设置,并在仿真状态下有效。
& 高速ARM指令/外设模拟器
& * 高效模拟算法缩短大型软件的模拟时间;
& * 软件模拟进程中允许建立外部输入信号;
& * 独特的工具窗口,可快速查看寄存器和方便配置外设;
& * 支持C调试描述语言,可建立与实际硬件高度吻合的仿真平台;
& * 支持简单/条件/逻辑表达式/存储区读写/地址范围等断点。
& 多种流行编译工具选择
& * Keil高效率C编译器;
& * ARM公司的ADS/RealView 编译器;
& * GNU GCC 编译器;
& * 后续厂商的编译器。
& JTAG仿真器ULINK
& * USB通讯接口高速下载用户代码;
& * 存储区域/寄存器查看;
& * 快速单步程序运行;
& * 多种程序断点;
& * 片内Flash编程 。
& 支持器件
已投稿到:

我要回帖

更多关于 是否要运行此应用程序 的文章

 

随机推荐