OK6410A 开发板 (八) 33 linux-5.11 OK6410A 内存管理第一阶段

2024-05-27 15:48

本文主要是介绍OK6410A 开发板 (八) 33 linux-5.11 OK6410A 内存管理第一阶段,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

A arch/arm/kernel/head.S 中的 stext符号 - __turn_mmu_on 符号
----此时开了MMU,开启了虚拟内存时代
流程
mrc p15, 0, r9, c0, c0// 将 cpuid 存储到 r9
__lookup_processor_type// 根据 r9 中的值 ,获取 procinfo 并存储到 r5
movs    r10, r5// 获取 procinfo 并存储到 r10
__vet_atags// 验证 atags
__create_page_tables			//	 内存管理相关1// clear 50004000 - 50007fffc// at 50005400 , Create identity mapping to cater for __enable_mmu.// at 50007000 - 50007020 , Map our RAM from the start to the end of the kernel .bss section.// at 50007fe0 - 50007fe4 , map boot params address in r2
ldr r12, [r10, #PROCINFO_INITFUNC]
add r12, r12, r10
ret r12 						//	 内存管理相关2// 跳转到 arch/arm/mm/proc-v6.S 中的 __v6_setup// 设置  D cache , I cache , write buffer 
__enable_mmu					//	 内存管理相关3// load domain access register// load page table pointer
__turn_mmu_on// write control reg , 即 开 MMU //	 内存管理相关4
  • 内存管理相关1
50004000 - 50007fffc 地址 
为 下列 部分所在的物理地址 做 到 虚拟地址 的 映射
1. 当前pc处相关代码
2. 整个kernel的代码
3. atags的数据
  • 内存管理相关2
arch/arm/mm/proc-v6.S 中的 __v6_setup
设置  D cache , I cache , write buffer 
  • 内存管理相关3
__enable_mmu 写 cp15 协处理器
load domain access register// 该寄存器 在 MMU开启后的访问内存流程中 会被使用
load page table pointer// 该寄存器 在 MMU开启后的访问内存流程中 会被使用
  • 内存管理相关4
__turn_mmu_on 写 cp15 寄存器
write control reg// 开MMU// 此语句一开始执行,就代表MMU开启了// 下一句就是 MMU开启后的访问内存流程

这篇关于OK6410A 开发板 (八) 33 linux-5.11 OK6410A 内存管理第一阶段的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1007912

相关文章

gradle第三方Jar包依赖统一管理方式

《gradle第三方Jar包依赖统一管理方式》:本文主要介绍gradle第三方Jar包依赖统一管理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录背景实现1.顶层模块build.gradle添加依赖管理插件2.顶层模块build.gradle添加所有管理依赖包

基于Python打造一个智能单词管理神器

《基于Python打造一个智能单词管理神器》这篇文章主要为大家详细介绍了如何使用Python打造一个智能单词管理神器,从查询到导出的一站式解决,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 项目概述:为什么需要这个工具2. 环境搭建与快速入门2.1 环境要求2.2 首次运行配置3. 核心功能使用指

Linux之systemV共享内存方式

《Linux之systemV共享内存方式》:本文主要介绍Linux之systemV共享内存方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、工作原理二、系统调用接口1、申请共享内存(一)key的获取(二)共享内存的申请2、将共享内存段连接到进程地址空间3、将

快速修复一个Panic的Linux内核的技巧

《快速修复一个Panic的Linux内核的技巧》Linux系统中运行了不当的mkinitcpio操作导致内核文件不能正常工作,重启的时候,内核启动中止于Panic状态,该怎么解决这个问题呢?下面我们就... 感谢China编程(www.chinasem.cn)网友 鸢一雨音 的投稿写这篇文章是有原因的。为了配置完

HTML5中的Microdata与历史记录管理详解

《HTML5中的Microdata与历史记录管理详解》Microdata作为HTML5新增的一个特性,它允许开发者在HTML文档中添加更多的语义信息,以便于搜索引擎和浏览器更好地理解页面内容,本文将探... 目录html5中的Mijscrodata与历史记录管理背景简介html5中的Microdata使用M

Linux命令之firewalld的用法

《Linux命令之firewalld的用法》:本文主要介绍Linux命令之firewalld的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux命令之firewalld1、程序包2、启动firewalld3、配置文件4、firewalld规则定义的九大

Spring 基于XML配置 bean管理 Bean-IOC的方法

《Spring基于XML配置bean管理Bean-IOC的方法》:本文主要介绍Spring基于XML配置bean管理Bean-IOC的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录一. spring学习的核心内容二. 基于 XML 配置 bean1. 通过类型来获取 bean2. 通过

Linux之计划任务和调度命令at/cron详解

《Linux之计划任务和调度命令at/cron详解》:本文主要介绍Linux之计划任务和调度命令at/cron的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux计划任务和调度命令at/cron一、计划任务二、命令{at}介绍三、命令语法及功能 :at

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效