当前位置: 首页 > news >正文

Uboot中ARMV7和ARMV8 MMU配置

问题概述

Uboot中如果打开MMU,则MMU需要配置MMU table来管理不同的地址空间。

其中ARMV7和ARMV8中这部分的配置代码是不同。

ARMV7的配置过程

代码参考:u-boot-2020.04/arch/arm/lib/cache-cp15.c

mmu_setup
→set_section_dcache
→dram_bank_mmu_setup

其中dram_bank_mmu_setup函数中使用到的bd->bi_dram[bank].start,bd->bi_dram[bank].start是board中中定义,例如xxx_evb.c定义的:

int dram_init_banksize(void)
{gd->bd->bi_dram[0].start = 0x40000000;gd->bd->bi_dram[0].size = 0x40000000;return 0;
}

ARMV7的mmu初始化不需要用到mem_map,所以不需要在arch目录下对应的文件中定义类似ARMV8的

static struct mm_region xxx_mem_map[] = {
{.virt = 0x40000000UL,.phys = 0x40000000UL,.size = 0x80000000UL,.attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |PTE_BLOCK_INNER_SHARE
}, {.virt = 0x00000000UL,.phys = 0x00000000UL,.size = 0x40000000UL,.attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |PTE_BLOCK_NON_SHARE |PTE_BLOCK_PXN | PTE_BLOCK_UXN
}, {/* List terminator */0,
}
};struct mm_region *mem_map = xxx_mem_map;
ARMV8的配置过程

代码参考:u-boot-2020.04/arch/arm/cpu/armv8/cahc_v8.c。

在进行MMU初始化的时候需要用到mem_map,所以需要在对应arch目录下定义对应的mem_map数组。

相关文章:

  • vscode git stash apply stash@{1}不生效
  • 基于python+django,我开发了一款药店信息管理系统
  • 【CSS】移动端适配
  • Echars3D 饼图开发
  • 部署实战--修改jar中的文件并重新打包成jar文件
  • stack和queue及优先级队列和适配器(包括deque)的介绍
  • 云贝教育 | 【技术文章】Oracle 19c RAC修改网络
  • Userexcel 单元格中序号,但是通过openxml获取的不是序号是数字?
  • C++入门(一)— 使用VScode开发简介
  • 【C++】STL反向迭代器模拟实现,迭代器适配器,迭代器类型简单介绍
  • 【竞技宝】LOL:Able小炮连续起跳收割战场 OMG2-0轻取TT
  • 微服务系统设计:横向扩展和纵向扩展的对比
  • C#基础题
  • Java中使用StopWatch实现代码块耗时统计/计时某段代码执行
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • CSS3 变换
  • Django 博客开发教程 8 - 博客文章详情页
  • express + mock 让前后台并行开发
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • MySQL-事务管理(基础)
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • Promise初体验
  • Puppeteer:浏览器控制器
  • React 快速上手 - 07 前端路由 react-router
  • 猴子数据域名防封接口降低小说被封的风险
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 蓝海存储开关机注意事项总结
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 微信公众号开发小记——5.python微信红包
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • 阿里云ACE认证学习知识点梳理
  • 关于Android全面屏虚拟导航栏的适配总结
  • ​secrets --- 生成管理密码的安全随机数​
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #if和#ifdef区别
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (转载)OpenStack Hacker养成指南
  • .Family_物联网
  • .gitignore文件---让git自动忽略指定文件
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .net core 依赖注入的基本用发
  • .NET 动态调用WebService + WSE + UsernameToken
  • .NET/C# 使用反射注册事件
  • .Net6使用WebSocket与前端进行通信
  • .NET命令行(CLI)常用命令
  • .project文件