历史上的今天

今天是:2024年09月08日(星期日)

2020年09月08日 | 初学者如何玩转ARM,举一反三

发布者:GoldenDream 来源: elecfans关键字:ARM  嵌入式开发  初学者 手机看文章 扫描二维码
随时随地手机看文章

我是稀里糊涂的走上了嵌入式开发的道路,回想起来,多亏了身边的几位朋友,是在与他们的闲侃中慢慢的走上了这条道路:从最早的电路设计,PCB打板,电路调试,模拟仿真,单片机开发到后来的ARM开发,回想起来,心里也是诚惶诚恐,如履薄冰。


我开始做电子是用的AVR单片机,从I/O、按键…到内存、外设玩了一通。工作之后,才开始玩ARM。在项目中逐渐对ARM开发有了一些感悟。


学习ARM有两个目的,看你是那种:1、长见识,顺便玩玩;2、工作需要,从事ARM开发。这就要分开对待了。


如果是长见识,随便玩玩,为日后的工作做准备,那么就应该挑选市场上很成熟的ARM7、ARM9等资料比较多,玩的人比较多,出现问题容易解决;如果是工作需要,就没有这么多选择,必须按照功能要求,开始征服特定的片子。


不管哪种目的,学习起来步骤我感觉差不多,先裸板,后上操作系统:

初学者如何玩转ARM,举一反三

之所以这么安排,是因为听了很多大牛的建议和意见。正所谓“万丈高楼平地起”,基础很重要。在上操作系统之前,一定要对底层代码特别是裸板程序有一定的认识。这样,对于操作系统中涉及底层的问题就会少很多。


现在以我学习ARM11(s3c6410-1176JZF)的经历介绍写一些基本功。


首先:要有一定的电子基础。

这不是废话吗,既然玩ARM当然都是懂电子的呀。其实不然!电子基础可深可浅,怎么是个头?会IC放大器,搭建信号处理电路,这是信号处理中的基本功。对于ARM开发来说,我感觉重点在信号走线、滤波、稳压和保持片子性能稳定上(分析一个ARM板子就会明白这些道理)。


我谈下我的见解:明白ARM板子中除集成IC之外的元器件的作用,最常见的是电容作用、驱动LED呀、扬声器呀、串口连接、存储器连接、LCD屏幕连接等等。看到串口,想起怎么连接;看到按键,想起怎么识别……基本上在硬件上可以将整个系统连接起来。


其次,有一定的英文阅读能力。

我在开发的时候以Linux应用完全开发手册、6410手册和ARM1176jzf内核手册为基础。这三个文档一个中文,两个英文,页数总和有2500页。如果没有耐心,想尽快完成开发,这无异于缘木求鱼。6410的手册是对ARM11芯片的介绍和寄存器的总体介绍:包括GPIO设置,相机接口、Nandflash控制器、DRAM控制器等。1176jzf是对1176jzf处理器的设置的介绍。

初学者如何玩转ARM,举一反三

对于简单的GPIO设置,我们可以查阅6410的GPIO章节,

初学者如何玩转ARM,举一反三

从中可以看出各组管脚的功能:各组管脚是混合复用(除了GPI和GPJ两组),依据单片机知识,如果是管脚复用,必须通过相应寄存器设置才能达到相应要求,这时,我们需要看GPIO的寄存器设置章节:

对于GPA组,

初学者如何玩转ARM,举一反三

可以看出端口A具有读写功能,并且有相应的地址,从存储器映射图中可以看出,端口A可以通过配置相应寄存器(也就是相应的地址)为合适的数值,就能完成相应的操作。

初学者如何玩转ARM,举一反三

对于GPA0管脚来说,通过配置其为0000或者0001或者0010将其定义为输入、输出或者串口模式,具体操作及分如下:

通过三个操作,可以讲GPA0设置为输出功能,如果外界LED,可以实现LED灯的控制。

此外,还有数据寄存器,上拉控制寄存器,配置休眠和上拉休眠等寄存器,其操作原理一样,将相应的寄存器地址放入一寄存器,写入数值,即完成相应配置。


第三、要有一点汇编和c语言的基础。

为什么这么说呢,首先看下配置I/O口为简单输入输出的ARM的启动代码:

初学者如何玩转ARM,举一反三

在6410的启动代码中,需要以汇编语言的形式设置、配置寄存器,现在将这部分进行简单的分析:

在写裸板程序的起始,需以 .globl 为开始,通过

将外设地址映射到外设地址,通过

将存储器大小设置为256M,具体怎么实现的呢,查看1176jzf手册:

初学者如何玩转ARM,举一反三

有此可见,6410手册和1176jzf手册对于裸板程序是一利器。


第四、举一反三,融会贯通,利用网络。

一个6410手册有1378页,一个1176jzf有972页,看完是一项可望不可及的任务,因此善于举一反三,融会贯通是必须的。另外还需要有Google大神的帮助。在开发过程中,如果碰到新功能,新接口没有使用过,这时,Google大神就可以发挥其大神的作用,带领你完成任务。


如在写堆栈操作中,需要将各寄存器的数值进行保存,需要使用stmdb指令,如果不熟悉,可以用Google大神进行帮助。


通过介绍,可以明白具体的操作。


虽然ARM更新速度很快,但是也不是出来一个新产品就让我们从头开始学习新技术,只要熟悉掌握了一种MCU,通过举一反三,可以将技术扩大到应有的领域。

关键字:ARM  嵌入式开发  初学者 引用地址:初学者如何玩转ARM,举一反三

上一篇:ARM平台上运行Xen 可同时管理linux和VxWorks
下一篇:基于ARM平台实现数字滤波器系统的设计

推荐阅读

今年以来,多家电商巨头和快递公司加入无人机物流市场。 4月18日,菜鸟打造的专门用于物流末端配送的无人车在杭州进行首次公开路测。 6月16日,苏宁无人车“卧龙一号”首次落地京城,并完成首次上岗测试。6月18日正式开始进入常态化运营。 6月18日,在北京,首批载有618订单的3辆京东配送机器人依次发出,自动奔向订单配送的目的地。 继去年在中国人民...
(文章来源:中科罗伯特机器人学院) 我国的工业机器人正从传统的汽车制造行业向机械、、化工、轻工、船舶、矿山开采等领域迅速扩展。工业机器人技术越来越受到人们的关注,机器人基础与前沿技术的深入发展,使得新产品不断地涌现在市场中。 我国机器人产业发展势头、产业规模与市场空间都不断扩大,但与瑞士ABB、日本发那科、日本安川、德国库卡这“...
越来越多程序设计人员在设计安全相关应用程序时采用ARM处理器,范围遍及医疗、运输、航空电子与工业领域。因此,透过这些处理器所执行的软件也受到更为严格的检查,因为任何一个小错误都有可能导致严重后果。为了避免导致这样的后果,包括IEC 61508,还有最近才通过的汽车业ISO 26262等安全标准应运而生,以确保开发人员与客户在软件方面能符合业界最先...
  磁翻板液位计是一种典型的液位测量仪表。其形式有多种,按安装方式的不同,主要分为侧侧装和顶装两种形式。其中顶装安装方式的磁翻板液位计也较常见,它适用于地下贮罐,或者不适宜侧面开孔或侧面安装空间有限的容器的液位测量。通常地,标准型顶装磁翻板液位计包括浮筒管、过程连接法兰、护筒、浮子和液位指示部件等结构组成,它适合于测量具有一般弱...

史海拾趣

问答坊 | AI 解惑

小功率开关变压器设计

小功率开关变压器设计资料 …

查看全部问答∨

请教高手帮忙啊!

有谁有nRF401和AT89C2051的元件图啊!或者高手帮我画3个图啊!我今天才到图书馆借书学习!都快要答辩了,有谁可以帮我下!我QQ19353649或者给我这2个元件图!先谢谢了啦!…

查看全部问答∨

2009年全国电子大赛最新专家组意见全

本帖最后由 paulhyde 于 2014-9-15 09:14 编辑 欢迎大家对下面东西上传资料和模块!!有事情可以联系我QQ646144780 邮箱:xiangfeng0518@126.com 通信类及相关技术(1) 功能模块 无线(有线)发送机模块 (短波、超高频、红外、蓝牙、 ...…

查看全部问答∨

急求

课程设计的要求与数据 1.密码输入:每按下一个数字键,就输入一个数值,并在显示器的最右方显示出该数值,同时将先前输入的数据依次左移一个数字位置; 2.密码清除:按下清除键可清除全面所有的输入值,清除成为“0000”; 3.密码更改:按下 ...…

查看全部问答∨

wince如何取消自动挂起

最近在做wince 好多东西不懂,烦的要死 好不容易实现了battery driver,结果又出来新问题 自从实现battery驱动后,一段时间没有操作,wince就自动挂起 现在希望将自动挂起去掉 去网上查,说是wince省电保护,通过设置[HKEY_LOCAL_MACHINE\\SYS ...…

查看全部问答∨

按钮无法响应

本人用vs2005+wm6 pro sdk开发一个程序, 程序开始运算前,一切正常 在开始后台处理后,由于运算量较大,程序对按钮单击这些事件都不响应了 通常在windows平台上都可以通过类似以下的代码可以解决的,但是在windows mobile上似乎不行 if ( Peek ...…

查看全部问答∨

请问如何使硬盘磁头停止工作!

请问应该怎么实现。谢谢。…

查看全部问答∨

高手来。关于课程设计的程序有问题。本人实在无能为力。。求助!!!

以下为电子台历的程序。。各位帮忙。。 主程序 LP1: MOV AH,1 ;从键盘输入单个字符 INT 21H CMP AL,\'M\' ;AL=\'M\'? JNE LP5 CALL DATE ;显示系统日期 LP2: MOV AH,1 ;从键盘输入单个字符 INT 21H CMP AL,\'M\' ;AL=\'M\'? ...…

查看全部问答∨

[求助]不能烧写S3C2410的Normandy开发板的NandFlash

开发板为盛龙微嵌的基于S3C2410的Normandy开发板 可以用Flash Programmer成功烧写NorFlash.(JTAG连接应该没问题) 用配套光盘上的sjf2410 烧写Nand时提示: ERROR: No CPU is detected(ID=0xffffffff). 已尝试: 下载sjf2410的源码。改jtag.h ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved