免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4114 | 回复: 3
打印 上一主题 下一主题

[BootLoader] 开启MMU之前使能Dcache [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-05-25 18:52 |只看该作者 |倒序浏览
本帖最后由 ptostrike 于 2013-05-25 18:59 编辑

看到TQ2440的u-boot有以下代码:
  1. int board_init (void)
  2. {
  3.         S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();

  4.         /* set up the I/O ports */
  5.         gpio->GPACON = 0x007FFFFF;
  6.         gpio->GPBCON = 0x00055555;
  7.         gpio->GPBUP = 0x000007FF;
  8.         gpio->GPCCON = 0xAAAAAAAA;
  9.         gpio->GPCUP = 0x0000FFFF;
  10.         gpio->GPDCON = 0xAAAAAAAA;
  11.         gpio->GPDUP = 0x0000FFFF;
  12.         gpio->GPECON = 0xAAAAAAAA;
  13.         gpio->GPEUP = 0x0000FFFF;
  14.         gpio->GPFCON = 0x000055AA;
  15.         gpio->GPFUP = 0x000000FF;
  16.         gpio->GPGCON = 0xFF94FFBA;
  17.         gpio->GPGUP = 0x0000FFEF;
  18.         gpio->GPGDAT = gpio->GPGDAT & ((~(1<<4)) | (1<<4)) ;
  19.         gpio->GPHCON = 0x002AFAAA;
  20.         gpio->GPHUP = 0x000007FF;
  21.         gpio->GPJCON = 0x02aaaaaa;
  22.         gpio->GPJUP = 0x00001fff;

  23. //        S3C24X0_I2S * const i2s = S3C24X0_GetBase_I2S();        //HJ_add 灞忚斀IIS,
  24. //        i2s->IISCON = 0x00;                                        //HJ_add 灞忚斀IIS,

  25.         /* arch number of TQ2440-Board */
  26.         gd->bd->bi_arch_number = MACH_TYPE_S3C2440;

  27.         /* adress of boot parameters */
  28.         gd->bd->bi_boot_params = 0x30000100;

  29.         icache_enable();
  30.         dcache_enable();

  31.         return 0;
  32. }

  33. /* It makes no sense to use the dcache if the MMU is not enabled */
  34. void dcache_enable (void)
  35. {
  36.         ulong reg;

  37.         reg = read_p15_c1 ();
  38.         cp_delay ();
  39.         write_p15_c1 (reg | C1_DC);
  40. }
复制代码
调用board_init函数之前还没有启动MMU,请问各位大侠,这时候怎么就能就使能Dcache了啊?

论坛徽章:
0
2 [报告]
发表于 2013-05-27 19:41 |只看该作者
注释那句/* It makes no sense to use the dcache if the MMU is not enabled */的意思是即使enable也是白费劲么。。。
所以我猜测,应该是开了dcache但是在mmu开启之前是不会去用它的。。。

论坛徽章:
0
3 [报告]
发表于 2013-05-27 22:42 |只看该作者
回复 2# 蝌蚪果酱

这也正是我疑惑的地方,我的理解是,一旦使能了Dcache,Dcache就投入使用了。
ARM的手册中并没有说:如果MMU没启用,Dcache也不会起作用。手册中只是一直强调,必须先使能MMU,才能启用Dcache。
不知道注释中It makes no sense的说法是怎么来的

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
4 [报告]
发表于 2013-06-08 19:32 |只看该作者
dcache是需要和页表搭配的,页表中要设置每个section/page是否cache和buffer
icache则是不依赖页表的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP