初识s3c2440A之ARM体系架构入门linux硬件


前言


如果大家在前期学习了c语言,并且具备了一定的c语言功底,且学习了shell,文件IO,进程线程,网络编程、数据库以及数据结构等基本的嵌入式软件的基础知识,以及做过一定项目的前提下,可以进入到本章内容的学习,那么接下来我将主要分享的是嵌入硬件部分的学习;各位同学可以跟着每期的分享一步步来,那么最终达到我们想要的高度并不是一件非常难的事情;

一、环境平台的基本介绍

硬件:友善之臂s3c2440A开发板
配套设置:jlink下载器、jtag下载器,网线;
注意:在前期裸机开发的过程中使用stlink下载方式,后期会有调整;

二、ARM体系架构必备知识

1. 计算机三大组成

计算机的三大组成:CPU、内存(RAM)和硬盘(ROM);
CPU通过地址总线与内存进行通信,内存掉电数据会丢失;
CPU与硬盘通过控制器进行连接,掉电数据不丢失;

2. ARM的分类

SOC(片上操作系统) = cpu + 功能电路(iic、spi、uart等);
这里注意ARM公司只负责芯片的设计,芯片的制造是由半导体厂商制造的;且S3C2440A是ARM9型号的产品;
那么arm的型号分类主要有以下几个:
ARM12更改命名为ARM-Cortex
ARM公司将ARM11以后的产品命名为Cortex,并分为A、R和M三个系列。Cortex系列属于ARMv7架构,是ARM公司最新的指令架构。

		ARM7:ARMv4 架构
		ARM9:ARMv5 架构
		ARM11:ARMv6 架构
		ARM-Cortex 系列:ARMv7架构

ARM7没有MMU(内存管理单元),只能叫做MCU(微控制器),不能运行诸如Linux、WinCE等这些现代的多用户多进程操作系统, 因为运行这些系统需要MMU,才能给每个用户进程分配进程自己独立的地址空间 。
ARM9、ARM11,是嵌入式CPU(处理器),带有MMU,可以运行Linux等多用户多进程的操作系统,应用场合也不同于ARM7。

2.1 ARM Cortex-A系列

性能级CPU,对主频和性能要求很高(A8 A9 A10 … A53 A76)。
该系列面向尖端的基于虚拟内存的操作系统和用户应用,也叫应用程序处理器。
应用包括:智能手机、数字电视、智能本和上网本、家用网关、电子书阅读器等。

2.2 ARM Cortex-R系列

对实时性要求很高,面向深层的嵌入式实时应用。
包括:汽车制动系统、动力传动解决方案、大容量存储控制器以及联网和打印。

2.3 ARM Cortex-M系列

MCU,单片机,针对微控制器,在该领域中需要进行快速且具有高确定性的中断管理、同时需将门数和可能功耗控制在最低。

3. 2440ARM的系统架构

ram:内存;
rom:是只读内存(硬盘),是非易失性固态半导体存储器,比如flash就是rom器件;
mpu:微处理器;
mcu:微控制器;
mmu(电路):完成虚拟地址到物理地址的转换;
sram:静态随机存取存储器(Static Random-Access Memory,SRAM)是随机存取存储器的一种。所谓的“静态”,是指这种存储器只要保持通电,里面储存的数据就可以恒常保持。当断电时,SRAM储存的数据还是会消失(被称为volatile memory),这与在断电后还能储存资料的ROM或闪存是不同的。
dram:DRAM(动态随机存取内存),最常用的一种电脑内存。它通常使用一个晶体管和一个电容器来代表一个比特。和ROM及PROM等固件内存不同,随机存取内存的两种主要类型(动态和静态)都会在切断电源之后,丢失所储存的数据。
sdram:同步动态随机存取内存(synchronous dynamic random-access memory,简称SDRAM)是有一个同步接口的动态随机存取内存(DRAM)。通常DRAM是有一个异步接口的,这样它可以随时响应控制输入的变化。而SDRAM有一个同步接口,在响应控制输入前会等待一个时钟信号,这样就能和计算机的系统总线同步。
norflash:NOR 的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响到它的性能。NAND的结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。应用NAND的困难在于Flash的管理需要特殊的系统接口。通常读取NOR的速度比NAND稍快一些,而NAND的写入速度比NOR快很多,在设计中应该考虑这些情况。
nandflash:Nand-flash存储器是flash存储器的一种,其内部采用非线性宏单元模式,为固态大容量内存的实现提供了廉价有效的解决方案。Nand-flash存储器具有容量较大,改写速度快等优点,适用于大量数据的存储;
mmc:MMC(MultiMediaCard)是一种协议或者规范,规范了卡的形状尺寸,通讯协议等内容,符合MMC协议的卡片叫做MMC卡,即多媒体卡,现在市面上基本见不到了。
emmc:eMMC(embedded MultiMediaCard)是一种嵌入式存储介质,或者说是一种存储器。主要用在手机、平板等设备上,早前因为不同厂家生产的NAND Flash接口不同,操作方式不同,为了解决这种不同MMC协会制定了eMMC标准,统一了NAND Flash接口。eMMC就是控制器+NAND Flash,对外接口都是eMMC,内部如何实现NAND Flash厂家自由发挥。标准的统一大大加快了手机类产品的研发速度。

2440A的主控芯片是三星的S3C2440A,属于ARM9系列,主频400MHz,有64M大小的sdram,具有2M大小的norflash以及256M的nandflash;
SDRAM也可以理解我们通常所说的内存,其与cpu通过数据总线和地址总线进行数据交互;
由于norflash适用于存储少量代码并且需要擦除多次的场景,且norflash也是通过地址总线直接与cpu进行数据交互,所以它的读写速度也非常快;
但是nandflash的存储密度比较高,读写速度快,所以nandflash与cpu进行数据交互需要特殊的系统接口,我们2440用的是flash控制器与之进行连接;大概的示意图如下:
在这里插入图片描述
cpu的内部组成:ALU(算术逻辑单元,做算术运算)、寄存器、指令集、cache、流水线;
寄存器:硬件操作接口;
s3c2440是32位处理器,指的是可以进行32位寻址访问,数据总线也是32位;
指令存储和执行的方式:
(1)ARM状态,32位机器码,每个指令战4个字节的空间;
(2)thumb状态:16位机器码,每个4个字节可以存储两条指令;
但是为了取指简便,所以这里使用4个字节存储一条指令,当然这里是可以将其手动设置为thumb状态的;

总结

本期的分享呢大家不容小觑,因为目前来看,除了一味的去追求某个具体知识点的运用,对产品的总体架构的认识也是至关重要的,这能够使得我们在学到具体技术点后,如果想要对产品进行评估选型时,那么是必不可少的;这也是我们在学习这个领域必备的一种整体性的学习原则,不能知识深扎与某一个知识或某一类技术而对它的整体不做过多了解;所以大家认真领会本期内容,从S3C2440这个开发板中,获取到对这一系列产品的一个认知;
最后,各位小伙伴们如果喜欢我的分享可以点赞收藏哦,你们的认可是我创作的动力,一起加油!

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Spark是一个开源的分布式计算框架,可以用于大规模数据处理。Spark的核心是Spark Core,它提供了分布式任务调度、内存计算和数据管理等功能。Spark支持多种编程语言,包括Java、Scala和Python等。Spark的离线计算能力非常强大,可以处理大规模的数据集,支持复杂的数据处理和分析任务。初学者可以通过学习Spark的基本概念和API,逐步掌握Spark的使用方法。 ### 回答2: Spark是一种开源的、面向大数据处理的计算引擎,可以在分布式集群上进行高效的离线计算和实时流处理。Spark的主要特点是速度快、易于使用、灵活性高,并且支持多种编程语言和多种数据源。 Spark的分布式计算是基于RDD(Resilient Distributed Dataset)的计算模型实现的。RDD是一种抽象的数据集合,像一个分布式的、可容错的内存数据结构,提供了数据的高度并行性和容错性。Spark的计算模型是基于RDD进行的,可以将数据集和计算操作分布式存储和处理,从而实现高性能的计算。 Spark的核心组件是Spark Core,它提供了RDD的编程接口和执行引擎。Spark Core是整个Spark体系中最基础的模块,包括了RDD的构建、转换和动作等一系列基本操作,同时也提供了类似于MapReduce的分布式计算框架。 在离线计算中,Spark Core可以支持各种类型的数据,包括结构化数据、半结构化数据和非结构化数据。离线计算是指对离线数据进行批量处理,通常是通过Spark Core提供的Transformations和Actions函数处理RDD,完成一些统计、聚合、筛选等操作,最终输出结果数据。 初识Spark是从安装Spark开始入手,需要准备好Java或Scala的开发环境,并下载安装Spark的相关包。安装完成后,可以通过Spark Shell或者Spark的代码进行操作,从而熟悉Spark的RDD编程模型和离线计算的常用函数,最终可以完成对数据的处理和分析。 总之,初识Spark需要从Spark的分布式计算模型开始入手,了解Spark的基础组件Spark Core和RDD,掌握离线计算的基本函数和操作方法,从而熟悉Spark的使用和应用。 ### 回答3: Spark是由加州大学伯克利分校AMPLab所开发的一个分布式计算框架。Spark被设计成一种通用的、高性能的计算引擎,能够用于大规模数据处理,包括离线处理和实时流处理。Spark具有高容错性和支持多个数据源。Spark中的一些主要组件包括Spark SQL、Spark Streaming、MLlib、GraphX等。 Spark在离线计算中的主要作用是加速批处理任务的处理速度。Spark中的主要组件包括Spark Core和Spark SQL。其中,Spark Core是Spark的基础组件,是一个任务调度和分发引擎,提供了任务调度、内存管理、错误恢复等功能。Spark SQL是Spark提供的一个基于SQL的查询接口,可以与Spark Core进行集成,方便数据分析师使用。 初识Spark,需要掌握Spark的编程语言和运行环境。Spark支持多种编程语言,包括Scala、Java、Python和R。对于初学者来说,建议使用Scala作为开发语言,因为Spark是Scala语言编写的,同时Scala对Spark的支持也最全面。此外,还需要掌握Spark的运行环境,包括Spark集群的搭建、数据导入和输出、任务调度等内容。 在Spark的学习过程中,需要掌握的关键技术包括数据类型、RDD编程模型、操作和算子、持久化和容错、调度器和任务划分等。需要注意的是,Spark的编程模型和Hadoop相似,但是Spark提供了更高级别的API和更便捷的操作方式,能够提高任务处理的效率。 总之,初识Spark需要从它的基础组件和编程语言入手,从实际案例中发现它在离线计算的应用场景中的优点,同时也需要掌握Spark在处理大规模数据时的关键技术,从而能够深入理解Spark的运行机制,提高离线数据分析处理的效率。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值