10061|11

84

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

flash烧写问题 [复制链接]

我的芯片是6416 1Ghz,flash是am29lv400bt,用作8位异步存储器
我将ce1空间定义为0x02a08a00,
现在的情况是,能够擦除,但是无法烧写,这是为什么呢?
我的烧写实验如下:
在烧写程序里加一个boot.asm,将其定位在0x0开头的空间,然后程序对此段进行搬移:
烧写程序如下:
void flash_write(volatile unsigned char *addr,volatile unsigned char *ptr,unsigned int length)
{
        Uint32 i;
        int b;      
        for(i  = 0; i < length; i++)
        {
    *FLASH_AAA = 0xaa;
        *FLASH_555 = 0x55;
        *FLASH_AAA = 0xa0;
    *ptr++=*addr++;
    for(b=0;b<10000;b++)
    {}
        }
}编译无错误,但是就是无法烧,不知道到底哪里出问题了
addr为0x0,ptr为0x64000000

最新回复

我加了延时的  详情 回复 发表于 2006-7-12 01:14
点赞 关注

回复
举报

75

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
emif ce1空间设置了阿,0x02a08a00,还有0xffffff03我也试过。
写状态字加偏移?在哪?没有看到
emif设置如下:
static EMIFB_Config MyEmifbConfig =
{
EMIFB_GBLCTL_RMK
(
EMIFB_GBLCTL_EK2RATE_FULLCLK,        //1 X EMIF input clock
EMIFB_GBLCTL_EK2HZ_CLK,                //eclkout2 continue output during hold
EMIFB_GBLCTL_EK2EN_ENABLE,        //eclkout2 enable output
EMIFB_GBLCTL_BRMODE_MRSTATUS,        //bus request is memory access or refresh pending/in progress
EMIFB_GBLCTL_NOHOLD_ENABLE,
EMIFB_GBLCTL_EK1HZ_CLK,                //eclkout1 continue output during hold
EMIFB_GBLCTL_EK1EN_ENABLE        //eclkout1 enable
        ),
        0x22a28a22,
//        0xffffff0f,
        0xffffff03,
        0x22a28a22,
        0x22a28a22,
        EMIFB_SDCTL_DEFAULT,
        EMIFB_SDTIM_DEFAULT,
        EMIFB_SDEXT_DEFAULT,
        0x00000002,
        0x00000002,
        0x00000002,
        0x00000002
};

 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
晕,我没有左移吧
左移部分应该是0x64000000+(0x5555<<2)这个阿
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

4
 
想了一上午也没想明白,程序应该没有什么问题?用for循环也是没问题的,我用for循环
都是挺好用的。
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

5
 

此次

楼上的能具体一点嘛?我没有偏移阿,对flash的烧写本来就是一个单位一个单位的烧,不像擦除那样是整块擦除。所以每次都要移动一位,使能够烧下一个单元。
我用memory来看0x64000000空间的,我先用flashburn for dsk6416烧一些程序进去,然后load自己的烧写程序,运行,发现可疑擦掉以前的,但是自己的烧不进去。明天就要写报告,看来又要误工了。
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

6
 
因为我开发自己的板子,先在dsk6416上调试flash烧写程序,理解过程阿,然后针对情况在自己的板子上烧。
另外,是555不是5555,我用的是上面那个,没有加偏移。
所以这不是重点,我就不明白到底是哪里出了问题。
即时是地址偏移,我也试过,还不是不成功。
我设置了emifb ce1的0x02a08a00,还有0xffffff03我也试过。
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

7
 

xiexie

我将烧写段程序改为   void flash_writem( unsigned char *addr, unsigned char *ptr, unsigned short length)
{
        unsigned short timeout;
        unsigned char c;
        unsigned int i;

        while(length--)               
        {
                /* Prep AMD
                 * 4MBit (512K X 8) Flash Memory
                 * for writing a byte.
                 */       
                *(volatile char *)FLASH_AAA = (char)FLASH_UL1;
                *(volatile char *)FLASH_555 = (char)FLASH_UL2;
                *(volatile char *)FLASH_AAA = (char)FLASH_PROGRAM;
       
                *ptr = *addr;
                for(i=0;i<100;i++)
                {};
               
                /* Spin here \'til programming completes
                 */
                c = *addr++;
                timeout = 0;
                do timeout += 1;
                while(*ptr != c && timeout < (unsigned short)0xffff);
               
                ptr++;
        }
又出现个问题,就是0x64000000到0x6400002f段写不进去
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

8
 
还有个问题,我发现许多人都对怎么将自己的程序烧进flash不清楚,谁知道的话能不能在这个帖子里也写一写,有人说先转换为hex文件,这时打开hex文件会发现很多段,有文献说按段烧写,谁能说具体一点?是定义数组的方式吗?
 
 
 

回复

56

帖子

0

TA的资源

一粒金砂(初级)

9
 
1。我仔细检查了,无论我将ptr设为什么值,它总是在ptr的初始值开始到0x17这段地址之间的值烧不进去,但是地址并没有偏移。
看对应的writem函数汇编那里,有一句SUB .D2 SP,0X18,SP
不知道是怎么产生的
2。那么怎么将hex文件作为目标烧写进去?还是将hex文件其整体作为一个数组在flash烧写程序中load进去?

 
 
 

回复

80

帖子

0

TA的资源

禁止访问

10
 
提示: 作者被禁止或删除 内容自动屏蔽
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

11
 
不是偏移问题,没有偏移,是前面有一段程序段写不进去
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

12
 
我加了延时的
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
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
快速回复 返回顶部 返回列表