arm的mmu学习
1.什么是mmu
MMU是Memory Management Unit的缩写,中文名是内存管理单元,它是中央处理器(CPU)中用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权,多用户多进程操作系统。
物理地址:(英语:physical address),也叫实地址(real address)、二进制地址(binary address),它是在地址总线上,以电子形式存在的,使得数据总线可以访问主存的某个特定存储单元的内存地址。
虚拟地址:虚拟地址是相对于物理地址来说的。虚拟地址的提出,主要是为了解决在操作系统中,多线程内存地址重复,大进程在小内存运行等问题 , 在32位系统中,虚拟地址空间中有4G,在操作系统中程序中使用的都是虚拟地址
2.mmu有什么作用
简单的说,mm的作用有两点,地址翻译和内存保护。
在处理器上我们会运行一个操作系统,如linux,windows等,用户编写的源程序,需要经过编译,链接,生成可执行程序,人后被操作系统加载执行。在链接的时候同chan常我们要指定一个链接脚本,链接脚本的作用有很多,其中一个的作用是控制可执行文件的section的符号的内存布局,也就是控制ke'z可执行程序将来要在内存中哪里放置。操作系统会按照可执行程序的要求将其加载到内存的对应地址执行。假如用户A编写的应用程序的链接地址范围是0x100-0x200,用户B编写的应用程序的链接地址范围是0x100-0x200,这是很有可能的。因为给操作系统提供应用程序的开发者很多,不可能为每个开发者限定使用那些内存。这样,执行程序A的时候就不能执行程序B,执行程序B的时候就不能执行程序A,因为它们执行时会覆盖对方内存中的程序。为了解决这个问题,必须引入虚拟地址,为此操作系统和处理器都做了处理,添加了mmu,让其进行地址翻译。在程序载入内存的时候,操作系统会为其建立地址翻译表,处理器执行不同应用程序的时候,使用不同的地址翻译表。如下图所示。
ProgramA被加载到物理地址地址0x500-0x600处,ProgramB被加载到物理地址0x700-0x800处,同时建立了各自的地址翻译表,当处理器要执行ProgramB时,会使用ProgramB对应的地址翻译表,比如读取ProgramB地址0x100处的指令,那么经过地址翻译表可知0x100对应实际内存的0x700处,所以实际读取的就是0x700处的指令。同样的,当处理器要执行ProgramA时,会使用ProgramA对应的地址翻译表,这样就避免了之前提到的内存冲突问题,有了MMU的支持,操作系统就可以轻松实现多任务了。
上图CPU给出的地址称之为虚拟地址,经过MMU翻译后的地址称之为物理地址。
MMU的地址翻译功能还可以为用户提供比实际大得多的内存空间。用户在编写程序的时候并不知道运行该程序的计算机内存大小,如果在链接的时候指定程序被加载到地址Addr处,而运行该程序的计算机内存小于Addr,那么程序就无法执行,有了MMU后,程序员就不用关心实际内存大小,可以认为内存大小就是“2^指令地址宽度”。MMU会将超过实际内存的虚拟地址翻译为物理地址进行访问。
地址翻译表存储在内存中,如果采用图10.1中的方式:地址翻译表的表项是一个虚拟地址对应一个物理地址,那么会占用太多的内存空间,为此,需要修改翻译方式,常用的有三种:页式、段式、段页式,这也是三种不同的内存管理方式。
页式内存管理将虚拟内存、物理内存空间划分为大小固定的块,每一块称之为一页,以页为单位来分配、管理、保护内存。此时MMU中的地址翻译表称为页表(Page Table),每个任务或进程对应一个页表,页表由若干个页表项(PTE:Page Table Entry)组成,每个页表项对应一个虚页,内含有关地址翻译的信息和一些控制信息。在页式内存管理方式中地址由页号和页内位移两部分组成,其地址翻译方式如图10.2所示。
使用虚拟地址中的虚页号查询页表得到对应的物理页号,然后与虚拟地址中的页内位移组成物理地址。比如:页大小是256字节,虚拟地址是0x104,可知对应的虚页号是0x1,页内位移是0x4,假如通过页表翻译得到的对应物理页号是0x7,那么0x104对应的物理地址就是0x704。使用页表方式进行地址翻译可以有效减少地址翻译表占用的内存空间,还是以图10.1为例,页大小是256字节,此时每个程序对应的页表就只有两项,如图10.3所示。
段式内存管理将虚拟内存、物理内存空间划分为段进行管理,段的大小取决于程序的逻辑结构,可长可短,一般将一个具有共同属性的程序代码和数据定义在一个段中。每个任务和进程对应一个段表(Section Table),段表由若干个段表项(STE:Section Table Entry)组成,内含地址映像信息(段基址和段长度)等内容。在段式虚拟存储器中,地址分为段号、段内位移两部分,使用段表进行地址翻译的过程与使用页表进行地址翻译的过程是相似的。
段页式内存管理是在内存分段的基础上再分页,即每段分成若干个固定大小的页。每个任务或进程对应有一个段表,每段对应有自己的页表。在访问存储器时,由CPU经页表对段内存储单元进行寻址。
2、内存保护
内存保护也叫权限管理,除了具有地址翻译的功能外,还提供了内存保护功能。采用页式内存管理时可以提供页粒度级别的保护,允许对单一内存页设置某一类用户的读、写、执行权限,比如:一个页中存储代码,并且该代码不允许在用户模式下执行,那么可以设置该页的保护属性,这样当处理器在用户模式下要求执行该页的代码时,MMU会检测到并触发异常,从而实现对代码的保护。特别是在处理应用程序时,如果一个应用程序写的比较烂,出现了指针越界或栈溢出,程序跑飞等情况,因为不能访问别的程序的地址,所以不会影响到别的应用程序的运行。比如在操作系统下,应用程序不能访问寄存器,而操作系统可以。比如应用程序的只读数据段不能被写,否则会发生段错误。
3、大容量app在小资源系统运行
在嵌入式系统中,假如内存容量只有256M大,而应用程序却有1G大时,通常一个程序中,程序执行的比较多的是顺序指令,所以在运行1G的程序时,操作系统会先加载一小部分到内存中,当执行完这一部分或发生跳转发现内存中没有要跳转地址的指令时,操作系统再加载需要跳转部分的程序到其链接地址(虚拟地址),加载完后再继续执行。内次加载程序,都需要建立一个动态的地址映射表。当物理内存加载满后,操作系统会选择性的将最早之前加载入物理内存的程序置换到外部flash等存储器中,再加载需要用到的一块程序。因为置换需要时间,所以当使用存储容量较小内存的嵌入式系统后,让其运行大程序,使用可能会有一定的卡顿现象。
3.arm的mmu
下图中是arm支持的几种页表大小一级每种页表可以管理的内存单元数量。
通常使用段式页表作为一级页表,使用页式式页表作为二级页表。
在关闭了子页(subpages)功能后可以使用下面三种作为一级页表。
下图分别是超级段,和段以及粗页表的描述。
粗页以1k为单位管理页表,段以1M为单位管理页表,超级短以16M为单位管理页表。
上面三者都可以作为一级页表使用。
从上图我们可以看到,超级页表可以管理40位数据宽度也就是1T容量的内存。主要是为64位系统而发明的。
结合上下图的描述我们可以看到,supersection和section是通过bit18来区分的。
段和页的区分是有bit【0,1】来区分的。
1.下面是超级段和段的区别。
在使能子页(subpages)功能后,可以使用下面二种作为一级页表。
在说明一级页表转换之前我们先引入一个概念。
首先,我们要分清ARM CPU上的三个地址:虚拟地址(VA,Virtual Address)、变换后的虚拟地址(MVA,Modified Virtual Address)、物理地址(PA,Physical Address)
启动MMU后,CPU核对外发出虚拟地址VA,VA被转换为MVA供MMU使用,在这里MVA被转换为PA;最后通过PA读写实际设备
MMU的作用就是负责虚拟地址(virtual address)转化成物理地址(physical address)。 32位的CPU的虚拟地址空间达到4GB,在一级页表中使用4096个描述符来表示这4GB的空间,每个描述符代表1M的虚拟地址,要么存储了它的对应物理地址的起始地址,要么存储了下一级页表的地址。使用MVA[31:20]来索引一级页表(4096个描述符)(因为用MVA的高12位来索引,因此大小为 2^12 = 4096)
由协处理器CP15中的寄存器C2(高18位,即[31:14]为转换表基地址,低14位为0)用来存放一级转换表基地址,指向2^14=16KB整除的存储器即16K对齐,这个存储区称为一级转换表;MVA的高12位,即位[31:20]作为一级转换表的地址索引,因此一级转换表具有2^12=4096项,每一项的地址为32位,最高的18位[31:14]为寄存器C2的高18位,中间12位为MVA的高12位[31:20],最低2位为0b00。每一项的内容称为一个描述符,在段(Section)下,一级描述符的高12位为大小为1MB的段基地址,段内地址(偏移地址)为MVA的低20位,即段内每个存储器的地址是这样组成:高12位为一级描述符的高12位,低20位MVA的低20位。这样,借助于寄存器C2和一级描述符,将一个MVA转换成一个PA。(在这里一定要注意:MVA的高12位是用来索引4096个项的,然后使用项的内容(即描述符)的高12位为段的高12位,类似于指针里面存放地址,4096项类似指针,描述符类似指针里面的内容)
下图是使用一级页表后,地址的转换过程图。(以段式页表为例)
从上往下看:
translation tabe base:简称ttb,称为转换表基址,存放在cp15的c2寄存器的高18位,低12位为0。所以将来我们写程序存放ttb的基地址一定要以16kb对齐。
modified virtual address:简称mva,称为转换后的虚拟地址(即在32bit系统中具有4G访问空间的虚拟地址),它的高12bit总共4096个项,用来作为该虚拟地址在ttb中的索引。它的低20位,是作为将来找到对应的物理内存的偏移。其本省也是在虚拟内存中的偏移。
address of first-level descriptor:一级地址描述符,它是结合ttb,以及偏移量mva,找到的具体的页表。即具体段(section)在那个位置。
first-level descriptor:以及页表描述符,上一步既然知道了是存放在一级页表的哪个位置了,直接取出其中的高12位,即找到了物理地址所在的段。
physcical address:既然上一步已经找到了物理地址所在的段,那么只需要加上低20位的段内偏移即找到了具体的那个物理地址了。(偏移在物理地址和虚拟地址中是一样的,区别只是在段地址)
2.粗页表
一级页表做粗页表用的比较少,这里就不分析了
3.二级页表
二级页表主要有两种
大页表,每页管理64k
小页表,每页管理4k
和一级页表一样,使能或不使能subpages分为两种情况
前面包括一级页表都没有说,页表没一项的内容,这里统一说明一下。
[0-1]用来识别页表类型,比如段式,大页,小页等
[2-3]用来识别是否使能cache和write buffer
TEX是扩展的类型字段。
[4-5]是用来做权限管理的
其中S R是在cp15的c1协处理器中,用来做系统保护和rom保护的。
nG S XN
其余的就是不同大小的页的基地址。
以64KB管理的二级粗页表的映射形式。
以4KB管理的二级粗页表的映射形式。
4.编程实践
下面使用上面讲的最详细的段页表为例,在裸机的情况下开启MMU,实现虚拟地址映射。
在现代处理器中,为了使内存的速度跟得上CPU的速度,通常在芯片内部做了缓存(cache)。在启动了cache后,程序的运行效率会极大的提高。
arm中又把cache分为指令cache,又称(icache),和数据cache,又称(dcache)。
其中icache可以随时开启,随时关闭,但dcache必须在开启了MMU后,才能启动。
在启动cache后,arm其实才可以称为哈佛结构(数据指令分开)
否则,在不开启的情况下,其实还是冯洛伊曼结构。
我的ddr的地址范围是0x3000000~0x4fffffff
为了验证我的MMU确实开启了,所以把程序的链接地址改为了0xB0000000,同时把0xB0000000起始的1M空间(我的裸机程序很小,远小于1M)映射到了0x30000000
首先看一下我的链接脚本
SECTIONS
{. = 0xb0000000;__code_start = .;. = ALIGN(4);.text : {start.o*(.text)}. = ALIGN(4);.rodata :{*(.rodata)}. = ALIGN(4);.data :{data_load_add = LOADADDR(.data);data_start = .;*(.data)data_end = .;}. = ALIGN(4);.bss :{bss_start = .;*(.bss) *(.COMMON)bss_end = .;}
}
接下来是页表的建立。
因为我在裸机中并没有使用很多东西,所以映射的不是所有4G空间,只映射了我用到的。
#define MMU_SECTION_AP (0x3<<10)
#define MMU_SECTION_DOMAIN (0<<5)
#define MMU_SECTION_NCNB (0<<2)
#define MMU_SECTION_ECEB (0x3<<2)
#define MMU_SECTION_TYPE ((1<<4)|(1<<1))#define MMU_SECTION_IO (MMU_SECTION_AP|MMU_SECTION_DOMAIN|MMU_SECTION_NCNB|MMU_SECTION_TYPE)
#define MMU_SECTION_MEM (MMU_SECTION_AP|MMU_SECTION_DOMAIN|MMU_SECTION_ECEB|MMU_SECTION_TYPE)#define MMU_IO 1
#define MMU_MEM 0/* 虚拟地址向物理地址映射 */
static void create_tlb(unsigned int *ttb,unsigned int va,unsigned int pa, int io)
{int index;index = va / 0x100000;if(io)ttb[index] = (pa & 0xfff00000) | MMU_SECTION_IO;elsettb[index] = (pa & 0xfff00000) | MMU_SECTION_MEM;
}/* 创建一级页表* VA PA CB* 0 0 11* * 512M* 0x30000000 0x30000000 11* ......* 0x4ff00000 0x4ff00000 11* * 0xd0000000 0xd0000000 11* * SFR* 0xe0000000 0xe0000000 00* ......* 0xfff00000 0xfff00000 00** framebuffer* 0x40000000 0x40000000 00** link address* 0xb0000000 0x30000000 11*//* 创建一个一级的段页表 */
void create_page_table(void)
{/* 页表在哪 0x4f000000 16k对齐 */unsigned int *ttb = (unsigned int *)0x4f000000;unsigned int va,pa;/* 1.irom */create_tlb(ttb,0,0,MMU_MEM);/* 2.sdram 512M*/va = 0x30000000;pa = 0x30000000;for( va = 0x30000000; va < 0x4fffffff; va += 0x100000 ){create_tlb(ttb,va,pa, MMU_MEM);pa += 0x100000;}/* 3.irom/iram */create_tlb(ttb,0xd0000000,0xd0000000, MMU_MEM);/* 4.sfr */va = 0xe0000000;pa = 0xe0000000;for( va = 0xe0000000; va < 0xfff00000; va += 0x100000){create_tlb(ttb,va,pa, MMU_IO);pa += 0x100000;}/* 5.framebuffer */create_tlb(ttb, 0x40000000,0x40000000, MMU_IO);/* 6. link address */create_tlb(ttb,0xb0000000,0x30000000, MMU_MEM);
}
下面是初始化部分(bootloader)
__reset_exception:/* 开发板制锁*/ldr r0, = 0xe010e81cldr r1, = 0x301str r1, [r0]/* 关闭看门狗 */ldr r0, = 0xe2700000mov r1, #0str r1, [r0]/* 下面有调用c函数设置SVC栈地址 */ldr sp, = 0xd0037d80/* 启动icache */bl enable_icache/* 设置时钟 */bl init_clock/* 初始化DDR */bl sdram_init/* 创建页表 */bl create_page_table/* 使能mmu */bl enable_mmu/* 代码重定位 */bl copy2sdram/* 清bss段 */bl clear_bss/* 从iram跳转到ddr */ldr pc, = sdram
sdram:bl uart0_init/* 开irq中断 */mrs r0, cpsrbic r0, r0, #1<<7msr cpsr, r0ldr sp, = 0x45000000/* 调用main函数 */bl mainb .enable_icache:mrc p15, 0, r1, c1, c0, 0 @Read Control Registorr r1, r1,#(1<<12) @enable instructon cache//bic r1, r1,#(1<<12)mcr p15, 0, r1, c1, c0, 0mov pc, lrenable_mmu:/* translation table base write cp5 */ldr r1, = 0x4f000000mrc p15, 0, r2, c2, c0, 0 @ Read Translation Table Base Registerorr r2, r2, r1mcr p15, 0, r2, c2, c0, 0 @ Write Translation Table Base Register/* set domain 0xffffffff */ldr r0, = 0xffffffffmcr p15, 0, r0, c3, c0, 0 @ Read Domain Access Control Register/* enable i/d canche */mrc p15, 0, r1, c1, c0, 0 @Read Control Registorr r1, r1,#(1<<12) @enable instructon cacheorr r1, r1,#(1<<2) @enable data cacheorr r1, r1,#(1<<0) @enable mmumcr p15, 0, r1, c1, c0, 0 @write Control Registmov pc, lr
初始化要注意的点:
1.sdram标号之前的代码都应该是位置无关码(不能使用全局变量,静态变量,字符串,初始化过的局部数组等)。
2.因为页表放置在ddr中,所以创建页表必须在ddr初始化之后。
3.因为我的链接地址在0xB0000000,所以代码重定位时必须要能使用0xB0000000的空间。所以我把启动mmu放在了,重定位前面。同时开启MMU时要使用页表基地址,所以页表也必须在开启MMUq前先建立。
5.效果
启动了MMU前,我的刷屏速度大概在每秒几帧。
开启了MMU和cache后,我的刷屏速度差不多可以达到每秒二十对帧。
有一点要说明的是,我把framebuffer的显存映射成MEM即可以使用cache和buffer后,刷新速度感觉比映射成IO速度快了一倍。
主要原因是因为我是一整屏的刷颜色,所以dcache很快就满了,然后硬件自动把整个dcache刷回内存。所以速度比直接访问的IO要快,当
每次只刷一小块部分,速度反而会比IO方式慢。
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- linux格式化硬盘和挂载硬盘
1、首先先查看是否有没有挂载的硬盘 命令:fdisk -l 2、格式化该硬盘命令: mkfs.ext4(我们选择的是ext4格式) 3、挂载硬盘命名文件夹 命令:mount “硬盘名称” “目录名称” 4、使用命令df -h查看信息 5、自动挂载,不然重启之后会失效 命令: vim /etc/fstab 如果权限不…...
2024/4/14 21:03:54 - 学习Web.xml
1.认识web.xml web.xml的加载过程: 在web-app元素内,元素的配置顺序与工程的加载顺序无关,web.xml的加载过程为:启动web项目,web容器(如tomcat)首先读取web.xml文件中的两个节点:<listener></listener>和<context-param></context-param> 容器…...
2024/4/14 21:03:53 - 求助: asp.net MVC3中同时使用dropdownlist 和 checkbox时遇到的问题
我昨天晚上碰到一个很纠结的问题 我用mvc3+ef 使用的是linq to entity 一开始单独弄啦下dropdownlistfor是ok的没问题的 但是当我使用 checkbox时 如果是选中状态 OK 如果不选中checkbox 页面报错了 我的后台的controller 里面就出问题啦 说我的dropdownlistfor 那里的 it…...
2024/4/20 11:33:12 - Nginx搭建基于Hexo的Blog
实战用Nginx搭建基于Hexo框架的Blog,并部署到阿里云服务器上博客的由来?想必有些童鞋就早已发现了,博主的这个博客系统与网上其他大佬的博客都相似,原因就是都采用了 Hexo 框架搭建的博客系统(优点就是Hexo框架通过Markdown文本来渲染页面,大家可以了解一下哦)。本博客采…...
2024/4/14 21:03:49 - 优秀的论坛
国内各领域最优秀的论坛都在这里,不妨看一看,是不是有你常去的呢? 骨灰级: COC http://forum.3382.net/:Cruise On Clouds 浮云 (已不能用) BOB http://www.bob71.com/:继承COC遗志,不过却差了许多,现在有往水坛发展的潜质。。 ROR http://www.ror.cn/ut:The Rhythm Of…...
2024/4/25 21:56:23 - 结合PXA270 Bootloader实例详细分析ARM映象文件
最近花了一个月的时间终于把PXA270的板子Bootloader 部分整出来了,颇费周折;其中的很长一段时间,一直被ARM可执行程序的执行机理迷惑:搞不懂ARM的映象文件组成、代码重定位、地址重映射remap等,网上查了N多资料看了N多技术帖子总算整清楚。如今写出来整理一下思路,也为其…...
2024/4/20 3:32:14 - Ubuntu系统下个人博客的搭建
Ubuntu系统下个人博客的搭建1. 首先在自己的电脑上安装ubuntu系统,安装过程中记得选择英式键盘,不对自己的主机加密。2. 了解LAMP工作原理,也就是博客搭建模型。中间件:apache数据库:msyql脚本语言:php53. 为了更方便的使用ubuntu系统,我们先安装并启用SSH服务。(1)安…...
2024/4/14 21:03:46 - 存储过程--之菜鸟教程
①为什么要使用存储过程?因为它比SQL语句执行快. ②存储过程是什么?把一堆SQL语句罗在一起,还可以根据条件执行不通SQL语句.(AX写作本文时观点) ③来一个最简单的存储过程CREATE PROCEDURE dbo.testProcedure_AXASselect userID from USERS order by userid desc 注:dbo.test…...
2024/4/14 21:03:50 - 一周新闻纵览:谷歌浏览器信息泄露,出卖个人信息获利终落网,严查App偷窥乱象
人生最大的遗憾是没做,而不是做错。—— 凯瑟琳斯利谷歌浏览器造成大规模用户安全信息泄露据路透社报道,Awake Security的研究人员表示,他们在谷歌的Chrome浏览器的扩展程序中发现了一个间谍软件,含有这个间谍软件的扩展程序已经被下载了3200万次。这一事件凸显出科技企业在…...
2024/5/7 1:49:54 - [Linux --vim]: vim格式化所有代码
1) 按两下小写g,即gg,定位光标到第一行。 (2) 按住Shift+v,即大写V,进入可视化编辑的列编辑模式。 (3) Shift+g,即大写G,选中整个代码。 (4) 按下等号=,格式化所有代码。...
2024/4/24 23:39:55 - sim868模块
最近使用了SIM868模块做了项目,单片机使用的是STM32F103C8T6,使用串口2与SIM模块通信,实现了打电话、发短信、GPS定位、GPRS发送数据的功能,能够实时定位,1s发送一次定位数据到服务器。 SIM模块代码如下: #include "sim.h" #include "delay.h" #incl…...
2024/5/5 4:43:29 - 中国最好的论坛(未分类版)
收集自LJF AD区软件为主资源为辅的技术论坛长期坚持着共产式资源分享http://bbs.et8.net/bbs imp3http://bbs.imp3.net/index.php 专业的CAD/CAM/CAE论坛 http://icax.cn/cgi-bin/ut/forum_show.cgi不过估计没多少人感兴趣,有口饭吃也多亏了这个论坛,呵呵 DRL:DreamLand 软…...
2024/5/5 15:33:39 - 【e-r图实践】个人博客的数据库设计
因为想系统学习一下数据设计,然后昨天看了e-r图,今天有时间就实践了一下。以下是我的练习项目:https://github.com/guosimin/blog-management但暂时没想要做更多的功能,所以目前数据库设计得比较简单。效果如下:因为之前都是想到哪做到哪,所以截止到现在,目前想做又未完…...
2024/5/5 6:04:51 - MVC dropdowlistfor 默认值无效(Selected 无效)
下面是设置无效的例子 @Html.DropDownListFor(model => model.City, ViewBag.City as IEnumerable<SelectListItem>, "==选择==", new { @class = "form-control dropdown-toggle" }) @Html.DropDownListFor(model => model.City, ViewBag.Cit…...
2024/4/24 23:39:51 - 各大影视、资源、技术论坛地址及简介2006版!
文章提交: shuer 信息来源: 网安中国 (bbs.nschina.com) [摘自龙卷风极品论坛] 目前暂时列出一些,排名不分先后,其它的好论坛或站点请大家继续提出,逐步补充完善....1. LJF: 龙卷风极品论坛 http://bbs2.long-jf.com/以制作各种整合版的WINDOWS和OFFICE等的ISO而著名…...
2024/4/24 23:39:52 - MVC 下拉框默认值问题
@Html.DropDownList默认值问题解决可以有3中办法 1:Html.DropDownListFor(model=>model.listName,list) 可以在后台为list 集合 附一个默认值 2:用Jquery Html.DropDownListFor(model=>model.listName,list,new{@class="selectId"}) 然后在jQuery中$.each()…...
2024/4/24 23:39:56 - Halo博客建站小记
0. 背景 19年国庆期间宅家里,闲着无聊,心血来潮想搭个博客,想想之前也搞过好几个博客,就是没有坚持下来,很是可惜,一转眼已经工作3年有余,是该把自己的学习过程,整理整理,形成自己的知识沉淀,同时梳理一下自己的技术体系框架,看看是否能形成比较系统的知识。 1. 博客…...
2024/4/24 23:39:51 - linux 系统分区及格式化
2.3 系统分区分区及格式化磁盘分区:硬盘逻辑上分成几个不同的储存空间,用来保存不同的数据,就 像把大柜子分隔成几个小柜子,小柜子分别储存不同的东西,为什 么要分区?是为了更好的查找数据,文件分区类型: 分区规则A. 主分区:最多只…...
2024/5/5 16:35:35 - 103_《Delphi5实用编程技术》
《Delphi5实用编程技术》 Delphi 教程 系列书籍 (103) 《Delphi5实用编程技术》 网友(邦)整理 EMail: shuaihj@163.com 下载地址: 下载书名: DELPHI 5.0 实用编程技术 作者: 天创工作室 出版社: 人民邮电出版社 书号: 7115087466 出版日期:2000年9月 开本: 787*109…...
2024/4/24 23:39:46 - stm32,arm9和arm11三者的区别
STM32外设丰富,没有mmu,可以上ucos等小型系统。arm9外设不够丰富,有mmu,可以上linux。如果想上安卓,至少arm11以上才比较合适。arm7是arm公司推出的以V4指令集设计出来的arm核,基于arm7可以生产出很多CPU芯片,其代表的芯片有s3c44b0等;arm9是arm公司推出的以V5指令集设…...
2024/4/24 23:39:46
最新文章
- CMake 的继承关系
1. CMake如何确定继承关系 在 CMake 中,父子关系是通过文件系统中的目录结构来定义的。当你在一个目录中创建一个 CMakeLists.txt 文件时,该目录就被视为一个 CMake 项目的目录,而该文件中的内容将被用于配置和构建该目录中的项目。 当你在父…...
2024/5/8 23:17:48 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/5/7 10:36:02 - 使用阿里云试用Elasticsearch学习:1.3 基础入门——搜索-最基本的工具
现在,我们已经学会了如何使用 Elasticsearch 作为一个简单的 NoSQL 风格的分布式文档存储系统。我们可以将一个 JSON 文档扔到 Elasticsearch 里,然后根据 ID 检索。但 Elasticsearch 真正强大之处在于可以从无规律的数据中找出有意义的信息——从“大数…...
2024/5/7 8:31:44 - 通过mapreduce程序统计旅游订单(wordcount升级版)
通过mapreduce程序统计旅游订单(wordcount升级版) 本文将结合一个实际的MapReduce程序案例,探讨如何通过分析旅游产品的预订数据来揭示消费者的偏好。 程序概览 首先,让我们来看一下这个MapReduce程序的核心代码。这个程序的目…...
2024/5/4 3:41:46 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/8 6:01:22 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/7 9:45:25 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/5/4 23:54:56 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/5/7 14:25:14 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/5/4 23:54:56 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/5/4 23:55:05 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/5/4 23:54:56 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/5/7 11:36:39 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/5/4 23:54:56 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/5/6 1:40:42 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/5/4 23:54:56 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/5/8 20:48:49 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/5/7 9:26:26 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/5/4 23:54:56 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/8 19:33:07 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/5/5 8:13:33 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/5/8 20:38:49 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/5/4 23:54:58 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/5/6 21:42:42 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/5/4 23:54:56 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57