TI中文支持网
TI专业的中文技术问题搜集分享网站

CCS使用 resume按钮灰色

请教各位,我在运行flash的烧写程序的时候resume 按钮成灰色的不能使用

请问大家有没有遇到过?希望有经验的坛友指导一下!运行环境是ccs5.5  tms6747  xds100v1

Denny%20Yang99373:

先按暂停,应该就绿了

yang gao8:

回复 Denny%20Yang99373:

谢谢你回复,使用暂停后确实可以再次使用resume。

 我有其他的一些问题关于nandflash

1、当通过cs3连接nandflash的时候,以0x62000000开始的地址里面对应的寄存器是什么作用呢? 我在手册上没有找到,只是通过程序感觉0x62000000是数据寄存器?

2、#define NAND_READ_RB        ( ( *( volatile Uint32* )( 0x01E00064 ) ) & 1 )    为什么取0x01E00064指向的数据

以上两个都是在nandflash.h文件夹的,

Look forward to your reply

 

Denny%20Yang99373:

回复 yang gao8:

1,0×62000000起始是CS3的片选空间,这块应该对应着NAND的片上资源

2, ( ( *( volatile Uint32* )( 0x01E00064 ) ) & 1 )把0x1e00064地址的内容取出来,再&1.

yang gao8:

回复 Denny%20Yang99373:

谢谢您的回复

可能我提问的不是很清楚

1、0x62000000不是和nand flash一一映射的吧,访问nandflash都是通过发送命令和地址来进行操作的。我看三星的芯片对应nand flash的片选空间都是定义的一些命令寄存器数据寄存器和地址寄存器。  但是在c6747的手册上没有找到说明 

2、我清楚后边定义的含义但是不明白为什么 是要  取0x01E00064地址的内容,这个地址对应的不是usb0???

谢谢

Tony Tang:

回复 yang gao8:

yang gao81、0x62000000不是和nand flash一一映射的吧,访问nandflash都是通过发送命令和地址来进行操作的。我看三星的芯片对应nand flash的片选空间都是定义的一些命令寄存器数据寄存器和地址寄存器。  但是在c6747的手册上没有找到说明

0x62000000只代表对应的CS3,即访问0x62xxxxxx开始的地址空间,则CS3有效,对于NAND,不是地址映射方式访问,所以其它地址与NAND没有关系了。至于访问NAND内部的寄存器,是通过CMD, ALE结合数据线送出相应的命令。而相应的命令是NAND要求的,在它的手册上定义,其实都是标准的,与C6747无关。

yang gao82、#define NAND_READ_RB        ( ( *( volatile Uint32* )( 0x01E00064 ) ) & 1 )    为什么取0x01E00064指向的数据

以上两个都是在nandflash.h文件夹的,

这是哪个软件包下的代码?

yang gao8:

回复 Tony Tang:

/**Copyright 2009 by Spectrum Digital Incorporated.*All rights reserved. Property of Spectrum Digital Incorporated.*//**nandflash header file**/#include "evmomapl137.h"#ifndef NANDFLASH_
#define NANDFLASH_#define USE_ECC/* ------------------------------------------------------------------------ **Flash Device - SAMSUNG NAND Flash Memory K9F5608U0B** ------------------------------------------------------------------------ */
#define MFG_SAMSUNG0xEC
#define K9K2G08U0M0xDA
#define K9K2G08U0M_PAGE_COUNT64 * 2048#define DEV_K9F5608U0B0x75
#define DEV_K9F5608U0B_PAGE_COUNT32 * 2048 // 32 pages * 2048 blocks#define DEV_K9F5608Q0B0x35
#define DEV_K9F5608Q0B_PAGE_COUNT32 * 2048 // 32 pages * 2048 blocks#define DEV_K9F2808U0C0x73
#define DEV_K9F2808U0C_PAGE_COUNT32 * 1024 // 32 pages * 1024 blocks#define DEV_K9K1208Q0C0x36
#define DEV_K9K1208Q0C_PAGE_COUNT32 * 4096 // 32 pages * 4096 blocks#define DEV_SMCARD_1280x79
#define DEV_SMCARD_128_PAGE_COUNT32 * 8192 // 32 pages * 8192 blocks#define MFG_STI0x20#define DEV_NAND512W3A0x76
#define DEV_NAND512W3A_PAGE_COUNT32 * 4096/* ------------------------------------------------------------------------ **Flash Memory Property Definitions** ------------------------------------------------------------------------ */
#define NAND_BASE 0x62000000 // SNAND.CS0 BASE#define NAND_PAGESIZE2 * 1024
#define NAND_PAGESIZE_POW29
#define NAND_SPARESIZE64//64
#define NAND_SPARESIZE_POW24
#define NAND_PAGES_PER_BLOCK128//64
#define NAND_PAGES_PER_BLOCK_POW25#define NAND_BLOCKSIZE\NAND_PAGESIZE * NAND_PAGES_PER_BLOCK#define NAND_BLOCKSIZE_POW2\NAND_PAGESIZE_POW2 + NAND_PAGES_PER_BLOCK_POW2/* ------------------------------------------------------------------------ **NAND Flash Command Codes** ------------------------------------------------------------------------ */
#define CMD_READ0x00
#define CMD_READ_CONFIRM0x30
#define CMD_READ_HALF0x01
#define CMD_READ_SPARE0x50
#define CMD_READID0x90
#define CMD_RESET0xFF
#define CMD_POINTER_MAIN0x00
#define CMD_POINTER_MAIN_HALF0x01
#define CMD_POINTER_SPARE0x50
#define CMD_PROGRAM0x80
#define CMD_PROGRAM_CONFIRM0x10
#define CMD_COPYBACK0x00
#define CMD_COPYBACK_CONFIRM0x35
#define CMD_ERASE0x60
#define CMD_ERASE_CONFIRM0xD0
#define CMD_STATUS0x70
#define CMD_CHIP1_STATUS0xF1
#define CMD_CHIP2_STATUS0xF2/* ------------------------------------------------------------------------ **NAND Flash Status Register Definitions** ------------------------------------------------------------------------ */
#define CMD_STATUS_SUCCESS0xFFFE
#define CMD_STATUS_ERROR0x0001
#define CMD_STATUS_BUSY0xFFBF
#define CMD_STATUS_READY0x0040
#define CMD_STATUS_WPROTECT0xFF7F
#define CMD_STATUS_NOWPROTECT0x0080/* ------------------------------------------------------------------------ **NAND Flash Memory Data Pointer** ------------------------------------------------------------------------ */
#define NAND_BASE_PTR *( volatile Uint8* )( NAND_BASE + 0x00 ) #define NAND_CLE_PTR *( volatile Uint8* )( NAND_BASE + 0x10 ) #define NAND_ALE_PTR *( volatile Uint8* )( NAND_BASE + 0x08 )#define NAND_ASSERT_CE( );
#define NAND_DEASSERT_CE( ) ;#define NAND_READ_RB ( ( *( volatile Uint32* )( 0x01E00064 ) ) & 1 )/* ------------------------------------------------------------------------ **NAND Flash R/B functions** ------------------------------------------------------------------------ */
#define NAND_ERR_NOERROR( 0 )
#define NAND_ERR_TIMEOUT( -1 )/* ------------------------------------------------------------------------ **Address decoding**_4 = 26 address bits [00-07]--->[09-16]--->[17-24]--->[25-26]**_3 = 24 address bits [09-16]--->[17-24]--->[25-26]**_2 = 16 address bits [17-24]--->[25-26]**_1 =8 address bits [25-26]** ------------------------------------------------------------------------ */
#define NAND_DATA NAND_BASE_PTR #define NAND_CMD( cmd ) NAND_CLE_PTR = cmd;#define NAND_ADDR_4( addr ) NAND_ALE_PTR = (addr >> 0) & 0xff; NAND_ADDR_3( addr );
#define NAND_ADDR_3( addr ) NAND_ALE_PTR = (addr >> 8) & 0x0f; NAND_ADDR_2( addr );
#define NAND_ADDR_2( addr ) NAND_ALE_PTR = (addr >> 12) & 0xff; NAND_ADDR_1( addr );
#define NAND_ADDR_1( addr ) NAND_ALE_PTR = (addr >> 20) & 0xff; NAND_ADDR_0( addr );
#define NAND_ADDR_0( addr ) NAND_ALE_PTR = (addr >> 28) & 0x03;/*#define NAND_ADDR_4( addr ) NAND_ALE_PTR = (addr >> 0) & 0xff; NAND_ADDR_3( addr );
#define NAND_ADDR_3( addr ) NAND_ALE_PTR = (addr >> 8) & 0x0f; NAND_ADDR_2( addr );
#define NAND_ADDR_2( addr ) NAND_ALE_PTR = (addr >> 12) & 0xff; NAND_ADDR_1( addr );
#define NAND_ADDR_1( addr ) NAND_ALE_PTR = (addr >> 20) & 0xff; NAND_ADDR_0( addr );
#define NAND_ADDR_0( addr ) NAND_ALE_PTR = (addr >> 28) & 0x01;*//* ------------------------------------------------------------------------ **Prototypes** ------------------------------------------------------------------------ */
Int16 EVMOMAPL137_FLASH_init( );Uint32 EVMOMAPL137_NANDFLASH_getTotalPages( );Int16 EVMOMAPL137_NANDFLASH_erase( Uint32 start, Uint32 block_count );
Int16 EVMOMAPL137_NANDFLASH_readPage( Uint32 src, Uint32 dst, Uint32 page_count );
Int16 EVMOMAPL137_NANDFLASH_writePage( Uint32 src, Uint32 dst, Uint32 page_count );#endif

yang gao8:

回复 Tony Tang:

非常感谢您耐心的回复!
2、 NAND_READ_RB 在上面代码的106行具体的软件包哪里下载的记不清了,上面是nandflash.h的文件内容, 
是我从C6747_common C6747_example 和C6747_headers三个压缩文件中解压出来的。
1、通信时候,命令是用确定的8位数字表示的。但是进行通信的数据地址和命令寄存器地址应该分别对应101行三个宏定义(因为格式问题,三个显示在了一行),
应该cs3区的寄存器的 但是我没有在c6747手册上找到相应的寄存器说明。
附图:三星6410芯片手册上有与nandflash通信的相应的寄存器说明
 

谢谢!

Tony Tang:

回复 yang gao8:

yang gao8但是进行通信的数据地址和命令寄存器地址应该分别对应101行三个宏定义(因为格式问题,三个显示在了一行)

没显示出来,看不到,但是我估计是跟这个贴里的是一样的(对这个文件来源,我怀疑可能不是TI官方提供的吧):

http://www.deyisupport.com/question_answer/dsp_arm/c6000_dsp/f/32/p/109915/299203.aspx#299203

*(volatile UINT8* ) (0x62000000+0x00000000)=DATA;

*(volatile UINT8* ) (0x62000000+0x00000010)=CMD;

*(volatile UINT8* ) (0x62000000+0x00000008)=ADDR;

你的图中的第一列的地址不是从EMIFA地址线上送出去的,是从EMIFA的数据线上送出去的,理解一下NAND接口的时序,以及CLE,ALE的作用就明白了,NAND接口分为命令,地址,数据这几种不同的周期,但是其内容都是从数据线上送出去的,由CLE,ALE来区别这数据的不同功能。

不要纠结在DSP EMIFA接口这边,NAND就是一个异步接口,需要配置的无非是异步时序setup, strobe, hold。

Tony Tang:

回复 yang gao8:

看上面文件头显示是spectrum digital来的代码,但是从OMAPL137 EVM板网页下载的BSL里我也没找到你说的nandflash.h文件,而且没有NAND的例程,因为他的EVM板上没有NAND。

http://support.spectrumdigital.com/boards/evmomapl137/revg/

如果你是从一些非官方网站下载的代码,然后又到官方网站来提问,这会造成误解的。

我附上一份TI官方提供的flash_writer,希望对你有用。

yang gao8:

回复 Tony Tang:

非常感谢你的回复!

我下载并且导入了工程文件但是在编译的时候提示缺少rts32e.lib(在linker.cmd中指定了连接),在网上没有找到该库文件,我就改为了C6747.lib,但是debug后

resume成灰色,点击暂停 disassembly中显示的都是  NOP命令

赞(0)
未经允许不得转载:TI中文支持网 » CCS使用 resume按钮灰色
分享到: 更多 (0)