4794|8

73

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

2407(ccs)编程遇到变量不改变的怪问题,急求解决 [复制链接]

版主好,
         我的ccs(2407)程序运行中,查看变量,发现变量没有跟着程序改变,好奇怪,比如软件运行for(i=0;i<5;i++){...}中,发现i 的值一直都是零,不改变(正常应是i=0,1,2,3,4递增的撒)。
         另外,发现*IMR的值也怪,如执行程序*IMR=0x4;可发现*IMR的值没有变为0x4。
         抓狂ing。。。

最新回复

搞不懂了。 我把你的程序抄下来,CMD文件也拷贝下来。 测试了一下是好的,不过我的是2406.  详情 回复 发表于 2008-11-5 11:44
点赞 关注
 

回复
举报

64

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
可能需要多运行几步,变量值才会变.
 
 

回复

94

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
你采用优化了,把优化选项去掉
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

4
 
         我多运行几步,确实变量是变了的,但是没有按照我预期的变化(不是我程序的问题)。

         另外,我去掉了优化(-g -q -d\"FILEIO\" -v2xx),但是依然有问题啊
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

5
 
到底怎么改变的,说得详细一点。
或者贴出你一部分程序。
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

6
 
/***延时子程序***/
void Delay(uint ii)
{
        uint        i_time = 0x0,j_time = 0x0;

        do
        {
                j_time++;
            i_time=0x0;
            
            do i_time++;
            while(i_time<ii);
     } while (j_time<1000);
}
就以这个程序为例,当我执行Delay(4000)时i_time和j_time 的变化就不是按照我预期的,程序当然没有问题了。i_time和j_time根本就不是递增的,而且数值忒大,我单步执行,两步就跳出去了。天啊,它至少也得跳个N次吧。

我想问题不应该是程序,我想是我ccs设置得问题,或者其他的。

另外,2407采用MP/MC=1;Vccp=5V;外部扩展了6416(sram)和CPLD;外部程序地址为:0x0000~0x7fff,数据为0x8000~0xffff;我build option为“-g -q -d\"_DEBUG\" -v2xx”。

CMD文件如下:
/*--------------------------------------------------------------------*/
/*  LINKER COMMAND FILE - MEMORY SPECIFICATION for the F2407          */
/*--------------------------------------------------------------------*/
        -m dlj.txt
        -o subway.out
        -heap 0
        -stack 200
               
/****************************************************************************/
/******** Specify the memory configuration **********************************/
/****************************************************************************/
MEMORY
{
  PAGE 0:
        VECS            origin = 0000h,         length = 0040h
        FLASH:          origin = 0100h,         length = 6F50h
            
  PAGE 1:
        B2:             origin = 0060h,         length = 0020h
        B01:            origin = 0200h,         length = 0200h
        SARAM_D:        origin = 0800h,         length = 0800h
        EXT_DATA:                origin = 8000h,                        length = 3000h
              
}

/*--------------------------------------------------------------------------*/
/* SECTIONS ALLOCATION                                                      */
/*--------------------------------------------------------------------------*/
SECTIONS
{
        vectors:        > VECS          PAGE 0
        .cinit          > FLASH                        PAGE 0
        .switch             > FLASH                        PAGE 0
        .text:          > FLASH         PAGE 0
        .data:          > FLASH         PAGE 0
                .const:         > B01                        PAGE 1      
            .bss:           > SARAM_D            PAGE 1  
        .stack:         > B01                        PAGE 1
                   .sysmem             > B01                        PAGE 1
      
}

GEL文件是CCS默认的:
StartUp()
{
    /* Initialize F2407 memory map */
    F2407_Memory_Map();
}

/* uncomment the function(s) you want Code Composer Studio to execute
OnReset(int nErrorCode)
{
}

OnRestart(int nErrorCode)
{
}

OnPreFileLoaded()
{
}

OnFileLoaded(int nErrorCode, int bSymbolsOnly)
{
}
*/

menuitem \"Initialize Memory Map\";

/*----------------------- F2407 Memory Map -------------------------*/
/*                                                                  */
/*   The entire LF2407 address space (program, data, IO) is mapped  */
/*   as RAM with two exceptions. The on-chip flash is mapped as     */
/*   ROM and the following illegal/reserved sections are not        */
/*   mapped:                                                        */
/*                                                                  */
/*   Illegal/Rsvd Program    Illegal/Rsvd Data    Illegal/Rsvd IO   */
/*   --------------------    -----------------    ---------------   */
/*   None                    0x0080 - 0x01ff      None              */
/*                           0x0400 - 0x07ff                        */
/*                           0x1000 - 0x6fff                        */
/*------------------------------------------------------------------*/
hotmenu F2407_Memory_Map()
{
    int SCSR2 =*0x7019;     /* System Control and Status Register 2 */
    GEL_MapReset();
    GEL_MapOn();

    /* Check MPNMC value (SCSR2 bit 2) to determine map setting.    */
    if(SCSR2 & 4)
        GEL_MapAdd(0x0000,0,0x8000,1,1);    /* Ext prog memory      */
    else
        GEL_MapAdd(0x0000,0,0x8000,1,0);    /* On-chip flash memory */

    /* Program Memory Maps */
    GEL_MapAdd(0x8000,0,0x0800,1,1);        /* SARAM                */
    GEL_MapAdd(0x8800,0,0x7800,1,1);        /* External RAM         */

    /* Data Memory Maps */
    GEL_MapAdd(0x0000,1,0x0060,1,1);        /* Mem mapped regs      */
    GEL_MapAdd(0x0060,1,0x0020,1,1);        /* DARAM B2             */
    GEL_MapAdd(0x0200,1,0x0200,1,1);        /* DARAM B0 & B1        */
    GEL_MapAdd(0x0800,1,0x0800,1,1);        /* SARAM                */
    GEL_MapAdd(0x7000,1,0x1000,1,1);        /* Peripherals          */
    GEL_MapAdd(0x8000,1,0x8000,1,1);        /* External RAM         */

   /* I/O Memory Maps */
    GEL_MapAdd(0x0000,2,0x10000,1,1);
}

menuitem \"Watchdog\";
hotmenu Disable_WD()
{
    /* Enable WD override */
    *0x7029 = *0x7029 | 0x0068;
    *0x7025 = 0x0055;
    *0x7025 = 0x00AA;
}
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

7
 
会不会是我外面的程序空间和内部的数据空间地址重合而导致的问题啊,即在空间0x0000~0x7ffff地址上的问题
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

8
 
达人帮看一下,是不是要在flash烧写个小程序,然后跳转到外部ram里运行啊,我是直接load进去运行的。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

9
 
搞不懂了。
我把你的程序抄下来,CMD文件也拷贝下来。
测试了一下是好的,不过我的是2406.
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
Microchip 直播|利用motorBench开发套件高效开发电机磁场定向控制方案 报名中!
直播主题:利用motorBench开发套件高效开发电机磁场定向控制方案
直播时间:2025年3月25日(星期二)上午10:30-11:30
快来报名!

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表