绯村 发表于 2013-4-1 01:07:00

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

本帖最后由 绯村 于 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;
#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               代码编译能通过,下载到板子上就是白屏,没有出现预期的蓝色屏幕。






亚瑟王 发表于 2013-4-1 11:09:09

亲,这个帖子中的驱动就是针对TQ2440的Windows7的USB驱动。

绯村 发表于 2013-4-1 17:52:11

亚瑟王 发表于 2013-4-1 11:09 static/image/common/back.gif
亲,这个帖子中的驱动就是针对TQ2440的Windows7的USB驱动。

那你的意思是我的没希望了??用别的系统就不能实现么?

亚瑟王 发表于 2013-4-1 19:17:12

绯村 发表于 2013-4-1 17:52 static/image/common/back.gif
那你的意思是我的没希望了??用别的系统就不能实现么?

用Linux的我调试过,不过没有细看你的代码。我个人认为不用死纠结在编译环境上。
页: [1]
查看完整版本: Linux下裸奔LCD失败N次。这是第N+1次。求拉手。