首页 > 新闻中心
ARM成长路--献给坚持ARM学习的人|火狐体育官方网站

2021-11-03 

本文摘要:用ARM的人,尤其是入门ARM,都会遇到许多 坎,能以往就不容易一步步强健为ARM大神,没法以往也就急于求成了,别如有些人就说道:因为我暗启动代码,如今用的是三星2440的,要想保证一个外部中断.彻底全部材料全是ADS的。

火狐体育

用ARM的人,尤其是入门ARM,都会遇到许多 坎,能以往就不容易一步步强健为ARM大神,没法以往也就急于求成了,别如有些人就说道:因为我暗启动代码,如今用的是三星2440的,要想保证一个外部中断.彻底全部材料全是ADS的。用MDK会备案终断涵数,模样务必改成启动代码才讫。如今我需要启动时终断了,可是寻找终断呼吁仅仅在启动代码里边击伤循环系统。谨此文中赠给这些果断通过自学ARM的人:从开始做ARM到现在将近几个月多了,第一个新项目搞得一些眉眼了,再一觉得看上去新手入门了,大半年来,有刚开始的新鮮,正中间的可悲,到最终的难过。

在其中全过程称得上曲折离奇,遇到了很到先人没遇到过的疑难病症,自然许多 情况下是由于我的粗心大意导致的。曾一度也是有过撤出的想法,哪个心态,像得了狂躁症一样。

之后下决心即便 业绩考核没了,工作中扔了还要干完它。只不过是在这个全过程中,看到跟我一样的许多 新手在社区论坛上发帖子求助,但是许多 情况下回者屈指可数,有可能难题过度愚昧,也是有很有可能难题描述的不准确。

我上过许多 贴子,乃至必需侵犯了在网上许多 的高手,她们都给了我非常大的帮助,可是我那时候的好点子过度比较简单了,总就要某一高手必须解决困难掉这个问题,如今看一下,即便 是高手,没看见确立的难题也难以让你一个解决困难方式,碰到困难没法把期待基本上不遗余力在他人的身上,要挖到本身发展潜力,一遍遍仔细看指南,反复实验,大大的逻辑思维,难题认可能解决困难掉,仅仅时间问题罢了。再一次要感谢企业一件事的忽略,一个那么比较简单的东西 允许我做了这么多年。只不过是,在前面的全过程中,依然有写成点什么的不理智,可是那时候重重困难、无从说起,也就要这一情绪。现在可以桌椅来仔细汇总下前边的难题,有如今也没有做搞清楚的,兹向大伙儿请教了;有解决困难丢掉的,那么就说道说道成功经验,给别人一些参考。

最先申明自己脑袋笨,思维逻辑劣,点一个灯点了一个多月,最终还寻找没有对。因此 谈及的难题有可能很愚昧,讲出也模样语无伦次,有兴趣爱好看的那么就侵及了哈。再作说道说道大家的这一块木板,打架斗殴的at91sam9260,外阔Norflash、SRAM,搭建程序既能够跑完在Norflash中,还可以拷到Sram中跑完。

每日任务就一个:操控一个片外AD,诵读数据信息随后根据串口通信接到。很比较简单的吧,这我还干了几个月呢,你说道菜不菜吧。

下列我将想起全部的ARM通过自学全过程,涉及到的科技知识全是很比较简单的基本知识,老鸟就无须看过,期待能够帮助到像我一样的小白。前三个月主要是熟识的全过程,那时候基本上没想到后边程序的调节不容易这般的艰辛,主观臆断地强调又不了系统软件,只不过是32位系统的单片机设计嘛。

木板保证回来诸多一段时间内,电子器件都没回位,那时候屌了呀,理应再作熟识熟识程序编写自然环境,每日就为好多个斩元器件心急,啥都没有腊。之后木板焊好啦,才寻找只不容易用H-JTAG识别处理芯片,别的的什么都不懂。随后刚开始看方法,只打游戏过51的我,首次了解32位系统的单片机设计,那时候看到AT91C_BASE_PMC-PMC_PCER=(0x13)那样的句子,竟然不告知代表什么意思,一是疑虑-意味着个啥?二是为什么写0x13的模样?之后了解过去了多长时间才搞清楚,AT91C_BASE_PMC是个基地址,PMC_PCER是较为这一恩地址的偏移,挪动取值是为了更好地给32位系统存储器取值的便捷。

再作说道说道产品研发ARM要选用的手机软件及其专用工具吧,这段时间我屡次用以了IAR、KEIL、h-jtag、JLink,都是会用可是也不通晓。最终是在KEIL Jlink下顺利完成的。开发环境的随意选择:1、c语言编译器自然环境:IAR、KEIL、GCC、刚开始我要也就要就随意选择了IAR,缘故很比较简单:ATMEL的方法很全是根据IAR的,而KEIL改装文件目录下的方法非常少。匆匆忙忙改装了IAR那时候的最新版本IAR5.20,基本上没充分考虑可用的資源和沟通交流的便捷。

随后才寻找IAR5.X跟4.X有非常大的各有不同,关键便是在其中的连接器从XLINK换成了ILINK,因此 环境变量也由XCL文档换成了ICF文档,初看后面一种模样比前面一种更为比较简单更为通俗易懂了,可是因为是新版本,用以的人还很少,在网上上的参考文献绝大多数還是根据4.X的,针对初学者哪几个句子還是很疑惑。但是一根筋的我還是咬着牙果断用以IAR5.20,直至遇到IAR的杀招:系统软件从慢数字时钟要想慢数字时钟变换时就跑完飞过来了,全是杀在lowlevelinit()中的这一句上:AT91C_BASE_PMC-PMC_MCKR|=AT91C_PMC_CSS_PLLA_CLK;随后将这一句放进主程序中,照死不待。用以全过程中,总弹出来有一个警示,大致含意就是:IAR改装文件目录下,bin文件夹名称下的armlibsupport.dllmaybemissingorcorrupt.新的装后還是老样子。

在LED闪亮程序上心急一个多月无果后,才下狠心调向KEIL。用上KEIL才寻找这东西并不是传说中的低能儿,忽视特别是在适合我等你小白,觉得关键有三个层面特别是在好:启动代码的图形界面配置;在Flash跑完不务必哪些环境变量,必需在option中另配2个地址值就可以了;只需网页页面电脑鼠标就可以搭建将代码从Flash全自动拷到RAM中执行,不务必再写什么代码复制程序了。

GCC,未用过,不明白。2、调节专用工具:JLINK、H-JTAG、ULINK、刚开始用以h-jtag,顺应Wiggler用以,精巧且便宜,迫不得已钦佩Twentyone老前辈,在RAM中调节很便捷,还可以根据H-Flasher将程序iTunes到Flash跑完,用以h-flasher时要一个复位文档,主要是复位Flash涉及到存储器。之后看到DB的JLINK都卖不出去了,就从淘宝网买来一个JLINK,主要是无须再用并口了,如今100元之内的JLINK大把,用JLINK是个不错的随意选择,可是调节片外的flash模样还没法无尽中断点。

ULINK,但是于准确,模样只抵制KEIL,但是未用过。此次关键说道说道第一次做ARM特别是在是指51必需跳出来ARM的必不可少遭遇的好多个定义:REMAP、Bootloader、Flashloader。1、REMAP:谈及REMAP。

最先不可想到什么叫MAP,英文很差,刚开始就以偏概全,MAP便是地形图嘛,MemoryMap便是储存器地形图,但是这个地图的参考坐标并不是地理坐标,只是地址,从而称为储存器同构。因为要适应能力各有不同储存器容积回绝的主要用途,ARMCPU自身的RAM、ROM并并不是充裕大,因此 许多 情况下要外阔一些储存器,Norflash、NANDFlash、SDRAM、SRAM而针对ARM而言如何识别这种各有不同的储存器呢,不可以给每一个分派一个独立国家的地址,就相当于每一个人有各有不同的姓名。

片内存储器的地址一般原厂就煅烧好的,片外得话就依据每一个储存器所相接的外界系统总线片选而具有各有不同的地址。因此 REMAP,说白了便是储存器的新的同构,即一些储存器的地址又再次出现了转变。

我也很不讲解了,这地址原本就很差记,还换来换去的,麻不艰难呀,学51的情况下咋就沒有这东西呢?之后坎了些材料,一些懂了,51是8位机,更为最重要的是51的cpu主频不低,8位的ROM或Flash充裕给出51的cpu主频,无须放进等待命令,因此 程序必需在ROM或Flash中跑完危害接近系统软件的速率。而ARM就各有不同了,ARM是32位系统机,可是Flash一般是8位或16位,32位系统的也有吧,模样价钱很高。

并且ARM的产品很高,以至于几百M,因此 Flash的加工工艺约接近这一速率。假如程序跑完在Flash中就需要放进过多的等待命令,因此 不容易危害ARM的特性。

而RAM一般存取速度比较慢,很更非常容易包括32位系统,能够与髙速的ARM给出。更为最重要的是ARM通电后必不可少从0x0地址处得到 命令,因而通电后必不可少将ROM或Flash同构位0X0地址处,那时候还造成了一个低能儿的好点子,即然RAM那么好,为什么也要ROM或Flash,必需将程序iTunes到RAM中不就得了,之后才猛然想到RAM是不容易失型储存器,断电后啥也就要,再作通电后0X0处啥都没。

并且也有一条,ARM的中断向量表格,既储放在每个终断通道地址的地区,一般放进0x0一处,即ROM或Flash中,为了更好地缓解终断响应时间,也理应将0X0同构到RAM中来。因而,ARM一般从ROM或Flash启动顺利完成复位,随后将运用程序拷到RAM,随后跳出来RAM执行。刚刚说道的是,为什么要REMAP,接下去说道如何REMAP。

刚开始的情况下我不准确,都说道REMAP,那怎样才能顺利完成REMAP呢?全是指南看得较少呀,只不过是上边说道的早就很准确了,大家用的at91sam9260称得上比较简单,有专业的存储器能够配置,MATRIX_MRCRMasterRemapControlRegister,向这一存储器适度位写1就可以了。在网上还看到Samsung的一些ARM能够根据程序编写适度Bank存储器变化其接续地址,来搭建REMAP。下边以大家的at91sam9260的木板为例证详细说道说道我对at91sam9260REMAP的讲解,刚开始Flash没一切程序,自然也没REMAP,这时将BMS接高,随后通电,这时的0X0地址处位于片内的ROM,因为ROM内模样煅烧了推动程序,因此 这时串口通信不容易键入RomBoot字眼。而內部的SRAM0的接续地址還是在0x200000一处,而片外Norflash接续地址是0x10000000一处。

随后大家运用h-flasher或J-Flash将溶解的Bin文档iTunes到Norflash内,即接续地址为0x10000000一处。随后将BMS接低,这时Norflash被同构在0X0地址处,即这时Norflash的接续地址为0X0,(给你很有可能要回应那ROM的地址如今在哪儿呢?我也不告知,由于Norflash的地址范畴是0X0~0X1FFFFF,而ROM的接续地址环境变量是0X100000,恰好在Norflash的范畴内,因此 这时ROM哪里来到?)这时通电,由于0X0地址处即Norflash接续地址有八个合理合法的中断向量,程序不容易从Norflash启动,然后执行启动代码,复位SMC、PMC,随后Copy中断向量表到內部SRAM0,随后,将MATRIX_MRCR存储器适度方向1,搭建REMAP,这时,Norflash的接续地址又变为0X10000000,而內部的SRAM0的接续地址又变为0x0了,系统软件假如再次出现发现异常,将从地址0X0处即內部SRAM0取于中断向量,而內部SRAM的网站打开速度好像小于外界的Norflash,因此 提高程序特性。

这是我对at91sam9260REMAP的讲解,亲睐争辩赐教。2、Bootloader:说真话,这一定义到现在也不是很搞清楚。

有可能针对打架斗殴的系统软件而言,Bootloader这一定义自身就比较模模糊糊吧,易错成语得话,Boot,皮靴,Load,衣着上皮靴行走才比较不舒服(这一形容模样比较西红柿喔),针对ARM而言,复位好,并将空间向量报表及其数据信息哪些的拷到RAM,经营一起才顺畅。便是传说中的推动装车。

所以我讲解的Bootloader便是顺利完成ARM的复位、建立中断向量表并同构到RAM中、将数据信息段和适度的代码段拷到RAM、顺利完成REMAP、调用函数到Main,这一系列全过程。简言之便是启动代码腊的活。这一讲解自己都觉得很好笑,还要求大伙儿多多的指导。

3、Flashloader:这一定义称得上模模糊糊,总觉得跟Bootloader类似,只不过是Flashloader能够搭建对Flash的载入、载入等作业者,并与调节手机软件顺应搭建将程序iTunes到Flash中。IAR中有一个选择项:UseFlashloader,但是模样一般全是对于片内Flash的,大家的木板是外伸的Norflash,模样就没选用这一东西。驳回申诉启动代码,我也嗷嗷嗷消沉,IAR下的程序都杀在了这儿,Keil中经常会出现的难题许多 全是根据对启动代码的缝缝补补才解决困难的,一句话:出也启动代码,惨败也启动代码。

启动代码理应是不久了解ARM的初学者必不可少遭遇而非常头疼的难题吧,一开始因为我很迷惑不解,为什么做个这东西,学51的情况下咋就沒有见过呢。并且还全是编写写成的,俺的编写还停留在MOV环节,别的的并不是很不明白,没有办法,谁让编写的高效率呢。谈及启动代码还迫不得已老生 常谈一下在其中要顺利完成的每日任务:1、建立出现异常中断向量表格,ARM从0X0刚开始给每一个异常中断分派4个字节数的室内空间,一般储放在一个调用函数命令(B)或PC的装车命令(LDRPC,X_Vector),当再次出现出现异常时,ARM从这里得到 适度异常中断程序处理通道详细地址,再作调用函数执行;2、ARM全是髙速CPU,而在髙速下启动很可能会不稳定,因此 在启动代码从慢时钟运行,在必需的方向,从32.768K变换到高速运转;3、ARM一般具备片外存储器,Flash、SDRAM等,这种储存器都务必复位才可以用以,这全是在启动代码中顺利完成,可是Norflash的复位要在时钟复位以前;4、ARM有各有不同的方式,每个方式都务必适度的局部变量;5、Copy出现异常中断向量表到RAM,并构建REMAP,确立要求参照上一节;6、Copy可执行光盘的数据信息段到RAM,并将ZI区清零。

火狐体育官方网站

这一一般全是由c语言编译器顺利完成的,IAR下是?main来构建,Keil中由__main构建。如今启动代码能够看懂一些,但是自身写成启动代码還是非常远的事儿。

假如刚开始对启动代码很违反,能够充分考虑用以Keil,由于Keil由启动代码的图形界面配备,必需网页页面鼠标键者就可以构建自身的启动代码。下边结合大家at91sam9260的木板,讲到讲到Keil中的启动代码。合上Keil溶解的SAM9260.S,网页页面左下方的ConfigurationWizard转到图形界面配备一行,依据你的务必随意选择主要参数,所有随意选择完后,再作网页页面TextEditor,将不容易看到溶解的启动代码。


本文关键词:火狐体育,火狐体育APP,火狐体育官方网站

本文来源:火狐体育-www.coast-store-uk.com

  • 首页| 关于我们| 新闻中心| 产品中心| 业绩展示| 联系我们|
  • Add:四川省巴中市平昌县计人大楼973号

    Tel:0358-381274399

    川ICP备74640126号-2 | Copyright © 火狐体育-火狐体育APP-火狐体育官方网站 Rights Reserved