总结:(1)RW_IRAM2 0x10000000 0x00010000,不支持dma

           (2)因为写入的函数中的局部变量定义在任务栈中,任务栈定义需要强制RAM1中

1.启用了RAM2

2  .sct文件配置

(1)将usb相关文件和任务栈,指定到RAM1中,usb驱动中用到了dma但是RAM2不支持dma

  ( 2)将 startup_stm32f429_439xx.o(启动文件)指定到RAM1中,我是因为boot中会判断栈顶位置,指定启动文件可以将栈顶指定在0x20000000区域

; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************

LR_IROM1 0x08020000 0x000D0000  {    ; load region size_region
  ER_IROM1 0x08020000 0x000D0000  {  ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
   .ANY (+XO)
  }
  RW_IRAM1 0x20000000 0x00030000  {  ; RW data
   startup_stm32f429_439xx.o (+RW +ZI)  
   app_data_save.o (+RW +ZI)  
   *usb* (+RW +ZI)
   ff.o (+RW +ZI)
   diskio.o (+RW +ZI)
   sdio_sdcard.o (+RW +ZI)
   w25qxx.o (+RW +ZI)
   sfud*.o (+RW +ZI)
   .ANY (+RW +ZI)
   MyTask.o (+RW +ZI)
  }
  RW_IRAM2 0x10000000 0x00010000  {
    os_*.o (+RW +ZI)
    .ANY (+RW +ZI)
  }
}

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐