完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
我用am335x带奇美7寸1024*600的LCD只能在驱动中跑800*480.才能点亮。用正常1024*600时提示kmalloc for frame buffer failed,还打印出很多 ------------[ cut here ]------------ [ 1.338195] WARNING: at mm/page_alloc.c:2095 __alloc_pages_nodemask+0x45c/0x618() [ 1.346069] Modules linked in: [ 1.349273] Backtrace: [ 1.351898] [
da8xx_lcdc da8xx_lcdc.0: GLCD: kmalloc for frame buffer failed 。请问我要怎么修改LCD驱动?错误在fb_probe()函数。但不知道怎么改。 |
|
相关推荐
10个回答
|
|
|
|
|
|
Yaoming Qin 你好。我现在要用1024*600的屏。用的是32的BPP。请问要怎修改。谢谢用的是最新的05.05的EVM开发环境。用16位的显示只能显示屏的上半部分,还是两个桌面一起显示的。就是ti的ui起来后是两个一模一样的桌面。出现错误的地方在DMA_ALLOC....()函数里。但是跟了好久的代码硬是没看明白怎么改。是不是335x里面规定了framebuffer的大小?如是,在哪改?
|
|
|
|
你看看 board-am335xevm.c 里面的 结构体
static struct lcd_ctrl_config lcd_cfg = [ &disp_panel, .ac_bias = 255, .ac_bias_intrpt = 0, .dma_burst_sz = 16, .bpp = 32, .fdd = 0x80, .tft_alt_mode = 0, .stn_565_mode = 0, .mono_8bit_mode = 0, .invert_line_clock = 1, .invert_frm_clock = 1, .sync_edge = 0, .sync_ctrl = 1, .raster_order = 0, ]; 如果我的回答解决了您的问题,请确认答案,谢谢!:) |
|
|
|
Yaoming Qin 不好意思,我不知道你是没理解我还是我没理解你的意思。如果你指在这个结构体里把BPP改为16,那就不必试了。这个结构体我改了试过的。我的屏是32的BPP用16或24的都不能正常显示,颜色偏差还厉害。我现在是要用32位1024*600的屏能正常显示,就是在dma_alloc_coherent()函数里PAGE为0,开辟空间不成功。现在还在跟代码中,不知道是不是TI驱动定死了内存分配越界了才不成功还是其他原因。求指导
|
|
|
|
e08506806 发表于 2018-6-21 07:06 你好,你的问题解决了吗,我遇到同样的问题, AM3359 24bit 1024*768 LCD 出错“LCD: kmalloc for frame buffer failed”? [ 1.308959] da8xx_lcdc.0: alias fck already exists [ 1.314666] da8xx_lcdc da8xx_lcdc.0: GLCD: Found TFC_S9700RTWV35TR_01B panel [ 1.323120] ------------[ cut here ]------------ [ 1.328033] WARNING: at mm/page_alloc.c:2110 __alloc_pages_nodemask+0x458/0x62c() [ 1.335906] Modules linked in: [ 1.339141] Backtrace: [ 1.341735] [ [ 1.350646] r7:00000009 r6:0000083e r5:c00840a0 r4:00000000 [ 1.356628] [ [ 1.365997] [ [ 1.376068] r9:c06f3ce0 r8:00000000 r7:00000000 r6:c069e110 r5:c0708028 [ 1.382965] r4:00000000 [ 1.385742] [ [ 1.396209] [ [ 1.406036] [ [ 1.415374] [ [ 1.424530] r7:cf9bc608 r6:007d0000 r5:cf9c1a54 r4:c06d2844 [ 1.430541] [ [ 1.439605] [ [ 1.449707] [ [ 1.459503] r9:c002ff2c r8:c0714d8c r7:00000000 r6:c02635d4 r5:cf9bc608 [ 1.466400] r4:c06d2788 [ 1.469177] [ [ 1.478607] r5:cf81dc48 r4:cf9bc608 [ 1.482391] [ [ 1.491638] r7:c06be7f0 r6:00000000 r5:cf9bc63c r4:cf9bc608 [ 1.497650] [ [ 1.506896] r7:c06be7f0 r6:00000000 r5:cf9bc610 r4:cf9bc608 [ 1.512878] [ [ 1.522064] [ [ 1.531616] [ [ 1.541870] r7:c05c6868 r6:00000000 r5:cf9c4e00 r4:cf9bc600 [ 1.547851] [ [ 1.558319] [ [ 1.568420] [ [ 1.578399] r4:00000000 [ 1.581085] [ [ 1.590332] r6:00000001 r5:00000001 r4:c06bd128 [ 1.595245] [ [ 1.604217] [ [ 1.614044] r7:00000000 r6:cf8a0820 r5:00000000 r4:c06bdac0 [ 1.620025] [ [ 1.629272] r6:cf8a0820 r5:cf8a0800 r4:cf9c3d40 [ 1.634185] [ [ 1.643249] [ [ 1.653137] r7:c06d7558 r6:cf8a0854 r5:c0714db0 r4:cf8a0820 [ 1.659118] [ [ 1.668945] r9:00000000 r8:00000000 r7:00000000 r6:cf8a0854 r5:c06d7558 [ 1.675842] r4:cf8a0820 [ 1.678588] [ [ 1.688049] r7:00000000 r6:c026353c r5:cf81dec8 r4:c06d7558 [ 1.694030] [ [ 1.703277] r7:00000000 r6:cf9c3ec0 r5:c06e3db0 r4:c06d7558 [ 1.709259] [ [ 1.718444] [ [ 1.727905] [ [ 1.737701] r9:00000000 r8:00000000 r7:00000013 r6:00000000 r5:c06f4180 [ 1.744598] r4:c06d7530 [ 1.747375] [ [ 1.756530] r5:c06f4180 r4:c069ab4c [ 1.760314] [ [ 1.769195] [ [ 1.778381] [ [ 1.786712] r5:c0660208 r4:00000000 [ 1.790557] ---[ end trace b4622b5c66012fd7 ]--- [ 1.795440] da8xx_lcdc da8xx_lcdc.0: GLCD: kmalloc for frame buffer failed [ 1.802703] da8xx_lcdc: probe of da8xx_lcdc.0 failed with error -22 AM3359 LCD 16bit RGB 24Bit 现已经换成BGR。 我的修改如下:board-am335xevm.c static const struct display_panel disp_panel = [ WVGA, 16, 24, COLOR_ACTIVE, ]; static struct lcd_ctrl_config lcd_cfg = [ &disp_panel, .ac_bias = 255, .ac_bias_intrpt = 0, .dma_burst_sz = 16, .bpp = 24, .fdd = 0x80, .tft_alt_mode = 0, .stn_565_mode = 0, .mono_8bit_mode = 0, .invert_line_clock = 1, .invert_frm_clock = 1, .sync_edge = 0, .sync_ctrl = 1, .raster_order = 0, ]; 在am335x_evm_defconfig文件:FB_DA8XX_CONSISTENT_DMA_SIZE 已改为14,还是出现如上错误。 知道是什么原因吗?求指导。。 |
|
|
|
nyvvhxcs 发表于 2018-6-21 07:19 你好,你按下面 改下,下面是原因和步骤。 推荐你以后还是去ti的e2e网站问问题吧,这里没什么人回答。 It is Linux kernel limit. AM335x Linux kernel has 1024 number pages, than the page size is 4096 bytes. So "dma_alloc_coherent()" can't allocating more than 4MB. Fellow these step, resolve this problem: 1. Please, modify the "#define MAX_ORDER 12" in the include/linux/mmzone.h 2. Please tune menuconfig option, FB_DA8XX_CONSISTENT_DMA_SIZE [=5] or more 3. Rebuild your Linux kernel BR |
|
|
|
e08506806 发表于 2018-6-21 07:38 你好,我用am3359带奇美10‘4的屏,1024*768*24,按照你提供的步骤,还是出现”GLCD: kmalloc for frame buffer failed“错误, MAX_ORDER 12 FB_DA8XX_CONSISTENT_DMA_SIZE [=6] 感觉FB_DA8XX_CONSISTENT_DMA_SIZE的值没有被修改。。。。 请问还有其它需要注意的地方吗? 我给TI已经发了邮件现在还没有回。。。 |
|
|
|
nyvvhxcs 发表于 2018-6-21 07:52 我用的是1024*600*32位的。改了那些之后就malloc成功了。你把定义MAX_ORDER 12的那个判断注释掉,自己定义下#define MAX_ORDER 12。其他的好像没有什么了 ,可以把DMA_SIZE扩大在试试。 |
|
|
|
e08506806 发表于 2018-6-21 08:01 非常感谢,,,,,将原定义MAX_ORDER 12的那个判断注释掉,自己定义#define MAX_ORDER 12 ,后成功了,,,谢谢你的指点。 |
|
|
|
nyvvhxcs 发表于 2018-6-21 08:15 别客气,能帮上忙我也很高兴。互相学习。 |
|
|
|
只有小组成员才能发言,加入小组>>
TMS320F28377D:新做了以377d为芯片的板子,上电后芯片复位引脚出现方波请问如何解决?
1898 浏览 0 评论
TPS55340通电后输入端保险丝烧断,芯片输入和GND之间短路
3649 浏览 4 评论
5032 浏览 0 评论
请问如何用DM368对RGB格式的图片数据进行编码生成JPEG格式图片?
1736 浏览 1 评论
9386 浏览 8 评论
CC3100BOOST使用CC3200lunchXL进行烧录
670浏览 2评论
717浏览 1评论
TMS320F28034: 利用C2prog通过SCI给TMS320F28034烧录程序,出现错误提示:Bootloading... failed (invalid echo)!
678浏览 1评论
求DLPC350 Programmer’s Guide User's Guide 中文版说明书
1200浏览 1评论
1779浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-27 07:59 , Processed in 0.552230 second(s), Total 86, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号