注册
登录
电子工程世界-论坛
返回首页
EEWORLD首页
频道
EE大学堂
下载中心
Datasheet
专题
单片机
物联网
汽车电子
嵌入式
手机/便携
模拟电子
家用电子
网络通信
电源管理
工业控制
测试测量
半导体设计/制造
安防电子
传感器
医疗电子
菜鸟电子工程师的个人空间
https://home.eeworld.com.cn/space-uid-572145.html
[收藏]
[复制]
[分享]
[RSS]
空间首页
动态
记录
日志
相册
主题
分享
留言板
个人资料
借用开发板
论坛
淘帖
Collection
查看新帖
最新回复
社区活动
联系管理员
我的空间
帖子
日志
收藏
好友
勋章
积分
安全验证
请完成以下验证码
日志
玩转ARM基本功
热度
1
已有 1024 次阅读
2014-8-26 16:20
|
ARM
我是稀里糊涂的走上了
嵌入式
开发的道路,回想起来,多亏了身边的几位朋友,是在与他们的闲侃中慢慢的走上了这条道路:从最早的
电路
设计,
PCB
打板,电路调试,模拟
仿真
,
单片机
开发到后来的
ARM
开发,回想起来,心里也是诚惶诚恐,如履薄冰。
我开始做
电子
是用的
AVR
单片机,从I/O、按键…到内存、外设玩了一通。工作之后,才开始玩ARM。在项目中逐渐对ARM开发有了一些感悟。
学习ARM有两个目的,看你是那种:1、长见识,顺便玩玩;2、工作需要,从事ARM开发。这就要分开对待了。
如果是长见识,随便玩玩,为日后的工作做准备,那么就应该挑选市场上很成熟的ARM7、ARM9等资料比较多,玩的人比较多,出现问题容易解决;如果是工作需要,就没有这么多选择,必须按照功能要求,开始征服特定的片子。
不管哪种目的,学习起来步骤我感觉差不多,先裸板,后上操作系统:
之所以这么安排,是因为听了很多大牛的建议和意见。正所谓“万丈高楼平地起”,基础很重要。在上操作系统之前,一定要对底层代码特别是裸板程序有一定的认识。这样,对于操作系统中涉及底层的问题就会少很多。
现在以我学习ARM11(s3c6410-1176JZF)的经历介绍写一些基本功。
首先:要有一定的电子基础。
这不是废话吗,既然玩ARM当然都是懂电子的呀。其实不然!电子基础可深可浅,怎么是个头?会IC
放大器
,搭建信号处理电路,这是信号处理中的基本功。对于ARM开发来说,我感觉重点在信号走线、滤波、稳压和保持片子性能稳定上(分析一个ARM板子就会明白这些道理)。
我谈下我的见解:明白ARM板子中除集成IC之外的元器件的作用,最常见的是
电容
作用、驱动
LED
呀、扬声器呀、串口连接、存储器连接、
LCD
屏幕连接等等。看到串口,想起怎么连接;看到按键,想起怎么识别……基本上在硬件上可以将整个系统连接起来。
其次,有一定的英文阅读能力。
我在开发的时候以
Linux
应用完全开发手册、6410手册和ARM1176jzf内核手册为基础。这三个文档一个中文,两个英文,页数总和有2500页。如果没有耐心,想尽快完成开发,这无异于缘木求鱼。6410的手册是对ARM11芯片的介绍和寄存器的总体介绍:包括GPIO设置,相机接口、Nandflash控制器、DRAM控制器等。1176jzf是对1176jzf处理器的设置的介绍。
对于简单的GPIO设置,我们可以查阅6410的GPIO章节,
从中可以看出各组管脚的功能:各组管脚是混合复用(除了GPI和GPJ两组),依据单片机知识,如果是管脚复用,必须通过相应寄存器设置才能达到相应要求,这时,我们需要看GPIO的寄存器设置章节:
对于GPA组,
可以看出端口A具有读写功能,并且有相应的地址,从存储器映射图中可以看出,端口A可以通过配置相应寄存器(也就是相应的地址)为合适的数值,就能完成相应的操作。
对于GPA0管脚来说,通过配置其为0000或者0001或者0010将其定义为输入、输出或者串口模式,具体操作及分如下:
通过三个操作,可以讲GPA0设置为输出功能,如果外界LED,可以实现LED灯的控制。
此外,还有数据寄存器,上拉控制寄存器,配置休眠和上拉休眠等寄存器,其操作原理一样,将相应的寄存器地址放入一寄存器,写入数值,即完成相应配置。
第三、要有一点汇编和c语言的基础。
为什么这么说呢,首先看下配置I/O口为简单输入输出的ARM的启动代码:
在6410的启动代码中,需要以汇编语言的形式设置、配置寄存器,现在将这部分进行简单的分析:
在写裸板程序的起始,需以 .globl 为开始,通过
将外设地址映射到外设地址,通过
将存储器大小设置为256M,具体怎么实现的呢,查看1176jzf手册:
有此可见,6410手册和1176jzf手册对于裸板程序是一利器。
第四、举一反三,融会贯通,利用网络。
一个6410手册有1378页,一个1176jzf有972页,看完是一项可望不可及的任务,因此善于举一反三,融会贯通是必须的。另外还需要有Google大神的帮助。在开发过程中,如果碰到新功能,新接口没有使用过,这时,Google大神就可以发挥其大神的作用,带领你完成任务。
如在写堆栈操作中,需要将各寄存器的数值进行保存,需要使用stmdb指令,如果不熟悉,可以用Google大神进行帮助。
通过介绍,可以明白具体的操作。
虽然ARM更新速度很快,但是也不是出来一个新产品就让我们从头开始学习新技术,只要熟悉掌握了一种
MCU
,通过举一反三,可以将技术扩大到应有的领域。
最后借用孔老夫子的一句话“学而不思则罔,思而不写则殆”来表达嵌入式开发者——至少我是这样的心情。
收藏
邀请
举报
发表评论
评论 (
1
个评论)
回复
soso
2014-8-27 11:10
涂鸦板
您需要登录后才可以评论
登录
|
注册
评论
菜鸟电子工程师
加为好友
给我留言
打个招呼
发送消息
热门文章
头条资讯
09.19@成都|NI 半导体测试研讨会召集令
Intel并购美光?这或许真的是盘好生意
智慧家庭系列文章 | 入门智能家居音频设计?TI 来支招!
Marvell发布极具突破性的64位双核SoC平台 继续扩大打印行业领先优势
【深度解读工业物联网】:用技术的眼睛
这次,咱们深入研究ADC的精度和带宽问题~
新增数据手册
XC62HR4702PR
247ABAM-0.2F120VAC
EBM6CH175H
GTS01A-28-3P
47ADP2R2M6RT
M55342K01B59M0MWS
热搜器件
MAX4228ESD
RLR07C1504GSRE6
93254-134HLF
C0603X330M5HACAUTO
RN731JTTD1423D100
B43305B5397M82
推荐下载
无线网络网速测试方法.pdf
H.264 And MPEG-4 Video Com
基于SN8P2204的RFID高频阅读器设计
Kalman滤波在视频监控中的应用
模拟电子技术04csf-任旭虎
这是FX2单片机的应用向导
推荐关注
无线MCU芯片在智能家居系统里如何实现?拆解PHY6239芯片资料
【MCXN947开发板测评】RT-Thread系统烧录
国家重大水利工程!赛思时间同步装置赋能珠三角水资源配置工程“西水东济”
拆解具备低功耗、低功耗蓝牙 (BLE) 2.4GHz芯片中文资料:PHY6230
SSD201/202D修改默认自启动脚本的方法,触觉智能保姆级攻略来了
VMware环境下,同时烧录固件检测不到设备如何解决?触觉智能鸿蒙开发板演示