Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
链接脚本_lds_sct_icf_分散加载
assert_断言
10
串口设备的rx_fifo为RT_NULL为空,怎么改呢?
发布于 2022-09-28 15:20:53 浏览:1423
订阅该版
分散加载文件如下 ```c LR_IROM1 0x08000000 0x00100000 { ; load region size_region ER_IROM1 0x08000000 0x00100000 { ; load address = execution address *.o (RESET, +First) *(InRoot$$Sections) .ANY (+RO) } RW_IRAM1 0x20000000 0x00020000 { ; RW data .ANY (+RW +ZI) } RW_IRAM2 0x10000000 0x00010000 { main.o (+RW +ZI) screen_read.o (+RW +ZI) screen_write.o (+RW +ZI) ;startup_stm32f407xx.o (+RW +ZI) ;drv_usart.o (+RW +ZI) ;myiic.o (+RW +ZI) } } ``` 其中具体的是  当前用了2个串口,一个buf是256,另一个是4096,只要开串口,就报这个断言错误 (rx_fifo != RT_NULL) assertion failed at function:rt_serial_open, line number:629 注释掉一个串口,另一个串口也会报错,我把这3个放在了那个64KB的位置,计算一下,加起来也没有65536个字节啊,为什么总报错呢? 堆栈空间截图  谢谢 ------------ 更新,发现缩小串口的buf,程序可以跑起来,这里4096改成10可以运行  但是我对比了正常和不正常的map文件,差别非常小,没有发现哪个特别大,我应该怎么调呢 
查看更多
3
个回答
默认排序
按发布时间排序
出出啊
2022-09-28
恃人不如自恃,人之为己者不如己之自为也
这个。。。断点进去调试一下看看啦。 既然是在 `rt_serial_open` 函数出现的断言,那么就在这个函数开头打个断点。然后在 `rt_device_open` 调用的地方打个断点。 先观察这俩函数的调用顺序,是否是 `rt_device_open` 调用 `rt_serial_open` 后出现断言的。 然后就是单步 `rt_serial_open` 函数看看代码执行流程和变量变化情况, `rx_info` 申请内存是否成功 等等等等...
伊森亨特
2022-09-28
这家伙很懒,什么也没写!
因为是rx fifo失败,申请空间的函数是 ```c rx_fifo = (struct rt_serial_rx_fifo*) rt_malloc (sizeof(struct rt_serial_rx_fifo) + serial->config.bufsz); RT_ASSERT(rx_fifo != RT_NULL); ``` 调用这个函数 ```c RT_WEAK void *rt_malloc(rt_size_t size) { rt_base_t level; void *ptr; /* Enter critical zone */ level = _heap_lock(); /* allocate memory block from system heap */ ptr = _MEM_MALLOC(size); /* Exit critical zone */ _heap_unlock(level); /* call 'rt_malloc' hook */ RT_OBJECT_HOOK_CALL(rt_malloc_hook, (ptr, size)); return ptr; } ``` 然后这个宏定义在这,相当于初始化之后,有一个systemheap ```c #define _MEM_INIT(_name, _start, _size) \ system_heap = rt_smem_init(_name, _start, _size) #define _MEM_MALLOC(_size) \ rt_smem_alloc(system_heap, _size) ```  这里调用了rt_system_heap_init函数  出现heapbegin heapend,找到board.h ```c #define STM32_SRAM_SIZE (128) #define STM32_SRAM_END (0x20000000 + STM32_SRAM_SIZE * 1024) #if defined(__ARMCC_VERSION) extern int Image$$RW_IRAM1$$ZI$$Limit; #define HEAP_BEGIN (&Image$$RW_IRAM1$$ZI$$Limit) #elif __ICCARM__ #pragma section="CSTACK" #define HEAP_BEGIN (__segment_end("CSTACK")) #else extern int __bss_end; #define HEAP_BEGIN (&__bss_end) #endif #define HEAP_END STM32_SRAM_END ```
ching
2023-07-19
这家伙很懒,什么也没写!
没有初始化就先进串口中断引起的
撰写答案
登录
注册新账号
关注者
1
被浏览
1.4k
关于作者
伊森亨特
这家伙很懒,什么也没写!
提问
78
回答
33
被采纳
0
关注TA
发私信
相关问题
1
rt_object_init中报assertion failed错误?
2
串口中断读取信号量释放函数断言失败问题
3
请问在新建工程并且添加MAX30102的组件之后编译下载怎么为什么会报这种错呢
4
运行 tls_test 出现错误,这个是什么原因
5
使用ringbuffer时,自检到thread的type不匹配
6
webnet cgi 回调 出现assert
7
keil里面移植RT系统之后,上电直接assertation
8
使用max30102软件包时出现线程断言错误
9
进入到assert后,软看门狗仍在喂狗的问题
10
shall not be used in ISR
推荐文章
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
【面向零基础】基于星火1号开发板从头学习基于RT-Thread的嵌入式开发 第一讲
2
新版OneNet的星火1号开发板例程适配(下)
3
基于RT-Thread的STM32F4开发第六讲——PWM输出(CH1和CH1N)
4
RT-Thread 携手 Copilot:智能代码审查,加速开源协作
5
重磅预售!RT-Trace调试工具
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
FAL
RTC
rt-smart
I2C_IIC
cubemx
UART
ESP8266
WIZnet_W5500
ota在线升级
BSP
PWM
flash
packages_软件包
freemodbus
潘多拉开发板_Pandora
GD32
ADC
定时器
编译报错
flashDB
keil_MDK
socket
中断
rt_mq_消息队列_msg_queue
Debug
ulog
SFUD
msh
C++_cpp
at_device
本月问答贡献
踩姑娘的小蘑菇
6
个答案
3
次被采纳
xiaorui
3
个答案
1
次被采纳
yans
2
个答案
1
次被采纳
tjrong
1
个答案
1
次被采纳
miandian_7
1
个答案
1
次被采纳
本月文章贡献
Pai同学
8
篇文章
11
次点赞
Rick98
3
篇文章
10
次点赞
RTT_逍遥
2
篇文章
10
次点赞
加缪
1
篇文章
2
次点赞
河南理工大学恁带劲儿
1
篇文章
2
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部