ARM学习方法(共8篇)
一 首先说说ARM的发展 二 ARM是硬件还是软件 三 要不要买开发板 买哪家
四 要不要有51 AVR等单片机基础 五 开发都需要学习哪些软件
七 选UCOS?UCLINUX?LINUX?VXWORKS?还是当单片机用 八 学习要用多长时间
九 ARM都玩什么 十 我用的什么板子 十一 开发流程
十二 关于JTAG访真器 十三 哪个公司的ARM 我的笔记刚公布就有很多朋友来找我,把我当高手,问我“ARM怎么入门”。我不是高手,仍然是菜鸟。
但是回想起自己当时的迷茫,特意写了这篇东西,当作给和我一样的兄弟姐妹的帮助吧。问这个问题的人多半不是已经工作的工程师,而是和我一样是学生,所以这篇笔记就把看家当成我一样的菜鸟,高手勿怪。
首先声明:本人还没有找工作,事实上处于研究生刚毕业,还没开始找工作的空闲时间,44B0只是兴趣所在,打发时间。
所有看法完全是自己的感受,不代表任何他人。错了的观点各位帮我纠正。再次补充:很多朋友看了上面的话就问我为什么研究生毕业了还不找工作:)说是打发时间,其实是因为研究生的时候带了一个项目,申请提前毕业以后项目还有块尾巴,答应导师把项目做完再走:)就这么简单。男人总点负点责,呵呵 以下问题常被问到,我就想到哪说到哪吧。一 首先说说ARM的发展
可以用一片大好来形容,翻开各个公司的网站,招聘里面嵌入式占据了大半工程师职位。广义的嵌入式无非几种:传统的什么
51、AVR、PIC称做嵌入式微控制器;ARM是嵌入式微处理器;DSP;FPGA。
客观的讲,工作需求量上DSP的需求比ARM要多,而ARM和FPGA差不多。DSP因为数字处理与通信领域的空前发展而火暴,小到MP3 射象头,大到我们军品里的控制器,应用面很广。
FPGA的兄弟一般做ANSIC(特殊芯片设计,好象是这么翻译的)。
而ARM单纯说来并不比一个单片机强多少,但是它的独特就在于不断下降的价格和提升的性能。这完全依靠于ARM公司的战略,厉害!很佩服他们的战略眼光!
值得注意的是:在找工作中,企业(著名的,小的不算)对单纯的ARM硬件开发工程师并不比单片机重视,很少有大企业的职位里写“从事过ARM开发优先”。
写的多的是什么?“嵌入式LINUX”
到这相信大家看出来了吧,需要的是硬件中的软件。二 ARM是硬件还是软件
很难说,ARM是硬件,LINUX是软件。
ARM的硬件多半已经模块化了,像我这样把板子改成这样的就算动的多的了,这同样是ARM公司的战略,再次佩服。
实际中的LINUX的开发工作更多,更耗时。从这方面说ARM应该算是软件了。在找工作中更是这样,举个例子,联想里和ARM最接近的是“BIOS工程师”是软件,MOTO里接近的是嵌入式LINUX工程师是软件。而其他很多公司把嵌入式产品开发归为硬件。所以,不要讨论这个,好好玩转自己的板子才是关键。实在不爽你就把自己叫“嵌入式开发工程师” 三 要不要买开发板 买哪家
我的答案是“在你个人的学习方法”,但是如果看家是需要看这骗笔记的水平,个人推荐还是买现成的。1 买
买板子可以把注意力集中在软件开发上,软件开发(尤其是驱动)可以不必担心自己硬件上的问题,我就是以便调试一边写驱动和程序,每次写驱动前就要先确认硬件没问题。
另外,买板子更省钱和时间,我自己做的板子,原理图PCB花了2周以上!制版又15天,回来以后焊接44B0 160个脚!那叫一个麻烦~~花了多少钱呢?2层板,制版费就300块!当然 我把接口都外引了,还做了个20X18的LCD背板,板子比较大。
总体下来 元件+LCD屏+PCB=11XX块!够2410的了。
再有就是买的资料相对来说比较全,但是不要指望有技术支持!都是骗人的,卖你之后就不会理你。2 做
自己做可以更了解底层硬件,可以按照自己的要求加东西,比如我就加了GPS模块、GPRS模块、SD卡模块,扩了个IIC的35个键子的键盘、把LCD接口按照买的LCD改装了,可以用FPC线直接连接。做的很爽的。玩一把吗。
当然,你可以有策略的做,比如像我一样,把RAM和ROM,网络都保持和某现成的板子一样,这样他们的资料你就可以拿过来直接用,给自己留个退路。其他的如SD了 什么的自己做。都达到了~~就是费钱,费时间。
再有就是给做的朋友几点建议:尽量拿到现成的板子,尽量多搜集其他板子的全套资料,一定要拿到一张没问题的原理图。
网上流传的原理图多数是龚俊03年画的,再这里对龚俊表达一下我的敬意!牛人!但是那个图有个小BUG,我指的是03版的,后来的没这问题了。8019那地址线和地址有问题。还有人仿照他的PDF图画的SCH,更是漏洞百出!谴责!顺便谴责把龚俊板子偷卖 的人。买哪家
个人感觉分3类吧
1)首先是ZLG的,资料非常的全,感觉他是真正想教你怎么开发ARM,而不是像有的公司自己技术都没做好就做个板子出来卖钱。但是最大的不利就是价格太贵!而且主要是PHILIP的,货源比较麻烦~~可能有人说21XX系列的不贵啊,那是总线不外扩的,只能跑UCOS,不能跑UCLINUX。但是说是话,21XX系列才是ARM7的价格性能结合点。ARM7最适合做工业控制,ARM普及,销量都是怎么来的?都是ARM7来的,而44B0是典型的商业片子。但是,这里如果你看中的是为工作做准备,还是选能跑UCLINUX的吧。但是仍然作为第一个推荐,因为菜鸟时期,合适的资料太重要了!在这里被ZLG的务实*感动!你看人家那代码写的。
2)感觉硅谷芯微的2440不错
硬件没别的,就是资料比较全的说,不像有些家,原理图直接拿人家的,还错的~~ 3)找个最便宜的
好象最便宜的有卖350的吧?也是没别的,就是即省了钱 还省时间搜集资料,至于资料全不全,别计较了~~硬件肯定好使就行吧。四 要不要有51 AVR等单片机基础
有更好,但没有也无所谓。
两个月以前,我只是看别人做,耳濡目染~~,本科学过单片机,从来没做过。我们这的技术主干做AVR和51,我就跟他们调过C语言程序。你看出来了?我是个不折不扣的菜鸟吧? 但是做这个之前我特意找了ZLG的两本书,看了里面的例子和原理图,这很重要。例程里有汇编有C,都看懂了就OK,不用自己现写 五 开发都需要学习哪些软件 总结起来最主要的有以下几个吧 ADS调试用
确切的说是ADS+AXD。ADS里包含AXD。原来都用SDT后来ARM公司停止对SDT支持了,改支持ADS了,还是用ADS吧。
有的人的程序发布的仍然是SDT版本的,但基本都可以找到相应ADS的,新人在这里不要发蒙。ADS是编译器,AXD是调试器。便宜成AXF以后再在ARM的RAM里调试。2 PLASHPGM FLASH烧写的软件。AXD在RAM里调试,掉电就没有了,方便程序修改。调试好的程序再下到FLASH里,上电直接运行。
同类的软件还有很多,什么FLUTED了、FLSHP了都是,但FLASHPGM最好,要是有人还问FLASH不支持BIN格式文件的问题就要看我写的PLASHPGM使用了。BANYANT调试代理(不知道名对不,起这么个难记的,我一般都叫它“半羊”因为知道它那几天刚吃了烤羊)
调试代理就是用它帮你使用更简单的JTAG(便宜啊)来实现原本1K才卖的JTAG仿真器的大部分功能。JTAG调试原理看我另一篇笔记。简单的就可以把他理解为你自己做的JTAG的驱动就行了。
调试代理还有很多种,什么H-JTAG了、ARM7了(不知道具体叫什么,就记得可执行文件叫ARM7.EXE)都是,BANYANT比较好。
需要注意的是,没种调试代理安装方法虽然都简单 但都不一样,需要看说明。而且AXD调试之前都要运行。省钱了,就别怕麻烦了。4 ARM-ELF-TOOLS工具链
里面是UCLINUX开发用的工具比如ARM-ELF-GCC只类的。工具链就是把很多工具打包在一起发布的方便你开发的东西。具体安装方法看我另一篇笔记。另外如果你开发LINUX就要用ARM-LINUX-TOOLS,不一样,不通用。5 U-BOOT 大名鼎鼎的BOOTLOADER生成工具,同类的好象还有VIVI(名字很暧昧~~)生成的BOOTLOADER烧到FLASH里,然后就可以用BOOTLOADER下载 烧写其他了 有了BOOTLOADER才能下UCLINUX。BOOTLOADER就像电脑上的BIOS。当然UCOS的不用这个,用什么我不知道:)最新版本是1.1.4 具体使用方法看我另一篇笔记吧。6 UCLINUX包
UCLINUX的源码包,不用多说了吧?建议大家用现成的先体会一下,然后再自己编译,裁剪。因为单独UCLINUX的编辑技术上比较简单,但涉及的方面还是比较广的。7 VMWARE
老牌的虚拟机软件,在一个机器上虚拟出一个机器装LINUX(PC上用的),省得你来回开关机了。记得装VMWARE-TOOLS,安装方法在我另一篇笔记里。七 选UCOS?UCLINUX?LINUX?VXWORKS?还是当单片机用 搞开发,工程设计,用UCOS,小巧,多进程,简单,体现了ARM7的精髓。2 LINUX 正根的嵌入式系统,LINUX消费与通信领域用的比较多,但缺点是必须ARM9才能跑,ARM9的板子自己做就不行了,6层板太贵。买开发板500-1500吧。但是还是推荐选ARM9+LINUX 3 UCLINUX 算投机嵌入式系统:)ARM7上可以跑,由有LINUX近亲,学好好可以比较方便的转向LINUX,像我一样的穷鬼用吧,呵呵 VXWORKS 学好后可以找到高薪工作,但工作机会本身并不比LINUX好找。5 当单片机用
不推荐,虽然我景仰的ZLG一直号召这么干。因为对于学习来说多进程的系统设计才是ARM7的玩头,至少你也要整个UCOS啊:)
有朋友问我先学这个当基础不行吗?那当然可以~~但我当时就用了1周搞定,就是我先的ADS在RAM中调试的笔记。后来我清空FLASH用的小段程序还是当时写的LED闪烁程
序呢。另外1周里其中还因为自己过于菜,没把OM设置好导致晶阵不阵 哈哈。这个是必须做的,但一带而过。目标放的远一点。
八 学习要用多长时间
我从菜鸟到现在两个多月,中间被打扰数次。仍然搞定了PCB设计与制版,RAM调试,FLASH下载,UBOOT移植和下载UCLINUX(没剪裁,用现成的),LCD驱动。
再次坦诚的说:我确实比较菜,说这些不是让大家羡慕,只是告诉你们“你们应该比这个更好”
我相信良好的态度+合适的方法+及时的总结=成绩 九 ARM都玩什么 就几点 1 硬件设计 2 系统移植 3 驱动开发 4 应用开发
没了。其中推荐把注意力放在后两个上,3有难度,4比较灵活,最重要的是都是找工作的砝码。十 我用的什么板子
很多人问我这个问题,我特意写过一个的。再说一次吧。
我是自己做的,RAM、ROM、8019等比较麻烦而当时的自己不理解的都按照龚俊的做的。保持其他不便的情况下做了如下改动。1 加了串口通信的GPS模块、GPRS模块
一个UART0,一个UART1,当与要用超级终端时用跳线切换。2 SD卡,和7843触摸屏
同时挂在SPI总线上,因为SPI只能挂一个设备,同时还做了I/O模拟的准备,把两个设备又通过跳线挂在4个IO上。3 扩了个IIC的35个键子的键盘
用的ZLG的7290,不占用CPU,最大支持64个键子,只上了35个,其他留接口。4 把LCD接口按照买的LCD改装了,可以用FPC线直接连接。
所以改动虽然多,但真正很移植了,初期调试有关的并没动,就是为了现在不那么菜的时候做准备:)十一 开发流程
这里是我的开发流程 设计原理图(含WIGGLER的JTAG访真器)2 设计PCB(含WIGGLER的JTAG访真器)3 制版 焊接电压,确定电压没问题 焊接44B0+JTAG电路+WIGGLER的JTAG访真器+周边电路,用BANYANT+仿真器连接,BANYANT提示错误,但可以显示44B0编号,好象是0X0F0F0F0F只类的,说明44B0没问题 焊接晶体+RAM+ROM+周边电路,用BANYANT+仿真器连接,可以显示正确的44B0了 7 用BANYANT+仿真器连接,开AXD,在命令行窗口操作RAM,看可不可以修改,可以的话(用内存窗口看RAM地址)RAM就没问题 可以用这个命令“setmem 0xc000000,0xffffffff,32”
我的RAM挂在BANK6上 所以地址是0XC000000,你要是改了就也得改。8 用我写的《自己写了个C工程模板又写了个使用说明 》里的方法调试程序吧,写个简单的,我当时写个LED闪烁的。看好使不。把程序按照《FLASH烧写总结 》里的烧到FLASH里,测试一下 10 按照《UBOOT 移植操作》移植UBOOT 11 按照《UCLINUX下载简单说明》下个UCLINUX 12 看看驱动开发的方法,自己写个驱动看看 13 还有很多事东西着你玩 呵呵
十二 关于JTAG访真器
JTAG访真器现在用的多是简板的,一个244那种,用的没什么不好。
按照并口定义不同分几种,建议选WIFFLER定义的,因为支持的软件多。这个网上多的是,不多说了。
值得提的是有的JTAG访真器原理图上有跳线用来使能复位信号,这个一般不跳上。就是不用复位信号,因为JTAG协议里本身也可以控制44B0复位。当然,板子上的复位信号跳线也不用跳。十三 哪个公司的ARM 这个是问题比较简单。1 ARM7主要就几个公司的
三星,PHILIP,ATMEL的
ATMEL的有比较便宜的AT91SAM7S32 和AT91SAM7S64 专为8位应用产品量身定做,价格很便宜好象《3刀吧。和PHILIP的21XX差不多,资料太少,项目中选还不错。其他两家上面说了的不多说了吧 ARM9 这个玩2410和2440的多吧,现在2440还比较火啊 可以考虑买个了 但是2410就比较便宜了,作为学习来说反到和不错,推荐整一个:)
其实ARM9用的最多的领域应该是消费电子,比如手机PDA,而这上面用的多的应该是INTEL的和TI的吧。
但是INTEL的TI的入门材料少,价格高,自己看情况定吧。
硅谷芯微技术中心: 芯片级IT教育第一品牌 开设课程:单片机、嵌入式、ARM、Linux、Android、iphone、PCB设计 硅谷芯微推荐:嵌入式ARM9驱动实战开发班
随着无线通信需求的不断提升, 无线AP (Access Point) 开始在生产生活、军用、商用等领域中扮演越来越重要的角色。它通过IEEE802.3以太网接口与有线网络连接, 通过天线将网络信号向四周进行辐射, 从而形成无线局域网 (Wireless Local Area Network, WLAN) , 是连接以太网和无线网络的桥梁[1]。目前国内外基于ARM的无线AP设计, 大都存在指令不够灵活、占用系统资源高等缺点[2], 本设计当中提出的进程移植方法, 能够有效地解决这些问题。设计无线AP的硬件构成图如图1所示, 外围接口电路的搭建根据不同的应用背景进行修改, 设计的重点在于核心CPU, 使无线AP的功能从内核的层面得以实现。
2 无线AP的总体设计
设计的无线AP基于ARM11和嵌入式Linux操作系统, 在移植可用的内核文件基础上, 结合VMware Workstation虚拟Linux系统软件操作平台, 移植hostapd进程。软件开发平台选用Linux的发行版Ubuntu, 通过VMware Tools进行主机和虚拟机之间文件的共享操作, 将库文件和进程源码共享在Linux环境下, 通过交叉编译器对hostapd进程、运行库等进行编译, 使其能够跨平台运行而完成进程等的移植操作[3], 设计过程中使用DNW串口终端作为人机交互的界面, 进行开发板启动信息、烧写进度的查看和输入指令等操作。常见的无线AP设计方法与本设计提出的方法对比情况如表1所示。
3 系统功能的实现
3.1 S3C6410的开机引导机制
S3C6410芯片使用了ARM11作为内核[4,5], 其程序文件的烧写方法与之前以ARM7或ARM9为内核的芯片使用USB下载线分步烧写系统文件的方法并不相同。首先需要使用SD卡作开机引导, 如图2, 然后才能顺利加载Bootloader, 进行内核引导等操作。
首次进行程序的烧写或需要改换系统时, 需在上位机运行相应程序选择引导文件, 制作用于引导开机的SD卡。烧写完成后, 调整为Nand Flash启动, 从Flash加载系统。
3.2 无线AP数据转发模型
利用TCP协议完成服务器与客户端之间的连接, 将客户端的IP信息与客户请求等映射到服务器用户空间。在图3所示无线AP数据转发流程当中, Socket作为应用进程与网络协议之间的接口, 通过socket () 函数建立通信端点, 并用bind () 命令在端点绑定地址, 服务器端调用listen () 函数监听连接请求, 当受监听的端口接收到连接请求时, 服务器开始创建数据收发线程。
3.3 hostapd的移植
通过hostapd能够使得无线网卡切换为master模式, 实现AP功能, 并且在Linux环境修改其配置文件可以设置无线网卡的各种参数, 如频率、信号等。hostapd的运行需要libnl和openssl两个库的支持, 所以首先进行这两个库的移植。无线AP的实现方式如图4所示。
3.3.1 移植openssl库
openssl是一个基于密码学的安全开发包, 对它的移植首先要在Makefile中指定交叉编译器arm-linux-gcc, AR和ranlib使用相同的前缀, 依赖libdl库, INSTALLTOP自定义路径/usr/local/arm/ssl/。编译并安装, 可以在自定义的目录下看到openssl被编译成为了静态库。最后将该目录lib子目录下的内容拷贝至开发板的/lib目录。
3.3.2 移植libnl库
在Linux环境下进行无线网卡的配置需要依赖libnl库, 它是为了方便应用程序使用netlink接口而开发的一个库。移植libnl库需要注意很多细节问题, 否则会导致编译不成功, 其中较为重要且易被忽略的地方有:对include子目录中的netlink-local.h头文件进行修改并添加命令#include
安装库到指定的目录下, 将该目录lib子目录中的内容拷贝至开发板的/lib目录。
3.3.3 移植hostapd进程
设计选用hosapd-1.0, 首先需要修改.config配置文件, 使它定义的配置满足需求。使CONFIG_DRIVER_NL80211=y, 注释其他的CONFIG_DRIVER, 选择nl80211驱动并保存。在Makefile中分别指定ssl和libnl头文件和库文件的路径, 它们是之前刚刚编译好的库文件, hostapd的运行需要这些库的支持。添加如下代码:
回到hostapd目录执行编译, 可在同一目录下生成hostapd和hostapd_cli两个可执行文件, 说明移植成功。将两个可执行文件拷贝到开发板上。
至此完成hostapd进程移植, 系统工作流程图如图5所示。
4 系统测试
在WLAN环境下, 首先进行IP地址和网关的设置, 并与无线网络建立连接, 进行数据包ping测试:
如图6所示, 无线网卡工作正常。
然后对hostapd的移植结果进行测试。如前所述, 用固化程序或第三代码在ARM中实现无线AP功能的方法, 使用AP功能固件或用户转换卡, 在RAM中转换802.11b协议识别的AP代码, CPU仅用于控制和管理, 这样虽然占用CPU资源很少, 但缺点在于指令使用的范围受到限制, 无法做到如本设计中随时手动输入指令切换无线网卡工作模式这般灵活, 直接在终端执行指令:
可以看到串口输出了版本信息和用户操作实现的AP方式, 说明hostapd移植成功, 且进程已能按要求运行, 如图7所示。
主机AP方式 (或称软AP解决方案) , 其软件易修改的特点决定了它具有较强的灵活性, 但软件程序通过CPU运行的代码实现了几乎所有的IEEE802.11b控制功能, 同时主机AP方式附带了路由、网桥等功能, 导致它对CPU资源如时钟、处理性能、操作系统等方面要求很高。相比之下, 本设计中提出的无线AP实现方式, 只是在CPU后台开启了一个进程, 且可以随时关闭。表2为客户端对服务器的数据包ping试验结果, 客户端在以服务器为原点、半径3 m的圆形区域内移动, 从测试结果可以看出, 数据转发实时性很高, 说明本设计方法对系统资源的占用很少, 保证了系统的稳定性。
5 结束语
本文首先介绍了无线AP的工作原理和国内外的研究现状, 然后提出了一种基于ARM11的无线AP进程移植方法, 介绍了S3C6410芯片的开机引导机制, 并结合VMware Workstation搭建了软件开发平台。通过与现有的几种无线AP设计方法做出的对比, 可以看出本设计具有指令灵活、占用资源少等优点。文中重点介绍对hostapd进程以及其运行库的编译下载, 从最后给出的测试结果看到, 成功在硬件平台上移植了hostapd进程, 能够使用指令灵活地切换工作模式实现AP功能, 解决了现有方法存在的不足。
参考文献
[1]赵义平.802.11n协议的研究与无线接入点功能的实现[D].成都:西南交通大学, 2009.
[2]黄智伟, 邓月明, 王彦.ARM9嵌入式系统设计基础教程[M].北京:北京航空航天大学出版社, 2008.
[3]蔡立三.基于ARM的无线AP的设计[D].北京:中国科学院, 2009.
[4]马文强, 章专.基于S3C6410的无线视频传输节点设计[J].传感器与微系统, 2011 (10) :96-98.
如果不是熟悉全球半导体产业的业内人士,可能很难想到ARM这三个字母对这个移动互联时代的意义,这家只有21年历史、成立于大学城剑桥的企业,顺应时代的变迁,从灰姑娘变成了公主。
ARM依靠出售芯片设计技术的授权生存,它的技术正随着智能手机逐步渗入到我们生活的各个方面。目前,ARM微处理器,已遍及工业控制、消费类电子产品,通信系统、网络系统、无线系统等各类产品市场,基于ARM技术的微处理器应用约占据了32位RISC微处理器75%以上的市场份额。
现在,ARM通过其母公司Bridge Crossing和同行Imagination完成了对夙敌MIPS的收购。该收购案将花费Bridge Crossing约3.5亿美元(其中ARM出资1.675亿美元),以取得MIPS总共580项专利资产中的498项。这498项专利被称为“剥离专利资产”,涵盖MPU设计,SoC设计和其他技术领域;其余82项专利则被称为“保留专利资产”,属于MIPS处理器架构设计的核心专利,这82项专利连同MIPS其他专利资产及营运业务,将被Imagination以6000万美元购得。
收购双方还就这些专利达成了交叉授权协议,也就是未来Imagination可获得Bridge Crossing 498项剥离专利资产的终身免费授权,而Bridge Crossing则可得到Imagination 82项保留专利资产的限制性授权。
MIPS出道较ARM与Imagination两家公司都早,且5月份还曾发布Aptiv系列处理器架构,摆出力抗ARM的姿态,如今却被夙敌KO出局。ARM在这个移动互联时代走向高光的前台之前,它在移动处理器市场已经奠定了难以撼动的主导地位,世界的目光将不只再盯着美国。
此前,曾传闻Qualcomm、Broadcom、AMD等下游厂商对MIPS有意,如果收购MIPS者是其中之一,那么未来将很有可能出现一个足以与ARM分庭抗礼的劲敌,然而“一石二鸟”的ARM连这种可能性也扼杀了,Qualcomm、Broadcom、AMD这些下游厂商将继续仰ARM鼻息,而与ARM同具英国色彩的Imagination将来即便不归于ARM门下,也很难有所作为。
ARM说,这是25年来最重大产品发布
早在一年前,ARM就对外发布了其64位处理器架构——ARMv8,但事隔一年之久,ARM才在北京推出首款基于该架构的Cortex A50系列内核。ARM将之定调为25年来最重大的产品发布,其剑锋直指Intel,因为该系列内核不仅可稳固一直遭受Intel威胁的移动处理器市场,还可在伺服器处理器市场这一Intel腹地插上一刀。
ARM公司处理器部门市场营销策略副总裁Noel Hurley曾对媒体坦言,尽管现阶段Intel借由超高效能x86架构处理器,掌握着大部分微型伺服器市场,但ARM已奋起直追,竭力催生优异的微型伺服器软硬件解决方案。因此,ARM相当有信心在2015年前,一举冲高旗下处理器内核在微型伺服器市场的渗透率,达到20%~25%。
目前,已有包括Broadcom,AMD、Samsung及STMicroelectronics在内的六家公司,成为Cortex A50首批公开授权合作伙伴。据ARM自己预估,这些采用ARM架构64位处理器内核的合作伙伴,最快可于2014年正式推出相关产品。
Cortex A50系列处理器的可扩充性将有助于ARM的合作伙伴开发SoC(系统级芯片),以满足横跨智能手机到高效能服务器等不同类型的市场领域。和Intel所主导的PC市场不同,智能手机制造商能够任意地从芯片公司购买处理器,而使用ARM架构的芯片公司进军服务器市场之后,数据中心设备制造商也将有更多选择。
在日前的ARM 2012年度技术研讨会上,该公司市场开发与营销执行副总裁lan Drew给合作伙伴吃了一颗定心丸,他表示:“Cortex A50系列处理器预计将于2014年开始量产,其所采用的制程技术为20nm或甚至是16nm都有可能。”ARM公司希望从32位架构升级到64位架构,能够以相同能耗将移动运算能力提升两倍以上。
回顾历史,PC处理器用了8年时间才从32位进化到64位,而移动处理器市场的改变则要快上许多。那么,ARM究竟为什么这么急于革命性地提升处理器内核的性能呢?最直接的答案也可从Pc身上找到。
众所周知,以前的32位系统只能支持3.25G内存,而步入64位时代之后,内存“紧箍咒”随之开解。就目前智能手机与平板电脑应用多不胜数且功能愈发强大的情况来看,破除移动终端的内存羁绊,已然迫在眉睫。
此外,还有来自OEM厂商的呼声。这些OEM厂商出于软件兼容性的考虑,自然希望移动终端处理器能够紧跟PC处理器脚步,尽快迈入64位时代,这也可以解释ARM何以如此在意其64位处理器内核发布的时间点了。
唯一的威胁,来自Intel
ARM要成为移动处理器市场的Intel,不得不迎接本尊的挑战,而Intel也是仅剩能对ARM构成威胁的厂商了。
与ARM、Qualcomm这种只设计却不生产芯片的Fabless Design House(无工厂化设计企业)不同,Intel是一家IDM公司。所谓IDM,即垂直整合制造,是指从设计、制造、封装测试到销售自有品牌芯片都一手包办的垂直整合型半导体公司。
在行业初期诞生的半导体公司,基本都属于IDM。后来随着产业发展,有的IDM厂商渐渐负担不起日益庞大的资本支出,或者倒闭,或者将制造与封装测试业务拆分出售或自立门户,原公司则专司芯片设计。在这期间,又成立了许多崭新的芯片设计公司,这些公司与由IDM转化而来的那些芯片设计公司一道,成为了现今处于半导体产业链上游的Fabless Design House。
nlc202309010848
这些Fabless Design House没有制造环节的巨额投入,可将更多资金投诸研发设计,再联合下游的Foundry厂与封测厂,形成不同于IDM却又等同于DM的产业模式。譬如Intel在移动处理器市场的对手Qualcomm.就是将设计好的芯片交给台积电(TSMC)代工,再由日月光(ASE)或矽品(SPIL)负责封测。
虽然ARM与Qualoormm同是FablessDesign House,但又有所不同。像ARM以及MIPS、Imagination这些IP(intellectualproperty,知识产权)授权厂商,也是半导体产业发展到一定阶段才出现的,时间要稍后于许多老牌的芯片设计公司。
芯片设计愈加复杂,这些设计公司发现,很多设计其实可以模块化,用于不同的设计方案之中。再往后这些设计公司干脆将这些可通用的设计交给专门的业者来做,然后再向这些业者购买P,而自己则专注于差异化的部分设计。
这种产业合作模式,决定了处于上游的JP授权厂商势必不断整合,最终只有一两家可以存活下来,甚至出现一家独大、赢者通吃的局面,而ARM对MIPS的收购,就是这种整合发展的必然产物。
所以,不只Qualcomm,包括它的竞争对手,例如Broadoom、联发科(MediaTek)等,也都向ARM购买IP,基于ARM提供的架构设计芯片,于是这些公司与ARM结为天然的同盟,联手抵抗Intel对移动处理器市场的进击,甚至连Intel目前的合作伙伴Apple都在考虑采用ARM架构自己研发设计芯片。
可以说,Intel几乎是在移动处理器市场,同整条半导体产业链竞争。
当然,打铁还需自身硬。身为IDM的Intel虽然缺少盟友,但是不缺先进工艺和产能。譬如其计划于2013年发布的新一代移动处理器平台——Silvermont,将采用现今最先进的22nm制程和Tri-Gate晶体管技术。可望解决过往最为业界诟病的功耗与尺寸问题,并与ARM阵营的28nm米制程方案相匹敌。
最近从mobilegeeks.com网站流出了一张疑似Intel针对平板电脑市场推出的下一代Atom处理器计划表图片,便泄漏了一颗名为Valley View-T的处理器,采用的就将是Intel的22nm新制程工艺,拥有4颗Silvermont内核,频率高达2.1GHz,并拥有双信道LPDDR3内存控制器。
虽然该处理器尚未真正问世,不过坊间传说Intel早已积极地开始与OEM厂商洽谈相关合作事宜,也预计于明年的CES 2013上披露更多关于ValleyView-T处理器的信息。
市场调查机构Gartner的无线研究部门总监洪岑维对此分析指出,ARM架构固然有省电效益,但将其应用价值发扬光大的仍是芯片厂商。譬如Qualcomm仅采用ARM架构而非处理器内核,再自主研发专属的Krait处理器微架构,才能在诉求低功耗的前提下,将运算效能维持在一定水准之上,取得在移动处理器芯片市场龙头的佳绩。
由此可见,采用ARM内核开发应用处理器,在功耗方面占有优势,效能却不一定也让客户满意。洪岑维认为,要进一步改良芯片设计,投入多少资金和研发人才是关键,而Intel在这两方面均拥有雄厚资本。
此外,“Wintel联盟”的长期存在,也令Intel的x86架构几乎可以支持所有PC软件,这让该架构对OEM厂商拥有巨大吸引力,特别是注重系统安全的企业级用户,现有的安全软件难以支持非x86架构。
ARM阵营内,Qualcom与联发科掰手腕
相较于平板电脑,智能手机是更为普及的移动终端,尤其是千元人民币左右的入门级智能手机,更是在以中国为首的新兴市场热卖,带动全球智能手机出货量不断攀高。据拓扑产业研究所预测,2012年中国智能手机出货量约为1.88亿部,2013年将达2.56亿部,年增长率约36.2%。
因此,一直走高端路线的Qualcomm也推出了QRD参考设计平台,直接杠上了在中国赚得盆满钵满的联发科Turnkey设计平台。不过,强龙难压地头蛇,虽然Qualcomm的QRD能协助客户将研发周期缩短至3个月,且目前已经被40家以上手机厂商采用,并有超过了100款的手机产品正在开发,但相较于联发科Turnkey方案只要数天即可搞定的Time to market效率,高通还有很大的学习空间。此外,Qualcomm与联发科之间的“核”战还有无限升级的趋势。由于多核心处理器已经是智能手机竞争的必要条件,因此千元手机也得赶上这股风潮。据悉,联发科继将其MT6575单核心平台升级到MT6577双核心平台之后,明年初更准备
近一步将MT6589四核心平台打入千元手机市场;而一向主打高阶市场的Qualcomm,也看准了中低价智能手机市场的发展潜力,在中国推出代号为MSM8225Q的新款四核处理器,并计划于明年第一季度量产出货。
正当人们好奇,六核处理器是否已在路上之时,联发科竟直接宣布即将于明年5月推出八核处理器MT6599。据悉,该处理器采用的仍是ARM架构处理内核,并由台积电的28nm制程代工,可同步支持TD-SCDMA,WCDMA等3G双模系统,以及4G LTE等无线技术。目前,在四核智能手机上吃到甜头的中兴准备再接再厉,于明年推出“最具性价比”的八核智能手机,采用的就是该款芯片。
目前,业界尚无Qualcomm也推出八核处理器的消息传出,但想必Qualcomm已感受到来自联发科的强劲挑战和压力。不过,无论地联发科还是Qualcomm取得这场“核”战的胜利,真正的赢家都是站在它们背后的ARM。
近日,Windows 8操作系统的推出,又为ARM与Intel搭建了另一个全新的对战平台。拓扑产业研究所科技产业研究中心消费电子中心经理张乘维表示,由于平板电脑是windows 8的主打市场,因此Microsoft分别与ARM架构处理器厂商和Intel两方合作,以降低仅采用单一处理器架构的风险,同时借此做大市场,增强与iPad抗衡的竞争力。
其实,也正是因为平板电脑及智能手机的兴起,才让ARM与Intel这两家原本井水不犯河水的厂商成为死敌。市场调查机构Linley Group预测,全球手机芯片市场规模在2015年将达299亿美元。随着越来越多消费者将移动终端作为主要的上网方式,迫使Intel不能再只依赖逐渐式微的PC产业,必须进占移动处理器市场。
不过,最后究竟是ARM还是Intel拿下移动处理器市场的王位并不是最重要的,最重要的是,未来移动处理器的效能将可与PC处理器一较高下。
通过这次模具设计,本人在多方面都有所提高。通过这次设计,综合运用本专业所学课程的理论和实际知识进行设计,提高学生独立工作能力,巩固与扩充了ARM等课程所学的内容,掌握ARM设计的方法和步骤,同时各科相关的课程都有了全面的复习,独立思考的能力也有了提高。在短短的一个星期中,让我们初步让理性回到感性的重新认识,也让我们初步的认识了这个社会,对于以后做人所应把握的方向也有所启发,体现出团队课程设计的能力以及综合运用知识的能力,体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时学习的不足和薄弱环节,从而加以弥补。
本次实习使我亲身感受了所学知识与实际的应用,理论与实际的相结合,让我们大开眼界,也算是对以前所学知识的一个初审吧!这次生产实习对于我们以后学习、工作也真是受益菲浅。通过这次为期一周的课程设计,在不断的失败和努力中,锻炼了我们的动手能力,培养了团队协作及永不放弃、不屈不挠的精神。并且使我们对ARM的知识得到了进一步的提高,同时也补充了我们对电机控制的相关知识。
这次课程实际仅仅是基于ARM微处理器应用的一个开端,在这期间我们还有很多的不足,比如不能完成引脚的最优连接,不能完成硬件系统和软件程序的自主设置和编写,但我相信通过以后对ARM嵌入式系统的继续学习,自己会得到进一步的提高。我会把这此实习作为我人生的起点,在以后的工作学习中不断要求自己,完善自己,让自己做的更好。
的值为(D )。
A. 0x20xx
C. 0x20xx B. 0x28 D. 0x87
2、寄存器R15除了可以做通用寄存器外,还可以做( A)
A. 程序计数器 B. 链接寄存器
C. 堆栈指针寄存器 D. 基址寄存器
3、嵌入式系统有硬件和软件部分构成,以下(C)不属于嵌入式系统软件。
A. 系统软件 B. 驱动 C. FPGA编程软件 D. 嵌入式中间件
4、μCOS-II操作系统属于(B)
A、顺序执行系统 B、占先式实时操作系统
D、分时操作系统 C、非占先式实时操作系统
5、ARM指令集是( B)位的。
A. 16
C. 8 B. 32 D. 24
6、假设R1=0x31,R2=0x2 则执行指令ADD R0,R1,R2 LSL #3 后,R0的值是( C)
A. 0x33
C. 0x39 B. 0x34 D. 0x38
7、ARM寄存器组有(C )个状态寄存器
A、7
C、6 B、32 D、37
8、Unicode编码与(A)编码方式兼容。
A、ASCII码 B、GBK
第一章
1.嵌入式微处理器的分类。
a)什么是嵌入式微处理器?
1.嵌入式微处理器是嵌入式系统硬件层的核心,嵌入式微处理器将通用CPU中许多由板卡完成的任务集成到芯片内部,从而有利于系统设计趋于小型化、高效率和高可靠性。嵌入式微处理器大多工作在为特定用户群所专门设计的系统中。
2.嵌入式微处理器的体系结构可以采用冯·诺依曼体系结构或哈佛体系结构,指令系统可以选用精简指令系统(Reduced Instruction Set Computer,RISC)和复杂指令集系统CISC(Complex Instruction Set Computer, CISC)。b)嵌入式微处理器分类
1.按照系列分:ARM系列、MIPS系列、PowerPC系列。2.按照指令复杂程度分:CISC和RISC两类
2.微处理器划分:
a)嵌入式微控制器 b)嵌入式微处理器 c)DSP处理器
d)嵌入式片上系统 e)多核处理器
3.嵌入式操作系统(EOS)的特性
EOS除具备了一般操作系统最基本的任务调度、同步机制、中断处理、文件处理等功能外,还具有如下特点:强实时性;支持开放性和可伸缩性的体系结构,具有可裁减性;提供统一的设备驱动接口;提供操作方便、简单、友好的图形GUI和图形界面;支持TCP/IP协议及其他协议,提供TCP/UDP/IP/PPP协议支持及统一的MAC访问层接口,提供强大的网络功能。
第二章
1.ARM7TDMI命名
2.3级流水线与总线架构 三级流水线:
流水线使用3个阶段,因此指令分为3个阶段执行 1.取指:从程序存储器中读取指令,放入流水线中
2.译码:操作码和操作数被译码,决定执行什么功能,为下一个始终周期准备数据路
径所需要的控制信号。
3.执行:执行已译码的指令
注:程序计数器(PC)指向被取指的指令,而不是指向正在执行的指令 在正常操作的过程中,在执行一条指令的同时对下一条指令进行译码,并将第三条指令从存储器中取出
3.ARM的两种状态与7种工作模式
a)两种状态。
i.ARM状态:32位,这种状态下执行的是字方式的ARM指令; ii.Thumb状态:16位,这种状态下执行半字方式的Thumb指令。注:两个状态之间的切换并不影响处理器模式或寄存器内容,可以使用BX指令切换两种状态.状态寄存器CPSR的T位反应了处理器运行不同指令的当前状态.b)7种工作模式。
注:除用户模式外,其它模式均为特权模式。ARM内部寄存器和一些片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式。
题目:ARM微处理器复位后,PC的地址通常是 0x0,初始的工作模式是Supervisor 4.ARM常用几个寄存器功能
在ARM7TDMI处理器内部有37个用户可见的寄存器。31个通用32位寄存器,6个状态寄存器。
a.堆栈寄存器(SP):R13,在ARM指令集当中,没有以特殊方式使用R13的指令或其它
功能,只是习惯上都这样使用。但是在Thumb指令集中存在使用R13的指令。
b.链接寄存器(LR):R14,在结构上有两个特殊功能:
1.在每种模式下,模式自身的R14版本用于保存子程序返回地址; 2.当发生异常时,将R14对应的异常模式版本设置为异常返回地址(有些异常有一
个小的固定偏移量)。c.程序计数器(PC):R15,在ARM状态,位[1:0]为0,位[31:2]保存PC。在Thumb状
态,位[0]为0,位[31:1]保存PC。对于ARM指令集而言,PC总是指向当前指令的下
两条指令的地址,即PC的值为当前指令的地址值加8字节。
d.程序状态寄存器(CPSR):R16,在所有处理器模式下都可以访问CPSR。每种异常模
式都有一个程序状态保存寄存器(SPSR),在异常发生时,SPSR用于保存CPSR的状
态。5.条件代码标志
N 运算结果的最高位反映在该标志位。对于有符号二进制补码,结果为负数时N=1,结果为正数或零时N=0;
Z 指令结果为0时Z=1(通常表示比较结果“相等”),否则Z=0;
C 当进行加法运算(包括CMN指令),并且最高位产生进位时C=1,否则C=0。当进行
减法运算(包括CMP 指令),并且最高位产生借位时C=0,否则C=1。对于结合移位
操作的非加法/减法指令,C为从最高位最后移出的值,其它指令C通常不变;
V 当进行加法/减法运算,并且发生有符号溢出时V=1,否则V=0,其它指令V通常不
变。
附:控制位
I、F中断控制位——控制允许和禁止中断 T控制(标志)位——反映处理器的运行状态 M控制位——决定了处理器的运行模式 6.中断号、中断向量与优先级。(7种异常)7.存储器格式。
a)ARM体系结构使用232个字节的单
一、线性地址空间。将字节地址做为无符号数看待,范围为0~232-1 b)对于字对齐的地址A,地址空间规则要求如下:
● 地址位于A的字由地址为A、A+
1、A+2和A+3的字节组成; ● 地址位于A的半字由地址为A和A+1的字节组成;
● 地址位于A+2的半字由地址为A+2和A+3的字节组成; ● 地址位于A的字由地址为A和A+2的半字组成。注:这样并不能完全定义字,半字和字节之间的映射。存储器采用下列映射机制中的一种。
大端存储:字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中
小端存储:低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节
例如,假设一个32位字长的微处理器上定义一个int类型的常量a,其内存地址位 于0x6000处,其值用十六进制表示为0x23456789。如图1.2.2(a)所示,如果按小端法存储,则其最低字节数据0x89存放在内存低地址0x6000处,最高字 节数据0x23存放在内存高地址0x6003处。如图1.2.2(b)所示,如果按大端法存储,则其最高字节数据0x23存放在内存的低地址0x6000处,而最低字节数据0x89存放在内存的高地址0x6003处。
第三章
一:寻址方式。1.寄存器寻址
操作数的值在寄存器中,指令中的地址码字段给出的是寄存器编号,寄存器的内容是操作数,指令执行时直接取出寄存器值操作。
例如指令:
MOV R1,R2 ;R1←R2 SUB R0,R1,R2 ;R0←R1-R2 2.立即寻址
在立即寻址指令中数据就包含在指令当中,立即寻址指令的操作码字段后面的地址码部分就是操作数本身,取出指令也就取出了可以立即使用的操作数(也称为立即数)。立即数要以“#”为前缀,表示16进制数值时以“0x”表示。
SUBS R0,R0,#1;R0减1,结果放入R0,并且影响标志位 MOV R0,#0xFF000;将立即数0xFF000装入R0寄存器 3.寄存器移位寻址。
寄存器移位寻址是ARM指令集特有的寻址方式。当第2个操作数是寄存器移位方式时,第2个寄存器操作数在与第1个操作数结合之前,选择进行移位操作。寄存器移位寻址指令举例如下:
MOV R0,R2,LSL #3;R2的值左移3位,结果放入R0,即是R0=R2×8 ANDS R1,R1,R2,LSL R3;R2的值左移R3位,然后和R1相“与”操作,结果放入R1 4.寄存器间接寻址
寄存器间接寻址指令中的地址码给出的是一个通用寄存器的编号,所需的操作数保存在寄存器指定地址的存储单元中,即寄存器为操作数的地址指针。寄存器间接寻址指令举例如下:
LDR R1,[R2];将R2指向的存储单元的数据读出保存在R1中
SWP R1,R1,[R2];将寄存器R1的值和R2指定的存储单元的内容交换 5.基址寻址
基址寻址就是将基址寄存器的内容与指令中给出的偏移量相加,形成操作数的有效地址。基址寻址用于访问基址附近的存储单元,常用于查表、数组操作、功能部件寄存器访问等。基址寻址指令举例如下:
LDR R2,[R3,#0x0C];读取R3+0x0C地址上的存储单元的内容,放入R2 STR R1,[R0,#-4]!;先R0=R0-4,然后把R1的值寄存到保存到R0指定的存储单元
6.多寄存器寻址
多寄存器寻址一次可传送几个寄存器值,允许一条指令传送16个寄存器的任何子集或所有寄存器。多寄存器寻址指令举例如下:
LDMIA R1!,{R2-R7,R12};将R1指向的单元中的数据读出到R2~R7、R12中(R1自
动加1)STMIA R0!,{R2-R7,R12};将寄存器R2~R7、R12的值保存到R0指向的存储单元中
R0自动加1 7.堆栈寻址
堆栈是一个按特定顺序进行存取的存储区,操作顺序为“后进先出”。堆栈寻址是隐含的,它使用一个专门的寄存器(堆栈指针)指向一块存储区域(堆栈),指针所指向的存储单元即是堆栈的栈顶。存储器堆栈可分为两种:
向上生长:向高地址方向生长,称为递增堆栈 向下生长:向低地址方向生长,称为递减堆栈 8.块拷贝寻址
多寄存器传送指令用于将一块数据从存储器的某一位置拷贝到另一位置。如: STMIA R0!,{R1-R7};将R1~R7的数据保存到存储器中。
;存储指针在保存第一个值之后增加,;增长方向为向上增长。STMIB R0!,{R1-R7};将R1~R7的数据保存到存储器中。
;存储指针在保存第一个值之前增加,;增长方向为向上增长。9.相对寻址
相对寻址是基址寻址的一种变通。由程序计数器PC提供基准地址,指令中的地址码字段作为偏移量,两者相加后得到的地址即为操作数的有效地址。相对寻址指令举例如下:
BL SUBR1;调用到SUBR1子程序
BEQ LOOP;条件跳转到LOOP标号处
...LOOP MOV R6,#1...SUBR1...二:指令集(LDR STR MOV ADD SUB)
1.ARM指令集 2.Thumb指令集 3.常用指令
a)LDR:加载字数据 b)STR:存储字数据
LDR/STR指令寻址非常灵活,它由两部分组成,其中一部分为一个基址寄存器,可以为任一个通用寄存器;另一部分为一个地址偏移量。地址偏移量有以下3种格式: 立即数。立即数可以是一个无符号的数值。这个数据可以加到基址寄存器,也可以从基址寄存器中减去这个数值。如:LDR R1,[R0,#0x12] 寄存器。寄存器中的数值可以加到基址寄存器,也可以从基址寄存器中减去这个数值。如:LDR R1,[R0,R2] 寄存器及移位常数。寄存器移位后的值可以加到基址寄存器,也可以从基址寄存器中减去这个数值。
如:LDR R1,[R0,R2,LSL #2]
从寻址方式的地址计算方法分,加载/存储指令有以下4种格式: 零偏移。如:LDR Rd,[Rn] 前索引偏移。如:LDR Rd,[Rn,#0x04]!程序相对偏移。如:LDR Rd,labe1 后索引偏移。如:LDR Rd,[Rn],#0x04 c)MOV:数据传送指令
d)ADD:加法运算指令
e)SUB:减法运算指令
第四章
一:最小系统一个嵌入式处理器自己是不能独立工作的,必须给它供电、加上时钟信号、提供复位信号,如果芯片没有片内程序存储器,则还要加上存储器系统,然后嵌入式处理器芯片才可能工作。这些提供嵌入式处理器运行所必须的条件的电路与嵌入式处理器共同构成了这个嵌入式处理器的最小系统。而大多数基于ARM7处理器核的微控制器都有调试接口,这部分在芯片实际工作时不是必需的,但因为这部分在开发时很重要,所以也把这部分也归入最小系统中。
二:时钟产生单元
目前所有的微控制器均为时序电路,需要一个时钟信号才能工作,大多数微控制器具有晶体振荡器。简单的方法是利用微控制器内部的晶体振荡器,但有些场合(如减少功耗、需要严格同步等情况)需要使用外部振荡源提供时钟信号。
三:I2C的概念与应用
I2C BUS(Inter Integrated Circuit BUS,内部集成电路总线)是由Philips公司推出的二线制串行扩展总线,用于连接微控制器及其外围设备。I2C总线是具备总线仲裁和高低速设备同步等功能的高性能多主机总线,直接用导线连接设备,通信时无需片选信号。
如图6.2.1所示,在I2C总线上,只需要两条线—串行数据SDA线和串行时钟SCL线,它们用于总线上器件之间的信息传递。SDA和SCL都是双向的。每个器件都有一个唯一的地址以供识别,而且各器件都可以作为一个发送器或接收器(由器件的功能决定)。2C总线有如下操作模式:主发送模式、主接收模式、从发送模式、从接收模式。下面介绍其通用传输过程、信号及数据格式。
*数据有效:在传输数据的时候,SDA线必须在时钟的高电平周期保持稳定,SDA的高或低电平状态只有在SCL线的时钟信号是低电平时才能改变.*起始停止
当I2C接口处于从模式时,要想数据传输,必须检测SDA线上的启动信号,启动信号由主器件产生。如图6.2.2所示,在SCL信号为高时,SDA产生一个由高变低的电平变化,即产生一个启动信号。当I2C总线上产生了启动信号后,那么这条总线就被发出启动信号的主器件占用了,变成“忙”状态;如图6.2.2所示,在SCL信号为高时,SDA产生一个由低变高的电平变化,产生停止信号。停止信号也由主器件产生,作用是停止与某个从器件之间的数据传输。当I2C总线上产生了一个停止信号后,那么在几个时钟周期之后总线就被释放,变成“闲”状态。主器件产生一个启动信号后,它还会立即送出一个从地址,用来通知将与它进行数据通信的从器件。1个字节的地址包括7位的地址信息和1位的传输方向指示位,如果第7位为“0”,表示马上要进行一个写操作;如果为“1”,表示马上要进行一个读操作。
*传输格式 SDA线上传输的每个字节长度都是8位,每次传输中字节的数量是没有限制的。在起始条件后面的第一个字节是地址域,之后每个传输的字节后面都有一个应答(ACK)位。传输中串行数据的MSB(字节的高位)首先发送。
*应答信号
为了完成1个字节的传输操作,接收器应该在接收完1个字节之后发送ACK位到发送器,告诉发送器,已经收到了这个字节。ACK脉冲信号在SCL线上第9个时钟处发出(前面8个时钟完成1个字节的数据传输,SCL上的时钟都是由主器件产生的)。当发送器要接收ACK脉冲时,应该释放SDA信号线,即将SDA置高。接收器在接收完前面8位数据后,将SDA拉低。发送器探测到SDA为低,就认为接收器成功接收了前面的8位数据。
*I2C总线的数据传输过程
① 开始:主设备产生启动信号,表明数据传输开始。
② 地址:主设备发送地址信息,包含7位的从设备地址和1位的数据方向指示位(读或写位,表示数据流的方向)。
③ 数据:根据指示位,数据在主设备和从设备之间进行传输。数据一般以8位传输,最重要的位放在前面;具体能传输多少量的数据并没有限制。接收器产生1位的ACK(应答信号)表明收到了每个字节。传输过程可以被中止和重新开始。
④ 停止:主设备产生停止信号,结束数据传输。
第五章
一:串口的概念(串行接口)常用的数据通信方式有并行通信和串行通信两种。当两台数字设备之间传输距离较远时,数据往往以串行方式传输。串行通信的数据是一位一位地进行传输的,在传输中每一位数据都占据一个固定的时间长度。与并行通信相比,如果n位并行接口传送n位数据需时间T,则串行传送的时间最少为nT。串行通信具有传输线少、成本低等优点,特别适合远距离传送。
① 串行数据通信模式
串行数据通信模式有单工通信、半双工通信和全双工通信3种基本的通信模式。● 单工通信:数据仅能从设备A到设备B进行单一方向的传输。● 半双工通信:数据可以从设备A到设备B进行传输,也可以从设备B到设备A进行传输,但不能在同一时刻进行双向传输。
● 全双工通信:数据可以在同一时刻从设备A传输到设备B,或从设备B传输到设备A,即可以同时双向传输。
② 串行通信方式 a.异步通信方式
异步通信时数据是一帧一帧传送的,每帧数据包含有起始位(”0”)、数据位、奇偶校验位和停止位(”1”),每帧数据的传送靠起始位来同步。一帧数据的各位代码间的时间间隔是固定的,而相邻两帧的数据其时间间隔是不固定的。在异步通信的数据传送中,传输线上允许空字符。
异步通信对字符的格式、波特率、校验位有确定的要求。● 字符的格式
每个字符传送时,必须前面加一起始位,后面加上1、1.5或2位停止位。例如ASCII码传送时,一帧数据的组成是:前面1个起始位,接着7位ASCII编码,再接着一位奇偶校验位,最后一位停止位,共10位。
● 波特率
传送数据位的速率称为波特率,用位/秒(bit/s)来表示,称之为波特。例如,数据传送的速率为120字符/秒,每帧包括10个数据位,则传送波特率为:
10×120=1200b/s=1200波特
每一位的传送时间是波特的倒数,如1/1200=0.833ms。异步通信的波特率的数值通常为:150、300、600、1200、2400、4800、9600、14400、28800等,数值成倍数变化。
● 校验位
在一个有8位的字节(byte)中,其中必有奇数个或偶数个的“1”状态位。对于偶校验就是要使字符加上校验位有偶数个“1”;奇校验就是要使字符加上校验位有奇数个“1”。例如数据“00010011”,共有奇数个“1”,所以当接收器要接收偶数个“1”时(即偶校验时),则校验位就置为“1”,反之,接收器要接收奇数个“1”时(即奇校验时),则校验位就置为“0”。
一般校验位的产生和检查是由串行通信控制器内部自动产生,除了加上校验位以外,通信控制器还自动加上停止位,用来指明欲传送字符的结束。停止位通常取1、1.5或2个位。对接收器而言,若未能检测到停止位则意味着传送过程发生了错误。
在异步通信方式中,在发送的数据中含有起始位和停止位这两个与实际需要传送的数据毫无相关的位。如果在传送1个8位的字符时,其校验位、起始位和停止位都为1个位,则相当于要传送11个位信号,传送效率只有约80%。
(2)同步通信方式
为了提高通信效率可以采用同步通信方式。同步传输采用字符块的方式,减少每一个字符的控制和错误检测数据位,因而可以具有较高的传输速率。
与异步方式不同的是,同步通信方式不仅在字符的本身之间是同步的,而且在字符与字符之间的时序仍然是同步的,即同步方式是将许多的字符聚集成一字符块后,在每块信息(常常称之为信息帧)之前要加上1~2个同步字符,字符块之后再加入适当的错误检测数据才传送出去。在同步通信时必须连续传输,不允许有间隙,在传输线上没有字符传输时,要发送专用的”空闲”字符或同步字符。
在同步方式中产生一种所谓“冗余”字符,防止错误传送。假设欲传送的数据位当作一被除数,而发送器本身产生一固定的除数,将前者除以后者所得的余数即为该“冗余”字符。当数据位和“冗余”字符位一起被传送到接收器时,接收器产生和发送器相同的除数,如此即可检查出数据在传送过程中是否发生了错误。统计数据表明采用”冗余”字符方法错误防止率可达99%以上。
二:NAND FLASH与NOR FLASH异同.答:不同:
1)NOR Flash把整个存储区分成若干个扇区(Sector),而NAND Flash把整个存储区 分成若干个块(Block),可以对以块或扇区为单位的内存单元进行擦写和再编程。
2)NAND Flash执行擦除操作是十分简单的,而NOR型内存则要求在进行擦除前先 要将目标块内所有的位都写为0。由于擦除NOR Flash时是以64~128KB为单位的块进行的,执行一个写入/擦除操作的时间为5s,与此相反,擦除NAND Flash是以8~32KB的块进行的,执行相同的操作最多只需要4ms。
3)NOR Flash的读速度比NAND Flash稍快一些,NAND Flash的写入速度比NOR Flash 快很多。NAND Flash的随机读取能力差,适合大量数据的连续读取。
4)NOR Flash容量通常在1 MB~8MB之间。而NAND Flash用在8MB以上的产品当 中。NOR Flash主要应用在代码存储介质中,NAND Flash适用于资料存储。
5)在NOR Flash上运行代码不需要任何的软件支持。在NAND Flash上进行同样操作 时,通常需要驱动程序,也就是内存技术驱动程序(MTD)。NAND Flash和NOR Flash在进行写入和擦除操作时都需要MTD。
6)在NAND Flash中每个块的最大擦写次数是一百万次,而NOR Flash的擦写次数是 十万次。
区别:两者工艺不一样,NOR读取速度快,成本高,容量不易做大,NAND读取慢,成本低,容量很容易作大。
相同点:都是采用FLASH技术生产
功能:NOR适合作为芯片程序存储的ROM使用,NAND适合作为非易失性数据存储器 第八章
一:Linux的最常用的命令
答:1)adduser 示例:创建pdr帐户 adduser pdr 2)cat 示例:
cat text 在屏幕上显示文件text的内容;
cat-n textfile1 > textfile2 把 textfile1 的文件内容加上行号后输入 textfile2 这个文件里; 3)cd 示例:假设用户当前目录是 /home/xu 现需要更换到/home/xu/pro 目录中 $ cd pro 4)cp 示例:
$ cp-r /usr/xu/ /usr/liu/ 表示将/usr/xu 目录中的所有文件及其子目录拷贝到目录 /usr/liu中。
5)export 示例:显示当前所有环境变量的设置情况 #export 6)Fdisk 示例:查看当前系统中磁盘的分区状况,包括硬盘、U盘等fdisk-l 7)Ln: 类似windows下的快捷方式
示例:要为当前目录下的file文件建立一个硬链接,名为/home/lbt/doc/file/, 可用如下命令: ln file /home/lbt/doc/file 8)locate 示例:locate filename: 寻找系统中所有叫filename的文件
9)Ls 示例:将 /bin 目录以下所有目录及文件详细资料列出 : ls-lR /bin 10)minicom 示例:开启minicom的配置界面 minicom –s 11)Mkdir 示例:在当前目录中创建嵌套的目录层次inin 和inin下的mail目录权限设置为只有文件拥有者有读、写和执行权限。mkdir-p-m 700./inin/mail/ 12)Mount 示例:挂载ntfs格式的hda7分区到/mnt/cdrom文件夹mount-o iocharset=cp936 /dev/hda7 /mnt/cdrom 13)mv 示例:$ mv /usr/xu/ *.表示将/usr/xu 中的所有文件移到当前目录 用.表示
14)Passwd:passwd 作为普通用户和超级权限用户都可以运行,但作为普通用户只能 更改自己的用户密码,但前提是没有被root用户锁定;如果root用户运 行passwd,可以设置或修改任何用户的密码;passwd 命令后面不接任何参数或用户名,则表示修改当前用户的密码
示例:passwd pengdr 15)ping 示例:ping 16)pwd:查看”当前工作目录“的完整路径 示例:
[root@localhost ~]# pwd /root 17)reboot:执行reboot指令可让系统停止运作,并重新开机。示例:做个重开机的模拟(只有纪录并不会真的重开机)。reboot –w 18)rmdir 示例:在工作目录下的 BBB 目录中,删除名为 Test 的子目录。若 Test 删 除后,BBB 目录成为空目录,则 BBB 亦予删除。
rmdir-p BBB/Tes [root@localhost ~]# 19)setup 功能说明:设置程序,类似windows控制面板 语法:setup 20)su功能说明:变更用户身份。示例:变更账号为超级用户,并在执行df命令后 还原使用者。su-c df root 21)tar 功能说明:备份或解压文件。示例:压缩目录/etc为tar.gz后缀。# tar cvf backup.tar /etc 解压#tar –zxvf file.tar.gz #tar –jxvf file.tar.bz2 22)umount 功能:卸除文件系统。示例:卸载 /mnt区: umount /mnt/cdrom 23)whereis 功能:查询某个二进制命令文件、帮助文件等所在目录.比如:查找“ls” 这个二进制命令文件所在的目录 whereis ls
第九章
一:ADS编译环境的设置
二:系统启动代码bootloader概念
在嵌入式系统中,通常没有像BIOS那样的固件程序,因此整个系统的加载启动任务就完全由BootLoader来完成。比如在一个基于 ARM7TDMI core的嵌入式系统中,系统在上电或复位时都从地址 0x00000000开始执行。而在这个地址处安排的通常就是系统的BootLoader程序。
BootLoader就是在操作系统运行之前运行的一段小程序。通过它可以初始化硬件设备,从而将系统的软硬件环境设置到一个合适的状态,以便为最终调用操作系统做好准备。Bootloader是在嵌入式系统内核运行之前运行的一段引导加载程序。
作用:将内核映像从硬盘上读到RAM中,然后跳转到内核的入口点去运行,即开始启动操作系统。
嵌入式系统常见的Bootloader有vivi和U-Boot,RedBoot
题目一:简述Bootloader启动过程。
1、第一阶段
(1)、基本的硬件设备初始化(2)、为阶段2代码准备RAM空间(3)、拷贝阶段2代码到RAM空间(4)、设置好堆栈
(5)、跳转到阶段2的C程序入口点
2、第二阶段
(1)、初始化本阶段要使用到的硬件(2)、检测系统内存映射(memory map)(3)、将kernel和根文件系统映像从flash读到RAM空间(4)、为kernel设置启动参数(5)、调用内核
题目二:请简述嵌入式软件Bootloader的两种工作模式。
启动加载模式:启动加载模式称为“自举”(Autonomous)模式。即Bootloader从目标机上的某个固态存储设备上将操作系统加载到 RAM 中运行,整个过程并没有用户的介入。启动加载模式是 Bootloader的正常工作模式,在嵌入式产品发布的时侯,Bootloader必须工作在这种模式下。
下载模式:在这种模式下,目标机上的Bootloader将通过串口连接或网络连接等通信手段从主机下载文件。下载内容及存储:主要是下载内核映像和根文件系统映像等。从主机下载的文件通常首先被Bootloader保存到目标机的RAM中,然后再被 Bootloader写到目标机上的FLASH 类固态存储设备中
三:Makefile文件的用途与写法
1.用途:makefile关系到了整个工程的编译规则。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。2.写法: 1)需要由make工具创建的目标体(target),通常是目标文件右可执行文件;2)要创建的目标体所依赖的文件(dependency_file);3)创建每个目标体进需要运行的命令(command)格式:target:dependency_files command 例如,有两个文件分别为hello.c和hello.h,创建的目标体为hello.o,执行的命令为gcc编译指令:gcc –c hello.c,那么,对应的Makefile就可以写为:
#The simplest example hello.o:hello.c hello.h gcc –c hello.c –o hello.o 接着就可以make了。使用make的格式为:#make target,这样make就会自动读入Makefile(也可以是首写字母小写makefile)并执行对应target的commank语句,并会找到相应的依赖文件。如下所示:
[root @localhost makefile] # make hello.o Gcc –c hello.c –o hello.o [root @localhost makefile] # ls Hello,c hello.h hello.o Makefile 可以看到,Makefile执行了”hello.o”对应的命令语句,并生成了”hello.o”的目标体.附:makefile的自动变量:
$* 不包括扩展名的目标文件名称
$+ 所以的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件 $< 第一个依赖文件
$? 所以时间戳比目标文件晚的依赖文件,并以空格分开 $@ 目标文件的完整名称
$^ 所有不重复的依赖文件,以空格分开
$% 如果目标是归档成员,则该变量表示目标的归档成员名称
题目一:Makefile和Make各实现什么功能?
Makefile文件内容 按照规则,对系统中本目录下的文件(.c、.s、.o、.h、.lib等)根据相互关系和要求进行组织,设定各自的编译方法,指定所生成的目标。Makefile是一种文本格式文件。
Make是Makefile文件的解释器
Make对Makefile文件解释后,生成Linux的shell命令和gcc编译命令,接着对命令执行,最终生成目标文件。
Makefile是工程系统编译批处理文件。
第十章
一:嵌入式编译环境的概念、建立方法以及步骤
第十一章
一:Linux驱动设备的分类与常用的数据结构
1.Linux系统设备分为三类:字符设备、块设备和网络设备 2.数据结构: 用户应用程序调用设备的功能都是在设备驱动程序中定义的,也就是设备驱动程序中所定义的功能入口点函数(或称为功能接口函数)。这些设备的功能接口函数都被定义在
struct file_operations{ };
struct inode{ };
1 ATPCS调用标准
ARM处理器主要是利用编译器将汇编语言以及C/C++语言进行相互的切换, 并且ARM制定了相关标准, 来保障切换过程中的顺利实施。
1.1 寄存器使用规则
ATPCS为ARM寄存器进行不同命名, 从而在编程的过程中来利用ATPCS寄存器进行编程。如表1所示。
1.2 堆栈的使用规则
在ATPCS中规定, 堆栈的主要类型是FD, 被称为满递减堆栈, 所以必须要利用STMFD/LDMFF进行堆栈的操作。
1.3 参数传递规则
参数传递的规则不一样, 利用参数的数量可以将子程序分为参数数量固定, 以及参数数量不固定的子程序, 对于参数变化的子程序, 若参数的数量少于四个, 那么要利用寄存器来进行参数的传递, 若参数的数量多余四个, 那么必须要利用堆栈来进行参数的传递, 所以参数之间传递的规则不同。
2 ATPCS应用
2.1 汇编语言调用C语言
在对计算机嵌入式程序的开发中, 前期由汇编语言进行初始化的编程, 然后在进行C语言之间的切换, 对于C语言的切换, 主要指令R16lr帧指针是通过BL来实现的。以下是调用的字符:
2.2 C语言调用汇编语言
在程序中, 使用“C++”程序来调用C程序, 以下是调用C程序的字符:
2.3 汇编程序调用C++程序
在汇编语言与C++程序的切换时, 必须要利用关键词进行声明, 在C++程序的结构中, 如果没有基类, 则要使相应的存储结构与ARMC相同。并且在汇编过程中将参数的数据放在数据栈中, 只有这样才能使被调用的C++程序访问到相应的参数。
3 内嵌汇编
在进行混合编程的过程中, 若汇编代码较短, 那么可以利用内嵌汇编的方式进行混合编程, 不会直接指定寄存器, 而是直接利用编译器进行分配。主要的内嵌汇编语言如下:
4 结束语
在计算机系统嵌入式应用程序的开发中, 利用ARM汇编语言与C/C++语言相互结合的混合编程方式, 可以在很大程度上提高编程的最佳效果。本文主要举出了ARM汇编语言以及C/C++语言汇编中的实例, 提出了设计的方法, 阐述了ARM汇编语言与C/C++语言相互结混合编程方式的实现。
摘要:在计算机系统嵌入式应用程序的开发中, 对于汇编语言与C/C++语言的设计开发, 二者都存在着优缺点, 所以相关人员在开发中会采用ARM汇编语言与C/C++语言混合编程, 从而取得最大的效果。本文主要研究了ARM汇编语言与C/C++语言混合编程的设计实现方法, 并进行相关的讨论。
关键词:ARM汇编语言,C/C++语言,混合编程
参考文献
[1]马忠梅, 徐英慧.ARM嵌入式处理器结构与应用基础[M].北京航空航天大学出版社, 2010, 1 (2) :20-30.
[2]史斌, 孙晔.ARM汇编语言与C/C++混合编程方法[J].电子测量技术, 2010, 6 (6) :15-20.
在微软2月29日发布Windows 8消费者预览版之前,微软已经通过一篇很长的博客详细介绍关于运行在ARM芯片上的新版Windows系统(Windows on ARM,简称WOA)的设计细节,虽然与Intel芯片上的Windows大体相似,但也存在很多不同。
统一的Windows版本
WOA采用与Windows 8同样的内核代码(这个代码集现在还处在不断完善之中),会具备一些我们非常熟悉的Windows功能,比如同样有桌面这个组件。当然,WOA也会采用一些独特的设计,比如,会要求运行它的设备使用片上系统设计。
“WOA会采用新的操作系统架构来支持新的电脑设计,从而给使用者带来新的体验。”微软Windows和Windows Live事业部总裁Steven Sinofsky在一篇博客中写道。
“我们研发的WOA将支持各种新的PC类型,比如不同尺寸或者有一些独特的功能,与此同时,我们的Windows生态系统也会进一步扩展,来支持新的PC设备。”他说。
值得一提的是,不管是英伟达、高通还是德州仪器的ARM硬件平台,只要装有Windows 8系统之后都将运行相同的Windows操作系统的二进制文件,具有同样的基本功能。
目前,PC厂商已经开始研发预装WOA的设备,其中除了那些轻、薄和对电池寿命要求长的小型移动设备外,还有一些平板电脑厂商。微软希望预装有WOA的电脑将会与装有Windows 8的英特尔和超微芯片的电脑同一时间上市。
IDC分析师Al Gillen表示,微软对运行WOA的设备有比较明确的规定,这样做既有有利的一面也有不利的一面。
不利的一面是,这会影响设备制造商研发不同类型的设备,限制了设备多样性。“如果某个设备制造商想设计出一个非常独特的Windows 8 ARM设备,它必须考虑到不一定能在其设备中增加新的输入方式和传感器,因为很可能操作系统根本不支持。”他说,“如果它们不能通过操作系统扩展来实现自己想要的功能,就只能在应用程序级别来实现。”
积极的一面是,这更有利于为Windows创建一个更大的生态系统,因为所有设备都运行同一版本的操作系统,这会让应用程序具有更好的可移植性。总体而言,有利的一面会更多一些。
“让Windows市场更加规范化,这反过来会创造一个更大的生态系统,一个更大的、更标准化的硬件市场对软件开发商是非常有利,这正是微软所想要的:一个强大的软件生态系统。”Gillen说。
丰富WOA应用
和面向x86平台的Windows 8一样,WOA的设备同样将能运行Metro风格的应用,这些应用来自Windows商店,使用WinRT的API(应用程序编程接口)创建。不过,WOA的电脑将无法运行、仿真或移植x86平台上的现有桌面应用程序。
WOA也将支持Internet Explorer 10中的硬件加速的HTML5,能运行桌面版本的Office 15中的应用程序,包括Word、Excel、PowerPoint和OneNote,这些应用程序都将支持触摸式界面和低功耗设计。
在Gillen看来,此次随着操作系统推出Office应用程序套件是非常必要的,因为此举将提升Windows系统的价值,更有利于用户接受Windows 8这个操作系统。
“这种操作系统与办公套件集成的方式能给设备制造商带来更大的价值,反过来,这又会让微软的软件卖得更好的价钱。”他说。
当然,从工程的角度而言,为WOA重新设计Office应用程序是一个不小的工程,但微软认为,运行WOA的电脑除了兼容Metro,能够访问Windows商店,具有硬件加速的IE 10之外,还要有Word、Excel、PowerPoint和OneNote,这样的一台设备才是没有遗憾的设备,Steven在博客中写道。
与传统的Windows个人电脑的最大差异之一是,运行WOA的电脑不会关机,也没有休眠或睡眠的选项,而是像手机一样运行,微软称之为“待连机”。当屏幕亮时,该设备满功率运行,当它变暗,它进入到一个非常低功耗的运行模式。x86平台的设备如果采用片上系统也支持这种“待连机”运行模式。
【ARM学习方法】推荐阅读:
学习方法:最新小学英语学习方法指导12-05
名人学习方法与读书方法09-21
高一政治复习方法:学习方法10-20
学习方法与学习习惯11-09
高三物理学习方法及复习方法03-04
高中学习方法和学习技巧11-28
日语学习方法07-02
励志学习方法09-21
学习方法策略10-03
建筑学习方法12-12