⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cache.cfg

📁 flash programming STI 5.5.1.4 DCU3
💻 CFG
字号:
## Cache control functions for the TP3 and  5500
## Used by the debugger to invalidate the I cache after setting/restoring soft breaks

## Top 2*K of INTERNAL memory segment setup for data cache
##
proc dcache_internal {

  dcache_sz = (2*K)
  dcache_addr = ((addressof -q INTERNAL) + ((sizeof -q INTERNAL) - dcache_sz))
  memory DCACHE (dcache_addr) (dcache_sz) RESERVED
}

proc CacheControl5500  {
  if ($1=="-iinvalidate") {
    poke -device 0x4300 1
  } else if ($1=="-ienable") {
    ctrl = peek -q -d 0x4100
    poke -d 0x4100 ((ctrl) | 2 )
  } else if ($1=="-idisable") {
    ctrl = peek -q -d 0x4100 
    poke -d 0x4100 ((ctrl) & (~2) )
  } else if ($1=="-denable") {
    ctrl = peek -q -d 0x4100 
    poke -d 0x4100 ((ctrl) | 1 )
  } else if ($1=="-ddisable") {
    ctrl = peek -q -d 0x4100 
    poke -d 0x4100 ((ctrl) & (~1) )
  } else if ($1=="-dinvalidate") {
    poke -d 0x4200 1
  } else if ($1=="-dflush") {
    poke -d 0x4400 1 
  } else if ($1=="-lock") {
    poke -d 0x4500 1 
  }
}

proc CacheControlTP3 {
  if ($1=="-iinvalidate") {
    poke -device 0x4800 1
  } else if ($1=="-ienable") {
    poke -d 0x4700 1
  } else if ($1=="-idisable") {
    poke -d 0x4700 0
  } else if ($1=="-denable") {
    poke -d 0x4400 1
  } else if ($1=="-ddisable") {
    poke -d 0x4400 0
  } else if ($1=="-dinvalidate") {
    poke -d 0x4500 1
  } else if ($1=="-dflush") {
    poke -d 0x4600 1 
  } else if ($1=="-lock") {
    poke -d 0x4a00 1 
  }
}

proc CacheControlDC1 {
  if ($1=="-iinvalidate") {
    poke -device 0x20000610 1
  } else if ($1=="-ienable") {
    ;
  } else if ($1=="-idisable") {
    ;    
  } else if ($1=="-denable") {
    ;    
  } else if ($1=="-ddisable") {
    ;    
  } else if ($1=="-dinvalidate") {
    ;
  } else if ($1=="-dflush") {
    ;
  } else if ($1=="-lock") {
    ;
  }
}

proc CacheControlC200 
  ICacheControlAddr=0x30004000
  DCacheControlAddr=0x30005000
  CacheControlEnable=0x0
  CacheControlLock=0x4
  CacheControlInvalidate=0x10
  CacheControlFlush=0x14 {

  if ($1=="-iinvalidate") {
    poke -device (ICacheControlAddr + CacheControlInvalidate) 0x1
  } else if ($1=="-ienable") {
    poke -device (ICacheControlAddr + CacheControlEnable) 0x1
  } else if ($1=="-idisable") {
    poke -device (ICacheControlAddr + CacheControlEnable) 0x0
  } else if ($1=="-denable") {
    poke -device (DCacheControlAddr + CacheControlEnable) 0x1
  } else if ($1=="-ddisable") {
    poke -device (DCacheControlAddr + CacheControlEnable) 0x0
  } else if ($1=="-dinvalidate") {
    poke -device (DCacheControlAddr + CacheControlInvalidate) 0x1
  } else if ($1=="-dflush") {
    poke -device (DCacheControlAddr + CacheControlFlush) 0x1
  } else if ($1=="-lock") {
    ## I presume lock applies to both ICache and DCache ???
    poke -device (ICacheControlAddr + CacheControlLock) 0x1
    poke -device (DCacheControlAddr + CacheControlLock) 0x1
  }
}

proc CacheControl {
  if (clsymbol ("CacheControlProc["+(mkstr(spaceid))+"]")) {
    eval(CacheControlProc[spaceid], $1)
  }
}

proc cachecontrol {
  if (clsymbol ("CacheControlProc["+(mkstr(spaceid))+"]")) {
    eval(CacheControlProc[spaceid], $1)
  }
}

addhelp cachecontrol "See CacheControl\n"

addhelp CacheControl \
"CacheControl -ienable -idisable -iinvalidate -denable -ddisable -dinvalidate -dflush -lock\n\
   control intruction and data caches\n\
   -ienable     enable I cache\n\
   -idisable    disable I cache\n\
   -iinvalidate invalidate I cache\n\
   -denable     enable D cache\n\
   -ddisable    disable D cache\n\
   -dinvalidate invalidate D cache\n\
   -dflush      flush D cache\n\
   -lock        lock configuration registers\n"



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -