历史上的今天
返回首页

历史上的今天

今天是:2025年06月11日(星期三)

正在发生

2021年06月11日 | 玩转ARM基本功(ARM11)

2021-06-11 来源:eefocus

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


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


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


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


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

1.gif?imageView2/2/w/550

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


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


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


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


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


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


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


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


3.jpg?imageView2/2/w/550


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


对于GPA组,

4.jpg?imageView2/2/w/550


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


5.gif?imageView2/2/w/550


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


6.jpg?imageView2/2/w/550


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


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


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


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


7.gif?imageView2/2/w/550


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


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


8.jpg?imageView2/2/w/550


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


9.jpg?imageView2/2/w/550


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


10.jpg?imageView2/2/w/550


11.jpg?imageView2/2/w/550


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


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


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


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


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


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


最后借用孔老夫子的一句话“学而不思则罔,思而不写则殆”来表达嵌入式开发者——至少我是这样的心情。

推荐阅读

史海拾趣

虹冠电子(Champion)公司的发展小趣事

虹冠电子始终秉持着节能环保的理念,将这一理念融入到产品研发和生产过程中。公司推出的电源管理IC产品,不仅具有高效能、低能耗的特点,还具备类零电压切换PFC与PWM技术,进一步提高了电源的使用效率。虹冠电子的产品广泛应用于个人计算机、云端运算服务器、LED显示屏等领域,为全球节能减排事业做出了积极贡献。

CEVA, Inc公司的发展小趣事

CEVA, Inc.最初于1999年11月22日在美国特拉华州注册成立,起初的名称并非CEVA。随着公司的业务扩展和技术积累,其在2002年11月进行了更名,成为ParthusCeva公司。这一更名反映了公司业务的进一步发展和市场定位的调整。随后,在2003年12月,公司再次更名为CEVA公司,这一名称沿用至今,成为无线连接和智能传感技术领域的知名品牌。

Cellergy公司的发展小趣事

在电子行业的快速发展中,Cellergy公司以一项创新技术打破了行业内的常规。该公司成功研发出了一种新型电容器,其性能远超市场上同类产品。这一技术突破不仅为Cellergy公司赢得了大量订单,还使其在电子行业中的地位得到了显著提升。随着技术的不断完善和市场的不断拓展,Cellergy公司逐渐成为了电容器领域的佼佼者。

BOWEI公司的发展小趣事

Cellergy公司一直注重创新研发,不断推出新产品以满足市场需求。在一次重要的科技展览会上,Cellergy公司展示了一款全新的超级电容器。这款电容器采用了先进的材料和工艺,具有更高的能量密度和更长的使用寿命。这一创新产品引起了广泛关注,为Cellergy公司赢得了众多客户的青睐。

Cincon公司的发展小趣事

创新是Cincon持续发展的动力。2003年,公司在台北设立了研发中心,专注于电源产品的技术创新和研发。这一举措极大地提升了公司的技术实力和产品创新能力。几年后,Cincon成功设计并制造了LED电源,进一步丰富了产品线,并满足了市场对高效节能照明解决方案的需求。

Futaba Electric Co Ltd公司的发展小趣事

随着业务的快速发展,Cincon开始将目光投向国际市场。1999年,公司在美国加州设立了办事处,以便更好地服务北美市场。同一年,为了应对日益增长的生产需求,Cincon在中国东莞设立了新工厂。这些举措极大地提升了公司的生产能力和国际市场竞争力,为Cincon的全球化发展打下了坚实的基础。

问答坊 | AI 解惑

智能车信息回放系统6

智能车信息回放系统6…

查看全部问答>

具备图形加速能力的嵌入式应用系统

具备图形加速能力的嵌入式应用系统…

查看全部问答>

频率变换电路的概要

频率变换电路的概要 时间:2010-05-28 22:44:35 来源: 作者: 频率变换电路也称之为频率变频器(Converter),为高频率电路独特的电路方式。如大家所详知的超外差(Superheterodyne)方式,便为频率变换的一种方式。频率变换电路可以将HF~VHF~UHF ...…

查看全部问答>

4x4 4x4键盘问题,有四个键值始终不对,请大家帮帮忙

[#TK1117] 4x4 4x4键盘问题,有四个键值始终不对,请大家帮帮忙   用89c2051做了一个键盘,P1.0-P1.3接上拉电阻,程序如下: uchar getkey() {     uchar recode,key;             ...…

查看全部问答>

已有文件abc.inf和abc.sys,如何用wise打包驱动?

reference manual已阅,但是依然没有找到方法。 基本的使用我已经明白,设计到inf如何使用的部分不是很清楚,目前已经完成的操作就是: 1.拷贝文件。 abc.sys -> $(WINNT)\\System32\\DRIVERS abc.inf -> $(WINNT)\\inf 2.写注册表 [HKEY_LOC ...…

查看全部问答>

CE下怎么因隐藏掉开始菜单啊(不用aygshell中SH打头的函数)

CE下怎么因隐藏掉开始菜单啊(不用aygshell中SH打头的函数)…

查看全部问答>

Freescale 的智能电表产品方案

          笔者在上海参加FTF ,听中国电力科学院首席专家胡学浩中国智能电网发展战略部署和实践的报告,智能电网就是SMART GRID ,中国建设坚强智能电网意义重大,具体实施是三步走。笔者对智能电网的智 ...…

查看全部问答>

取消默认的上拉电阻让ADC更准确。

LPC111x默认reset后都是上拉电阻使能,这个内部的上拉电阻在使用SSP等接口是非常方便,大约可以提供50~60uA的上拉电流(I2C还是拉不动啊~)。在ADC时需要提高精度可以把上拉电阻禁能,例如P1.0(ADC1)接口: LPC_IOCON->JTAG_TMS_PIO1_0   ...…

查看全部问答>

MSP430的启动过程

   介绍启动过程之前我们先介绍下MSP430的POR(power on reset)和PUC(power up clear)。POR只能由下面三种情况触发:1、器件上电;2、RST(配置为复位模式)引脚为低电平;3、当PORON为1时, SVS为低。PUC的触发情况(POR一定会触发PU ...…

查看全部问答>