精华内容
下载资源
问答
  • 除去芯片内部RAM和FLASH,我们还会外扩一些外部存储器,处于成本和项目规划角度,我们清晰知道每个存储器作用是什么,在特定场景下是否能够省掉来节约成本等,包括之后我们规划软件架构时候,用什么文件系统...

    在我们的嵌入式式设备中,包括芯片内部,存储器是必不可少的。我们都知道手机中有运存和内存也就是常说的4GB+16GB等,我们的嵌入式设备同样有。除去芯片内部的RAM和FLASH,我们还会外扩一些外部存储器,处于成本和项目规划角度,我们清晰的知道每个存储器的作用是什么,在特定场景下是否能够省掉来节约成本等,包括之后我们规划软件架构的时候,用什么文件系统等都要求我们了解嵌入式存储器。

     

    如上图所示,我们要明确每个器件存在的必要性,比如我们的设备需求简单,直接一个单片机就搞定了,简单的参数,直接存到MCU的内部存储器中就可以了,省去了外部存储器,节省成本。当我们要接屏刷图片,包括一堆逻辑就要考虑添加一些外部存储器件。我们一定要分清RAM和ROM,知道你的程序到底是哪部分不足。

     

     

    展开全文
  • (1)Environment 是一个提供访问环境变量的类,常用的方法:  A,getDataDirectory() ,返回File ,获取Android 数据目录。  B,getDownloadCacheDirectory(),返回File ,获取Android 下载/缓存内容目

           获取android文件系统的信息,需要Environment类和StatFs类的支持。

    (1)Environment 是一个提供访问环境变量的类,常用的方法有:

           A,getRootDirectory() ,返回File,获取Android 的根目录。

           B,getDataDirectory() ,返回File ,获取Android 数据目录。

           C,getExternalStorageDirectory() ,返回File ,获取外部存储目录即SDCard。
           D,getExternalStorageState() ,返回String,获取外部存储设备的当前状态字串。

           E,getDownloadCacheDirectory(),返回File ,获取Android 下载/缓存内容目录。

    常用的字串变量,以getExternalStorageState返回值为例:

           A,MEDIA_BAD_REMOVAL,表明SDCard 被卸载前己被移除。
           B,MEDIA_CHECKING,表明对象正在磁盘检查。
           C,MEDIA_MOUNTED,表明对象存在并具有读/写权限。

           D,MEDIA_MOUNTED_READ_ONLY,表明对象权限为只读。

           E,MEDIA_NOFS,表明对象为空白或正在使用不受支持的文件系统。

           F,MEDIA_REMOVED,不存在SDCard。

           G,MEDIA_SHARED,表明存储媒体正在通过USB共享。
           H,MEDIA_UNMOUNTABLE,表明存储媒体无法挂载。

           I, MEDIA_UNMOUNTED,表明存储媒体没有挂载。

    (2)StatFs类,一个模拟linux的df命令的类,成员函数是获得底层Linux文件系统的属性函数。StatFs 常用方法:

           A,getAvailableBlocks(),返回Int,获取当前系统可用存储空间的Block数。

           B,getBlockCount(),返回Int,获取当前系统存储空间总的Block数。

           C,getBlockSize(),返回Int ,获取当前系统Block占的大小,以字节为单位

           D,getFreeBlocks(),返回Int ,该块区域剩余的空间(包括可用空间和保留空间)。
    (3)一个获取系统和SD卡可用容量及总总量的实例,如下:

    import android.os.Environment;
    import android.os.StatFs;
    import java.io.File;
    public long getAvailableInternalMemorySize(){
          	File path = Environment.getDataDirectory();  
        	StatFs stat = new StatFs(path.getPath());
        	long blockSize = stat.getBlockSize();
        	long availableBlocks = stat.getAvailableBlocks();
        	return availableBlocks*blockSize;
    }
        
    public long getTotalInternalMemorySize(){
        	File path = Environment.getDataDirectory();
        	StatFs stat = new StatFs(path.getPath());
        	long blockSize = stat.getBlockSize();
        	long totalBlocks = stat.getBlockCount();
        	return totalBlocks*blockSize;
    }
        
    public boolean externalMemoryAvailable(){
        	return Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);
    }
        
    public long getAvailableExternalMemorySize(){
        	if(externalMemoryAvailable()){
        		File path = Environment.getExternalStorageDirectory();
        		StatFs stat = new StatFs(path.getPath());
        		long blockSize = stat.getBlockSize();
        		long availableBlocks = stat.getAvailableBlocks();
        		return availableBlocks*blockSize;
        	}
        	else{
        		return -1;
        	}
    }
        
    public long getTotalExternalMemorySize(){
        	if(externalMemoryAvailable()){
        		File path = Environment.getExternalStorageDirectory();
        		StatFs stat = new StatFs(path.getPath());
        		long blockSize = stat.getBlockSize();
        		long totalBlocks = stat.getBlockCount();
        		return totalBlocks*blockSize;
        	}
        	else{
        		return -1;
        	}
    }

           从LOG输出数据即可,以M为单位。

            Log.i("zhangcheng","内部可用存储空间是:"+Long.toString(getAvailableInternalMemorySize()/(1024*1024)));
            Log.i("zhangcheng","内部总共存储空间是:"+Long.toString(getTotalInternalMemorySize()/(1024*1024)));
            
            Log.i("zhangcheng","外部可用存储空间是:"+Long.toString(getAvailableExternalMemorySize()/(1024*1024)));
            Log.i("zhangcheng","外部总共存储空间是:"+Long.toString(getTotalExternalMemorySize()/(1024*1024)));  

    (4)需要注意的是,访问存储器文件系统,需要在XML中添加权限,如下:

        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
        <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
        <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

    (5)第三方写文件到内部SD存储器/sdcard,是没有问题的。但是从4.4开始写文件到外部存储器比如SD卡和优盘由于权限问题是禁止的。如下组权限是media_rw



    修改方法,/system/etc/permissions/platform.xml中找到<permission name="android.permission.WRITE_EXTERNAL_STORAGE" >,添加

    <group gid="media_rw" />后,push该文件到系统即可。写函数如下

    private void writeFileToSD() {
        	String sdStatus = Environment.getExternalStorageState();
        	if(!sdStatus.equals(Environment.MEDIA_MOUNTED)) {
        		Log.d("TestFile", "SD card is not avaiable/writeable right now.");
        		return;
        	}
        	try {
        		//String pathName="/sdcard/test/";	//内部SD卡
        		//String pathName="/mnt/external_sd0/test/";	//外部SD卡
        		String pathName="/mnt/usb_storage/test/";			//优盘
        		String fileName="file.txt";
        		File path = new File(pathName);
        		File file = new File(pathName + fileName);
        		if( !path.exists()) {
        			Log.d("TestFile", "Create the path:" + pathName);
        			path.mkdir();
        		}
        		if( !file.exists()) {
        			Log.d("TestFile", "Create the file:" + fileName);
        			file.createNewFile();
        		}
        		FileOutputStream stream = new FileOutputStream(file);
        		String s = "this is a test string writing to file.";
        		byte[] buf = s.getBytes();
        		stream.write(buf);    		
        		stream.close();
        		
        	} catch(Exception e) {
        		Log.e("TestFile", "Error on writeFilToSD.");
        		e.printStackTrace();
        	}
        }
    ==========================================================================================================

           有些应用能安装到SD卡上,有些不能,这其中有一定规则。如何判断?

           Google 默认 PackageManager 管理安装包的机制如下:在 AdroidManifest.xml 里面定义安装位置可以有四种情况:
    1. 如果没有定义安装位置,表示安装在手机内存上;
    2. android:installLocation = "auto",表示先查看手机内存是否足够,如果够就安装在手机内存上,不够就安装在 T 卡上;
    3. android:installLocation = "internalOnly",表示安装在手机内存上;
    4. android:installLocation = "preferExternal" ,表示安装在 T 卡上;

            如果 apk 的 AndroidManifest.xml 里面定义 android:installLocation = "internalOnly",那么无论用户选择安装在什么地方,该apk 都会安装到手机上,这样做的好处是避免程序运行错误,因为定义android:installLocation = "internalOnly" 的 apk 一般要安装到手机内存上才能正常运行。

    ==========================================================================================================

           Android应用安装有如下四种方式:1.系统应用安装---开机时完成,没有安装界面。2.网络下载应用安装---通过market应用完成,没有安装界面(playstore下载路径在/data/data/com.android.providers.downloads/cache/)。3.ADB工具安装---没有安装界面。4.第三方应用安装---通过SD卡里的APK文件安装,有安装界面,由packageinstaller.apk应用处理安装及卸载过程的界面。

    应用安装涉及到如下几个目录:        
    system/app ---------------系统自带的应用程序,获得adb root权限才能删除。更核心的是system/priv-app
    data/app  ---------------用户程序安装的目录。安装时把apk文件复制到此目录
    data/data ---------------存放应用程序的数据
    data/dalvik-cache--------将apk中的dex文件安装到dalvik-cache目录下(dex文件是dalvik虚拟机的可执行文件,其大小约为原始apk文件大小的四分之一)
    安装过程:复制APK安装包到data/app目录下,解压并扫描安装包,把dex文件(Dalvik字节码)保存到dalvik-cache目录,并data/data目录下创建对应的应用数据目录。
    卸载过程:删除安装过程中在上述三个目录下创建的文件及目录。详细请参见:http://blog.csdn.net/dadoneo/article/details/8047931



    参考原文:http://niufc.iteye.com/blog/1562079

    参考原文:http://hubingforever.blog.163.com/blog/static/17104057920126284847546/
    展开全文
  • 对于较小系统,微控制器自带存储器就可能满足系统要求,而较大系统可能要求增加外部存储器。为嵌入式系统选择存储器类型时,需要考虑一些设计参数,包括微控制器选择、电压范围、电池寿命、读写速度、...
  • 对于较小系统,微控制器自带存储器就可能满足系统要求,而较大系统可能要求增加外部存储器。为嵌入式系统选择存储器类型时,需要考虑一些设计参数,包括微控制器选择、电压范围、电池寿命、读写速度、...
  • 对于较小系统,微控制器自带存储器就可能满足系统要求,而较大系统可能要求增加外部存储器。为嵌入式系统选择存储器类型时,需要考虑一些设计参数,包括微控制器选择、电压范围、电池寿命、读写速度、...
  • 物理存储器:是指实际存在的...磁盘: 计算机的外部存储器中也采用了类似磁带的装置,比较常用的一种叫磁盘,将圆形的磁性盘片装在一个方的密封盒子里,这样做的目的是为了防止磁盘表面划伤,导致数据丢失。如目前的...

    物理存储器:是指实际存在的具体的存储器芯片。如主板上装插的内存条和装载有系统BIOS的ROM芯片,显示卡上的显示RAM芯片和装载显示BIOS的ROM芯片,以及各种适配卡上的RAM芯片和ROM芯片等都是物理存储器。

    磁盘:  计算机的外部存储器中也采用了类似磁带装置,比较常用的一种叫磁盘,将圆形的磁性盘片装在一个方的密封盒子里,这样做的目的是为了防止磁盘表面划伤,导致数据丢失。如目前的磁盘设备:磁盘设备应包括磁盘驱动器、适配器及盘片,它们既可以作为输入设备,也可作为输出设备或称载体。控制软盘读和写,即输入或输出是由磁盘驱动器及其适配器来完成的,从功能上来说,一台磁盘设备与一台录放机的作用是相同的,一盘录音带可反复地录音,那么软盘片或硬盘片,或称信息载体,也可以反复地被改写。

    转载于:https://www.cnblogs.com/Mr-Shadow/archive/2013/02/03/2891134.html

    展开全文
  • 计算机存储器分类

    2020-01-14 16:36:00
    存储器概述 计算机存储器分为两大类:内存存储器和外部存储器(简称内存或内存条和外存)。 内存容量小,存取速度快,只能临时保存...常用的硬盘 SSD(固态硬盘),HDD(机械硬盘)等,现在常用SSD。 内存分类...

    存储器概述 

    1. 计算机存储器分为两大类:内存存储器和外部存储器(简称内存或内存条和外存)。
    2. 内存容量小,存取速度快,只能临时保存信息(经cup处理后的数据),断电后信息就会消失。
    3. 外存容量大,存取速度比内存慢,能永久保存信息,断电后信息不会消失。
    4. 外存主要是磁盘。
    5. 磁盘包括硬盘,软盘,光盘,都属于外存。常用的硬盘有 SSD(固态硬盘),HDD(机械硬盘)等,现在常用SSD。

     

    内存分类 :

    一、ROM也有很多种:PROM(可编程的ROM)、EPROM(可擦除可编程ROM)、EEPROM
    1、PROM是一次性的,早期的产品,现在已经不可能使用了;

    2、EPROM是通过紫外光的照射擦出原先的程序,是一种通用的存储器;

    3、EEPROM是通过电子擦出,价格很高,写入时间很长,写入很慢; 

     举个例子,手机软件一般放在EEPROM中,我们打电话,有些最后拨打的号码,暂时是存在SRAM中的,不是马上写入通讯记录(通话记录保存在EEPROM中),因为当时有很重要工作(通话)要做,如果写入,漫长的等待是让用户忍无可忍的。

    二、RAM有两大类:静态RAM(StaticRAM/SRAM)和动态RAM(Dynamic RAM/DRAM)
    1、SRAM

    不需要刷新电路,掉电丢失数据,而且一般不是行列地址复用的。
    集成度比较低,不适合做容量大的内存,一般是用在处理器的缓存里面。像S3C2440的ARM9处理器里面就有4K的SRAM用来做CPU启动时用的;
    SRAM内部采用的是双稳态电路的形式来存储数据;
    制造相同容量的SRAM比DRAM的成本高的多;
    因此目前SRAM基本上只用于CPU内部的一级缓存以及内置的二级缓存。仅有少量的网络服务器以及路由器上能够使用SRAM。
    2、DRAM

    掉电丢失数据。每隔一段时间就要刷新一次数据,才能保存数据。而且是行列地址复用的,许多都有页模式。

    DRAM利用MOS管的栅电容上的电荷来存储信息,一旦掉电信息会全部的丢失,由于栅极会漏电,所以每隔一定的时间就需要一个刷新机构给这些栅电容补充电荷,并且每读出一次数据之后也需要补充电荷,这个就叫动态刷新,所以称其为动态随机存储器。由于它只使用一个MOS管来存信息,所以集成度可以很高,容量能够做的很大。

    SDRAM比它多了一个与CPU时钟同步。
    DRAM保留数据的时间很短,速度也比SRAM慢,不过它还是比任何的ROM都要快;
    从价格上来说DRAM相比SRAM要便宜很多,计算机内存就是DRAM的;
    DRAM分为很多种,常见的主要有FPRAM/FastPage、EDORAM、SDRAM、DDR RAM、RDRAM、SGRAM以及WRAM等,这里介绍其中的一种DDR RAM。
    一个DRAM的存储单元存储的是0还是1取决于电容是否有电荷,有电荷代表1,无电荷代表0。但时间一长,代表1的电容会放电,代表0的电容会吸收电荷,这就是数据丢失的原因;刷新操作定期对电容进行检查,若电量大于满电量的1/2,则认为其代表1,并把电容充满电;若电量小于1/2,则认为其代表0,并把电容放电,藉此来保持数据的连续性。
    2.1、DDR RAM(Data-Rate RAM)也称作DDR SDRAM

    这种改进型的RAM和SDRAM是基本一样的,不同之处在于它可以在一个时钟读写两次数据,这样就使得数据传输速度加倍了。这是目前电脑中用得最多的内存。在很多高端的显卡上,也配备了高速DDR RAM来提高带宽,这可以大幅度提高3D加速卡的像素渲染能力。
    2.2、SDRAM(Synchronous DRAM,同步动态随机存储器)

    即数据的读写需要时钟来同步。
    其存储单元不是按线性排列的,是分页的。
    DRAM和SDRAM由于实现工艺问题,容量较SRAM大。但是读写速度不如SRAM。
    一般的嵌入式产品里面的内存都是用的SDRAM。

     

     

    外存分类:

    U盘:

    闪存它结合了ROM和RAM的长处,不仅具备电子可擦除可编程(EEPROM)的性能,还不会断电丢失数据同时可以快速读取数据(NVRAM的优势),U盘和MP3里用的就是这种存储器。采用的是FLASH高速存储芯片,虽然USB2.0理论上的传输速度可以达到480M每秒,USB3.0更是达到了G每秒的速度。


    硬盘:
    PATA接口现能支持的最高速率是PATA-7,即133MB/s
    SATA接口现能支持的最高速率是SATA III,即6Gbit/s,也就是750MB/S左右
    SCSI接口现能支持的最高速率是Ultra 640 SCSI,即640MB/S左右
    SAS接口现能支持的最高速率是SAS II,即6Gbit/s,也就是750MB/S左右

    光盘:
    理论上来说是一倍速150KB/s,10倍速也就是1.5M/s左右

    软盘:容量下转速慢(300左右)这是众所皆知的,
    至于磁带速度应该是最慢的吧

    所以目前的排序应该是
    U盘>硬盘>光盘>软盘>磁带

     


     

    展开全文
  • ARM常用概念哪些?

    2019-09-24 16:37:14
    ARM中一些常见英文缩写解释 MSB:最高有效位; LSB:最低有效位;...EMC:外部存储器控制器; MAM:存储器加速模块; VIC:向量中断控制器; SPI:全双工串行接口; CAN:控制器局域网,一种串行通讯协议;...
  • 外部排序

    2015-10-02 02:58:55
    /* 外部排序指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存,需要在内存和外部存储器之间进行多次数据交换,以达到排序整个文件的目的。外部排序最常用的算法是多路归并排序,...
  • 单片机种类繁多,但是一般常用的有以下几种:  AVR单片机:是增强型RISC内载Flash的单片机,芯片上的Flash存储器附在用户的产品中,可随时编程,再编程,使用户的产品设计容易,更新换代方便。AVR单片机采用增强的...
  • 单片机种类繁多,但是一般常用的有以下几种:  AVR单片机:是增强型RISC内载Flash的单片机,芯片上的Flash存储器附在用户的产品中,可随时编程,再编程,使用户的产品设计容易,更新换代方便。AVR单片机采用增强的...
  • 常用的排序算法

    2021-01-24 10:58:50
    内部排序:指将需要处理所有数据都加载到内部存储器中进行排序 外部排序法:数据量过大,无法全部加载到内存中,需要借助外部进行排序 常见排序算法分类(见左图) 算法时间复杂度 度量一个程序(算法)执行时间两...
  • 7.2 外部设备

    2019-09-10 19:29:09
    最基本的外部设备主要键盘,鼠标,显示器,打印机,磁盘存储器和光盘存储器等。 输入设备 键盘是最常用的输入设备,通过它可以发出命令或输入数据。 键盘的输入的三个步骤1.查出按下的是哪个键;2.将该键翻译成...
  • 单片机种类繁多,但是一般常用的有以下几种:  ATMEL公司的AVR单片机,是增强型RISC内载Flash的单片机,芯片上的Flash存储器附在用户的产品中,可随时编程,再编程,使用户的产品设计容易,更新换代方便.AVR单片机采用...
  • 一、简介说到 I/O,想必大家都不会陌生, I/O 英语全称:Input/Output,即输入/输出,通常指数据在内部存储器和外部存储器或其他周边设备之间的输入和输出。比如我们常用的 S...
  • CPU与外部设备、存储器的连接和数据交换都需要通过接口设备来实现,前者被称为I/O接口,而后者则被称为存储器接口。存储器通常在CPU同步控制下工作,接口电路比较简单;而I/O设备品种繁多,其相应接口电路也各不...
  • 本文所用到数据存储器是Xicor公司生产块锁保护4 Kb CMOS串行E2PROM X5043(接口符合SPI协议)。该器件利用Xicor专有直接写入晶片,提供最小为10万次擦写和最少100年数据保存期。数据写入之前不需要外部...
  • 几种常用单片机介绍

    2021-01-19 19:05:44
    单片机种类繁多,但是一般常用的有以下几种:  ATMEL公司的AVR单片机,是增强型RISC内载Flash的单片机,芯片上的Flash存储器附在用户的产品中,可随时编程,再编程,使用户的产品设计容易,更新换代方便.AVR单片机采用...
  • 外部排序指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存,需要在内存和外部存储器之间进行多次数据交换,以达到排序 整个文件的目的。外部排序最常用的算法是多路归并排序,...
  • PLC软件系统中常用的编程语言整理 一、外部输入设备的选用与PLC输入继电器的使用 外部输入信号的采集 PLC的外部设备主要是指控制系统中的输入输出设备,其中输人设备...在PLC内部存储器专用于输入状态存储的输...
  • 一、为什么需要uboot 1、计算机系统主要部件 (1)计算机系统就是以CPU为核心来运行系统。 典型计算机系统: PC机(台式机+笔记本) 嵌入式设备(手机、平板电脑、游戏... CPU+外部存储器(Flash/硬盘...
  • FMC—扩展外部SDRAM

    2018-10-12 14:39:21
    本章参考资料:《STM32F4xx 中文参考手册2》、...常用存储器介绍"章节,实验中SDRAM芯片具体参数,请参考其规格书《IS42-45S16400J》来了解。 26.1 SDRAM控制原理 STM32控制器芯片内部一定大小SRAM及F...
  • FMC—扩展外部 SDRAM

    2017-07-16 20:42:00
    关于 SDRAM 存储器,请参考前面常用存储器介绍”章节,实验中 SDRAM 芯片具体参数,请参考其规格书《 IS42-45S16400J》 来了解。 SDRAM 控制原理STM32 控制器芯片内部一定大小 SR...
  • 关于SDRAM存储器,请参考前面常用存储器介绍”章节,实验中SDRAM芯片具体参数,请参考其规格书《W9825G6KH》来了解。 26.1 SDRAM控制原理 STM32控制器芯片内部一定大小SRAM及FLASH作为内...
  • STM32学习之:FMC-扩展外部SDRAM

    万次阅读 2018-03-08 10:46:16
    关于 SDRAM 存储器,请参考前面常用存储器介绍”,实验中 SDRAM 芯片具体参数,请参考其规格书《IS42-45S16400J》来了解。1、 SDRAM 控制原理 STM32 控制器芯片内部一定大小 SRAM 及 FL...
  • CPU与外部设备、存储器的连接和数据交换都需要通过接口设备来实现,前者被称为I/O接口,而后者则被称为存储器接口。存储器通常在CPU同步控制下工作,接口电路比较简单;而I/O设备品种繁多,其相应接口电路也各不...
  • CPU与外部设备、存储器的连接和数据交换都需要通过接口设备来实现,前者被称为I/O接口,而后者则被称为存储器接口。存储器通常在CPU同步控制下工作,接口电路比较简单;而I/O设备品种繁多,其相应接口电路也各不...

空空如也

空空如也

1 2 3 4 5 6
收藏数 115
精华内容 46
关键字:

常用的外部存储器有