6002|6

73

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

STM32UCOS外部RAM硬件中断 [复制链接]

我正在做ucos移植到  stm32 上 请教个问题  

在移植ucos 操作系统时  可以用外部RAM 做数据区
内部ram做堆栈吗        我这样用的时候  大部分情况就进入了硬件中断      有几次可以运行
我只用内部ram的时候  就没有任何问题   
环境为  mdk



有个高手告诉我:
很多人都反映过这个问题   估计是MDK的问题    建议我换个ram大的   可我的已经最大了   64K     怎么办??

启动文件中配置:
; If you need to use external SRAM mounted on STM3210E-EVAL board as data memory,
; change the following define value to '1' (or choose ENABLE in Configuration Wizard window)
;//   <o>  External SRAM Configuration  <0=> DISABLE <1=> ENABLE
DATA_IN_ExtSRAM  EQU   1

; Amount of memory (in bytes) allocated for Stack
; Tailor this value to your application needs
;// <h> Stack Configuration
;//   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
;// </h>
Stack_Size       EQU     0x00000400
                 AREA    STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem        SPACE   Stack_Size
;__initial_sp
; If you need to use external SRAM mounted on STM3210E-EVAL board as data memory
; and internal SRAM for Stack, uncomment the following line and comment the line above
__initial_sp    EQU     0x20000000 + Stack_Size ; "Use MicroLIB" must be checked in
此帖出自stm32/stm8论坛

最新回复

                                 这里有ST的工程师吗,能不能告诉一下STM32 UCOS有没有使用外部RAM成功的,不然好早点换CPU了,已经在这上面浪费了很长时间了。  详情 回复 发表于 2010-12-4 10:29
点赞 关注
 

回复
举报

71

帖子

0

TA的资源

一粒金砂(初级)

沙发
 


研究一下,全部都放在外部ram里面可以运行么?
此帖出自stm32/stm8论坛
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

板凳
 


我是这样做的。
1.启动代码中使能外部RAM。作FSMC和SRAM的初始化。
2.在IDE选项Linker页中取消"Use Memory Layout From Target Dialog"选项。
3.选择分散加载,选择Scatter File。我使用的Scatter File文件如下:
; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************

LR_IROM1 0x08000000 0x00080000  {    ; load region size_region
  ER_IROM1 0x08000000 0x00080000  {  ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
  }
  RW_RAM1 0x68000000 0x00100000  {  ; RW data
   .ANY (+RW +ZI)
  }
  RW_IRAM1 0x20000000 0x00010000  {
   stm32f10x_vector.o (STACK)
   stm32f10x_vector.o (HEAP)
  }
}

其中0x68000000(SRAM起始地址) 0x00100000(SRAM容量)根据你的板子作相应的修改。
这样,你程序里定义的所有数据包括所有任务的堆栈都在外部SRAM中;而UC/OS内核的堆栈在内部RAM中。
系统内核堆栈的大小可以在启动文件中修改。就是LZ帖子里的文件。

不过我没有使用MicroLib,启动文件相关部分的代码:
DATA_IN_ExtSRAM  EQU     1


; Amount of memory (in bytes) allocated for Stack
; Tailor this value to your application needs
;// <h> Stack Configuration
;//   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
;// </h>
Stack_Size       EQU     0x00000400

                 AREA    STACK, NOINIT, READWRITE, ALIGN = 3
Stack_Mem        SPACE   Stack_Size

__initial_sp
; If you need to use external SRAM mounted on STM3210E-EVAL board as data memory
; and internal SRAM for Stack, uncomment the following line and comment the line above
;__initial_sp    EQU 0x20000000 + Stack_Size ; "Use MicroLIB" must be checked in
                                            ; the Project->Options->Target window

; Amount of memory (in bytes) allocated for Heap
; Tailor this value to your application needs
;// <h> Heap Configuration
;//   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
;// </h>

Heap_Size        EQU     0x00000400
就是STM32官方例子的版本。
此帖出自stm32/stm8论坛
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

4
 
                                 不使用Microlib主要是不知道这种情况下怎么些写分散加载文件。
此帖出自stm32/stm8论坛
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

5
 
                                 楼主的问题解决了吗,我也碰到了同样的问题,不知道如何解决。
此帖出自stm32/stm8论坛
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

6
 
                                 其他论坛上有说是启动文件的FSMC、SRAM初始化代码有问题,但看了半天也没有看出什么问题。
此帖出自stm32/stm8论坛
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

7
 
                                 这里有ST的工程师吗,能不能告诉一下STM32 UCOS有没有使用外部RAM成功的,不然好早点换CPU了,已经在这上面浪费了很长时间了。
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

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