- 博客(3)
- 资源 (3)
- 收藏
- 关注
原创 arm-linux内核start_kernel之前启动分析(3)-开启MMU,走进新时代
在第二篇启动分析文章中讲到create pgtable时,对__turn_mmu_on所在的1M地址空间做了平映射,到现在这个阶段就看出其作用了。CPU执行完成“mcr p15, 0, r0, c1, c0,0”指令后开启MMU,接下来CPU取指地址是当前pc+4,由于做了平映射,虽然接下来是虚拟地址,但是该虚拟地址跟之前的物理地址是完全一致的,pc+4可以取到mrc p15, 0, r3, c0, c0, 0指令
2015-08-28 16:35:38 8739 2
原创 kernel如何保证cache数据一致性
那么问题就来了,正因为嵌入式处理器软件管理cache,就需要我们代码主动去操作cache,但在内核开发中很少会直接进行cache操作,cache操作到底在哪里进行的,什么时候需要操作cache。首先想明白一点,为什么要进行cache操作,只能说cache是天使也是魔鬼。cache在提高了系统性能同时却导致了数据的不一致性。嵌入式处理器软件管理cache的初衷就是保证数据一致性。那什么地方需要保证数据一致性呢?对于由CPU完全操作的数据,数据是完全一致的。也就是该数据完全由CPU写读操作,没有对CPU不
2015-08-27 10:31:21 21885 4
原创 /dev/mem可没那么简单
这几天研究了下/dev/mem,发现功能很神奇,通过mmap可以将物理地址映射到用户空间的虚拟地址上,在用户空间完成对设备寄存器的操作,于是上网搜了一些/dev/mem的资料。网上的说法也很统一,/dev/mem是物理内存的全映像,可以用来访问物理内存,一般用法是open("/dev/mem",O_RDWR|O_SYNC),接着就可以用mmap来访问物理内存以及外设的IO资源,这就是实现用户空间驱动的一种方法。用户空间驱动听起来很酷,但是对于/dev/mem,我觉得没那么简单,有2个地方引起我的怀疑:(
2015-08-13 14:05:07 45925 4
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人