TMS320DM642开发之Bug1-Memory map error:READ access by cpu to address 0x1b3f018(Device Config Space)which is not supported in simulator
load程序到DM642开发板上之后,点击了run按钮出现了如下的错误:
Memory map error:READ access by cpu to address 0x1b3f018(Device Config Space)which is not supported in simulator
我检查了CMD文件应该是没有问题的,CMD代码内容如下:
/*
* Copyright (C) 2004 SEED Incorporated
* All Rights Reserved
*/
/*
*---------timer1.cmd---------
*
*/
-l.\lib\cslDM642.lib
-l.\lib\rts6400.lib
MEMORY
{
L2 : o = 00000400h l = 0003fb00h /* all SRAM ,L2,为DSP片内存储器,是第2级存储器
[第一级存储器包括独立的程序Cach(L1P)和数据Cach(L1D) ],它是一个统一的空间,
部分程序和数据,统称为L2,可以作为普通的SRAM映射到存储空间 */
CE01: o = 80000000h l = 00100000h /* external memory */
CE02: o = 80100000h l = 00f000000h /* external memory */
} SECTIONS
{
.cinit > L2 /*初始化变量和常数表*/
.text > L2 /*可执行代码段的映射*/
.stack > L2 /*为系统堆栈分配存储器。该段用于将变量传递至函数或者用来分配局部变量*/
.bss > L2 /*保留全局和静态变量空间。在启动和导入的时候,C/C++编译器会
会启动程序将.cint段中的数据复制出来,以初始化.bss段中的变量*/
.const > L2 /*包含由C/C++限定词const定义的字符常量和数据*/
.data > L2 /*初始化数据段*/
.far > L2 /*供外部文件调用的变量*/
.switch > L2 /*控制语句段映射*/
.sysmem > L2 /*初始化系统空间*/
.tables > L2 /*初始化数据表*/
.cio > L2 /*io口*/
.capChaAYSpace> CE01
.capChaACbSpace> CE01
/* .capChaACbSpace> L2*/
/* .capChaACrSpace> L2*/
.capChaACrSpace> CE01
.disChaAYSpace> CE02
.disChaACbSpace> CE02
.disChaACrSpace> CE02
.external > CE02 /*外部变量的初始化*/
}
这个配置应该是没有问题的,接下来我查看了工程里面的GEL文件,文件内容如下:
/*--------------------------------------------------------------*/
/* EVMDM642.gel */
/* Version 1.70 */
/* */
/* This GEL file is designed to be used in conjunction with */
/* CCS 2.20.18 and the TMS320DM642 based EVM. */
/* */
/*--------------------------------------------------------------*/ /*--------------------------------------------------------------*/
/* The StartUp() function is called each time CCS is started. */
/* Customize this function to perform desired initialization. */
/*--------------------------------------------------------------*/ StartUp()
{
setup_memory_map();
GEL_Reset();
init_emif();
} /*--------------------------------------------------------------*/
/* Setup memory map for DM642 EVM. */
/* */
/*--------------------------------------------------------------*/
setup_memory_map()
{ GEL_MapOn();
GEL_MapReset(); /* On-chip memory map */
GEL_MapAdd(0x00000000, , 0x00040000, , ); /* Internal Memory */
GEL_MapAdd(0x01800000, , 0x00000058, , ); /* EMIFA CTL REGS */
GEL_MapAdd(0x01840000, , 0x000082FC, , ); /* INT MEM CTL REGS */
GEL_MapAdd(0x018C0000, , 0x0000003C, , ); /* MCBSP0 CTL REGS */
GEL_MapAdd(0x01900000, , 0x0000003C, , ); /* MCBSP1 CTL REGS */
GEL_MapAdd(0x01940000, , 0x00000008, , ); /* TIMER0 CTL REGS */
GEL_MapAdd(0x01980000, , 0x00000008, , ); /* TIMER1 CTL REGS */
GEL_MapAdd(0x019C0000, , 0x00000008, , ); /* INT CTL REGS */
GEL_MapAdd(0x01A00000, , 0x0000FFFC, , ); /* EDMA REGS AND PARAM */
GEL_MapAdd(0x01A40000, , 0x0000003C, , ); /* MCBSP2 CTL REGS */
GEL_MapAdd(0x01A80000, , 0x00000058, , ); /* EMIFB CTL REGS */
GEL_MapAdd(0x01AC0000, , 0x00000008, , ); /* TIMER2 CTL REGS */
GEL_MapAdd(0x01B00000, , 0x00000024, , ); /* GPIO REGS */
GEL_MapAdd(0x01B3F000, , 0x00000020, , ); /* Device Configuration */
GEL_MapAdd(0x01B40000, , 0x0000003C, , ); /* I2C CTL REGS */
GEL_MapAdd(0x01B4C000, , 0x000002A0, , ); /* McASP0 CTL REGS */
GEL_MapAdd(0x01C00000, , 0x00000028, , ); /* PCI CTL REGS */
GEL_MapAdd(0x01C20000, , 0x0000000C, , ); /* PCI EEPROM REGS */
GEL_MapAdd(0x01C40000, , 0x00000270, , ); /* VP0 Control */
GEL_MapAdd(0x01C44000, , 0x00000270, , ); /* VP1 Control */
GEL_MapAdd(0x01C48000, , 0x00000270, , ); /* VP2 Control */
GEL_MapAdd(0x01C80000, , 0x00000680, , ); /* EMAC CTL REGS */
GEL_MapAdd(0x01C81000, , 0x00002000, , ); /* EMAC Wrapper */
GEL_MapAdd(0x01C83000, , 0x0000000C, , ); /* EWRAP REGS */
GEL_MapAdd(0x01C83800, , 0x00000090, , ); /* MDIO CTL REGS */
GEL_MapAdd(0x02000000, , 0x00000030, , ); /* QDMA REGS */
GEL_MapAdd(0x30000000, , 0x04000000, , ); /* MCBSP0 Data, EDMA map */
GEL_MapAdd(0x34000000, , 0x04000000, , ); /* MCBSP1 Data, EDMA map */
GEL_MapAdd(0x74000000, , 0x02000000, , ); /* VP0 Channel A Data */
GEL_MapAdd(0x76000000, , 0x02000000, , ); /* VP0 Channel B Data */
GEL_MapAdd(0x78000000, , 0x02000000, , ); /* VP1 Channel A Data */
GEL_MapAdd(0x7A000000, , 0x02000000, , ); /* VP1 Channel B Data */
GEL_MapAdd(0x7C000000, , 0x02000000, , ); /* VP2 Channel A Data */
GEL_MapAdd(0x7E000000, , 0x02000000, , ); /* VP2 Channel B Data */ /* Off-chip memory map */
GEL_MapAdd(0x80000000, , 0x02000000, , ); /* 32MB SDRAM EMIF-A, CE0*/
GEL_MapAdd(0x90000000, , 0x00080000, , ); /* 4MB Flash EMIF-A, CE1 */
GEL_MapAdd(0x90080000, , 0x00080000, , ); /* 4MB FPGA EMIF-A, CE1 */
GEL_MapAdd(0xA0000000, , 0x10000000, , ); /* EMIF-A, CE2 EXPANSION */
GEL_MapAdd(0xB0000000, , 0x10000000, , ); /* EMIF-A, CE3 EXPANSION */
} /*--------------------------------------------------------------*/
/* init_emif() */
/*--------------------------------------------------------------*/
init_emif()
{ #define EMIFA_GCTL 0x01800000
#define EMIFA_CE1 0x01800004
#define EMIFA_CE0 0x01800008
#define EMIFA_CE2 0x01800010
#define EMIFA_CE3 0x01800014
#define EMIFA_SDRAMCTL 0x01800018
#define EMIFA_SDRAMTIM 0x0180001c
#define EMIFA_SDRAMEXT 0x01800020
#define EMIFA_CE1SECCTL 0x01800044
#define EMIFA_CE0SECCTL 0x01800048
#define EMIFA_CE2SECCTL 0x01800050
#define EMIFA_CE3SECCTL 0x01800054 /* EMIFA */
*(int *)EMIFA_GCTL = 0x00052078;
*(int *)EMIFA_CE0 = 0xffffffd3; /* CE0 SDRAM */
*(int *)EMIFA_CE1 = 0x73a28e01; /* CE1 Flash + CPLD */
*(int *)EMIFA_CE2 = 0x22a28a22; /* CE2 Daughtercard 32-bit async */
*(int *)EMIFA_CE3 = 0x22a28a42; /* CE3 Daughtercard 32-bit sync */
*(int *)EMIFA_SDRAMCTL = 0x57115000; /* SDRAM control */
*(int *)EMIFA_SDRAMTIM = 0x0000081b; /* SDRAM timing (refresh) */
*(int *)EMIFA_SDRAMEXT = 0x001faf4d; /* SDRAM extended control */
*(int *)EMIFA_CE0SECCTL= 0x00000002; /* CE0 Secondary Control Reg. */
*(int *)EMIFA_CE1SECCTL= 0x00000002; /* CE1 Secondary Control Reg. */
*(int *)EMIFA_CE2SECCTL= 0x00000002; /* CE2 Secondary Control Reg. */
*(int *)EMIFA_CE3SECCTL= 0x00000073; /* CE3 Secondary Control Reg. */
} /*--------------------------------------------------------------*/
/* clear_memory_map() */
/*--------------------------------------------------------------*/
clear_memory_map()
{
GEL_MapOff();
} /*--------------------------------------------------------------*/
/* FlushCache() */
/*--------------------------------------------------------------*/
FlushCache()
{
/* Invalidate L1I and L1D */
*(int *)0x01840000 = (*(int *)0x01840000 | 0x00000300); /* Clean L2 */
*(int *)0x01845004 = 0x1;
} /*--------------------------------------------------------------*/
/* OnReset() */
/*--------------------------------------------------------------*/
OnReset(int nErrorCode)
{
init_emif();
} /*--------------------------------------------------------------*/
/* OnPreFileLoaded() */
/* This function is called automatically when the 'Load Program'*/
/* Menu item is selected. */
/*--------------------------------------------------------------*/
OnPreFileLoaded()
{
/* GEL_Reset(); -- Commented out for CCS 2.20 */
FlushCache();
IER = ;
IFR = ;
init_emif();
} /*--------------------------------------------------------------*/
/* OnRestart() */
/* This function is called by CCS when you do Debug->Restart. */
/* The goal is to put the C6x into a known good state with */
/* respect to cache, edma and interrupts. */
/* Failure to do this can cause problems when you restart and */
/* run your application code multiple times. This is different */
/* then OnPreFileLoaded() which will do a GEL_Reset() to get the*/
/* C6x into a known good state. */
/*--------------------------------------------------------------*/
OnRestart(int nErrorCode )
{
/* Turn off L2 for all EMIFA CE spaces. App should
* manage these for coherancy in the application.
* GEL_TextOut("Turn off cache segment\n");
*/
*(int *)0x1848200 = ; /* MAR0 */
*(int *)0x1848204 = ; /* MAR1 */
*(int *)0x1848208 = ; /* MAR2 */
*(int *)0x184820c = ; /* MAR3 */ /* Disable EDMA events and interrupts and clear any
* pending events.
* GEL_TextOut("Disable EDMA event\n");
*/
*(int *)0x01A0FFA8 = ; /* CIERH */
*(int *)0x01A0FFB4 = ; /* EERH */
*(int *)0x01A0FFB8 = 0XFFFFFFFF; /* ECRH */ *(int *)0x01A0FFE8 = ; /* CIERL */
*(int *)0x01A0FFF4 = ; /* EERL */
*(int *)0x01A0FFF8 = 0xFFFFFFFF; /* ECRL */ /* Disable other interrupts */
IER = ;
IFR = ;
} /*--------------------------------------------------------------*/
/* RESET MENU */
/*--------------------------------------------------------------*/
menuitem "Resets"; hotmenu Reset_BreakPts_and_EMIF()
{
GEL_BreakPtReset();
GEL_Reset();
init_emif();
} hotmenu Flush_Cache()
{
FlushCache();
} /*--------------------------------------------------------------*/
/* MEMORY MAP MENU */
/*--------------------------------------------------------------*/
menuitem "Memory Map"; hotmenu SetMemoryMap()
{
setup_memory_map();
} hotmenu ClearMemoryMap()
{
clear_memory_map();
} /*--------------------------------------------------------------*/
/* BOARD OPTIONS MENU */
/*--------------------------------------------------------------*/
menuitem "Board Options"; #define CPLD_REVISION 0x9008001F hotmenu CheckFPGARevision()
{
GEL_TextOut(" FPGA Revision %d\n","Output",,,, *(char *)CPLD_REVISION);
GEL_TextOut(" Note: Revision only valid if FGPA DONE LED is on (DS9)\n","Output",,,);
}
我的硬件的配置时 CCS3.3+SEED-DKT-VPM642+SEED-XDS560PLUS Emulator
下面是工程run过程的Message:
解决办法:
已经解决了:问题如下
1.我在CCS3.3启动的Parallel Debug Manager里面选择出了问题:
在这里我们需要选择的是C64xx XDS560 Emulator所连接的CPU_1,而不是上面的DM642 Device Functional Simulator 所连接的DM642的 模拟核,当我选择第一个Simulator的选项并打开导入工程之后建立的就是DM642的软件仿真程序而不是硬件仿真!(这个状态我们也很清楚的在CCS3.3的最上面的图表中看到为:DM642 Device Functional Simulator。所以这也是我还未能很好的使用CCS这款软件导致的。)
当我们点击编译Compile+建立Build+加载load Program+Run时出现的错误,程序被加载到了虚拟核中,但是在虚拟核上仿真DM642并不支持,所以就会出现上面的错误!
2.当我弄清楚这个问题之后,我打开了下面的Emulator的CPU_1的工程,按步骤加载并运行了程序,发现还是没能在显示器上得到我要的视频数据,后面检查了半天发现是BNC的视频输出线存在接触不良的情况导致的~(真是机缘巧合找到的原因,所以说大家也要多多注意这种硬件的问题吧!)
TMS320DM642开发之Bug1-Memory map error:READ access by cpu to address 0x1b3f018(Device Config Space)which is not supported in simulator的更多相关文章
- Android混合开发之WebView使用总结
前言: 今天修改项目中一个有关WebView使用的bug,激起了我总结WebView的动机,今天抽空做个总结. 混合开发相关博客: Android混合开发之WebView使用总结 Android混合开 ...
- 【Android UI】Android开发之View的几种布局方式及实践
引言 通过前面两篇: Android 开发之旅:又见Hello World! Android 开发之旅:深入分析布局文件&又是“Hello World!” 我们对Android应用程序运行原理 ...
- Android开发之Java必备基础
Android开发之Java必备基础 Java类型系统 Java语言基础数据类型有两种:对象和基本类型(Primitives).Java通过强制使用静态类型来确保类型安全,要求每个变量在使用之前必须先 ...
- Android开发之MdiaPlayer详解
Android开发之MdiaPlayer详解 MediaPlayer类可用于控制音频/视频文件或流的播放,我曾在<Android开发之基于Service的音乐播放器>一文中介绍过它的使用. ...
- Android Studio快速开发之道
概述 现如今开发越来越追求效率和节奏,节省出时间做更多的事情,除了开发技术上的封装等,开发工具的使用技巧也是很重要的,今天就根据自己的经验来给大家介绍一下Android Studio快速开发之道. P ...
- Android开发之Java集合类性能分析
对于Android开发者来说深入了解Java的集合类很有必要主要是从Collection和Map接口衍生出来的,目前主要提供了List.Set和 Map这三大类的集合,今天Android吧(ard8. ...
- Cocos2d-x 3.x游戏开发之旅
Cocos2d-x 3.x游戏开发之旅 钟迪龙 著 ISBN 978-7-121-24276-2 2014年10月出版 定价:79.00元 516页 16开 内容提要 <Cocos2d-x ...
- Android驱动开发之Hello实例
Android驱动开发之Hello实例: 驱动部分 modified: kernel/arch/arm/configs/msm8909-1gb_w100_hd720p-perf_defconf ...
- ArcGIS Engine开发之旅08--和查询相关的对象和接口
原文:ArcGIS Engine开发之旅08--和查询相关的对象和接口 查询在GIS领域应该是一个很频繁的操作,在GIS中除了具有属性查询(和其他关系型数据库的查询类似),还提供了空间查询.在介绍查询 ...
随机推荐
- linux云主机cpu一直很高降不下来,系统日志报nf_conntrack: table full, dropping packet.
在启用了iptables web服务器上,流量高的时候经常会出现下面的错误: ip_conntrack: table full, dropping packet 这个问题的原因是由于web服务器收到了 ...
- 深入Golang调度器之GMP模型
前言 随着服务器硬件迭代升级,配置也越来越高.为充分利用服务器资源,并发编程也变的越来越重要.在开始之前,需要了解一下并发(concurrency)和并行(parallesim)的区别. 并发: 逻 ...
- 洛谷P3676 小清新数据结构题 [动态点分治]
传送门 思路 这思路好妙啊! 首先很多人都会想到推式子之后树链剖分+线段树,但这样不够优美,不喜欢. 脑洞大开想到这样一个式子: \[ \sum_{x} sum_x(All-sum_x) \] 其中\ ...
- gulp.基础
1.安装 全局安装 npm install --global gulp 作为项目的开发依赖安装 npm install gulp --save-dev 2.在根目录下创建一个名为gulpfile.js ...
- 使用 mod_rewrite 来修改 Confluence 6 的 URLs
备注:这个页面的文档是 Apache 的配置,而不是 Confluence 自己的配置.Atlassian 将会对 Confluence 的配置提供支持,但是我们不能保证能够对你所有在配置 Apach ...
- Confluence 6 配置白名单
Confluence 管理员可以通过添加 URLs 到白名单选择出入的链接和使用 RSS 宏,HTML 包含宏和小工具中的内容. 如果一个内容被添加到 Confluence 系统中,但是这个 URLs ...
- Confluence 6 查看索引和提示
查看索引 Confluence 使用被称为 Lucene 的搜索引擎.如果你希望在你的 Confluence站点中查看更多有关索引的细节,你可以下载并且运行 Luke.Luke 是一个开发和诊断工具, ...
- SpringMVC国际化与文件上传
点击阅读上一章 其实SpringMVC中的页面国际化与上一章的验证国际化基本一致. 1.对页面进行国际化 1)首先我们对Spring配置文件中添加国际化bean配置 <!-- 注册国际化信息,必 ...
- 编辑后保留原URl搜索条件
首先需要知道的一个知识点: 1.request.GET是一个QueryDict类型的,要想取出?后面的结构就用request.GET.urlencode() 2.request.GET默认是不可修改的 ...
- Redis扩展
Redis扩展下载地址:https://windows.php.net/downloads/pecl/releases/redis/ PHP怎么安装redis扩展 http://www.php.cn/ ...