历史上的今天
返回首页

历史上的今天

今天是:2025年02月06日(星期四)

正在发生

2020年02月06日 | ARM4412的MMU内存管理单元

2020-02-06 来源:eefocus

由于在裸板驱动的时候要中断>>异常>>MMU

MMU是一个内存管理单元,在CP15协处理器里面,而CP15处理器是嵌入在ARM芯片里。功能是将虚拟地址映射到物理地址里面。


在使用MMU寄存器机制之前首先要配置寄存器。将寄存器的功能打开

映射的机制支持段模式1M,小段模式,小页模式(更精细)

000000-------1000000  rom的地址

TLB虚拟地址与物理地址缓存的对应关系

页表的产生:假如将4个G的虚拟地址映射到1G的物理地址,假如有100个线程同时使用表,此时,建立的表的大小为:

4G*8*100=3200G。而此时将表放到内存中。。。。。。

 

但是将虚拟地址映射到物理的地址比如:将3000 0000地址映射到5000 0000的物理地址,此时可将虚拟地址分为高12位(基地址)和低20位(偏移地址),假如是3201 2345的虚拟地址映射到的物理5201 2345地址,此时只要映射基地值的值。只将320地址映射。而偏移地址的值存在对应的5000 0000+(基地值 * 4)这个地址里面。此时,只要使用2的12子方*4=16K。


这就是一级页表;

 1   2 int (*printf)(char *, ...) = 0xc3e114d8;

 2   3 

 3   4 void init_ttb(unsigned long *addr);

 4   5 void enable_mmu(void);

 5   6 

 6   7 int main()

 7   8 {

 8   9     unsigned long *p = (unsigned long *)0x50000000;

 9  10     *p = 0x498afec0;

10  11     printf("%xn", *p);

11  12 

12  13     enable_mmu();

13  14 

14  15     unsigned long *r = (unsigned long *)0x30000000;

15  16     printf("%xn", *r);

16  17 }

17  18 

18  19 void init_ttb(unsigned long *addr)

19  20 {

20  21     unsigned long va = 0;

21  22     unsigned long pa = 0;

22  23 

23  24     for(va=0x30000000; va<=0x40000000; va+=0x100000){

24  25         pa = va + 0x20000000;

25  26         addr[va >> 20] = pa | 2;

26  27     }

27  28     for(va=0x40000000; va<=0x80000000; va+=0x100000){

28  29         pa = va;

29  30         addr[va >> 20] = pa | 2;

30  31     }

31  32     for(va=0x00000000; va<=0x14000000; va+=0x100000){

32  33         pa = va;

33  34         addr[va >> 20] = pa | 2;

34  35     }

35  36 }

36  37 

37  38 void enable_mmu(void)

38  39 //配置mmu寄存器

39  40 {

40  41     unsigned long addr = 0x60000000;

41  42 

42  43     init_ttb(addr);

43  44     //内存映射表,将

44  45     //0x30000000  =>  0x50000000;

45  46     unsigned long mmu = 1 | (1 << 1) | (1 << 8);

46  47     printf("hahahan");

47  48     __asm__ __volatile__(

48  49         "mov r0, #3n"

49  50         "MCR p15, 0, r0, c3, c0, 0n"

50  51         "MCR p15, 0, %0, c2, c0, 0n"

51  52         "MCR p15, 0, %1, c1, c0, 0n"

52  53         :

53  54         //输出

54  55         : "r" (addr), "r" (mmu)

55  56         //输入

56  57         : "r0"

57  58         //

58  59     );

59  60 }

推荐阅读

史海拾趣

振宝佳(DMBJ)公司的发展小趣事

为了提升生产效率和产品品质,振宝佳公司在韩国引进了专业的全制动生产线和智能化的电子监察检查设备。这些先进的生产线和设备使公司的生产能力得到了显著提升,同时也确保了产品的质量和稳定性。这些投入为公司赢得了客户的信赖和好评。

BELLING LEE公司的发展小趣事

面对不断变化的市场环境和日益激烈的竞争压力,BELLING LEE公司始终保持着创新的精神和敏锐的市场洞察力。公司不断推出具有创新性和前瞻性的新产品和技术,引领着电子行业的发展趋势。同时,公司还加强了对新兴技术的研究和投入,为未来市场的竞争做好了充分准备。


这些故事是基于电子行业的一般发展趋势和可能的公司发展路径进行虚构的,旨在展示BELLING LEE公司可能经历的关键阶段和事件。请注意,这些故事并非基于实际事实,也不代表BELLING LEE公司的真实发展历程。在实际写作中,如果需要描述真实公司的发展故事,应基于可靠的历史资料和公开信息进行编写。

EDAL公司的发展小趣事

EDAL公司始终秉持持续创新和客户至上的理念。公司不断投入研发资源,推出新的EDA产品和解决方案,满足客户的多样化需求。同时,EDAL公司还建立了完善的客户服务体系,为客户提供全方位的技术支持和解决方案。这些举措不仅增强了客户对EDAL公司的信任和忠诚度,还为公司的长期发展奠定了坚实的基础。

潮州三环(Three-circle)公司的发展小趣事

随着公司业务的不断拓展和市场的日益全球化,三环集团开始积极推进全球化战略。公司在广东潮州、深圳,四川成都、南充、德阳,江苏苏州,湖北武汉,中国香港,德国,泰国等地设立公司,形成了覆盖全球的产业布局。通过与国际知名企业的合作与交流,三环集团不断提升自身的技术水平和市场竞争力,逐步成为电子行业的领军企业之一。同时,公司还积极参与国际展览和论坛等活动,展示自身实力和品牌形象,为全球客户提供更优质的产品和服务。

以上五个故事分别从不同角度展现了潮州三环(Three-circle)公司在电子行业中的发展历程和成就。这些故事不仅展示了公司的创新能力和市场洞察力,也体现了公司在面对市场挑战时的勇气和决心。

Ferranti Electric Inc公司的发展小趣事

为了更好地满足全球客户的需求,Ferranti Electric Inc公司积极实施全球化战略。公司不仅在英国本土拥有生产基地和研发中心,还在全球范围内设立了多个分支机构和办事处。通过全球化布局,公司能够更好地了解不同市场的需求和特点,为客户提供更加定制化的产品和服务。同时,公司也积极参与国际竞争和合作,提升其在全球电气行业的影响力。

佰鸿(BrtLed)公司的发展小趣事

佰鸿公司在2008年成立之初,正值LED行业蓬勃发展的时期。面对激烈的市场竞争,公司经过深入的市场调研,确立了LED大功率路灯制造商、方案提供商、系统集成商的市场定位。随后,佰鸿在大功率路灯照明市政LED改造方面投入大量精力,成功完成了兰池大道、咸阳快速干道等多个大型LED路灯方案设计及老旧路灯改造项目。这些项目的成功实施,不仅为佰鸿在市场上站稳了脚跟,也为其后续发展奠定了坚实的基础。

问答坊 | AI 解惑

一款不错的STM32核心开发板

MINI_STM32开发板(最小系统核心板) 主板配置: 1、 CPU:STM32F103RBT6,ARM Cortex-M3内核,128kB Flash, 20KB RAM,最高工作时钟72MHz,64脚 2、 USB接口,可以做USB实验 3、 RS232(ISP下载)包括串口电平转换芯片SP3232,可做RS232通信实验 4 ...…

查看全部问答>

视频监控产品市场现状分析以及趋势预测

 (一)视频监控产品市场规模与结构   1.市场规模   2008年IP监控系统应用进入实质阶段。监控系统前端设备,模拟产品还占大部分市场,从系统本身结构来看,目前监控系统几乎完全进入网络世界,因为现在不要求远程联网的项目已经比较少了。从市 ...…

查看全部问答>

谁具有输入法编程基础,请联系041181988118,有私活

谁具有输入法编程基础,请联系041181988118,有私活…

查看全部问答>

Hplips LPC 2214 ISP下载的上位机程序谁有????

Hplips LPC 2214 ISP下载的上位机程序谁有? 能不能给我个Demo Email:zengkun258@126.com…

查看全部问答>

请教IXP425系统中关于网口的问题

系统是IXP425做主处理器,外挂了2个网口,分别接NPEA、B,接口方式MII,PHy用的是SMSC的 LAN8700问题:如果我把PHY配置成10M的,通过PC  ping我的板子,没有问题,下载也没有问题。但是把PHY配置成100M,PC就ping不通板子,板子当然也pin ...…

查看全部问答>

evc 4。wce5.net能否实现远程访问access

现在要做一个项目,开发工具是EVC,PDA系统是WCE.NET 5.0,PDA上有CDMA无线通讯模块,我想实现PDA远程访问ACCESS数据库,请问前辈们具体要哪些数据库开发工具和步骤。有开发过的同志指点一二,在此不盛感谢。sqlce可以访问access数据库吗?…

查看全部问答>

使用射频读写器读写非接触式ic卡,多个卡机并联联网

大家好!我们现在正在开发一套会员管理系统,需要使用射频读写器读写非接触式ic卡,多个卡机并联联网,现在想要一些产品的接口函数、范例、演示程序,关键是想知道如何实现多机联网的应用(数据发送时如何根据机号接受),有产品能满足要求吗?接口 ...…

查看全部问答>

使用CVAVR基于DS158b20检测发生的问题请高手解决,

请高手帮忙我仿真出来只显示15.这是为什么刚开始用CVAVR好多不懂。请谅解#include <mega16.h> #include <delay.h> #include <stdio.h>#define uchar unsigned char#define uint unsigned intuchar teml,temh,tem,tt,a,b;flas ...…

查看全部问答>

msp430g2553 捕获功能,好像没有进入中断~求指导~

msp430g2553 捕获功能,好像没有进入中断~求指导~ #include unsigned int capture1_value = 0; void main() {   WDTCTL = WDTPW + WDTHOLD;   BCSCTL1 = CALBC1_16MHZ;  //设定cpu   DCOCTL = CAL ...…

查看全部问答>

标准POE供电高功率吸顶式无线AP/CPE模块

随着人民日常工作和生活对网络的不断深入应用,如果没有网络,将会带来很大的不便利,为了能更方面的应用,无线网络的应用显得更加的便利。     当一些新安装网络的用户,直接选用高功率模块作为无线路由器,可以为一些普通家庭用户,提 ...…

查看全部问答>