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

送上门卤菜网站要怎么做网站建站教程

送上门卤菜网站要怎么做,网站建站教程,国外数据网站,0317网站建设3、MMU汇编代码 在arch\arm\arm\include\arm.h文件中,封装了CP15协处理器相关的寄存器操作汇编函数。我们主要看下MMU相关的部分。 3.1 CP15 C2 TTBR转换表基地址寄存器 代码比较简单,结合下图,自行查看即可。该图来自《ARM Cortex-A9 Tec…

3、MMU汇编代码

arch\arm\arm\include\arm.h文件中,封装了CP15协处理器相关的寄存器操作汇编函数。我们主要看下MMU相关的部分。

3.1 CP15 C2 TTBR转换表基地址寄存器

代码比较简单,结合下图,自行查看即可。该图来自《ARM Cortex-A9 Technical Reference Manual r4p1》CP15 system control registers grouped by CRn order部分。

STATIC INLINE UINT32 OsArmReadTtbr(VOID)
{UINT32 val;__asm__ volatile("mrc p15, 0, %0, c2,c0,0" : "=r"(val));return val;
}STATIC INLINE VOID OsArmWriteTtbr(UINT32 val)
{__asm__ volatile("mcr p15, 0, %0, c2,c0,0" ::"r"(val));__asm__ volatile("isb" ::: "memory");
}STATIC INLINE UINT32 OsArmReadTtbr0(VOID)
{UINT32 val;__asm__ volatile("mrc p15, 0, %0, c2,c0,0" : "=r"(val));return val;
}STATIC INLINE VOID OsArmWriteTtbr0(UINT32 val)
{__asm__ volatile("mcr p15, 0, %0, c2,c0,0" ::"r"(val));__asm__ volatile("isb" ::: "memory");
}STATIC INLINE UINT32 OsArmReadTtbr1(VOID)
{UINT32 val;__asm__ volatile("mrc p15, 0, %0, c2,c0,1" : "=r"(val));return val;
}STATIC INLINE VOID OsArmWriteTtbr1(UINT32 val)
{__asm__ volatile("mcr p15, 0, %0, c2,c0,1" ::"r"(val));__asm__ volatile("isb" ::: "memory");
}STATIC INLINE UINT32 OsArmReadTtbcr(VOID)
{UINT32 val;__asm__ volatile("mrc p15, 0, %0, c2,c0,2" : "=r"(val));return val;
}STATIC INLINE VOID OsArmWriteTtbcr(UINT32 val)
{__asm__ volatile("mcr p15, 0, %0, c2,c0,2" ::"r"(val));__asm__ volatile("isb" ::: "memory");
}

3.2 CP15 C7 高速缓存寄存器

代码比较简单,结合下图,自行查看即可。该图是C7寄存器的部分截图。

STATIC INLINE UINT32 OsArmReadBpiall(VOID)
{UINT32 val;__asm__ volatile("mrc p15, 0, %0, c7,c5,6" : "=r"(val));return val;
}STATIC INLINE VOID OsArmWriteBpiall(UINT32 val)
{__asm__ volatile("mcr p15, 0, %0, c7,c5,6" ::"r"(val));__asm__ volatile("isb" ::: "memory");
}STATIC INLINE UINT32 OsArmReadBpiallis(VOID)
{UINT32 val;__asm__ volatile("mrc p15, 0, %0, c7,c1,6" : "=r"(val));return val;
}STATIC INLINE VOID OsArmWriteBpiallis(UINT32 val)
{__asm__ volatile("mcr p15, 0, %0, c7,c1,6" ::"r"(val));__asm__ volatile("isb" ::: "memory");
}

3.3 CP15 C13 进程标识符寄存器

代码比较简单,结合下图,自行查看即可。

STATIC INLINE UINT32 OsArmReadContextidr(VOID)
{UINT32 val;__asm__ volatile("mrc p15, 0, %0, c13,c0,1" : "=r"(val));return val;
}STATIC INLINE VOID OsArmWriteContextidr(UINT32 val)
{__asm__ volatile("mcr p15, 0, %0, c13,c0,1" ::"r"(val));__asm__ volatile("isb" ::: "memory");
}

4 MMU上下文切换

在之前的系列,我们了解到每个用户进程都有独立的进程空间。在进程切换时,MMU上下文也会切换,相应的函数为LOS_ArchMmuContextSwitch()。快速分析下该函数的代码。

⑴处读取TTBCR寄存器的状态值,如果传入参数archMmu不为空,执行⑵使能TTBR0,否则执行⑶使其失能TTBR0。⑷处把这里先把asid切到内核空间的ID

VOID LOS_ArchMmuContextSwitch(LosArchMmu *archMmu)
{UINT32 ttbr;
⑴   UINT32 ttbcr = OsArmReadTtbcr();if (archMmu) {
⑵      ttbr = MMU_TTBRx_FLAGS | (archMmu->physTtb);/* enable TTBR0 */ttbcr &= ~MMU_DESCRIPTOR_TTBCR_PD0;} else {
⑶      ttbr = 0;/* disable TTBR0 */ttbcr |= MMU_DESCRIPTOR_TTBCR_PD0;}#ifdef LOSCFG_KERNEL_VM/* from armv7a arm B3.10.4, we should do synchronization changes of ASID and TTBR. */
⑷  OsArmWriteContextidr(LOS_GetKVmSpace()->archMmu.asid);ISB;
#endifOsArmWriteTtbr0(ttbr);ISB;OsArmWriteTtbcr(ttbcr);ISB;
#ifdef LOSCFG_KERNEL_VMif (archMmu) {OsArmWriteContextidr(archMmu->asid);ISB;}
#endif
}

小结

本文介绍了ARM CP15协处理器的知识,接着介绍下协处理器相关的汇编指令,最后分析下MMU相关汇编代码。

如果大家想更加深入的学习 OpenHarmony 开发的内容,不妨可以参考以下相关学习文档进行学习,助你快速提升自己:

OpenHarmony 开发环境搭建:https://qr18.cn/CgxrRy

《OpenHarmony源码解析》:https://qr18.cn/CgxrRy

  • 搭建开发环境
  • Windows 开发环境的搭建
  • Ubuntu 开发环境搭建
  • Linux 与 Windows 之间的文件共享
  • ……

系统架构分析:https://qr18.cn/CgxrRy

  • 构建子系统
  • 启动流程
  • 子系统
  • 分布式任务调度子系统
  • 分布式通信子系统
  • 驱动子系统
  • ……

OpenHarmony 设备开发学习手册:https://qr18.cn/CgxrRy

在这里插入图片描述

OpenHarmony面试题(内含参考答案):https://qr18.cn/CgxrRy

写在最后

  • 如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:
  • 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。
  • 关注小编,同时可以期待后续文章ing🚀,不定期分享原创知识。
  • 想要获取更多完整鸿蒙最新学习资源,请移步前往小编:https://qr21.cn/FV7h05

http://www.khdw.cn/news/1673.html

相关文章:

  • 产品互联网做推广做什么网站好内蒙古最新消息
  • 国内建站公司淮安网站seo
  • 网站建设工作分解网页是怎么制作的
  • 网站开发专业公司有哪些软文营销策划
  • 静海网站建设广州网站seo推广
  • wordpress万年历插件上海关键词优化报价
  • 备案的网站名称写什么百度做广告推广怎么样
  • 义乌城市投资建设集团网站淄博seo
  • 网店运营都要做什么汕头seo网络推广服务
  • html5公司网站源码网站怎么做的
  • 番禺网站建设设计公司产品推广文案
  • 郑州网站建设+论坛国家税务总局网
  • 渠道销售优化网站有哪些方法
  • 深圳外贸公司哪里集中seo百度发包工具
  • php网站开发薪资企业培训权威机构
  • 做销售的网站深圳网络推广建站
  • 做暧昧在线网站百度代理推广
  • 汕头市网络科技有限公司seo优化网站排名
  • 没有rss源的网站如何做rss订阅网站建站系统
  • 重庆网站公司百度一下官方网
  • 网页设计心得体会100成都谷歌seo
  • 重庆建站模板源码整合营销包括哪三方面
  • 怎么申请pc网站域名网络软文发布
  • 电子商务做什么的曲靖seo
  • 网站开发工具发展史百度官网登录入口手机版
  • 想自己做个网站在哪里做游戏推广员是做什么的
  • 沙漠风网站建设怎么样百度目前的推广方法
  • 网站案例分析色盲测试图
  • 乡镇可以做门户网站百度集团总部在哪里
  • 删除百度收录的网站线下宣传渠道和宣传方式