在lib_blackfin/board.c中有一个函数:
void init_cplbtables(void)
{
     volatile uint32_t *ICPLB_ADDR, *ICPLB_DATA;
     volatile uint32_t *DCPLB_ADDR, *DCPLB_DATA;
     uint32_t extern_memory;
     size_t i;
     void icplb_add(uint32_t addr, uint32_t data)
     {
         *(ICPLB_ADDR + i) = addr;
         *(ICPLB_DATA + i) = data;
     }
     void dcplb_add(uint32_t addr, uint32_t data)
     {
         *(DCPLB_ADDR + i) = addr;
         *(DCPLB_DATA + i) = data;
     }
}
在这里它将icplb_add和dcpld_add这两个函数放到了init_cplbtables函数里面,而这在VDSP中是不允许的,因此将其提取到外面来。
static volatile uint32_t *ICPLB_ADDR, *ICPLB_DATA;
static volatile uint32_t *DCPLB_ADDR, *DCPLB_DATA;
static size_t g_iIndex;
static void icplb_add(uint32_t addr, uint32_t data)
{
     *(ICPLB_ADDR + g_iIndex) = addr;
     *(ICPLB_DATA + g_iIndex) = data;
}
static void dcplb_add(uint32_t addr, uint32_t data)
{
     *(DCPLB_ADDR + g_iIndex) = addr;
     *(DCPLB_DATA + g_iIndex) = data;
}
void init_cplbtables(void)
{
     uint32_t extern_memory;
     /* populate a few common entries ... we'll let
      * the memory map and cplb exception handler do
      * the rest of the work.
      */
     g_iIndex = 0;
     ICPLB_ADDR = (uint32_t *)ICPLB_ADDR0;
     ICPLB_DATA = (uint32_t *)ICPLB_DATA0;
     DCPLB_ADDR = (uint32_t *)DCPLB_ADDR0;
     DCPLB_DATA = (uint32_t *)DCPLB_DATA0;
     icplb_add(0xFFA00000, L1_IMEMORY);
     dcplb_add(0xFF800000, L1_DMEMORY);
     ++g_iIndex;
     icplb_add(CFG_MONITOR_BASE & CPLB_PAGE_MASK, SDRAM_IKERNEL);
     dcplb_add(CFG_MONITOR_BASE & CPLB_PAGE_MASK, SDRAM_DKERNEL);
     ++g_iIndex;
     /* If the monitor crosses a 4 meg boundary, we'll need
      * to lock two entries for it.
      */
     if ((CFG_MONITOR_BASE & CPLB_PAGE_MASK) != ((CFG_MONITOR_BASE + CFG_MONITOR_LEN) & CPLB_PAGE_MASK)) {
         icplb_add((CFG_MONITOR_BASE + CFG_MONITOR_LEN) & CPLB_PAGE_MASK, SDRAM_IKERNEL);
         dcplb_add((CFG_MONITOR_BASE + CFG_MONITOR_LEN) & CPLB_PAGE_MASK, SDRAM_DKERNEL);
         ++g_iIndex;
     }
     icplb_add(0x20000000, SDRAM_INON_CHBL);
     dcplb_add(0x20000000, SDRAM_EBIU);
     ++g_iIndex;
     /* Add entries for the rest of external RAM up to the bootrom */
     extern_memory = 0;
#ifdef CONFIG_DEBUG_NULL_PTR
     icplb_add(extern_memory, (SDRAM_IKERNEL & ~PAGE_SIZE_MASK) | PAGE_SIZE_1KB);
     dcplb_add(extern_memory, (SDRAM_DKERNEL & ~PAGE_SIZE_MASK) | PAGE_SIZE_1KB);
     ++g_iIndex;
     icplb_add(extern_memory, SDRAM_IKERNEL);
     dcplb_add(extern_memory, SDRAM_DKERNEL);
     extern_memory += CPLB_PAGE_SIZE;
     ++g_iIndex;
#endif
     while (g_iIndex < 16 && extern_memory < (CFG_MONITOR_BASE & CPLB_PAGE_MASK)) {
         icplb_add(extern_memory, SDRAM_IGENERIC);
         dcplb_add(extern_memory, SDRAM_DGENERIC);
         extern_memory += CPLB_PAGE_SIZE;
         ++g_iIndex;
     }
     while (g_iIndex < 16) {
         icplb_add(0, 0);
         dcplb_add(0, 0);
         ++g_iIndex;
     }
}

U-boot-1.1.6-2008R1到vdsp5(bf561)的移植记录(16):*cplb_add相关推荐

  1. U-boot-1.1.6-2008R1到vdsp5(bf561)的移植记录(18):const

       在u-boot-1.1.6-2008R1/cpu/blackfin/traps.c中定义了一个数组: /* The purpose of this map is to provide a map ...

  2. 瑞萨单片机iap串口升级boot程序与app程序合并的工程构建-学习记录

    MCU型号: R7F0C004 编辑软件:CS+ for CC boot区程序地址分配:0x0000-0x1ffff app区程序地址分配: 0x2000-0xfffff 复制一份常规的app程序,然 ...

  3. Spring Boot AOP 扫盲,实现接口访问的统一日志记录

    AOP 是 Spring 体系中非常重要的两个概念之一(另外一个是 IoC),今天这篇文章就来带大家通过实战的方式,在编程猫 SpringBoot 项目中使用 AOP 技术为 controller 层 ...

  4. 初学SNMP,在spring boot 下使用snmp4j 做本地测试调通的记录

    一.SNMP概念学习参考这篇 Snmp学习总结(七)--SNMP4J介绍 - 孤傲苍狼 - 博客园 (cnblogs.com) 二.SNMP协议深入学习(不想了解的可跳过)  聊聊SNMP协议 - C ...

  5. Spring Boot 2.4.5、2.3.10 发布

    前几天刚给大家介绍过Spring Framework 5.3.6的最新发布内容(Spring Framework 5.3.6.5.2.14 发布) 今天就给大家介绍Spring Boot 2.4.5 ...

  6. Spring Boot-Spring Tool Suit + Gradle 构建第一个Spring Boot 项目01

    文章目录 概述 使用Spring Tool Suite构建Spring Boot项目 下载STS 插件安装 搭建第一个Spring Boot项目 启动项目 概述 通常,构建一个Spring Boot项 ...

  7. 基于Spring Boot配置文件的日志记录示例样本

    我们希望在Spring Boot中为不同的配置文件使用不同的日志记录配置,例如在本地运行中,我们只希望控制台日志记录和用于生产,我们希望文件记录日志支持每天滚动日志文件. 我想出了一个示例logbac ...

  8. 基于Spring Boot Profile的日志记录示例样本

    我们希望在Spring Boot中为不同的配置文件使用不同的日志记录配置,例如在本地运行中,我们只希望控制台日志记录和用于生产,我们希望文件记录日志支持每天滚动日志文件. 我提出了一个示例logbac ...

  9. OpenShift DIY:使用Gradle构建Spring Boot / Undertow应用程序

    由于此bug, Gradle 1.6是在OpenShift上运行的最后一个受支持的Gradle版本. 但是从Gradle 2.2开始,这不再是问题,因此使用自己动手做墨盒在OpenShift上运行最新 ...

最新文章

  1. MIT提出Liquid机器学习系统,可像液体一样适应动态变化
  2. JVM 调优 —— 新生代 Survivor 空间不足
  3. mysql输入select now()_mysql 中select now(); 是怎么执行的?没有指定FROM tablename?
  4. 自动生成requirements.txt
  5. app配置智能硬件的解决方案
  6. tsql是mysql中的吗_Mysql中的sql是如何执行的
  7. Filezilla软件
  8. iOS 14.5 目前已經發布了8 個測試版更新
  9. python输出一棵树_如何用Python画一棵树
  10. Python实现太极图案
  11. 拯救者笔记本 除尘后 开机蓝屏
  12. JavaScript多线程编程
  13. 计算机内存错误 要降频,win7系统出现内存自动降频的解决方法
  14. 使用Java写文件不覆盖原有内容
  15. 湖南中医药大学成考2022年下学期网络课程学习与考试工作安排
  16. L1-040. 最佳情侣身高差
  17. 基于JAVA某日杂商店进销存管理系统设计计算机毕业设计源码+数据库+lw文档+系统+部署
  18. 0-1整数规划的LINGO求解
  19. 项目Ⅱ-注册页面的完成
  20. 四大Hybrid App移动开发平台对比

热门文章

  1. Ubuntu 安装 亿图
  2. lol盒子皮肤工具 v1.33 免费版
  3. 股指期权最新消息 股指期权怎么交易?
  4. 财经职业技能测试的软件,财经商贸类(定)单独招生职业技能测试大纲.doc
  5. netsuite与首信易支付(v4.3)接口
  6. 为何SAP适合纺织行业解决方案
  7. 从环境工具到海量存储基础(微博新兵训练营课程)
  8. 广告联盟 网站/频道排名
  9. c语言测试题chart *p=quot;abcdefghquot;,c语言练习试题库
  10. vue cms模板 支持主题风格切换、换肤