OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8790|回复: 6

RT1052开发板 RGB屏调试过程中的几个问题

[复制链接]

1

主题

6

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2018-11-4
在线时间
5 小时
发表于 2018-11-9 21:53:32 | 显示全部楼层 |阅读模式
1金钱
首先指出开发板代码程序中的一个小BUG,//在指定区域内填充指定颜色块                         
//(sx,sy),(ex,ey):填充矩形对角坐标,区域大小为ex-sx+1)*(ey-sy+1)   
//color:要填充的颜色
void ELCDIF_Color_Fill(u16 sx,u16 sy,u16 ex,u16 ey,u16 *color)
{  
    u32 x,y;
        u32 ylen=ey-sy+1;
        u16 *p=color;
    if(ex>=lcdelcdif.width)ex=lcdelcdif.width-1;
    else if(ey>=lcdelcdif.height)ey=lcdelcdif.height-1;
    for(y=sy;y<=ey;y++)
    {
        for(x=sx;x<=ex;x++)
                {
                        ELCDIF_Draw_Point(x,y,p[x]);
                }
                p+=ylen;               
    }
}
这段代码里面 P+=ylen好像不对,应该是用P+=xlen才对吧。


--------------------------------------------下面是我的几个小白问题------------------------------------------------
1.) 如果申明一个较大的图片数组变量,无论采用sdram_debug或者ram_debug模式编译都会提示空间不足,采用flexspi_debug_release模式下编译正常,下载在开发板上,能正常工作显示。
问题是,sdram有32M,应该有充足的空间存图片数组,为什么会出现空间不足。
..\OBJ\test.axf: Error: L6406E: No space in execution regions with .ANY selector matching sys.o(i.RT1052_NVIC_SetPriorityGrouping).
..\OBJ\test.axf: Error: L6406E: No space in execution regions with .ANY selector matching noretval__2sprintf.o(.text).
..\OBJ\test.axf: Error: L6406E: No space in execution regions with .ANY selector matching _printf_hex_int.o(.constdata).



2.) 当把程序download到开发板后,必须要插上DAP仿真器时,开发板才能正常工作,如果把DAP仿真器的USB线拔下来,不能正常工作,屏都不亮。USB线插在充电器上,开发板也能正常工作。

3.)   根据Memory Map,  SEMC external memories 接口的其实位置是8000_0000, 那外接的SDRAM的访问空间一定就是从8000_0000开始的么?
8000_0000    DFFF_FFFF     1.5GB      SEMC external memories (SDRAM, NOR, PSRAM,NAND and 8080) shared memory space


谢谢






最佳答案

查看完整内容[请看2#楼]

1,寄存器版本有问题么? 2,用at关键字,参考我们内存管理实验 3,因为DAP在断电状态,会干扰MCU运行
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2018-11-9 21:53:33 | 显示全部楼层
guidewz 发表于 2018-11-10 18:19
非常感谢 正点原子回复。

1. 试过了不能正常显示,我把代码改了一下,能正常显示,采用坐标加长宽变量。 ...

1,寄存器版本有问题么?
2,用at关键字,参考我们内存管理实验
3,因为DAP在断电状态,会干扰MCU运行
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2018-11-10 02:43:27 | 显示全部楼层
1,你直接测试ELCDIF_Color_Fill函数,看对不对。
2,是否用了内存管理?是否你的数组定义地址在外部SDRAM?
3,DAP拔了就应该把20P的排线拔了,而不是拔了USB线。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2018-11-4
在线时间
5 小时
 楼主| 发表于 2018-11-10 18:19:01 | 显示全部楼层
非常感谢 正点原子回复。

1. 试过了不能正常显示,我把代码改了一下,能正常显示,采用坐标加长宽变量。
//在指定区域内填充指定颜色块                         
//sw为图片宽度,sh为图片高度  
//color:要填充的颜色
void ELCDIF_Color_Fill(u16 sx,u16 sy,u16 sw,u16 sh,u16 *color)
{  
    u32 x,y;
        u16 *p=color;
    u32 counter=0;
    for(y=sy;y<sy+sh;y++)
    {
        for(x=sx;x<sx+sw;x++)
                {
                        ELCDIF_Draw_Point(x,y,p[counter]);
                       counter++;
                }               
    }
}

2. 没有用了内存管理,请教下如何让我的数组定义地址在外部SDRAM?
其实我的代码只是将一个图片通过image2lcd软件生成一个400*640的图像数组,然后通过ELCDIF_Color_Fill显示出来。如何制定数组的首地址在        0X80800000  。谢谢
const unsigned char gImage_pic[512000] = {
0X9D,0XEF,0X7D,0XEF,0X7D,0XEF,0X7D,0XEF,0X7D,0XEF,0X9D,0XF7,0XBE,0XF7,0XDE,0XF7,
0XDE,0XFF,0XDE,0XF7,0XDE,0XF7,0XDE,0XF7,0XDE,0XFF,0XDE,0XF7,0XDE,0XF7,0XDE,0XF7,
......}

3. 确实拔了排线后可以正常工作,能请教下原因么?


回复

使用道具 举报

1

主题

6

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2018-11-4
在线时间
5 小时
 楼主| 发表于 2018-11-12 08:50:56 | 显示全部楼层
1. 库函数版本有问题

非常感谢支持,正点原子板子做的非常赞,教程也不错,就是希望快点更新,昨天双十一又买了好多核心板,准备做产品了。
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2018-11-4
在线时间
5 小时
 楼主| 发表于 2018-11-12 18:27:30 | 显示全部楼层
还是有点问题,我在\HARDWARE\LCD\PIC.h文件里定义一个图片数组
如果没有__attribute__((at(LCD_PIC_ADDR))) 时,采用sdram_debug或者ram_debug模式编译都会提示空间不足,采用flexspi_debug_release模式下编译正常,下载在开发板上,能正常工作显示。

如果改成如下定义时,将数组指定在SDRAM的地址内,则sdram_debug, ram_debug或 flexspi_debug_release模式下都会出错
#define LCD_PIC_ADDR                        0X80A00000  
const unsigned char gImage_pic[512000]__attribute__((at(LCD_PIC_ADDR))) ={0x9D.......}

工程代码如附件

谢谢赐教

实验19 eLCDIF(RGB屏)实验.rar

12.63 MB, 下载次数: 86

回复

使用道具 举报

1

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
105
金钱
105
注册时间
2016-12-30
在线时间
24 小时
发表于 2021-12-4 16:47:44 | 显示全部楼层
mark,库函数有问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 16:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表