Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
LittlevGL_LVGL
SDRAM
硬件电路设计
5
lvgl的lv_memcpy函数拷贝失败的问题(已找出原因)
发布于 2024-03-27 15:27:19 浏览:523
订阅该版
平台: RTThread 4.1.1 lvgl 8.3.11 stm32f429bi 运行的是RTT music demo 起初我是用时设置的是800x480分辨率, 在这个分辨率下程序是可以运行的, 但是我的屏幕是480x272的 修改之后报错了, 调试之后就遇到了一个很奇怪的问题 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240327/76eb9449ef5c02d4481650d422390129.png) 函数1和2是相同的函数, 1是可以运行的, 但是到2就报错了 错误原因是lv_memcpy没有拷贝完整的数据 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240327/2800e8cec5ad47410a889b01ec876000.png.webp) 可以看到var这个参数不一样 突然就出错了, 而且这个函数在之前可以正常工作的, 不知道为什么突然就拷贝不全了 不是, 是`lv_anim_t * new_anim = _lv_ll_ins_head(&LV_GC_ROOT(_lv_anim_ll));`返回的地址有问题, 内存泄露了 继续往下找发现 `_lv_ll_ins_head` 返回的是 `rt_malloc` 分配的地址 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240328/bf0bea7ad5d7f59f104c694d866be8f8.png) 找到这个指针产生的位置了, 在对分配中, 貌似是SDRAM的问题 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240328/918b884cee6fb4c72aa6adf33fa7c698.png.webp) 这里有差别, 在函数1里没有运行if里的内容, 但到了函数2里却运行了if中的内容 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240328/c462825c75af3e3949986515b3cd5693.png) 奇怪, 我把分辨率再设置成800x480, 函数2却没有进入if函数 再设置成480x272分辨率, 查看 `rt_memheap_alloc` 运行发现, 函数2在申请内存块时没有找到能保存下的内存块, 返回后进入if, 貌似内存碎片化了 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240328/e4f27f7324b5028bda1d8c83940b7486.png) 但是为什么if返回的地址是错误的, 我关闭LVGL用户UI, 测试SDRAM, 果然失败了, 明明预先测试成功的 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240328/b7c1cdddb7e1516f479748ffbcb7eccd.png) 这个问题排除了, 当我把lvgl线程关闭, sdram测试就通过了 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240328/bcd0315f2228e5910fea16743ae80304.png) 貌似地址没有问题, 我试了在if中打断点, 返回的也是差不多的位置 依然是复制失败的问题, 在传入的lv_obj参数全部丢失了 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240328/6ee9192caea3b33f2e89fedbbee88892.png.webp) 这些地址应该不能使用, 这是怎么返回的? ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240328/8ee304a6ca3d7f1193710e8af792e380.png.webp) 忘记了SDRAM不断电是不会复位的, 结果就是拷贝有问题 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240328/7576c96fbce1f75f9b12cd7e5f9ade59.png.webp) 尝试使用了rt_memcpy依然有问题, 查看了lv_memcpy实现也没有特别的操作就是赋值, 目前怀疑还是SDRAM的问题, 在数据传输中出错了 怎么感觉像短路一样呢 我的SDRAM是16位宽, 在第10和11位这两位像连起来一样 0000->0000 1000->1000 0100->0110 0010->0110 0001->0001 也就是设置4和2最后都会变成6 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240328/48c13714b01e2b0ab5523d4ffb0fc9e2.png) 测试这两个引脚并没有短路 测试错了, 出错的位数是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
被浏览
523
关于作者
ThinkCode
这家伙很懒,什么也没写!
提问
20
回答
16
被采纳
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
RT-Thread中的time溢出问题,时间戳溢出,解决方法
2
ART-PI使用env驱动ETH网卡,pc和板子可以ping通
3
SystemView线程名字不显示
4
只用网页也能跑RT-Smart 无门槛腾讯Cloud studio + smart-build快速构建
5
免费申请 | FRDM-MCXA156评测活动发布!
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
I2C_IIC
ESP8266
UART
cubemx
WIZnet_W5500
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
keil_MDK
ulog
SFUD
msh
C++_cpp
MicroPython
本月问答贡献
RTT_逍遥
8
个答案
2
次被采纳
三世执戟
7
个答案
1
次被采纳
KunYi
6
个答案
1
次被采纳
winfeng
2
个答案
1
次被采纳
chenyaxing
2
个答案
1
次被采纳
本月文章贡献
catcatbing
2
篇文章
5
次点赞
swet123
1
篇文章
3
次点赞
YZRD
1
篇文章
2
次点赞
Days
1
篇文章
2
次点赞
阳光的掌控者
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部