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中除了具有属性查询(和其他关系型数据库的查询类似),还提供了空间查询.在介绍查询 ...
随机推荐
- ios 本地存储文件夹的使用注意
文件夹 tmp 属于临时文件夹,不需要自己删除,系统会在应用退出后清空 文件夹 Library 下面的子文件 Caches 也是用来存储的,,但是Library 基本上不会被清除,但是在内存不足的 ...
- MVVM 简介
转:https://objccn.io/issue-13-1/ 所以,MVVM 到底是什么?与其专注于说明 MVVM 的来历,不如让我们看一个典型的 iOS 是如何构建的,并从那里了解 MVVM: 我 ...
- PID控制器开发笔记之五:变积分PID控制器的实现
在普通的PID控制算法中,由于积分系数Ki是常数,所以在整个控制过程中,积分增量是不变的.然而,系统对于积分项的要求是,系统偏差大时,积分作用应该减弱甚至是全无,而在偏差小时,则应该加强.积分系数取大 ...
- Confluence 6 针对你的数据库类型确定校验 SQL
不同的数据库通常要求不同的 SQL 校验查询.校验查询通常需要尽可能的简单,这个查询在链接从数据库连接池中取出的时候都会被执行一次. 针对不同的数据库类型,我们推荐先的校验查询 SQL: MySQL ...
- Socket网络编程(三)
TCP协议网络通讯案例(http协议) 1.创建TcpServer(tcp服务端) package com.cppdy.tcp; import java.io.IOException; import ...
- 【python】ftp连接,主被动,调试等级
示例代码如下: #!/usr/bin/env python # -*- coding: utf-8 -*- import os from ftplib import FTP def ftp_down( ...
- CF1000G
蜜汁树形dp... 首先分析一下:他要求一条边至多只能经过两次,那么很容易会发现:从x到y这一条路径上的所有边都只会被经过一次.(如果过去再回来那么还要过去,这样就三次了,显然不合法) 那么其他能产生 ...
- linux下搭建SVN
官网下载: http://subversion.apache.org/packages.html SVN客户端:TortoiseSVN :https://tortoisesvn.net/downl ...
- Nginx详解二十四:Nginx深度学习篇之灰度发布
实战场景 - 灰度发布 灰度发布的作用:按照一定的关系区别,分部分的代码进行上线,使代码的发布能平滑过渡上线实现方式: 1.用户的信息cookie等信息区别 2.根据用户的IP地址 安装memcach ...
- Nginx详解十一:Nginx场景实践篇之Nginx缓存
浏览器缓存: HTTP协议定义的缓存机制(如:Expires.Cache-control等) 当浏览器第一次请求的时候,浏览器是没有缓存的 第二次请求开始就有缓存了 校验过期机制 配置语法-expir ...