原创 uC/GUI3.32应用笔记连载之三

2006-11-13 00:00 3553 10 10 分类: MCU/ 嵌入式

该移植了!
首先弄个NIOS II系统。
然后打开NIOS II IDE创建一个工程。
什么都可以!我使用的Hello World这个工程。使用例子的好处省心。
然后找到这个工程的在硬盘中的物理位置,将下载的代码中的两个文件夹GUI和config拷贝进去该软件工程的目录里面。


由于前一段的工作是基于Altera Fpga 的用的就是NIOS II处理器,后面我会专门针对arm来讨论相关的问题,最近的项目是基于arm9的。


点击看大图


图中就是copy好的目录。
然后回到NIOS II IDE refresh工程就能看到ide自动将这两个文件加添加进了工程,还有里面所有的文件。
但是不是所有的文件都是有用的,nios II的编译器会把所有的文件编译,这样在链接的时候就出问题了,因为有的文件是针对不同的配置写的。但是所有的都被编译了,这样子就导致大量的链接错误,无数重复定义。这就需要将无用的文件从工程中清除。一个地方就是LCDDrivers由于底层的绘图函数是在drivers里面定义的所以有多少个drivers就会有多少个同样名称的函数。这里就需要将无用的driver清除。还有一个地方就是gui/core里面GUI_DrawBMP.c和GUI_DrawBitmap.c着两个文件内容一模一样,一字不差!所以要清除一个!还有一个重要问题是文件的包含路径。nios ide不是自动添加文件包含路径的,用惯了ads的人特不习惯。而且在5.1包含路径设置位置比较难找!在这里添加四个路径:
E:\FPGA\Lcd\software\hello_world_0\Config
E:\FPGA\Lcd\software\hello_world_0\gui\Core
E:\FPGA\Lcd\software\hello_world_0\gui\WM
E:\FPGA\Lcd\software\hello_world_0\gui\Widget

点击看大图


还有就是要在系统库中加上ucos。uC/GUIi默认打开多任务支持。
包含好了路径就可以编译了。
但是提示还有链接错误!
非常郁闷,怎么看也看不出来怎么回事。提示一个字体未定义!
关键还是默认字体!
经过仔细察看发现一个问题!!!!大家看看图就明白了!
NIOS II IDE使用java开发的,java大小写敏感!这点还是Windows作的好。


4208a413-34d4-4d25-b50f-99b0c4cd1a19.jpg
还有一个问题就是优化级别的问题,我发现在NIOS II系统里面most级别的优化和none的优化(就是不优化)执行速度能差2~3倍。特别是一些计算密集型的代码例如:crc和gui应用。


这回编译就没有错误了!GUI初步移植成功,下来测试一下!由于没有硬件支持只能看看软件的。调试工程用内存查看器,就看到了uC/GUI的运行的结果。
执行下面的语句:
int main()  {
    LCD_Part = 0;
    alt_irq_register (  LCM_0_IRQ,
                        (void*)0,
                        LCD_isr);
    alt_irq_enable(LCM_0_IRQ);
    GUI_Init();
    GUI_DispChar('A'); /*显示一个A*/
    printf("Hello from Nios II!\n");
    while(1)    {
    }
  return 0;
}


 


我用的是MEMC驱动程序,即把GUI执行的结果保存到内存中。这样子才有了直接察看内存来看结果BT方法。



可以在内存查看器中看到数据的变化(由于数据量巨大,只列出头几列的数据)
1f f0 00 ...
e0 0e 00 ...
e0 0e 00 ..
ff fe 00 ...
e0 0e 00 ..
e0 0e 00 ..
e0 0e 00 ..
00 00 00 ...
转化为二进制
000111111111000000
111000000000111000
111000000000111000
111111111111111000
111000000000111000
111000000000111000
111000000000111000
000000000000000000
我的屏是RGB三色屏共有8种颜色,0表示该点灭,1表示亮。3位表示一个彩色的象素点。能看出来由1组成了一个A吗?
GUI初步抑制成功,下面将探索它的各种功能。(这部分着在摸索,每天弄一点,跟新可能会很慢!)

使用MEMC是因为这种方式的移植最简单根本不牵扯硬件,而且因为项目经费紧张,不可能买一个独立的控制器,特别是体现不出来FPGA的优势。这里的控制器是一个自己写的小东西,实现的对LCD的控制,这部分正在测试,测试好了也会拿出来给大家共享的。

下来的几天主要测试uC/GUI的复杂应用。包括widget, wm这些东西。

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
10
关闭 站长推荐上一条 /3 下一条