历史上的今天
今天是: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 }
史海拾趣
|
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监控系统应用进入实质阶段。监控系统前端设备,模拟产品还占大部分市场,从系统本身结构来看,目前监控系统几乎完全进入网络世界,因为现在不要求远程联网的项目已经比较少了。从市 ...… 查看全部问答> |
|
Hplips LPC 2214 ISP下载的上位机程序谁有???? Hplips LPC 2214 ISP下载的上位机程序谁有? 能不能给我个Demo Email:zengkun258@126.com… 查看全部问答> |
|
系统是IXP425做主处理器,外挂了2个网口,分别接NPEA、B,接口方式MII,PHy用的是SMSC的 LAN8700问题:如果我把PHY配置成10M的,通过PC ping我的板子,没有问题,下载也没有问题。但是把PHY配置成100M,PC就ping不通板子,板子当然也pin ...… 查看全部问答> |
|
现在要做一个项目,开发工具是EVC,PDA系统是WCE.NET 5.0,PDA上有CDMA无线通讯模块,我想实现PDA远程访问ACCESS数据库,请问前辈们具体要哪些数据库开发工具和步骤。有开发过的同志指点一二,在此不盛感谢。sqlce可以访问access数据库吗?… 查看全部问答> |
|
大家好!我们现在正在开发一套会员管理系统,需要使用射频读写器读写非接触式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 ...… 查看全部问答> |
|
随着人民日常工作和生活对网络的不断深入应用,如果没有网络,将会带来很大的不便利,为了能更方面的应用,无线网络的应用显得更加的便利。 当一些新安装网络的用户,直接选用高功率模块作为无线路由器,可以为一些普通家庭用户,提 ...… 查看全部问答> |




