- 论坛徽章:
- 9
|
回复 12# lanyushan123
如果你随意动了Linux管理的内存,那肯定有问题呀。这点humjb_1983跟你谈了。
因为/dev/mem是直接去访问内存的,不会先向内核申请。
同时,“其实是将内存保存成了文件然后读取其内容”, 你这句话理解错了,/dev/mem是直接操作内存的,没有“先保存成文件”的于法,这点不能怪你,你不了解Linux的文件系统。但观念要纠正过来。
一般,嵌入式系统或PC,内存的检查都在系统启动前完成(如BIOS或UBOOT阶段),因为哪时候内存跟本没什么人在用,不会冲突,你爱怎么写就怎么去写。系统启来后,如果你把内核已经使用了的内存改写了,问题就大了,而你在用户态没法知到内核究竟用了哪块。因此,比较方便的方法有:
1. 当然在UBOOT了去做罗。
2. 在启动内核时,通过MEM命令行,让内核只用一小块,其它给你留着,然后再通过/dev/mem接口去测试。当然,内存要够大。
3. 通过mmap建立匿名映射,然后去访问。内核此时会给你正式分配内存,就不会冲突了。
还有就是内存的检测算法问题,我估计单片机就只会写入0X55,0Xaa这类的数然后再读回来这类的算法,因为单片机基本上用的都是SRAM,比较简单。而PC或者嵌入式系统用的都是SDRAM或DDR,内存本身比SRAM复杂得多,错误的类型也因此多样。单片机的检测算法太简单了。
如果只是一个课题,哪你就建一个匿名映射,再按单片机的算法写写,把题结了你行了,国内的研究我也不寄予什么希望。
如果想真实的去用户,还是参考一个社区完善的项目吧。如Memtest86。
如对上文有什么不理解,请先百度再发问。
|
|