Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
SRAM
rt_memheap_init 初始化外部sram 死机
发布于 2021-07-21 11:05:39 浏览:1497
订阅该版
使用RTThreadNano 版本, board.c中的代码 ```c /* * Copyright (c) 2006-2019, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * 2021-05-24 the first version */ #include
#include
#include "main.h" #if defined(RT_USING_USER_MAIN) && defined(RT_USING_HEAP) /* * Please modify RT_HEAP_SIZE if you enable RT_USING_HEAP * the RT_HEAP_SIZE max value = (sram size - ZI size), 1024 means 1024 bytes */ #define RT_HEAP_SIZE (15*1024) static rt_uint8_t rt_heap[RT_HEAP_SIZE]; RT_WEAK void *rt_heap_begin_get(void) { return rt_heap; } RT_WEAK void *rt_heap_end_get(void) { return rt_heap + RT_HEAP_SIZE; } #elif defined (RT_USING_USER_MAIN)&&defined(RT_USING_MEMHEAP) #define RT_HEAP_RAM_SIZE (15*1024) static rt_uint8_t rt_heap_ram[RT_HEAP_RAM_SIZE]; #define RT_HEAP_EXRAM_SIZE (800*1024) static rt_uint8_t rt_heap_exram[RT_HEAP_EXRAM_SIZE] __attribute((used,section("EXRAM"))); struct rt_memheap Strucmem; #endif void SysTick_Handler(void) { rt_interrupt_enter(); rt_tick_increase(); rt_interrupt_leave(); } /** * This function will initial your board. */ void rt_hw_board_init(void) { extern void SystemClock_Config(void); HAL_Init(); SystemClock_Config(); SystemCoreClockUpdate(); /* * 1: OS Tick Configuration * Enable the hardware timer and call the rt_os_tick_callback function * periodically with the frequency RT_TICK_PER_SECOND. */ HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/RT_TICK_PER_SECOND); /* Call components board initial (use INIT_BOARD_EXPORT()) */ #ifdef RT_USING_COMPONENTS_INIT rt_components_board_init(); #endif #if defined(RT_USING_USER_MAIN) && defined(RT_USING_HEAP) rt_system_heap_init(rt_heap_begin_get(), rt_heap_end_get()); #elif defined (RT_USING_USER_MAIN)&&defined(RT_USING_MEMHEAP) rt_memheap_init(&Strucmem,"memram", rt_heap_ram, RT_HEAP_RAM_SIZE); //rt_memheap_init(&Strucmem,"memexram", rt_heap_exram, RT_HEAP_EXRAM_SIZE); #endif } #ifdef RT_USING_CONSOLE static UART_HandleTypeDef UartHandle; static int uart_init(void) { /* TODO: Please modify the UART port number according to your needs */ UartHandle.Instance = USART1; UartHandle.Init.BaudRate = 115200; UartHandle.Init.WordLength = UART_WORDLENGTH_8B; UartHandle.Init.StopBits = UART_STOPBITS_1; UartHandle.Init.Parity = UART_PARITY_NONE; UartHandle.Init.Mode = UART_MODE_TX_RX; UartHandle.Init.HwFlowCtl = UART_HWCONTROL_NONE; UartHandle.Init.OverSampling = UART_OVERSAMPLING_16; if (HAL_UART_Init(&UartHandle) != HAL_OK) { while (1); } return 0; } INIT_BOARD_EXPORT(uart_init); void rt_hw_console_output(const char *str) { rt_size_t i = 0, size = 0; char a = '\r'; __HAL_UNLOCK(&UartHandle); size = rt_strlen(str); for (i = 0; i < size; i++) { if (*(str + i) == '\n') { HAL_UART_Transmit(&UartHandle, (uint8_t *)&a, 1, 1); } HAL_UART_Transmit(&UartHandle, (uint8_t *)(str + i), 1, 1); } } #endif #ifdef RT_USING_FINSH char rt_hw_console_getchar(void) { /* Note: the initial value of ch must < 0 */ int ch = -1; if (__HAL_UART_GET_FLAG(&UartHandle, UART_FLAG_RXNE) != RESET) { ch = UartHandle.Instance->DR & 0xff; } else { rt_thread_mdelay(10); } return ch; } #endif ``` 其中只要一把屏蔽的 `//rt_memheap_init(&Strucmem,"memexram", rt_heap_exram,` 打开,即只要一初始化片外sram 就会死机,我该如何查呢 ? 其中,片外sram 使用的fsmc 驱动
查看更多
1
个回答
默认排序
按发布时间排序
zhkag
2021-07-21
这家伙很懒,什么也没写!
1、直接调试,看内存啥的有什么问题 2、创建空的工程,只加sram方面的代码进行测试
撰写答案
登录
注册新账号
关注者
0
被浏览
1.5k
关于作者
kingchunhai
这家伙很懒,什么也没写!
提问
20
回答
3
被采纳
1
关注TA
发私信
相关问题
1
关于利用0x68000000作为扩展sram?
2
请问RTT stduio的sram外设需要怎么添加
3
tm32f407-atk-explorer这个BSP中,1M外置的SRAM
4
基于bsp工程,stm32f4xx_hal_sram.c如何正确编译。
5
RT-Thread的SRAM文件怎么启动
6
关于STM32的STM32_SRAM_SIZE问题
7
使用memheap外置sram出错
8
L431 RAM设置成SRAM1 启动失败
9
SRAM进行初始化,找不到这三个函数(已解决)
10
STM32L452 sram2的定向使用,求助
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
【最新活动】RT-Thread论坛活动正在进行(2026年5月活动已更新)
4
国产MCU移植系列教程汇总,欢迎查看!
5
机器人操作系统 (ROS2) 和 RT-Thread 通信
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
五分钟玩转RT-Thread新社区
8
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
9
STM32的“GPU”——DMA2D实例详解
10
RT-Thread隐藏的宝藏之completion
最新文章
1
【RSOC26】Day2:RT-Thread 启动流程、线程调度与 SCons 构建实践
2
【RSOC26】RT-Thread 线程内核入门:启动流程、线程机制与 SCons 实操
3
【RSOC26】RT-Thread 内核机制与 STM32F407 平台启动、调度及构建解析
4
【RSOC26】Day1-从Git协作到RT-Thread启动链路
5
【RSOC26】第一天学习(环境的搭建以及git and gitee)
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
Bootloader
AT
Hardfault
CAN总线
ART-Pi
FinSH
DMA
USB
RT-Thread
SCons
文件系统
RT-Thread Nano
线程
MQTT
STM32
FAL
rt-smart
BSP
cubemx
RTC
WIZnet_W5500
PWM
I2C_IIC
UART
packages_软件包
GD32
ota在线升级
ESP8266
freemodbus
flash
keil_MDK
编译报错
ADC
潘多拉开发板_Pandora
flashDB
Debug
ulog
msh
rt_mq_消息队列_msg_queue
socket
MicroPython
SDIO总线
中断
SFUD
QEMU
本月问答贡献
crystal266
3
个答案
1
次被采纳
CYFS
3
个答案
1
次被采纳
oxlm
1
个答案
1
次被采纳
王棒棒
1
个答案
1
次被采纳
wdfk_prog
1
个答案
1
次被采纳
本月文章贡献
Ewan11111
3
篇文章
1
次点赞
金阳阳
2
篇文章
1
次点赞
longtsing
1
篇文章
4
次点赞
RTT_Studio
1
篇文章
4
次点赞
枫雪天
1
篇文章
3
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部