专栏中心

EEPW首页 > 专栏 > s3c2410裸跑uC/GUI

s3c2410裸跑uC/GUI

发布人:0750long 时间:2010-02-05 来源:工程师 发布文章

s3c2410裸跑uC/GUI

出处:http://blog.sina.com.cn/s/blog_4d4fb33e0100ai0u.html

Author:Jackwen

Email:jackwen123@21cn.com

Target Board:GEC2410

FTF LCD: Sharp 3.5 240*320

uC/GUI Software package: uC/GUI3.90

 

经过一个星期多的努力,终于在TFT屏上显示出了“Hello World !” 。

 

  我是在2410上移植uC/GUI,不上OS,是裸跑。GEC2410自带的测试代码已经包括了必要的硬件底层代码,利用这部分代码就省去了编写底层代码的功夫了。我的思路是把底层代码与uCGUI脱离分开,两者之间的连接通过各自的一个接口文件。针对底层代码写一个接口C源文件CPUMain.c,这个C文件直接调用底层代码。把与uC/GUI的接口函数都做在这里。uC/GUI对外的就口文件就有两个,而且都在uC/GUI软件包里面。一个是GUI_X.C,另外一个在LCDDriver里面(需要修改),这两个C文件就跟底层的驱动连接的。另外建立一个C文件作为主函数,主函数通过底层代码的接口文件调用底层代码和调用Uc/GUI的API函数。

 下面描述一下具体的移植过程吧。

移植uC/GUI主要集中在修改三个头文件和两个C文件。三个头文件都在\Config下,分别是GUICon.h ,GUITouchConf.h,LCDConf.h ;两个C文件一个是GUI_X.C(Sample\GUI_X.C) ,.另外一个在GUI\LCDDriver目录下(我是选择LCDWin.c来修改的)。

1.修改头文件LCConf.h

主要修改的地方:

 

 

#define LCD_XSIZE      (240)  

#define LCD_YSIZE      (320)  

 

//#define LCD_BITSPERPIXEL (8)

#define LCD_BITSPERPIXEL (16)   //16Bpp

 

#define LCD_CONTROLLER 1375

 

LCD_XSIZE  ,LCD_YSIZE 是对应你的LCD的尺寸大小

LCD_BISPERPIXEL  指定每象素的位的数量

LCD_CONTROLLER控制器部分我没改,按原来定义的1375。uC/GUI的技术文档上没有Sharp FTFP屏的控制器,就用LCD13XX中的一个来代替。

2 修改头文件GUI_Conf.h

 

#ifndef GUICONF_H

#define GUICONF_H

 

#define GUI_OS                    (0) 

#define GUI_SUPPORT_TOUCH         (0) 

#define GUI_SUPPORT_UNICODE       (1) 

 

#define GUI_DEFAULT_FONT          &GUI_Font6x8

//#define GUI_ALLOC_SIZE          12500 

#define GUI_ALLOC_SIZE          1024*1024 

 

 

 

#define GUI_WINSUPPORT            0 

#define GUI_SUPPORT_MEMDEV        0 

#define GUI_SUPPORT_AA            0 

 

#endif 

 

 

GUI_0S 位1时支持OS,否则就是裸跑吧

GUI_SUPPORT_TOUCH 是否支持触摸屏

GUI_SUPPORT_UNICODE 是否支持ASCII/UNICODE

GUI_DEFAULT_FONT 选择一个默认的字体

GUI_ALLOC_SIZE  动态内存的大小

GUI_WINSUPPORT  是否支持 WM(视窗管理器)

GUI_SUPPORT_MEMDEV  是否支持存储设备

GUI_SUPPORT_AA        是否支持反锯齿

3 修改 GUITouchConf.h

 如果需要支持触摸屏的话,这个头文件也要作相应的修改。

 

下面是说明如何修改uC/GUI的两个接口文件。

在LCD的最基本操作就是在某一个坐标上画点,其他的操作都是画点操作延伸出来的。uC/GUI的所有对LCD的操作也是基于这个动作。GEC2410的底层驱动代码上有这个函数PutPixel(x,y,c)。所以必须要把这个函数连接到uC/GUI的代码里面。连接的函数就在LCDDriver下,我选用LCDWin.c.

修改这个文件的时候要注意,首先要屏蔽掉第一行的条件编译语句 #if defined(WIN32) && !defined(LCD_SIMCONTROLLER) 和文件的最后一行的#endif  顺便把#endif头上的#else 也干掉。这个文件是针对PC仿真的,不注释掉这几个地方,整个文件都不会被编译的。

  PutPixel(x,y,c)在LCD_240X320.C中,由于PutPixel(x,y,c)被定义成了 static ,那就在LCD_240X320.C的后面加一个外部函数调用PutPixel(x,y,c) 。当然去掉static也行。

void LCD2410_SetPixel(U32 x,U32 y,U32 c)

{PutPixel(x,y,c);

}

 

 

然后把LCDWin.c的LCDSIM_SetPixelIndex(x, y, c, LCD_DISPLAY_INDEX)全部替换成LCD2410_SetPixel(x,y,c)

 

你会发现里面还有一个LCDSIM_GetPixelIndex(x,y, LCD_DISPLAY_INDEX); 那就在LCD_240X320.C造一个函数出来吧。参照 PutPixel() 造一个出来

void GetPixel(U32 x,U32 y,U32 c)

{

if ( (x < SCR_XSIZE_TFT_240320) && (y < SCR_YSIZE_TFT_240320) )

c=LCD_BUFER[(y)][(x)];   //对调过来,呵呵,简单吧!

}

  void LCD_Off (void)

  void LCD_ON(void)

这两个函数连接到LCD_240X320.C中的Lcd_EnvidOnOff(int onoff)

 

int  LCD_L0_Init(void) 连接到 LCD_240X320.C 中的Lcd_Init();再加上一个清屏的函数

void LCD_L0_ReInit() 连接到LCD_240X320.C 中的Lcd_Init();不加清屏函数。

 

最后修改GUI_X.C文件

由于没有OS,所以有关OS的语句都得修改,幸好不是很多,就两个地方而已。

GUI_X_GetTime(void) 返回当前的OS_TimeMS ,那就修改一下,把变量赋值一个数比如是10 然后让函数返回这个值就行了 。

  GUI_X_Delay(int ms)

自己写个延时程序吧,也可以参照2410lib.c下的Delay()。

GUI_X_Init();完成硬件的初始化,包括时钟频率设置,端口设置,中断设置,LCD初始化等等一系列动作。在2410lib.c中可以找到这些函数的原型。

做完以上的工作基本上算是完成了移植的工作了。

最后在主函数上编写测试程序

int Main()

{GUI_Init();

GUI_DispString("Hello world!");

  for(;;);

 

  return 0;

}

编译通过后 ,LCD上就会出现 “Hello World !”了。

专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

2025年第三季度,半导体营收首次单季突破2000亿美元,行业整体增长加速

英飞凌推出 PSOC™ 4 HVPA-SPM 1.0,智能化升级汽车电池管理系统,助力区域架构发展

使用1080p视频工作台,加速您的视频格式转换

视频 2010-03-17

TI用在工业里的Sigma-Delta调制器

视频 2010-03-17

以先进半导体技术赋能AI芯片发展

在Arria II GX收发器FPGA上实现PCIe、XAUI和3G-SDI

视频 2010-03-17

ASML:High NA EUV 光刻机,2027~2028年实现大规模量产

EDA/PCB 2025-12-17

DS2430A 256 位1-Wire EEPROM

DS2431 1024 位1-Wire EEPROM

分析FPGA收发器的互操作性和信号完整性

视频 2010-03-17

采用单片FPGA支持多种工业以太网协议

视频 2010-03-17

技术干货 | 为什么 TI DLP® 技术的彩虹效应正在逐渐消失

消费电子 2025-12-17

四天一单,谁在涌入半导体赛道?

2025-12-17

ADI公司LDO的电容选择指南

DS1991 多密钥iButton

简化设计,降低BOM成本,纳芯微推出NSI1611系列隔离电压采样芯片

技术干货 | 利用 CC2340R5 启用 Apple® Find My® Network 功能

浩亭2025财年收官,全球布局驱动强劲增长

元件/连接器 2025-12-17

DS2411 带有VCC输入的硅序列号

DS2401 增强型硅序列号

更多 培训课堂
更多 焦点
更多 视频

技术专区