Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
SRAM
rt_memheap_init 初始化外部sram 死机
发布于 2021-07-21 11:05:39 浏览:1302
订阅该版
使用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.3k
关于作者
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
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
使用RC522软件包驱动FM1722
2
常量数据类型和表达式陷阱分享
3
进行i2c驱动移植的经验总结
4
在VSCode中使用clang-format
5
我该如何使用这个微雪的WIFI400 WIFI-LPB-100在rtt里或者我该怎样为它开发驱动
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
freemodbus
PWM
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1444
个答案
289
次被采纳
张世争
809
个答案
175
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
148
次被采纳
本月文章贡献
catcatbing
3
篇文章
5
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
Woshizhapuren
1
篇文章
5
次点赞
YZRD
1
篇文章
2
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部