大学生
最后登录1970-1-1
在线时间 小时
注册时间2018-6-4
|
我用的是stm32f103RbT6 RAM 20K flash 128k
主要的全局变量数组是 文件系统的 缓存数组 ReadBuffer【】 和 少许的usart相关测试数组;
可是仅仅定义一个 FATFS fs 文件系统变量 3个文件变量 FIL f1 f2 f3 ; 测试读写时,如果不用opimization 优化选项,就提示 空间不足
如在 Level 0 (-O0)下2个error
Error: L6406E: No space in execution regions with .ANY selector matching startup_stm32f10x_md.o(STACK).
Error: L6407E: Sections of aggregate size 0x400 bytes could not fit into .ANY selector(s).
(0x400 这个位置的值有时会很大(20K以上));
网上有说这个是 SRAM 空间不足;但是我用 优化选项 Level 1 Level 2 Level 3 编译后只是code 区域的值 略微减小;RO RW ZI 部分不变;
是不是 没定义一个FIL的文件 就会占用 SRAM 4096字节的缓冲空间;
几乎完全自学 有请大神指教 。。。
全局变量如下 :
uint8_t Usart_data_Test[] = "0123abc\n";
FATFS fs; /* FatFs文件系统对象 */
FIL fnew; /* 文件对象 */
FRESULT res_flash; /* 文件操作结果 */
UINT fnum; /* 文件成功读写数量 */
BYTE ReadBuffer[1024]={0}; /* 读缓冲区 */
BYTE WriteBuffer[] = /* 写缓冲区*/
"我爱你 my love 爷爷 奶奶 新建文件系统测试文件\r\n";
FIL fs1,fs2; /* 临时测试文件对象 */
FRESULT res_fs1,res_fs2; /* 文件操作结果 */
UINT fs1num,fs2num; /* 文件成功读写数量 */
BYTE fs1ReadBuffer[1024]={0}; /* 读缓冲区 */
BYTE fs2ReadBuffer[1024]={0}; /* 读缓冲区 */
BYTE fs1WriteBuffer[] = {"\n fs1 自定义数据 \n"}; /* 写缓冲区*/
BYTE fs2WriteBuffer[] = {"\n fs2 自定义数据 \n"}; /* 写缓冲区*/
// NUM : 54
uint8_t Tx_Buffer[] = "abcdefghijklmnopqrstuvwsyzABCDEFGHIJKLMNOPQRSTUVWXYZ\r\n";
uint8_t Rx_Buffer[100];
_IO uint32_t DeviceID = 0;
__IO uint32_t FlashID = 0;
__IO TestStatus TransferStatus1 = FAILED;
|
|