主题 : 请教6410  EBOOT  Startup.s  MMU初始化 复制链接 | 浏览器收藏 | 打印
13f
级别: 新手上路
UID: 53926
精华: 0
发帖: 16
金钱: 80 两
威望: 16 点
综合积分: 32 分
注册时间: 2011-08-19
最后登录: 2017-09-14
楼主  发表于: 2012-11-22 18:13

 请教6410  EBOOT  Startup.s  MMU初始化

请教6410  EBOOT  Startup.s  MMU初始化

    ; The page tables and exception vectors are setup.
        ; Initialize the MMU and turn it on.
        mov          r1, #1
        mcr          p15, 0, r1, c3, c0, 0     ; setup access to domain 0
        mcr          p15, 0, r10, c2, c0, 0

        mcr          p15, 0, r0, c8, c7, 0     ; flush I+D TLBs

        mrc        p15, 0, r1, c1, c0, 0
        orr          r1, r1, #0x0071          ; Enable MMU
        orr          r1, r1, #0x0004          ; Enable the Data Cache


;  ----- TURN ON 4 LED  OK------------
      
      ldr            r0, =VirtualStart    
      cmp         r0, #0                    ; make sure no stall on "mov pc,r0" below
      mcr          p15, 0, r1, c1, c0, 0
      mov          pc, r0                    ; & jump to new virtual address
      nop

        ; MMU & caches now enabled.
        ;   (r10) = physcial address of 1st level page table

    
;-----------------------------------------------
;     MMU Enabled and Virtual Address is Valid from here
;-----------------------------------------------
VirtualStart
;--------------------------------------------------
;     Initialize Stack
;     Stack size and location information is in "image_cfg.inc"
;--------------------------------------------------

      mrs          r0, cpsr
      bic          r0, r0, #Mode_MASK
      orr          r1, r0, #Mode_IRQ | NOINT
      msr         cpsr_cxsf, r1                        ; IRQMode
      ldr          sp, =IRQStack_VA               ; IRQStack

     bic          r0, r0, #Mode_MASK | NOINT
     orr           r1, r0, #Mode_SVC
     msr         cpsr_cxsf, r1                       ; SVCMode
     ldr           sp, =SVCStack_VA               ; SVCStack


   ;----TURN ON 4 LED ,  LED不会亮... 估计跑飞了...
        
     ldr r1, =0x7F008800      ;GPKCON0 GPK0-GPK7
     ldr r2, =0x11111111      ;OUTPUT
     str r2, [r1]

     ldr r1, =0x7F008808   ;GPKDAT      
     ldr r2, =0x0000            
     str r2, [r1]
    
     ldr r1, =0x7F00880C    ;GPKPUD  
     ldr r2, =0x00000000  
     str r2, [r1]      

;------------------------------------
;     Jump to Main() "C" Routine
;------------------------------------  
        b          main
        b          .      ; Should no be here...      

--------------------------------------------------------------------------
若没执行底下这段码.  LED有亮.可跳到MAIN.C 正常执行.
但是mmu, data cache, icache 有打开了.执行换图1024x600速度仍然不快.是因为没用虚拟地址(VA)吗?
   ldr            r0, =VirtualStart    
      cmp         r0, #0                    ; make sure no stall on "mov pc,r0" below
      mcr          p15, 0, r1, c1, c0, 0
      mov          pc, r0                    ; & jump to new virtual address
      nop

若要让4颗LED亮, 该怎么处理呢?
[ 此帖被13f在2012-11-23 17:56重新编辑 ]
13f
级别: 新手上路
UID: 53926
精华: 0
发帖: 16
金钱: 80 两
威望: 16 点
综合积分: 32 分
注册时间: 2011-08-19
最后登录: 2017-09-14
1楼  发表于: 2012-11-29 15:45

 Re:请教6410 EBOOT Startup.s MMU初始化

这几天试出了结果.eboot  start.s程序是没问题.
不过底下设置sp 好像有问题,挪除后就可正常动作,
跳到main.c

    mrs        r0, cpsr
      bic          r0, r0, #Mode_MASK
      orr          r1, r0, #Mode_IRQ | NOINT
      msr       cpsr_cxsf, r1                        ; IRQMode
      ldr          sp, =IRQStack_VA               ; IRQStack

     bic          r0, r0, #Mode_MASK | NOINT
     orr           r1, r0, #Mode_SVC
     msr         cpsr_cxsf, r1                        ; SVCMode
     ldr           sp, =SVCStack_VA               ; SVCStack

若是改插入以前2440的写法,也可正常执行跳到main.c
ldr    sp, =0x54000000
    mov    fp, #0            
    mov    a2, #0    

目前接1024x600的屏, 连续切换图片.速度还是一整个慢阿..完全无法和2440比…
一样是裸奔开启mmu,i-cache,d-cache, 2440跑400MHz接1280*800的屏,
换画面是瞬间就整页换过去, 6410仍然可见由上往下循序慢慢将资料扫完.
是6410的mmu,i-cache,d-cache没正确开启或lcd控制器的2D加速要打开吗?
但是2440没有2D加速就很快.
希望大侠指点迷津… 不然6410裸奔跑这么慢..实在虚阿…
我板子是用tiny6410 , 软件ADS1.2
Main.c
while(1){
      Paint_Bmp(0,0,1024,600,pic1);
      Paint_Bmp(0,0,1024,600,pic2);          
       }