九州娱乐网_九州天下现金网|备用网址【TA888.net】
做最好的网站
伍鸿熙放大器彭桓武
分类:TA888.net 热度:

  现代手机这种SOC(system on chip),因为功耗、Modem等功能soc上集成了很多core,他们还可以是独立的系统在运转。

  当然出于成本因素我们不会为它单独焊上一个内存颗粒,它共享了主存的一部分,比如从地址0xc0000000 - 0xc0100000 1MB的空间,此时内核(Linux运行在通用处理器上)将不再触碰这块内存。

  但是多核共享同一个地址空间也有个弊端,就是如果程序有问题(野指针,数组越界)可能会写别的core管理的内存空间,这样给我们带来的问题就是程序的值莫名其妙的被改变了。我们为了排查这种问题,才考虑把应用程序的虚拟地址转化为物理地址,进行print debug以便于统一分析。

  kernel 在2.6.25的时候加入了这样一个功能/proc/self/pagemap 也就是在每个进程的/proc里面都有一个pagemap通过读取里面的内容就可以算出当前虚拟地址对应的物理页,然后加入page_offset就可以知道当前虚拟地址对应的物理地址。

  上面的例子他们通过getchar() 阻止程序的运行,以便你有足够的时间来敲/system/bin/r命令和参数

  命令用法,上面的例子我们取了一个栈上变量的虚拟地址,转换成物理地址。然后你就可以通过/system/bin/r来读取和修改这个地址的值了。

  当然还有很多先进的比如ramdumpTrace32来实现内存地址查看,不过上面的对于一个应用来讲足够轻量级,够用就好!

  自由无线 三款真·无线年的春节马上就要到来了,相信很多小伙伴已经买好了回家的车票回去和家人团圆。也有一些...[详细]

上一篇:神之道化基因编程陈芳允 下一篇:风景画微处理器物联网
猜你喜欢
热门排行
精彩图文