(版主)stm32外扩sram,一用就死,咋整?

diangongjichu   2010-4-1 13:34 楼主
stm32跑ucos-ii 2.86,外扩了sram,驱动正常了,但分散加载文件里只要把外部的sram想用起来,程度就死掉,无法运行,请问有人遇到改问题吗?怎么搞?
以下是我的手动分配的分散加载文件,把    RW_RAM1 0x60000000 0x00010000   ; RW data   SRAM
    {  
     ; app.o (+ZI +RW)
      .ANY (+RW +ZI)
    }
增加进来就是使用外部sram吧,但是只要这样程序根本无法运行,不用sram,即没有以上这段程序则正常。

以下是完整的scatter
; Filename      : STM32_Flash.scat
;******************************************************************************

LR_IROM1 0x08002000 0x0007e000                                     ;; Load region
{
    ER_IROM1 0x08002000    0x08020000
    {
        vectors.o (VECT, +First)
        init.o (INIT)
        * (+RO)
    }

    RW_IRAM1 0x20000000 0x0000C500         ;20K
    {
        ;* (+RW,+ZI)
        .ANY (+RW +ZI)
    }   
    RW_RAM1 0x60000000 0x00010000   ; RW data   SRAM
    {  
     ; app.o (+ZI +RW)
      .ANY (+RW +ZI)
    }
                                                            ;; The following declarations select the "two region model" ;
                                                                ;; A default __user_initial_stackheap() will be used        ;

     ARM_LIB_HEAP  0x2000C500 EMPTY  0x00002000   {}    ; 8K
     ARM_LIB_STACK 0x2000FE00 EMPTY -0x00001000   {}    ; 8K
}

回复评论 (7)

与客户联系,问题解决。
ucos运行前,先初始化FSMC总线

可以结贴。
点赞  2010-4-2 09:20
                                 没错了,昨晚整了半天,搞定了,就是在启动文件里进入main前进行fsmc总线的正确初始化配置,然后修改scatter就可以了。
点赞  2010-4-2 09:40
                                 楼主,能不能留个联系方式或您加我QQ:66614955?我也遇到了这个问题,想请教,
点赞  2010-4-2 16:47
我初始化了FSMC的,在vector.s这个文件里面,我贴出来吧
; Enable FSMC clock
                                         LDR R0,= 0x00000114
                                         LDR R1,= 0x40021014
                                         STR R0,[R1]                         
                  
; Enable GPIOD, GPIOE, GPIOF and GPIOG clocks
                                         LDR R0,= 0x000001E0
                                         LDR R1,= 0x40021018
                                         STR R0,[R1]          

; SRAM Data lines, NOE and NWE configuration
; SRAM Address lines configuration
; NOE and NWE configuration   
; NE3 configuration
; NBL0, NBL1 configuration

                                         LDR R0,= 0x44BB44BB
                                         LDR R1,= 0x40011400
                                         STR R0,[R1]               
                                 
                                         LDR R0,= 0xBBBBBBBB
                                         LDR R1,= 0x40011404
                                         STR R0,[R1]               
                                 
                                         LDR R0,= 0xB44444BB
                                         LDR R1,= 0x40011800
                                         STR R0,[R1]               
                                 
                                         LDR R0,= 0xBBBBBBBB
                                         LDR R1,= 0x40011804
                                         STR R0,[R1]               
                                 
                                         LDR R0,= 0x44BBBBBB
                                         LDR R1,= 0x40011C00
                                         STR R0,[R1]            

                                         LDR R0,= 0xBBBB4444
                                         LDR R1,= 0x40011C04
                                         STR R0,[R1]            

                                         LDR R0,= 0x44BBBBBB
                                         LDR R1,= 0x40012000
                                         STR R0,[R1]               

                                         LDR R0,= 0x44444B44
                                         LDR R1,= 0x40012004
                                         STR R0,[R1]      
                                        
; FSMC Configuration   
; Enable FSMC Bank1_SRAM Bank

                                        LDR R0,= 0x00001011
                                        LDR R1,= 0xA0000010
                                        STR R0,[R1]       

                                        LDR R0,= 0x00000100
                                        LDR R1,= 0xA0000014
                                        STR R0,[R1]
点赞  2010-4-2 16:55
我的分散加载文件是这样的:
LR_IROM1 0x08000000 0x00020000                                                                         ;; Load region
{
    ER_IROM1 0x08000000        0x08020000
    {
        vectors.o (VECT, +First)
        init.o (INIT)
        * (+RO)
    }

    RW_RAM1 0x68000000 0x00080000  {  ; RW data
     .ANY (+RW +ZI)
   }
   RW_IRAM1 0x20000000 0x0000C000  {
    .ANY (+RW +ZI)
   }                                                          ;; The following declarations select the "two region model" ;
                                                                ;; A default __user_initial_stackheap() will be used        ;
    ARM_LIB_HEAP  0x68070000 EMPTY  0x00000200   {}
    ARM_LIB_STACK 0x68080000 EMPTY -0x00000200   {}
}
但是为什么我的一跑就死呢?我用的是ucos2.86,如果我不跑外部的sram就可以正常工作
点赞  2010-4-2 16:57
vector.s里的这个初始化文件一定要测试,先测试下确保是否驱动正常。如果驱动都不正常,肯定会死。
QQ:57031680
点赞  2010-4-4 16:23
最近想在SRAM里跑跑  顶 学习中
点赞  2012-7-11 19:03
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复