Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
LittlevGL_LVGL
SDRAM
硬件电路设计
5
lvgl的lv_memcpy函数拷贝失败的问题(已找出原因)
发布于 2024-03-27 15:27:19 浏览:560
订阅该版
平台: RTThread 4.1.1 lvgl 8.3.11 stm32f429bi 运行的是RTT music demo 起初我是用时设置的是800x480分辨率, 在这个分辨率下程序是可以运行的, 但是我的屏幕是480x272的 修改之后报错了, 调试之后就遇到了一个很奇怪的问题  函数1和2是相同的函数, 1是可以运行的, 但是到2就报错了 错误原因是lv_memcpy没有拷贝完整的数据  可以看到var这个参数不一样 突然就出错了, 而且这个函数在之前可以正常工作的, 不知道为什么突然就拷贝不全了 不是, 是`lv_anim_t * new_anim = _lv_ll_ins_head(&LV_GC_ROOT(_lv_anim_ll));`返回的地址有问题, 内存泄露了 继续往下找发现 `_lv_ll_ins_head` 返回的是 `rt_malloc` 分配的地址  找到这个指针产生的位置了, 在对分配中, 貌似是SDRAM的问题  这里有差别, 在函数1里没有运行if里的内容, 但到了函数2里却运行了if中的内容  奇怪, 我把分辨率再设置成800x480, 函数2却没有进入if函数 再设置成480x272分辨率, 查看 `rt_memheap_alloc` 运行发现, 函数2在申请内存块时没有找到能保存下的内存块, 返回后进入if, 貌似内存碎片化了  但是为什么if返回的地址是错误的, 我关闭LVGL用户UI, 测试SDRAM, 果然失败了, 明明预先测试成功的  这个问题排除了, 当我把lvgl线程关闭, sdram测试就通过了  貌似地址没有问题, 我试了在if中打断点, 返回的也是差不多的位置 依然是复制失败的问题, 在传入的lv_obj参数全部丢失了  这些地址应该不能使用, 这是怎么返回的?  忘记了SDRAM不断电是不会复位的, 结果就是拷贝有问题  尝试使用了rt_memcpy依然有问题, 查看了lv_memcpy实现也没有特别的操作就是赋值, 目前怀疑还是SDRAM的问题, 在数据传输中出错了 怎么感觉像短路一样呢 我的SDRAM是16位宽, 在第10和11位这两位像连起来一样 0000->0000 1000->1000 0100->0110 0010->0110 0001->0001 也就是设置4和2最后都会变成6  测试这两个引脚并没有短路 测试错了, 出错的位数是13和14位, 这两个引脚的确短路了 根据这篇文章 https://bbs.elecfans.com/jishu_2340127_1_1.html 显示我使用的芯片是老芯片了, 不知道是不是又是拆机的, 代码是 PHL 7B 已经是老芯片了 无奈这个芯片做开发板的少, 小公司还用老芯片, 有各种暗伤 我把芯片拆下来了, 结果这两个引脚依然短路, 反而芯片没有问题, 总结PCB有缺陷 这里点名一下商家,**极客STM32** 本来我都查出来PCB D8 D9 引脚短路, 不是我把芯片干烧了, 结果他只提供换货服务, 然而为了找出问题, 我已经把PCB折腾的不成样子了, 当然无法满足他们的换货要求, 而且如果我满足了他们的换货要求这个板子退回还会二次销售,总之避开这个商家, 我收获一块料板 为了找出PCB连线的位置, 我拆下来SDRAM看下面盖住的线, 当把SDRAM拆下来后再测D8 D9不断路了, 我测试SDRAM的引脚怕SDRAM内部短路了, 结果也没短路,那有可能确实SDRAM侧有连锡 完成重新焊接后终于过了函数2, 但是仍然运行不成功 ```shell psr: 0xa00f0000 r00: 0x080be9b0 r01: 0xc00df4ac r02: 0x080be9b0 r03: 0xffff0000 r04: 0x20025c80 r05: 0xdeadbeef r06: 0xdeadbeef r07: 0x20002b80 r08: 0xdeadbeef r09: 0xdeadbeef r10: 0xdeadbeef r11: 0xdeadbeef r12: 0x00000006 lr: 0x08047e47 pc: 0xffff0000 hard fault on thread: LVGL thread pri status sp stack size max used left tick error -------- --- ------- ---------- ---------- ------ ---------- --- tshell 20 suspend 0x000000c8 0x00001000 06% 0x00000009 OK LVGL 20 running 0x00000048 0x00001000 40% 0x00000009 OK tidle0 31 ready 0x00000044 0x00000100 26% 0x00000020 OK timer 4 suspend 0x0000007c 0x00000200 24% 0x00000009 OK main 10 close 0x00000074 0x00000800 14% 0x0000000c OK mem manage fault: SCB_CFSR_MFSR:0x01 IACCVIOL ``` 靠, 14和15位又短路了 解决了单片机侧的连锡程序就能正常运行了 完结!!!
查看更多
1
个回答
默认排序
按发布时间排序
_Yhh
2024-03-28
这家伙很懒,什么也没写!
这个移植是怎么区做的?
撰写答案
登录
注册新账号
关注者
0
被浏览
560
关于作者
ThinkCode
这家伙很懒,什么也没写!
提问
24
回答
20
被采纳
0
关注TA
发私信
相关问题
1
LittlevGL + DMA2D 显示图案扭曲
2
LittleVGL2RTT软件包还有在维护吗,测试遇到一些问题求解
3
使用littlevgl2rtt软件包实例运行不成功,emwin正常
4
关于littlevgl2rtt软件包刷频慢的解决方案?
5
移植了littlevGUI之后,用动态 线程去跑例程会卡死
6
lvgl的字体、图片文件如何升级?
7
qemu-vexpress-a9bsp下的littvgl工程可以实现触屏操作吗?
8
LVGL控件刷新死机问题
9
在lvgl上设置一个时间显示的label,一段时间后所有控件消失。
10
littlevgl2rtt和littlevgl的pc模拟器源码不兼容吗?
推荐文章
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
RTT串口查找函数使用过程中遇到的问题。
2
RT-Thread CI编译产物artifacts自动上传功能介绍
3
STM32G030移植RT-Thread
4
CubeMX & RT-Thread Studio 联合开发说明
5
RT-Thread项目助手v0.3 | Ubuntu与MacOS平台的RT-Thread Env
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
rt-smart
RTC
FAL
cubemx
I2C_IIC
ESP8266
UART
WIZnet_W5500
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
GD32
定时器
ADC
flashDB
编译报错
socket
中断
rt_mq_消息队列_msg_queue
keil_MDK
Debug
SFUD
ulog
msh
C++_cpp
MicroPython
本月问答贡献
出出啊
1522
个答案
343
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
814
个答案
179
次被采纳
crystal266
555
个答案
162
次被采纳
whj467467222
1222
个答案
149
次被采纳
本月文章贡献
出出啊
1
篇文章
6
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
3
次点赞
crystal266
2
篇文章
1
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部