微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > Linux内核高-低端内存设置代码跟踪(ARM构架)

Linux内核高-低端内存设置代码跟踪(ARM构架)

时间:11-21 来源:互联网 点击:

  1. phys_initrd_start = phys_initrd_size = 0;
  2. }
  3. if (phys_initrd_size &&
  4. memblock_is_region_reserved(phys_initrd_start, phys_initrd_size)) {
  5. pr_err("INITRD: 0xlx+0xlx overlaps in-use memory region - disabling initrd\n",
  6. phys_initrd_start, phys_initrd_size);
  7. phys_initrd_start = phys_initrd_size = 0;
  8. }
  9. if (phys_initrd_size) {
  10. memblock_reserve(phys_initrd_start, phys_initrd_size);
  11. /* Now convert initrd to virtual addresses */
  12. initrd_start = __phys_to_virt(phys_initrd_start);
  13. initrd_end = initrd_start + phys_initrd_size;
  14. }
  15. #endif
  16. arm_mm_memblock_reserve();
  17. arm_dt_memblock_reserve();
  18. /* reserve any platform specific memblock areas */
  19. if (mdesc->reserve)
  20. mdesc->reserve();
  21. memblock_analyze();
  22. memblock_dump_all();
  23. }

通过上面的分析,整个高低端内存是如何确定的基本就清晰了,这里总结一下:

ARM构架中,高-低段内存是内核通过内核启动参数(mem=size@start和vmalloc=size)来自动配置的,如果没有特殊去配置他,那么在普通的ARM系统中是不会有高端内存存在的。除非你系统的RAM很大或vmalloc配置得很大,就很可能出现高端内存。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top