天嵌 ARM开发社区

 找回密码
 注册
查看: 2365|回复: 3

Linux下裸奔LCD失败N次。这是第N+1次。求拉手。

[复制链接]
绯村 发表于 2013-4-1 01:07:00 | 显示全部楼层 |阅读模式
本帖最后由 绯村 于 2013-4-1 01:11 编辑

RT。本人新买的本本Win7系统。前个月刚买的TQ2440板子。 群创7寸屏幕。由于在win7下USB驱动总是安装失败。无奈只有用Linux了。可是Linux下没有ADS这样的工具。所以麻烦就来了。


因为光盘里面给的代码都是用ADS包装过的,所以想要用Linux下的交叉编译工具来编译那么就得先把ADS工程里面的代码提取出来,去掉与ADS无关的部分,关键的问题就在于彻底搞懂代码的含义才能自己动手修改,然后编写makefile。关于裸奔Lcd的问题如下:


关于宏定义#define CSTM_LCD(文于LCD_TFT.h 14行),在定义了这个之后,LCD_TFT.c里面的函数实现都不同. 在lcd_tft.c中几个关键函数如下:

在cstm_lcd.c中,实现如下:

而两者是否定义CSTM_LCD的差距关系到LCD的初始化、PutPixel和LCDBUFFER的定义。关于LCDBUFFER的定义是这样:
#ifdef CSTM_LCD
extern volatile unsigned short *LCD_BUFFER;
#else
volatile unsigned short LCD_BUFFER[SCR_YSIZE_TFT][SCR_XSIZE_TFT];
#endif

这里假如定义了CSTM_LCD  那么这里的LCDBUFFER在cstm_lcd.c里面将被初始化为:
#ifdef CSTM_LCD
        LCD_BUFFER=(volatile unsigned short *)malloc(sizeof(short)*gp_lcd->Scr_ysize*gp_lcd->Scr_xsize);
        _lcd_init(gp_lcd);
#endif

对于malloc这个函数,在2440lib.c里面是这么实现的;

显然这里的数组定义对于C编译器来说是非法的,除非你把这个Image$$奇怪的数组作为函数的型参,否则是不允许这种未指明大小的数组的。(我猜测可能是ADS扩展了C的用法),所以这个是没办法用arm-linux-gcc来编译的。


说了这么多,只是想搞明白:
1.  对于群创7寸屏幕,LCD的实现是怎么样的?
2.  宏定义#define CSTM_LCD(文于LCD_TFT.h 14行)是否有用? 是不是在LCD_TFT.c里面用的都是#ifndef后面的条件来编译的。
3.   对于这样简单的裸奔程序,这些与LCD貌似无关的设置是必须的吗?比如Main.c 里面的

                         Port_Init();  
                         Isr_Init();
                        ChangeMPllValue((mpll_val>>12)&0xff, (mpll_val>>4)&0x3f, mpll_val&3);
                        ChangeClockDivider(key, 12);
                        cal_cpu_bus_clk();

                        MMU_Init();
望知道的人指点一二,LED和键盘扫描都已经实现,唯独这个LCD卡了我很久了。一直没搞定。
我写的LCD显示单色代码在Github里面。(我现在只求能够显示单色就OK),实现语句为
Lcd_ClearScr( (0x00<<11) | (0x00<<5) | (0x1f)  )  ;                //clear screen
        Uart_Printf( "Display Blue! Press any key to continue!\n" );
        Uart_Getch() ;                //wait uart input
我把Uart的语句全部都删除了。 求人指点阿。。代码地址:
https://github.com/ashbell/ashbell/tree/master/lcd               
代码编译能通过,下载到板子上就是白屏,没有出现预期的蓝色屏幕。






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
亚瑟王 发表于 2013-4-1 11:09:09 | 显示全部楼层
亲,这个帖子中的驱动就是针对TQ2440的Windows7的USB驱动。
 楼主| 绯村 发表于 2013-4-1 17:52:11 | 显示全部楼层
亚瑟王 发表于 2013-4-1 11:09
亲,这个帖子中的驱动就是针对TQ2440的Windows7的USB驱动。

那你的意思是我的没希望了??用别的系统就不能实现么?
亚瑟王 发表于 2013-4-1 19:17:12 | 显示全部楼层
绯村 发表于 2013-4-1 17:52
那你的意思是我的没希望了??用别的系统就不能实现么?

用Linux的我调试过,不过没有细看你的代码。我个人认为不用死纠结在编译环境上。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2024-6-8 18:32 , Processed in 1.062500 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

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