ARM处理器——I.MX6ULL学习总结

一、前言

本文首先介绍ARM公司及ARM架构发展史,NXP公司的I.MX6ULL内部的硬件资源、架构等、最后是对这一段时间学习I.MX6ULL裸机开发的感想。

二、ARM公司简介及架构发展史

英国ARM公司是全球领先的半导体知识产权IP)提供商,全世界超过95%智能手机和平板电脑都采用ARM架构ARM设计了大量高性价比、耗能低的RISC处理器、相关技术及软件,ARM公司通过出售芯片技术授权,建立起新型的微处理器设计、生产和销售商业模式。ARM 的商业模式主要涉及 IP 的设计和许可,而非生产和销售实际的半导体芯片。ARM将其技术授权给世界上许多著名的半导体、软件和OEM厂商,每个厂商得到的都是一套独一无二的ARM相关技术及服务,ARM已成为全球性RISC标准的缔造者。

1 ARM公司内核架构分类、各架构基本用途

 

2 ARM架构发展史

三、I.MX6ULL基本介绍

I.MX6ULLNXP基于ARM Cortex-A7架构的单核处理器家族,主频可以高900MHzI.MX6ULL是一个高功效、高性价比应用处的理器系列,运行速度高达528 MHzI.MX6ULL应用处理器包括一个集成的电源管理模块,降低了外接电源的复杂性,并简化了上电时序。这个系列的每个处理器提供多种存储器接口,其中包括16LPDDR2DDR3DDR3L、原始和管理的NAND闪存、NOR闪存、eMMCQuad SPI和各种其他接口,用于连接外围设备,如WLANBluetooth®GPS、显示器和摄像头传感器。

  

1 I.MX6ULL特点

CPU复合器件

Cortex-A7内核,运行频率900 MHz128 KB L2缓存

显示

并行LCD显示,分辨率高达WXGA (1366x768)

8/10/16/24位并行摄像头传感器接口

电泳显示屏控制器支持直接驱动E-Ink EPD面板,分辨率高达2048x1536,工作频率106 Hz

存储器

16LP-DDR2, DDR3/DDR3L

8/16位并行NOR FLASH / PSRAM

双通道Quad-SPI NOR FLASH

8位原始NAND FLASH40ECC

数据连接

2MMC 4.5/SD 3.0/SDIO端口

2USB 2.0 OTGHS/FS,器件或主机,带PHY接口

音频接口包括3I2S/SAI, S/PDIF Tx/Rx

210/100以太网,支持IEEE 1588协议

212ADC,高达10个输入通道,以及电阻式触摸控制器(4线/5线)

安全性

安全模块:TRNG,加密引擎(DPAAESTDES/SHA/RSA),安全引导

封装

14x14 289 MAPBGA 0.8mm间距

9x9 272 MAPBGA 0.5 mm间距

四、Cortex-A7 MPCore 简介

Cortex-A7 MPCore是一款基于高性能、低功耗处理器ARMv7-A架构的处理器。Cortex-A7 MPCore处理器在带有一级缓存子系统、可选集成GIC和可选的二级缓存控制器。Cortex-A7 MPcore 处理器支持 1~4 核,通常是和 Cortex-A15 组成 big.LITTLE 架构的,Cortex-A15 作为大核负责高性能运算,Cortex-A7 负责普通应用,因为 Cortex-A7 省电。Cortex-A7 本身性能也不弱,不要看它叫做 Cortex-A7 但是它可是比 Cortex-A8 性能要强大,而且更省电。ARM 官网对于 Cortex-A7 的说明如下: 28nm 工艺下,Cortex-A7 可以运行在 1.2~1.6GHz,并且单核面积不大于 0.45mm 2 (含有浮点单元、NEON 32KB L1 缓存),在典型场景下功耗小于 100mW 这使得它非常适合对功耗要求严格的移动设备,这意味着 Cortex-A7 在获得与 Cortex-A9 相似性能的情况下,其功耗更低

 

处理器包括的功能

完全实现ARMv7-A架构指令集与架构

具有直接和间接分支预测的有序管道。

带内存管理单元(MMU)的哈佛1级(L1)内存系统。

2级(L2)内存系统。

APB调试接口,支持整数处理器时钟比率高达并包括1:1

通过嵌入式跟踪宏单元(ETM)接口提供跟踪支持。

可选VFPv4-D16 FPU,带无陷阱执行或媒体处理引擎(MPE

采用NEON技术

外部接口

ACEAPBETM、测试设计(DFT)、内存内置自检(MBIST)控制器。

调试体系结构

Cortex-A7 MPCore处理器实现ARMv7.1 ARM调试架构符合CoreSight架构。

以前的 ARM 处理器有 7 中运行模型:UserFIQIRQSupervisor(SVC)AbortUndef System,其中 User 是非特权模式,其余 6 中都是特权模式。但新的 Cortex-A 架构加入了TrustZone 安全扩展,所以就新加了一种运行模式:Monitor,新的处理器架构还支持虚拟化扩展,因此又加入了另一个运行模式:Hyp,所以 Cortex-A7 处理器有 9 种处理模式。

User(USR)

用户模式,非特权模式,大部分程序运行的时候就处于此模式。

FIQ

快速中断模式,进入 FIQ 中断异常

IRQ

一般中断模式。

Supervisor(SVC)

超级管理员模式,特权模式,供操作系统使用。

Monitor(MON)

这个模式用于安全扩展模式。

Abort(ABT)

数据访问终止模式,用于虚拟存储以及存储保护。

Hyp(HYP)

用于虚拟化扩展。

Undef(UND)

未定义指令终止模式

System(SYS)

系统模式,用于运行特权级的操作系统任务

 

图 3汇编中定义中断向量表

除了 User(USR)用户模式以外,其它 8 种运行模式都是特权模式。这几个运行模式可以通过软件进行任意切换,也可以通过中断或者异常来进行切换。大多数的程序都运行在用户模式,用户模式下是不能访问系统所有资源的,有些资源是受限的,要想访问这些受限的资源就必须进行模式切换。但是用户模式是不能直接进行切换的,用户模式下需要借助异常来完成模式切换,当要切换模式的时候,应用程序可以产生异常,在异常的处理过程中完成处理器模式切换。当中断或者异常发生以后,处理器就会进入到相应的异常模式种,每一种模式都有一组寄存器供异常处理程序使用,这样的目的是为了保证在进入异常模式以后,用户模式下的寄存器不会被破坏。

ARM 架构提供了 16 32 位的通用寄存器(R0~R15)供软件使用,前 15 (R0~R14)可以用作通用的数据存储,R15 是程序计数器 PC,用来保存将要执行的指令。ARM 还提供了一个当前程序状态寄存器 CPSR 和一个备份程序状态寄存器 SPSRSPSR 寄存器就是 CPSR 寄存器的备份。ARM 架构提供了 16 32 位的通用寄存器(R0~R15)供软件使用,前 15 (R0~R14)可以用作通用的数据存储,R15 是程序计数器 PC,用来保存将要执行的指令。ARM 还提供了一个当前程序状态寄存器 CPSR 和一个备份程序状态寄存器 SPSRSPSR 寄存器就是 CPSR 寄存器的备份。

 

每一种运行模式都有一组与之对应的寄存器组。每一种模式可见的寄存器包括 15 个通用寄存器(R0~R14)、一两个程序状态寄存器和一个程序计数器 PC。在这些寄存器中,有些是所有模式所共用的同一个物理寄存器,有一些是各模式自己所独立拥有的。(浅蓝色标注即为该模式独立拥有的)

五、总结

      最近在学习正点原子的Linux开发板,已经学习完了I.MX6ULL对应的裸机教程。在学习裸机教程的这段时间我对ARM-CortexA7内核、I.MX6ULL的基本外设有了基本了解。与学习STM32不同的是,I.MX6ULL裸机开发过程中几乎都是查阅参考手册,基本没有使用NXP的SDK包中的API函数,都是查询外设对应的寄存器、查看对应的寄存器的位,进而对寄存器进行操作实现外设的使能和其他配置。这么做目的是更好地了解I.MX6ULL的内部资源,裸机开发的学习不仅是我对32学习的巩固,也是我从32开发转向Linux驱动开发的一个过渡。在Linux下开发不像在Windows中有IAR、MDK等集成开发环境点点鼠标就能完成编译,大型的项目都是要使用Makefile,其中涉及到了Shell编程等内容。因为不像学习STM32调用ST现成的标准库函数,裸机开发的过程中学习得更加底层,我也感受到了C语言能力的提升,我对C语言的结构体指针、函数指针、结构体数组、栈等数据结构、对地址内存的操作有了更深的理解。分析I.MX6ULL启动方式(bin文件还需添加IVT、DCD);学习硬件资源SRAM、SDRAM、DDR、emmc、nand;中断嵌套和中断的具体实现过程等都是我在32的学习中没有涉及到的,这段时间的学习也算是对32学习的一个补充,花时间重点学习了32没有重视的部分。在这期间还尝试了ARM汇编、C语言的混合编程、Makefile的书写、基本Linux指令也得到了巩固,代码调试独立解决bug的能力也得到了锻炼,这些都为之后uboot、Linux内核的移植、根文件系统的构建打下基础。

参考:

1、ARM_architecture维基百科

2、List_of_ARM_microarchitectures维基百科

3、Cortex-A7 Technical ReferenceManua

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

门牙会稍息

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值