玩转ARM基本功能

发布者:楼高峰最新更新时间:2018-02-01 来源: eefocus关键字:ARM  基本功能 手机看文章 扫描二维码
随时随地手机看文章

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

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

 

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

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

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

1.gif

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

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

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

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

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

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

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

2.jpg

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

3.jpg

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

    对于GPA组,

4.jpg

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

5.gif

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

6.jpg

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

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

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

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

7.gif

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

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

8.jpg

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

9.jpg

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

10.jpg
11.jpg

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

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

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

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

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

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


关键字:ARM  基本功能 引用地址:玩转ARM基本功能

上一篇:基于ARM Linux的无线音视频对讲系统分析
下一篇:基于ARM处理器的异常处理分析

推荐阅读最新更新时间:2024-03-16 15:54

ARM单片机汇编指令使用二
目录: 11、STMFD和LDMFD指令 1)STMFD SP! ,{R0-R7,LR} 2)LDMFD SP! ,{R0-R7,LR} 99、伪指令 1)PROC伪指令 2)EXPORT伪指令 3)IMPORT伪指令 4)DCD与DCDU伪指令 5)ALIGN伪指令 6)AREA伪指令 7)SPACE和DCD伪指令的区别 8)ENTRY伪指令 ----------------------------------------- 说明: ARM单片机汇编指令使用一 ARM单片机汇编指令使用二 ---------------------------------------------------
[单片机]
<font color='red'>ARM</font>单片机汇编指令使用二
ARM中gtk的移植
#主机安装gettext libglib2.0-dev sudo apt-get install gettext libglib2.0-dev export PREFIX=/gtkdfb& #install glib2.16 echo ac_cv_type_long_long=yes arm-none-linux-gnueabi.cache& echo glib_cv_stack_grows=no arm-none-linux-gnueabi.cache& echo glib_cv_uscore=no arm-none-linux-gnueabi.cache& echo ac_cv_func_posix_getpwuid_r=
[单片机]
新岸线联手ARM广东芯片弯道超车
  南方日报讯(记者/田志明)广东省将高端新型电子信息产业作为三大战略性新兴产业之一,其中平板(包括LCD、OLED等)和芯片就是重点发展的内容,以解决广东乃至全国“缺芯少屏”的短板。   昨日,广东新岸线计算机系统芯片有限公司和半导体巨头安谋(ARM)公司在北京联手推出新岸线首个计算机系统芯片NuSmart2816,标志着我国在高端芯片和通用计算机单芯片方面取得了重大突破。据悉,NuSmart2816的成功推出,得到了工信部、广东省科技厅的大力支持。广东省副省长宋海亲临发布会现场祝贺,并表示广东省将出台一系列扶持措施,大力推动高端信息产业发展,形成有全球竞争力的超大规模高端新型电子信息产业群,促进产业转型升级和发展方式的转变。
[嵌入式]
华邦安全闪存结合ARM PSA
华邦(Winbond)电子近日宣布推出与ARM平台安全架构密切结合的安全闪存,大幅扩展华邦TrustME安全闪存的产品组合延伸。 Arm物联网IP装置副总裁兼总经理Paul Williamson表示,物联网技术对我们的生活带来潜在的改变和影响,使得安全已是必要条件。 我们正在迅速部署连接装置以真正实现这些技术所带来的益处。ARM与合作伙伴们,包括华邦,透过PSA提供共同框架来建立更安全的链接装置以达成经济安全。 作为拥有共同准则(Common Criteria) EAL5+认证的安全非挥发性内存,TrustME W75F支持ARM PSA,为SoC和MCU的设计业者提供高度安全可靠的解决方案于物联网(IoT)、手机、 人工智能和其
[半导体设计/制造]
三星s5pv210启动过程(ARM Cortex-A8)
S5PV210内部有96Kb的IRAM和64Kb的IROM。 DRAM0的地址:0x2000_0000——0x3FFF_FFFF(512MB)(自带内存) DRAM1的地址:0x4000_0000——0x7FFF_FFFF(1024MB)(扩展内存) SROM的地址: 0x8000_0000——0xAFFF_FFFF(128MB*6)(扩展内存) IROM的地址: 0xD000_0000——0xD000_FFFF(64Kb) ISRAM的地址: 0xD002_0000——0xD003_7FFF(96Kb) SFR的地址: 0xE000_0000——0xFFFF_FFFF(512Mb) IROM结构: BL0:64Kb。 ISRA
[单片机]
Eclipse开发调试ARM裸机程序(六)关于裸机调试i2c记录
关于裸机调试i2c记录,遇到了不少的问题。现在都已经解决了。记录一下。 1.整体的规划 既然是学习某个硬件的功能,我觉得就应该能用最简的代码来在不涉及其它硬件的情况下,做出来。所以我的规划是在仅有的:中断,IIC,再顺便加一个LED就来实现。不加SDRAM,不设置clock,不涉及NandFlash,不涉及NorFlash,不涉及MMU重映射。就用S3C2440内部的4K SRAM来完成。 2.现有资源 从零写太难了,就先找找现有资源。1,有韦东山的代码:操作的是一个时钟芯片,而我的mini2440用的是AT24C08,一个EEPROM,还有一个不一样的NandFlash。2,有一个以前从
[单片机]
Eclipse开发调试<font color='red'>ARM</font>裸机程序(六)关于裸机调试i2c记录
ARM处理器上电/复位操作
ARM处理器上电与复位操作过程类似,都是从处理器的低端复位向量地址0位置读取第一条指令,由于ARM处理器的异常中断向量是连续排列的,所以异常中断入口指令一般都是一条跳转指令,至少跳过异常中断向量区,然后按照程序流程执行。 不同嵌入式处理器的启动模式有很大差别,相同架构的不同处理器型号或序列的启动模式也不一样,比如:MC68VZ328(MC68K)有4种启动模式;PPC405GP(PowerPC)有两种启动模式;PPC440EP(PowerPC)有8种启动模式;SB1250(MIPS)有两种启动模式;PNX1700(DSP)有4种启动模式,而大部分处理器只有一种启动模式,可通过芯片的数据手册了解芯片的启动模式。 ARM处理器中的大
[单片机]
基于ARM7微处理器的中文液晶显示技术
1 引言 液晶显示屏LCD作为一种功耗低、体积小、无辐射的显示器件,近几年被广泛应用于各式各样的嵌入式电子产品中,LCD可分为段位式、字符式和点阵式三种,其中,段位式LCD和字符式LCD只能用于字符和数字的简单显示,不能满足图形曲线和汉字显示的要求,而点阵式LCD不仅可以显示字符、数字,还可以显示各种图形、曲线及汉字,并且可以实现屏幕上下左右滚动动画功能,分区开窗口、反转、闪烁等功能,用途十分广泛,为了简化液晶 显示电路的设计和应用,生产厂家通常将液晶显示单元、显示控制器,显示内存和显示驱动电路等装配在一起,做成液晶显示模块LCD Module(LCM) 。LCM对外提供标准数据和控制接口以及控制指令,本文以ATM12864C为例,
[电源管理]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved