自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(85)
  • 收藏
  • 关注

原创 Ubuntu环境配置之vi 配置

Ubuntu环境配置之vi 配置[日期:2014-02-10] 来源:Linux社区 作者:zhonghe1114 [字体:大 中 小]Android的源码开发,几乎离不开Linux,Linux系统当然首推Ubuntu了,linux自带的编辑工具VI,相信用过的人都知道它的强大之处了,但是,系统自带的vi,功能比较有限,用起来当然不怎么方便,所以我们需要对它进行优化配置。1、安装增强版vi:sudo apt-get install vim2、做一个软链接:sudo ln -sf /usr/bin/

2022-03-26 20:51:22 1710

原创 uboot 配制编译初体验

一、源码解压和打包1、注意:a、解压必须在linux源生目录下,因为uboot源码中用到符号链接而windows下是没有符号链接的。b、权限问题,要么在root用户下操作,要不操作前加sudo。c、一定要在解压后的源码根目录下配制和编译。解压:tar -jxvf u-boot-2013.01.tar.bz2清除:make distclean 清除中间文件和配制(uboot不是一个通用的系统,是定制化的,配制去适应特定的板子)配制:make x210_sd_config 配制出现:Confi

2021-11-15 12:35:36 862

原创 2.4.9:uboot的链接脚本(u-boot.lds)

(1)uboot的链接脚本和我们之前裸机中的链接脚本并没有本质区别,只是复杂度高一些,文件多一些,使用到的技巧多一些。(2)ENTRY(_start)用来指定整个程序的入口地址。所谓入口地址就是整个程序的开头地址,可以认为就是整个程序的第一句指令。有点像C语言中的main。(3)之前在裸机中告诉大家,指定程序的链接地址有2种方法:一种是在Makefile中ld的flags(链接属性)用-Ttext 0x20000000来指定;第二种:是在链接脚本的SECTIONS开头用 . = 0x20000000

2021-09-08 19:00:29 302

原创 uboot配置过程详解2

1、mkconfig(123-129行)创建include/config.mk文件。这个config.mk在主Makefile的133行被提取。(1)创建include/config.mk文件是为了让Makefile第133行去包含。(2)思考:uboot的配置和编译过程的配合。编译的时候需要ARCH=arm、CPU=XX等这些变量来指导编译(因为你编译时必须知道目标CPU的架构是什么,目标CPU是那款CPU等等这些才可以指导编译,编译的过程需要这些东西,那么配置就是为编译提供这些东西的),配置的时

2021-09-08 13:49:27 281

原创 Uboot配置过程详解1

1、mkconfig脚本的6个参数(主Makefile2589行设置)X210_sd_config : unconfig@$(MKCONFIG) $(@: config=)arm s5pc11x x210 samsung s5pc110@echo “TEXT_BASE = 0xc3e00000” > (obj)board/Samsung/x210/config.mkX210_sd_config里的_config部分用空替换,得到:x210_sd,这就是第一个参数。六个参数为:$1 : x2

2021-09-08 11:47:21 348

原创 uboot主Makefile分析6

以上几节是在分析主Makefile第185行(include$(TOPDIR)/config.mk)包含进来的config.mk文件。OBJS对应目录下的硬件的start.o (LIBS、 LIBBOARD这两个是库文件)(1)第291行出现了整个主Makefile中第一个目标all(也就是默认目录,我们在uboot根目录下make其实就是等于 make all,就等于make这个目标)(2)目标中有一些比较重要的。譬如:u-boot是最终编译链接生成的elf格式的可执行文件,(可以在命令行中输入f

2021-09-07 23:45:19 74

原创 uboot主Makefile分析5

1、链接脚本(config.mk142-149行)(1)如果定义了CONFIG-NAND-U-BOOT宏,则链接脚本叫u-boot-nand.lds,如果未定义这个宏则链接脚本叫u-boot.lds。(2)从字面意思分析,即可知CONFIG-NAND-U-BOOT是在Nand版本情况下才使用的,我们使用的X210都是iNand版本的,因此这个宏没有的。(3)实际在board\samsung\x210目录下有这个u-boot.lds这个就是链接脚本。我们在分析uboot的编译连接过程时就要考虑这个链

2021-09-07 23:16:31 90

原创 Uboot主Makefile分析4

1、我们这节研究的是#include config.mk包含进来的文件。2、$(TOPDIR)/config.mk(主Makefile的185行)注意这和前面讲过的config.mk(配制时生成的)不在同一个目录下(这个在主目录下)所以不是同一个文件。3、编译工具链的定义(config.mk94-107行)4、包含开发板配制项目(config.mk 112行)5、(1)autoconfig.mk文件不是源码提供的,是配置过程自动生成的。(2)这个文件的作用就是用来指导整个uboot的编译过程。这个

2021-09-07 16:11:48 80

原创 uboot主Makefile分析3

1、BOJTREE、SRCTREE、TOPDIR、MKCONFIG(1)OBJTREE:编译出的.o文件存放的目录的根目录。在默认编译下,OBJTREE等于当前目录;在O=XX编译下,OBJTREE就等于我们设置的那个输出目录。(2)SRCTREE:源码目录,其实就是源代码的根目录,也就是当前目录。总结:在默认编译下,OBJTREE和SRCTREE相等;在O=XX这种编译下OBJTREE和SRCTREE不相等。Makefile中定义这两个变量其实就是为了记录编译后的.o文件往那里放,就是为了实现o

2021-09-07 14:14:06 168

原创 uboot主Makefile分析2

1、静默编译(50-54行)(1)平时默认编译时命令行会打印出来很多编译信息。但是有时候我们不希望看到这些编译信息,就后台编译即可,这就叫静默编译。实现静默编译的代码:ifeq (,(findstrings,(findstring s,(findstrings,(MAKEFLAGS)))XECHO = echo 当这个参数MAKEFILAGS中没找到S字串,则返回空,而第一个参数是空,所以反回空和第一个参数(空)比较相等,条件判断为成立。elseXECHO = :当这个参数MAKEFILAGS中

2021-09-07 12:48:20 83

原创 uboot主Makefile分析1

我们第4节主题是uboot配制和编译过程详解,这部分我们要研究之前讲的uboot体验时我们的配制是在干什么,编译是怎么编译的?像uboot这么庞大的项目里面有很多.c .h文件这么多文件全都由makefile来管理的,makefile对它管理和和编译之前还要对他进行一个配制,那么配制是在干什么?因为里面有很多个文件(一千多个),但是真正其实与编译相关的文件可能只有500个,另外的和我们是无关的,那么你怎么知道那个和你相关,那些和你不相关,就是通过配制指定相关文件的路径包含进来实现相关文件操作。另外还有

2021-09-06 18:30:26 158

原创 六、Source Insight的基本使用

1、为什么要使用source Insight(1)对于一个真正的项目,往往有几百甚至上万个C文件、h文件,代码量非常大,代码之间关联非常复杂,就带来一个问题,代码的分析、阅读越来越难。譬如这里引用了一个函数但是这个函数可能在另一个目录下的一个文件夹中存放,这样情况下代码查找和阅读很困难,我们希望有一个好工具能够帮助。于是乎有了Source Insight。安装:2、安装3.5版本:学习资料里提供了安装包。和安装普通软件一样都默认安装就行,激活码在我们安装包文件夹下的Sn.txt文件内。安装包文件

2021-08-12 16:01:03 665

原创 uboot的源码目录分析2(文件夹)

(1)api硬件无关的功能函数API,uboot移值时不暂时不用管,这些函数是uboot本身使用的。(2)api_examples API相关的测试事例代码(3)board 就是板的意思,开发板。board文件夹下每个文件都代表一个开发板,这个文件夹下面放的文件就是用来描述这一个开发板的信息的。board目录下有多少个文件夹,就表示当前这个uboot已经被移值到多少个开发板上了(当前的uboot支持多少个开发板)。(比喻万能钥匙:并不是一把钥匙可以开几百把锁。而是开锁人有几百把钥匙去适配1把锁;u

2021-08-12 13:59:36 275

原创 三、uboot的源码目录分析(文件)

1、九鼎官方uboot和三星原版uboot对比(1)以九鼎官方的uboot为蓝本来学习的,以三星官方的这份为对照。(2)不同版本的uboot或者同一版本不同人移值的uboot,可能目录结构和文件内容都有所不同。将来大家懂了后也可以自己根据需要去添加/删除/更改目录结构。(3)三星和九鼎的uboot都在B盘的BSP文件夹或者课件文件夹中:名字为(三星android_uboot_smdkv210 九鼎uboot_jiuding.tar)(4)九鼎在以三星的uboot为原材料进行移值时,把三星版本的u

2021-08-12 00:35:08 369

原创 零距离uboot初体验

一、X210官方uboot配置编译实践1、找到官方移值好的uboot(BSP概念)(1)源头的源代码是uboot官网下载的。这个下载的源代码可能没有你当前使用的开发板的移值,甚至找不到当前开发板使用的SOC对应的移值版本。(这种方法不可靠)(2)SOC厂商在推出一款SOC后,厂商的工程师会去uboot官网下载一个uboot,根据自己的SOC进行第一步的移值,移值的目标是厂商推出开发板。(譬如三星的S5PV210芯片厂商出的开发板叫SMDKV210)所以三星的工程师移值的uboot是根据他们自己的S

2021-08-11 23:31:31 96

原创 Makefile基础

1、Makefile的作用和意义(1)工程项目中C文件太多管理不方便,因此用Makefile来做项目管理,方便编译链接过程。(2)uboot和linux kernel本质上都是C语言的项目,都由很多个文件组成,因此都需要通过Makefile来管理。所以要分析uboot必须对Makefile有所了解。2、目标、依赖、命令(1)目标就是我们要去make xxx 的那个XXX,就是我们最终要生成的东西。(2)依赖是用来生成目标的原材料(3)命令就是加工方法,所以make XXX 的过程其实就是使用命

2021-08-11 20:36:42 127

原创 sell 基 础

(1)shell可以理解为软件系统提供给用户操作的命令行界面,可以说它是人机交互的一种方式。(2)我们可以使用shell和操作系统、ubunt等软件系统进行交互。具体来说就是我们通过shell给软件系统输入命令然后回车执行,执行完成后又会回到shell命令行可以再次输入命令执行。(3)上述操作方式一般情况下工作很好,但有缺陷。譬如我们要在linux下创建一个文件a.c,可以touch a.c。但是如果我们要在linux下创建100个文件,分别为a1.c a2.c …a100.c如果这时候还是手工命令

2021-08-11 07:52:14 610

原创 十二、uboot中对Flash和DDR的管理

1、uboot阶段Flash的分区(1)所谓分区,就是说Flash进行分块管理(就像土地、做个地梁用来分块种不同粮食)。uboot中Flash分区为:uboot、var(环境变量)、 kernel(内核)、 rootfs(根文件系统)。 剩余是没有特殊规定的自由空间。详见下文尾图示(2)PC机等产品中,因为大家都是在操作系统下使用硬盘的,整个硬盘由操作系统统一管理,操作系统会使用文件系统帮助我们管理硬盘空间。(管理保证了文件之间不会互相堆叠),于是使用者不用自己太过在意分区问题。(3)在uboo

2021-08-10 16:12:25 688

原创 十一、uboot的常用环境变量2

1、自动运行命令设置:bootcmd(1)uboot启动后会开机自动倒数bootdelay秒,如果没有人按下回车打断启动,则uboot会自动执行启动命令来启动内核。(2)uboot开机自动启动时实际就是在内部执行了bootcmd这个环境变量的值所对应的命令集。(3)bootcmd=movi read kernel 30008000; boottm 30008000 其实bootcmd是用“;”隔开的两句指令组成的。第一句指令movi将iNand中kernel分区读到内存地址为30008000处,第二

2021-08-10 14:01:26 210

原创 十、uboot的常用环境变量1

1、环境变量理解:(1)环境变量就相当于系统的全局变量。但和全局变量不一样的是可以把它保存起来,下次开机还能维持保存的值。全局变量是每次程序运行都是重新清零的。2、环境变量如何参与程序运行(1)先要搞清楚:环境变量有2份,一份在Flash中,另一份在DDR中。uboot开机时一次性从Flash中读取全部环境变量到DDR中作为环境变量的初值,然后使用过程中都是用DDR中这一份,用户可以用saveenv指令将DDR中的环境变量重新写入Flash中去更新Flash中环境变量。下次开机会从Flash中再

2021-08-10 12:57:58 176

原创 九、uboot的常用命令4(和硬件有关的)

1、SD卡/iNand操作指令movi(1)开发板如果用SD卡/EMMC/iNand等作为Flash,则在uboot中操作flash的指令为movi(或mmc有些板子会用作用一样)(2)movi指令是一个命令集,有很多子命令,具体用法可以用help movi命令查看。(3)movi指令都是movi read和movi write一组的,movi read用来读取iNand到DDR上,movi write用来将DDR中的内容写入iNand中。理解这些指令时一定要注意涉及到的2个硬件:iNand和DDR

2021-08-10 12:19:05 388

原创 八、uboot常用命令3(网络传输有关)

1、tftp下载指令:(1)uboot本身主要目标是启动内核,为了完成启动内核必须要能够部署内核,uboot为了部署内核就需要将内核镜像从主机中下载过来然后烧录到本地flash中。uboot如果从主机(windows或虚拟机ubuntu)下载镜像到开发板上?有很多种方法,主流方式是fastboot和tftp。fastboot的方式是通过fastboot应用程序 + usb线进行数据传输的。tftp的方式是通过有线网络传输的。以前典型的方式就是通过网络,fastboot是近些年才新发展的。(2)tf

2021-08-09 16:12:52 373

原创 六、常用环境变量2

1、设置(添加/更改)环境变量setenv/set(1)用法:更改 set name value删除 set name2保存环境变量的更改saveenv/save(1)saveenv/save命令不带参数,直接执行,作用是将内存中的环境变量的值同步保存到flash中环境变量的分区。注意:环境变量的保存是整体的覆盖保存,也就是说内存中所有的环境变量都会整体的将flash中环境变量分区中原来的内容整体覆盖。(根本原因是flash是换块操作的)总结:彻底更改一个环境变量的值,需要2步:第一步set命

2021-08-09 13:01:58 142

原创 五、uboot的常用命令1

1、类似linux终端的行缓冲命令行(1)行缓冲的意思就是:当我们向终端命令行输入命令的时候,这些命令没有立即被系统识别,而是被缓冲到一个缓存区(也就是系统认为我们还没有输入完),当我们按下回车键(换行)后系统就认为我们输入完了,然后将缓冲区中所有刚才输入的作为命令拿去分析处理。(2)linux终端设计有3种缓冲机制:无缓冲、行缓冲、全缓冲2、有些命令有简化的(1)譬如printenv(作用打印出当前系统环境变量)命令可以简化为print,譬如setenv可以简化为set3、有些命令会带参数(

2021-08-08 19:56:05 59

原创 四、uboot的工作方式

1、从裸机程序镜像uboot.bin说起(1)uboot的本质就是一个裸机程序,和我们裸机全集中写的那些裸机程序210.bin并没有本质区别。如果非说有区别,就是我们写的大部分小于16KB,而uboot大于16KB(一般uboot在180KB ~ 400KB之间)(2)uboot本身是一个开源项目,由若干个.c文件和.h文件组成,配置编译之后会生成一个uboot.bin,这就是uboot这个裸机程序的镜像文件。然后这个镜像文件被合理(合理就是根据具体SOC进行设置烧录)的烧录到启动介质中拿给SOC去

2021-08-08 18:10:48 163

原创 三、uboot必须解决哪些问题

1、自身可开机直接启动(1)一般的SOC都支持多种启动方式,譬如SD卡启动、NorFlash启动、NandFlash启动等…uboot要能够开机启动,必须根据具体的SOC的启动设计来设计uboot。(2)uboot必须进行硬件相对应的代码级别的更改和移值,才能够保证可以从相应的启动介质启动。uboot中第一阶段的star.S文件中具体处理了这一块。2、能够引导操作系统内核启动并给内核传参(1)uboot的终极目标就是启动内核。(2)linux内核在设计的时候,设计为可以被传参。也就是说我们可以

2021-08-08 16:27:00 152

原创 二、为什么是uboot

二、为什么是uboot1、uboot从哪里来的?(1)uboot是Source Forge上的开源项目。(网上可以下载)(2)uboot项目的作者:一个德国人最早发起的项目(3)uboot就是由一个人发起,然后由整个网络上所有感兴趣的人共同维护发展而来的一个bootloader。2、uboot的发展历程(1)自己使用的小开源项目(自己写的放到网上)。(2)被更多人认可使用。(3)被SOC厂商默认支持。总结:uboot经过多年发展,已经成为事实上的业内bootloader标准。现在大部分的嵌

2021-08-08 15:17:29 83

原创 一、为什么要有uboot

一、为什么要有uboot1、计算机系统的主要部件(1)计算机系统是有CPU来做核心进行运行的系统。典型的计算机系统有:PC机(台式机+笔记本)、嵌入式设备(手机、平板电脑、游戏机)、单片机(家用电器像电饭锅、空调)(2)计算机系统的组成部件非常多,不同的计算机系统组成部件也不同。(虽然不一样,但是共性相同)但是所有计算机系统运时需要的主要核心部件都是3个东西:CPU + 内部存储器(DDR SDRAM/SRAM)+ 存储器(flash/硬盘)2、CP机的启动过程(1)、部署:怎么安排;怎么配制

2021-08-08 14:44:31 189

原创 协处理器CP15操作指令

一、指令:mrc 用于读mcr用于写CP15中的寄存器。1、什么是协处理器:(1)、SOC内部另一处理核心,协助主CPU实现某些功能,被主CPU调用执行一定的任务。(2)、ARM设计上支持多达16个协处理器,但一般SOC只实现其中的CP15。(3)、协处理器和mmu(内在管理单元,是CPU用来管理虚似存储器,提供硬件访问内存机制),cache、TLB(转换检测缓冲区)等处理有关,功能上和操作系统的虚似地址映射,cache管理等有关。(4)、协处理器里的每一个寄存器都有一个编号,通过操作编号找到寄存

2021-04-28 22:13:35 535

原创 ARM指令2

ARM指令2一、常用ARM指令:1、数据处理指令:(1)、mov r0, r1 两个寄存器之间数据传递。(2)mvn r0, r1 两个寄存器间按位取反数据传递。2、算述指令:(1), (add 加; Sub 减; rsb 反减; abc sbc rsc )(2)逻辑指令:(and 与;orr或; eor异或; bic按位清零 )不加S也影响标志位(N、Z、C、V)。(3)乘法指令:( mvl; mla; umull; umlal; smull; smlal; )(

2021-04-28 15:34:38 294

原创 ARM汇编指令集

一、指令与伪指令:1、汇编指令是CPU机器指令的助记符,经过编译后会得到一串01组合的机器码,可以由CPU读取执行。2、伪指令本质不是指令(只是和指令一起写在代码中)它是编译器环境提供的,目的是用来指导编译过程,经过编译后伪指令最终不会生成机器码,在编译过程中起作用,指导编译,在整个过程有作用但经过编译后不存在了,辅助编译器把指令加工成机器码。伪指令好像做饭用的工具,而指令像菜米原材料,加工好的饭就是机器吗。二、两种不同风格的ARM指令1、ARM官方风格:指令一般用大写。2、GNU风格的ARM指令

2021-04-28 00:12:40 2643 5

原创 ARM的异常处理方式介绍

一、什么是异常:1、正常工作之外的流程都叫异常。2、异常会打断正在执行的工作,并且我们一般希望异常处理完成后继续回来执行原来的工作。3、中断是异常的一种。二、用户态、系统态、异常态1、用户态和系统态是正常模式。(1)、用户态:用户(建立在操作系统之上)执行的是进程。(2)、系统态:运行的是操作系统内核所做的事情。2、异常态:(1)、FIQ、IRQ执行中断处理。(2)、supervisor软件中断:使用软件制造中断是中断的一种。(上电开机或电脑休眠重启)。(3)、Abort、undef这

2021-04-26 23:36:35 1160

原创 ARM的37个寄存器

一、通用寄存器与特殊功能寄存器:1、特殊功能寄存器通过地址识别寄存器。2、通用寄存器通过名称识别。3、通用寄存器在CPU的每种模式下最多访问18个寄存器,注意:每种模式有些部分寄存器是重复的(通用的),有些不是(专用的),每种模式下都有特定的r13和R14(Lr)所以编程时必须明确知道在哪种模式下操作寄存器(切换是自动的)。ARM总共有37个寄存器,但每种模式下最多只能看到18个寄存器,其它寄存器虽然名字相同但是在当前模式不可见。注:system和user模式寄存器是一样的。4、对R14这个名字来

2021-04-26 22:31:29 1227 2

原创 ARM的编程模式和七种工作模式

一、编程模式:ARM CPU的基本设定、如CPU所使用指令大小等。1、ARM基本设定采用32位架构2、ARM的约定:Byte 8bits 永远不会变Halford: 16bits (2byte) 半字Word: 32 bits3、大部分ARM core提供ARM指令集(32bit)Thumb指令集(16bit)Thumb2指令集(16 或 32bit)每种汇编指令都是特定CPU的特性,ARM提供了三种指令集都可以编程。二、ARM处理器工作模式:(7个基本工作模式)User:(

2021-04-26 20:56:43 910

原创 S5PV210启动过程详解

一、S5PV210启动分几步折腾目的:1、为了产品选择上省钱。2、为了支持多种外部设备启动,灵活性设计。所以要想明白启动过程先得了解这些器件的特性(如存储器有的可以作为启动介质,有的就不行)二、S5PV210中器件特性:1、内存:SRAM:静态内存、特点容量小、价高。优点:不需要软件初始化上电就能用(程序可以就地运行)。DRAM 动态内存、特点容量大、价低、缺点就是上电后不能直接使用,要初始化。iRAM:内部SRAM2、外存:Norflash:特点容量小、价高,优点是可以和CPU直接总线

2021-04-21 23:25:28 971

原创 CPU和外部存储器

一、内存:内部存储器,用来运行程序的RAM。举例(DRAM、SRAM、DDR)内存和CPU直接地址访问,好处是可以随机访问。坏处是占用CPU地址空间。二、外存:外部存储器,用来存程序和其它东西的,ROM举例(硬盘、flash(nand\iNand\u盘\SSD))光盘。ROM只读的:指的是不能用地址总线写而是要专用接口。好处是不占用CPU地址空间,坏处是访问速度慢。三、常用外部存储器Norflash 总线式访问、挂在SROMC Bbank地址处,一般用来启动(硬件特性是可以就地运行程序)sarm

2021-04-20 23:19:34 1659

原创 S5PV210的内存映射详解

一、S5PV210属于ARM Cortex_8架构、32位CPU。1、32根地址线决定了CPU的地址空间寻址范围为小于等于4G,那么这4G空间(32位)如何分配使用?这个问题就是地址映射问题。如何分配是设计CPU的人制定的,所以要查看数据手册。2、映射的实质是将CPU32位分配给不同的外设,其中那段地址(那几个bit)连接那个特定设备是CPU设计者定义好的。二、专业术语ROM(read only memory) 只读存储器不能通过地址总线写,掉电数据不丢失,是顺序访问。硬盘,flashRAM(r

2021-04-20 21:33:55 249

原创 ARM体系结构总结

ARM体系结构:CPU体系结构——>(1)可编程为什么可以编程——>(2)指令集和CPU有什么关系——>(3)CISC和RISC指令集与CPU设计理念——>(4)CPU和外部连接方式总线——>(5)统一编址和独立编址、哈佛结构和冯诺依曼结构——>(6)软件编程接口寄存器;一、ARM体系结构特点:1、CPU采用RISC架构2、常用汇编指令二三十条3、功耗低4、ARM是哈佛结构(1)哈佛结构特性保证了CPU运行稳定性和安全性。因此非常适合嵌入式、单片尤其是物联网领

2021-04-20 17:36:58 1646

原创 软件编程控制硬件的关键——寄存器

为什么软件能操控硬件?1、 什么是寄存器?寄存器属于CPU外设的硬件组成部分。2、 CPU可以像访问内一样访问寄存器(IO与内存统一编址)3、 寄存器是CPU硬件设计者制定的,目的是留作外设被编程控制的“活动开关”后台操作。一个寄存器的地址是多少,某个地址属于那个外部设备,作用是什么?要查看硬件数据手册。4、 正如汇编指令是CPU的编程接口API一样,寄存器是外设硬件的软件编程接口API。使用软件编程控制某一硬件其实就是编程读写该硬件的寄存器。程序(自己写的代码)能够操控硬件主要是操作寄存器。5

2021-04-20 17:36:33 2567 2

原创 统一编址与独立编址、哈佛结构与冯诺依曼结构

一、什么是IO、什么是内存1、内存是程序的运行场所,内存和CPU之间通过总线连接,CPU通过一定地址来访问具体内存单元。随机访问特点。2、IO(input and output)是输入输出接口,是CPU和其它外部设备(如:串口、LCD、触摸屏、LED等)之间通信的道路。一般的IO就是指CPU的各种内部或外部设备。(CPU IO通信是通过这个设备的寄存器和CPU交换数据的)3、内存通过CPU数据总线来寻址定位,然后通过CPU数据总线来读写(用门牌号找房间相似)4、CP地址总线的位数是CPU设计时候

2021-04-20 17:35:48 817

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除