WhyCan Forum(哇酷开发者社区)

我们能随心所欲"有问题百度(谷歌)一下", 这得感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn

您尚未登录。

#1 2018-06-12 20:57:25

tom
会员
注册时间: 2018-03-14
累计积分: 113

谁有emwin的arm9 gcc linux版本的静态库?

想在n32926上跑一下emwin,奈何既没有源码,也没有链接库,无法下手。  ucgui3.98版本,功能相对emwin的新版,还是较弱~

离线

#2 2018-06-12 21:55:12

晕哥
管理员
注册时间: 2017-09-06
累计积分: 9,188

Re: 谁有emwin的arm9 gcc linux版本的静态库?

据说是可以, 而且有人做到了,不知道具体如何做的.

离线

#3 2018-06-12 21:59:13

晕哥
管理员
注册时间: 2017-09-06
累计积分: 9,188

Re: 谁有emwin的arm9 gcc linux版本的静态库?

rt105x_sdk_2.3.0\middleware\emwin\emWin_library\ARMGCC\libemWin_M4F.a

不知道是不是可以静态链接这种库,在linux 用户层跑 emwin 应用?

离线

#4 2018-06-13 09:37:35

tom
会员
注册时间: 2018-03-14
累计积分: 113

Re: 谁有emwin的arm9 gcc linux版本的静态库?

这种应该是不行的,有些lib可能还和编译器版本相关

离线

#5 2018-06-13 11:31:13

tom
会员
注册时间: 2018-03-14
累计积分: 113

Re: 谁有emwin的arm9 gcc linux版本的静态库?

NXP提供的lib

使用NXP提供的静态lib,链接试了下,居然成功了!
不知道是否有其他坑

离线

#6 2018-06-13 12:47:32

晕哥
管理员
注册时间: 2017-09-06
累计积分: 9,188

Re: 谁有emwin的arm9 gcc linux版本的静态库?

这个文件哪里有下载呢?

离线

#7 2018-06-13 13:44:15

tom
会员
注册时间: 2018-03-14
累计积分: 113

Re: 谁有emwin的arm9 gcc linux版本的静态库?

离线

#8 2018-06-13 13:58:14

晕哥
管理员
注册时间: 2017-09-06
累计积分: 9,188

Re: 谁有emwin的arm9 gcc linux版本的静态库?

离线

#9 2018-06-13 14:09:59

晕哥
管理员
注册时间: 2017-09-06
累计积分: 9,188

Re: 谁有emwin的arm9 gcc linux版本的静态库?

QQ20180613140833.png

奇怪哦, 这个版本没有.

离线

#10 2018-06-13 14:21:50

晕哥
管理员
注册时间: 2017-09-06
累计积分: 9,188

Re: 谁有emwin的arm9 gcc linux版本的静态库?

离线

#11 2018-06-13 15:27:56

晕哥
管理员
注册时间: 2017-09-06
累计积分: 9,188

Re: 谁有emwin的arm9 gcc linux版本的静态库?

随便试了一把,  用这个工具链:

$ arm-none-eabi-gcc -v
Using built-in specs.
COLLECT_GCC=arm-none-eabi-gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-none-eabi/4.8.2/lto-wrapper
Target: arm-none-eabi
Configured with: ../gcc-4.8.2/configure --build=x86_64-linux-gnu --prefix=/usr --includedir='/usr/lib/include' --mandir='/usr/lib/share/man' --infodir='/usr/lib/share/info' --sysconfdir=/etc --localstatedir=/var --libexecdir='/usr/lib/lib/gcc-arm-none-eabi' --disable-maintainer-mode --disable-dependency-tracking --enable-languages=c,c++ --prefix=/usr/lib --infodir=/usr/share/doc/gcc-arm-none-eabi/info --mandir=/usr/share/man --htmldir=/usr/share/doc/gcc-arm-none-eabi/html --pdfdir=/usr/share/doc/gcc-arm-none-eabi/pdf --bindir=/usr/bin --libexecdir=/usr/lib --libdir=/usr/lib --with-system-zlib --enable-multilib --disable-decimal-float --disable-libffi --disable-libgomp --disable-libmudflap --disable-libquadmath --disable-libssp --disable-libstdcxx-pch --disable-libstdc++-v3 --disable-nls --disable-shared --disable-threads --disable-tls --disable-plugin --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=arm-none-eabi --with-gnu-as --with-gnu-ld --with-headers=no --without-newlib --with-pkgversion=4.8.2-14ubuntu1+6 --without-included-gettext --with-multilib-list=armv6-m,armv7-m,armv7e-m,armv7-r CFLAGS='-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat' CPPFLAGS=-D_FORTIFY_SOURCE=2 CXXFLAGS='-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat' FFLAGS='-g -O2' LDFLAGS=-Wl,-z,relro AR_FOR_TARGET=arm-none-eabi-ar AS_FOR_TARGET=arm-none-eabi-as LD_FOR_TARGET=arm-none-eabi-ld NM_FOR_TARGET=arm-none-eabi-nm OBJDUMP_FOR_TARGET=arm-none-eabi-objdump RANLIB_FOR_TARGET=arm-none-eabi-ranlib READELF_FOR_TARGET=arm-none-eabi-readelf STRIP_FOR_TARGET=arm-none-eabi-strip
Thread model: single
gcc version 4.8.2 (4.8.2-14ubuntu1+6)

编译指令:

emWin/Sample/Application/GUIDemo$ arm-none-eabi-gcc -o test GUIConf.c GUIDEMO.c  GUIDEMO_Intro.c GUIDEMO_Resource.c ../../../Sample/GUI_X/GUI_X_Ex.c GUIDEMO_Conf.c  LCDConf.c GUIDEMO_Start.c  ../../../Sample/DisplayDriver/GUIDRV_Template.c -I../../../Include -L../../../Lib -lemwin -static -lm -DLCD_SIMCONTROLLER --specs=nosys.specs

运行出段错误:

# ./test
Segmentation fault


gdb调试:

# ./gdb test
GNU gdb (GDB) 7.6
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "arm-linux".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /tmp/test...done.
(gdb) run
Starting program: /tmp/test

: symbol 'ps_pdwrite': can't resolve symbol

: symbol 'ps_pglobal_lookup': can't resolve symbol

: symbol 'ps_lsetregs': can't resolve symbol

: symbol 'ps_getpid': can't resolve symbol

: symbol 'ps_lgetfpregs': can't resolve symbol

: symbol 'ps_lsetfpregs': can't resolve symbol

: symbol 'ps_lgetregs': can't resolve symbol

: symbol 'ps_pdread': can't resolve symbol

Program received signal SIGSEGV, Segmentation fault.
_malloc_r (reent_ptr=reent_ptr@entry=0x497f8 <impure_data>, bytes=bytes@entry=1024) at ../../../../../newlib/libc/stdlib/mallocr.c:2587
2587    ../../../../../newlib/libc/stdlib/mallocr.c: No such file or directory.
(gdb)

结论:

编译链接都成功了,但是运行出错,貌似 malloc 出错?

离线

#12 2018-06-13 15:39:00

xinxiaoci
会员
注册时间: 2018-04-18
累计积分: 71

Re: 谁有emwin的arm9 gcc linux版本的静态库?

收藏一下

离线

#13 2018-06-13 15:57:56

晕哥
管理员
注册时间: 2017-09-06
累计积分: 9,188

Re: 谁有emwin的arm9 gcc linux版本的静态库?

安装工具链:

emWin/Sample/Application/GUIDemo$ sudo apt-get install gcc-arm-linux-gnueabi

编译指令:

emWin/Sample/Application/GUIDemo$ arm-linux-gnueabi-gcc -o test GUIConf.c GUIDEMO.c  GUIDEMO_Intro.c GUIDEMO_Resource.c ../../../Sample/GUI_X/GUI_X_Ex.c GUIDEMO_Conf.c  LCDConf.c GUIDEMO_Start.c  ../../../Sample/DisplayDriver/GUIDRV_Template.c -I../../../Include -L../../../Lib -lemwin -static -lm -DLCD_SIMCONTROLLER

终于在V3s@linux 系统跑起来了,虽然没有画面。


打包好的文件在 QQ群 544762792 附件:

emwin/emWin_522_arm_linux_link_ok.7z

只能编译链接运行,并不能看到任何界面。

离线

#14 2018-06-13 16:00:21

arphone
会员
注册时间: 2017-11-03
累计积分: 66

Re: 谁有emwin的arm9 gcc linux版本的静态库?

收藏一下

离线

#15 2018-06-13 16:06:18

晕哥
管理员
注册时间: 2017-09-06
累计积分: 9,188

Re: 谁有emwin的arm9 gcc linux版本的静态库?

按照这个帖子: 自己用Qt写一个 emwin 5.26 电脑模拟器

改下底层适配函数,就可以在嵌入式Linux把emwin跑起来了。

离线

#16 2018-06-13 16:35:10

tom
会员
注册时间: 2018-03-14
累计积分: 113

Re: 谁有emwin的arm9 gcc linux版本的静态库?

我已经在32926上面把emwin的demo跑起来了。你的V3S也是链接的ARM9的lib吗?

离线

#17 2018-06-13 16:42:18

晕哥
管理员
注册时间: 2017-09-06
累计积分: 9,188

Re: 谁有emwin的arm9 gcc linux版本的静态库?

厉害。
也是arm9 的lib。

离线

#18 2019-11-20 22:51:48

大帅
会员
注册时间: 2019-01-17
累计积分: 94

Re: 谁有emwin的arm9 gcc linux版本的静态库?

晕哥 说:

安装工具链:


编译指令:


终于在V3s@linux 系统跑起来了,虽然没有画面。


打包好的文件在 QQ群 544762792 附件:


只能编译链接运行,并不能看到任何界面。

@晕哥:我下载下来看了,emwin里面的都没有fb驱动画点实现,怎么显示界面?

离线

#19 2019-12-01 14:28:44

armstrong
会员
注册时间: 2019-04-10
累计积分: 116

Re: 谁有emwin的arm9 gcc linux版本的静态库?

如果是裸机开发,就用NXP最近发布的V5.50;如果是linux应用程序,就用nuvoton发布的V5.48k!
完美!这两个厂商发布的库,都比ST的版本新,而且它们没有做任何限制,ARM内核一致就可以用。

最近编辑记录 armstrong (2019-12-01 14:33:48)

离线

#20 2019-12-01 14:30:22

armstrong
会员
注册时间: 2019-04-10
累计积分: 116

Re: 谁有emwin的arm9 gcc linux版本的静态库?

大帅 说:

@晕哥:我下载下来看了,emwin里面的都没有fb驱动画点实现,怎么显示界面?

emwin只需要fb0映射得到的一个虚拟内存指针,这个指针交给emwin,剩下的事情emwin自己能搞定。所有绘图函数emwin自带的。

离线

#21 2019-12-02 13:28:59

大帅
会员
注册时间: 2019-01-17
累计积分: 94

Re: 谁有emwin的arm9 gcc linux版本的静态库?

armstrong 说:

emwin只需要fb0映射得到的一个虚拟内存指针,这个指针交给emwin,剩下的事情emwin自己能搞定。所有绘图函数emwin自带的。

能共享下新塘的V5.48k么?或者告知下在哪个下载,我在新塘github下的是5.46
我用的是#define GUI_VERSION 546081
用这个编译后运行,不知道GUI_Init()怎么没有调用这些函数GUI_X_Config();LCD_X_Config();

我手动加上这些函数,发现GUI_ALLOC_AssignMemory(aMemory, GUI_NUMBYTES);不论申请多大的空间都是失败,
并且查询下GUI_ALLOC_GetNumFreeBytes() 一直是等于0.
if (GUI_ALLOC_GetNumFreeBytes() < RECOMMENDED_MEMORY) {
    GUI_ErrorOut("Not enough memory available.");
    return;
  }

往高手能指点迷津~~

离线

#22 2019-12-02 13:41:42

大帅
会员
注册时间: 2019-01-17
累计积分: 94

Re: 谁有emwin的arm9 gcc linux版本的静态库?

@armstrong 这是我在另外一个贴里的求助~~

//
// Recommended memory to run the sample with adequate performance
//
#define RECOMMENDED_MEMORY (1024L * 200)//(1024L * 2200)

void GUIDEMO_Main(void) {
	
   printf("GUIDEMO_Main.1()\n");
	
  #if GUI_WINSUPPORT
    FRAMEWIN_SKINFLEX_PROPS Framewin_Props;
  #endif
  #if GUIDEMO_USE_AUTO_BK
    U32                     NumFreeBytes;
    int                     BitsPerPixel;
  #endif
  
  //
  // Check if recommended memory for the sample is available
  //
  if (GUI_ALLOC_GetNumFreeBytes() < RECOMMENDED_MEMORY) {
    GUI_ErrorOut("Not enough memory available."); 
	
	U32 GetNumFreeBytes = GUI_ALLOC_GetNumFreeBytes();
	printf("GUI_ALLOC_GetNumFreeBytes()=0x%x\n",GetNumFreeBytes);
	printf("Not enough memory available.\n");
    return;
  }
  printf("GUIDEMO_Main.2()\n");

[root@EmbedSky sky]# chmod 777 GUIDemo
[root@EmbedSky sky]# ./GUIDemo
uVideoSize = 0x25800
var.xres = 0x140
var.yres = 0xf0
pVideoBuffer = 0x40001000
Main Task thread
MainTask()
GUI_Init()
GUIDEMO_Main.1()
GUI_ALLOC_GetNumFreeBytes()=0x0
Not enough memory available.
[root@EmbedSky sky]#

为什么我编译新塘的emwin运行后老是这里申请不到内存呢?
下面是配置的emwin内存大小

#define GUI_NUMBYTES  (5 * 1024 * 1024) //0x1000   //0x20000

static U32 aMemory[GUI_NUMBYTES / 4]; 
#define GUI_BLOCKSIZE 0x100
/*********************************************************************
*
*       Public code
*
**********************************************************************
*/
/*********************************************************************
*
*       GUI_X_Config
*
* Purpose:
*   Called during the initialization process in order to set up the
*   available memory for the GUI.
*/
void GUI_X_Config(void) {
  //
  // 32 bit aligned memory area
  //
  // static U32 aMemory[GUI_NUMBYTES / 4];
  //
  // Assign memory to emWin
  //
  GUI_ALLOC_AssignMemory(aMemory, GUI_NUMBYTES);
  
  //设置由存储器管理系统分配的存储块的平均尺寸
    GUI_ALLOC_SetAvBlockSize(GUI_BLOCKSIZE); //块平均尺寸
	
  //
  // Set default font
  //
  GUI_SetDefaultFont(GUI_FONT_6X8);
}

离线

#23 2019-12-02 13:45:28

大帅
会员
注册时间: 2019-01-17
累计积分: 94

Re: 谁有emwin的arm9 gcc linux版本的静态库?

armstrong 说:

emwin只需要fb0映射得到的一个虚拟内存指针,这个指针交给emwin,剩下的事情emwin自己能搞定。所有绘图函数emwin自带的。

@armstrong
大神我好像找到了,是这个版本么?
#define GUI_VERSION 548112

离线

#24 2019-12-02 13:51:04

win32prog
会员
注册时间: 2019-11-28
累计积分: 138

Re: 谁有emwin的arm9 gcc linux版本的静态库?

@大帅 是不是因为绑定了新唐什么id, 然后就故意挂了。

离线

#25 2019-12-02 14:20:36

大帅
会员
注册时间: 2019-01-17
累计积分: 94

Re: 谁有emwin的arm9 gcc linux版本的静态库?

win32prog 说:

@大帅 是不是因为绑定了新唐什么id, 然后就故意挂了。

上面的大神不是说没有限制么,另外好像新塘芯片没有id,
现在只待大神解惑,
或者晚上闲了回去再试试大神说的这个版本,

离线

#26 2019-12-02 14:29:06

win32prog
会员
注册时间: 2019-11-28
累计积分: 138

Re: 谁有emwin的arm9 gcc linux版本的静态库?

大帅 说:

上面的大神不是说没有限制么,另外好像新塘芯片没有id,
现在只待大神解惑,
或者晚上闲了回去再试试大神说的这个版本,

感觉不太可能吧, 这样不就打开了潘多拉魔盒?

离线

#27 2019-12-02 15:46:41

armstrong
会员
注册时间: 2019-04-10
累计积分: 116

Re: 谁有emwin的arm9 gcc linux版本的静态库?

大帅 说:

上面的大神不是说没有限制么,另外好像新塘芯片没有id,
现在只待大神解惑,
或者晚上闲了回去再试试大神说的这个版本,

你用这个:
https://github.com/OpenNuvoton/NUC970_Linux_Applications/tree/master/emWin
注意自己适配一下LCDConf.c文件,里面的代码有点烂。

离线

#28 2019-12-02 15:48:00

armstrong
会员
注册时间: 2019-04-10
累计积分: 116

Re: 谁有emwin的arm9 gcc linux版本的静态库?

win32prog 说:

感觉不太可能吧, 这样不就打开了潘多拉魔盒?

潘多拉魔盒早就打开了,可以通用的emWin库有:
裸机: keil自带的,NXP发布的。
Linux:Nuvoton发布的。

离线

#29 2019-12-02 15:51:23

armstrong
会员
注册时间: 2019-04-10
累计积分: 116

Re: 谁有emwin的arm9 gcc linux版本的静态库?

还记得某位大神分享的emWin演示吗?它用的就是nuvoton发布的emWin库,运行几天几夜不死机。
https://whycan.cn/t_2689.html

离线

#30 2019-12-02 16:00:30

大帅
会员
注册时间: 2019-01-17
累计积分: 94

Re: 谁有emwin的arm9 gcc linux版本的静态库?

armstrong 说:

还记得某位大神分享的emWin演示吗?它用的就是nuvoton发布的emWin库,运行几天几夜不死机。
https://whycan.cn/t_2689.html

谢谢大神,下载下来晚上回去试试~~

离线

#31 2019-12-02 20:39:37

大帅
会员
注册时间: 2019-01-17
累计积分: 94

Re: 谁有emwin的arm9 gcc linux版本的静态库?

armstrong 说:

潘多拉魔盒早就打开了,可以通用的emWin库有:
裸机: keil自带的,NXP发布的。
Linux:Nuvoton发布的。

大神这个你在别的cpu上跑过么,我在吃灰的2440上跑还是之前的错误。。。~~~~迷茫了

离线

#32 2019-12-02 22:32:45

大帅
会员
注册时间: 2019-01-17
累计积分: 94

Re: 谁有emwin的arm9 gcc linux版本的静态库?

armstrong 说:

如果是裸机开发,就用NXP最近发布的V5.50;如果是linux应用程序,就用nuvoton发布的V5.48k!
完美!这两个厂商发布的库,都比ST的版本新,而且它们没有做任何限制,ARM内核一致就可以用。

突然想起来,是不是arm9架构不一样?  ARM920T <--> ARM926EJ-S

离线

#33 2019-12-02 22:45:05

armstrong
会员
注册时间: 2019-04-10
累计积分: 116

Re: 谁有emwin的arm9 gcc linux版本的静态库?

s3c2410/s3c2440是armv4t;
s3c2416才是跟f1c100s一样的,跟nuvoton也是一样的。

离线

#34 2019-12-03 08:58:29

Jmhh247
会员
注册时间: 2018-12-21
累计积分: 262

Re: 谁有emwin的arm9 gcc linux版本的静态库?

大佬,稳! 学习了


armstrong 说:

s3c2410/s3c2440是armv4t;
s3c2416才是跟f1c100s一样的,跟nuvoton也是一样的。

离线

#35 2019-12-03 13:46:42

大帅
会员
注册时间: 2019-01-17
累计积分: 94

Re: 谁有emwin的arm9 gcc linux版本的静态库?

armstrong 说:

s3c2410/s3c2440是armv4t;
s3c2416才是跟f1c100s一样的,跟nuvoton也是一样的。

@armstrong
大神我在f1c100上面试了: 提示打不开/dev/ge2d,没有硬件加速。。。

另外我编译的时候用的是arm-none-linux-gnueabi-gcc不知道影响不?

# ./NuvotonGUIDemo
uVideoSize = 0x177000
var.xres = 0x320
var.yres = 0x1e0
pVideoBuffer = 0xb6d8f000
Main Task thread
WM_SetCreateFlags(WM_CF_MEMDEV)
GUI_Init()
GUI_X_Config()
GUI_ALLOC_GetNumUsedBlocks()=0x0
LCD_X_Config()
### g_xres=800 g_yres=480 g_bits_per_pixel=32
LCD_GetSwapXY()
LCD_SetVRAMAddrEx(0, (void *)pVideoBuffer)
No LCD calibration
Cannot open ge2d!
^C
#
#

最近编辑记录 大帅 (2019-12-03 13:48:10)

离线

#36 2019-12-04 10:53:48

armstrong
会员
注册时间: 2019-04-10
累计积分: 116

Re: 谁有emwin的arm9 gcc linux版本的静态库?

大帅 说:

@armstrong
大神我在f1c100上面试了: 提示打不开/dev/ge2d,没有硬件加速。。。

另外我编译的时候用的是arm-none-linux-gnueabi-gcc不知道影响不?

# ./NuvotonGUIDemo
uVideoSize = 0x177000
var.xres = 0x320
var.yres = 0x1e0
pVideoBuffer = 0xb6d8f000
Main Task thread
WM_SetCreateFlags(WM_CF_MEMDEV)
GUI_Init()
GUI_X_Config()
GUI_ALLOC_GetNumUsedBlocks()=0x0
LCD_X_Config()
### g_xres=800 g_yres=480 g_bits_per_pixel=32
LCD_GetSwapXY()
LCD_SetVRAMAddrEx(0, (void *)pVideoBuffer)
No LCD calibration
Cannot open ge2d!
^C
#
#

sorry,你不能使用nuvoton里的LCDConf.c,要自己适配一个。
用这个模板即可,稍微改一下就行的。
比如你制作了自己的GUIDRV_Template16_API或者GUIDRV_Template32_API,然后把这个替换LCDConf.c里的这里
    if (g_bits_per_pixel == 32)
    GUI_DEVICE_CreateAndLink(&GUIDRV_Template32_API, GUICC_M888, 0, 0);
    else
    GUI_DEVICE_CreateAndLink(&GUIDRV_Template16_API, GUICC_M565, 0, 0);
模板:
https://whycan.cn/files/members/1592/GUIDRV_Template_c.txt

为什么要自己适配呢?因为nuvoton改写了emWin源码,把库里的GUIDRV_LIN_32/GUIDRV_LIN_16改成依赖ge2d的了。
自己适配一个就不用它们,自己来实现一个在内存块里绘制点、线、面的驱动程序。当然这并不复杂,因为emWin有模板。

最近编辑记录 armstrong (2019-12-04 11:04:48)

离线

#37 2019-12-04 10:57:50

armstrong
会员
注册时间: 2019-04-10
累计积分: 116

Re: 谁有emwin的arm9 gcc linux版本的静态库?

另外,要使用能编译busybox的gcc版本,不要使用裸机编译器;因为它们的c/c++库不一样。

最近编辑记录 armstrong (2019-12-04 11:01:26)

离线

#38 2019-12-04 12:48:28

大帅
会员
注册时间: 2019-01-17
累计积分: 94

Re: 谁有emwin的arm9 gcc linux版本的静态库?

armstrong 说:

sorry,你不能使用nuvoton里的LCDConf.c,要自己适配一个。
用这个模板即可,稍微改一下就行的。
比如你制作了自己的GUIDRV_Template16_API或者GUIDRV_Template32_API,然后把这个替换LCDConf.c里的这里
    if (g_bits_per_pixel == 32)
    GUI_DEVICE_CreateAndLink(&GUIDRV_Template32_API, GUICC_M888, 0, 0);
    else
    GUI_DEVICE_CreateAndLink(&GUIDRV_Template16_API, GUICC_M565, 0, 0);
模板:
https://whycan.cn/files/members/1592/GUIDRV_Template_c.txt

为什么要自己适配呢?因为nuvoton改写了emWin源码,把库里的GUIDRV_LIN_32/GUIDRV_LIN_16改成依赖ge2d的了。
自己适配一个就不用它们,自己来实现一个在内存块里绘制点、线、面的驱动程序。当然这并不复杂,因为emWin有模板。

@armstrong
哇呀呀,万分的感谢大佬,~~ 又有动力继续搞了,哈哈

离线

#39 2020-05-10 00:26:19

regbbs
会员
注册时间: 2020-04-06
累计积分: 12

Re: 谁有emwin的arm9 gcc linux版本的静态库?

确实是有检测是否是Nuvoton的代码。但是跳过后,会出现 Illegal instruction。还没用查找到具体是哪个地方出现的这个。
em.png

最近编辑记录 regbbs (2020-05-10 00:27:30)

离线

#40 2020-05-11 15:53:53

大帅
会员
注册时间: 2019-01-17
累计积分: 94

Re: 谁有emwin的arm9 gcc linux版本的静态库?

regbbs 说:

确实是有检测是否是Nuvoton的代码。但是跳过后,会出现 Illegal instruction。还没用查找到具体是哪个地方出现的这个。
https://whycan.cn/files/members/3640/em.png

流弊,继续跟进!!!

离线

#41 2020-05-11 16:16:27

lhb882
会员
注册时间: 2020-03-27
累计积分: 10

Re: 谁有emwin的arm9 gcc linux版本的静态库?

跑这个得话就好了,一身轻松

离线

#42 2020-05-12 11:17:38

regbbs
会员
注册时间: 2020-04-06
累计积分: 12

Re: 谁有emwin的arm9 gcc linux版本的静态库?

假装可以@大帅,@lhb882
该发的我都发了,只需要修改一个地方就可以。
可以直接用里面的除了GUIDRV_LIN_32/GUIDRV_LIN_16的其他lin驱动。

离线

#43 2020-05-12 11:21:24

有梦的地方
会员
注册时间: 2020-03-17
累计积分: 225

Re: 谁有emwin的arm9 gcc linux版本的静态库?

regbbs 说:

假装可以@大帅,@lhb882
该发的我都发了,只需要修改一个地方就可以。
可以直接用里面的除了GUIDRV_LIN_32/GUIDRV_LIN_16的其他lin驱动。

请教修改哪一处呢?貌似前面有一个帖子 emwin改了授权协议了,是开源了吗?

离线

#44 2020-05-12 11:23:54

有梦的地方
会员
注册时间: 2020-03-17
累计积分: 225

Re: 谁有emwin的arm9 gcc linux版本的静态库?

有梦的地方 说:

请教修改哪一处呢?貌似前面有一个帖子 emwin改了授权协议了,是开源了吗?

记错了,是ucos3 https://whycan.cn/t_4143.html

离线

#45 2020-05-13 08:22:02

regbbs
会员
注册时间: 2020-04-06
累计积分: 12

Re: 谁有emwin的arm9 gcc linux版本的静态库?

有梦的地方 说:

其实只要看下arm汇编,以及对照下970的手册,查找下对应函数的功能,自己就可以搞定。
毕竟emwin这个涉及到商业产品。

离线

#46 2020-05-13 18:06:34

armstrong
会员
注册时间: 2019-04-10
累计积分: 116

Re: 谁有emwin的arm9 gcc linux版本的静态库?

用链接器的redirect功能,把库里的某几个函数旁路掉,自己写函数代替。
或者索性自己写个GUI_DEVICE_API,别用内置<GUIDRV_Lin.h>文件里的驱动就行。
自定义驱动形式如下,有模板的,不难实现,针对内存操作的更简单:

const GUI_DEVICE_API GUIDRV_Template_API = {
  //
  // Data
  //
  DEVICE_CLASS_DRIVER,
  //
  // Drawing functions
  //
  _DrawBitmap,
  _DrawHLine,
  _DrawVLine,
  _FillRect,
  _GetPixelIndex,
  _SetPixelIndex,
  _XorPixel,
  //
  // Set origin
  //
  _SetOrg,
  //
  // Request information
  //
  _GetDevFunc,
  _GetDevProp,
  _GetDevData,
  _GetRect,
};

最近编辑记录 armstrong (2020-05-13 18:20:53)

离线

#47 2020-05-13 18:23:05

armstrong
会员
注册时间: 2019-04-10
累计积分: 116

Re: 谁有emwin的arm9 gcc linux版本的静态库?

找了下资料,没看到GNU-ld有redirect功能;而【mdk的】armlink和【IAR的】ilinkarm都有!

离线

#48 2020-05-14 16:50:20

大帅
会员
注册时间: 2019-01-17
累计积分: 94

Re: 谁有emwin的arm9 gcc linux版本的静态库?

regbbs 说:

其实只要看下arm汇编,以及对照下970的手册,查找下对应函数的功能,自己就可以搞定。
毕竟emwin这个涉及到商业产品。

百思不得其解。。。
参照regbbs的思路修改了一处,重新编译,
为啥俺的就是申请不到内存空间给gui?

void GUI_X_Config(void) {
	
  printf("GUI_X_Config()\n");

  static U32 aMemory[GUI_NUMBYTES / 4];

  GUI_ALLOC_AssignMemory(aMemory, GUI_NUMBYTES);

  GUI_SetDefaultFont(GUI_FONT_6X8);
  
  unsigned int GetNumFreeBytes;
  GetNumFreeBytes = GUI_ALLOC_GetNumUsedBlocks();
  printf("GUI_ALLOC_GetNumUsedBlocks()=0x%x\n",GetNumFreeBytes);

  GUI_ALLOC_DATATYPE i = GUI_ALLOC_GetNumFreeBytes();
  printf("%d = GUI_ALLOC_GetNumFreeBytes().\n", i);	
  if ( i < (1024L * 2200) ){    //if ( i <RECOMMENDED_MEMORY) { //(1024L * 2200)
	printf("Not enough memory available.\n");
    return;
  }
}

编译gcc:arm-2014.05/bin/arm-none-linux-gnueabi-gcc
运行结果:

# ./GUIDemo 
uVideoSize = 0x177000
var.xres = 0x320
var.yres = 0x1e0
pVideoBuffer = 0xb6e78000
Main Task thread
WM_SetCreateFlags(WM_CF_MEMDEV)
GUI_Init()
GUI_X_Config()
GUI_ALLOC_GetNumUsedBlocks()=0x0
0 = GUI_ALLOC_GetNumFreeBytes().
Not enough memory available.
LCD_X_Config()
### g_xres=800 g_yres=480 g_bits_per_pixel=32
LCD_GetSwapXY()
No LCD calibration
800, 480, 32
0=GUI_Init()
WM_MULTIBUF_Enable(1)
GUIDEMO_Main()
GUIDEMO_Main()
Not enough memory available.
# 

离线

#49 2020-05-14 22:02:54

regbbs
会员
注册时间: 2020-04-06
累计积分: 12

Re: 谁有emwin的arm9 gcc linux版本的静态库?

@大帅 ,只需要改一个地方,不行就是你改的地方不对。我用的是那个master的库测试的。

离线

#50 2020-05-15 17:29:17

大帅
会员
注册时间: 2019-01-17
累计积分: 94

Re: 谁有emwin的arm9 gcc linux版本的静态库?

regbbs 说:

@大帅 ,只需要改一个地方,不行就是你改的地方不对。我用的是那个master的库测试的。

越搞不定,越想搞!! big_smile

我用的和你的库一样, 动了这一处,难道不对? smile
QQ截图20200515172342.jpg

离线

#51 2020-05-15 18:00:40

孤星泪
会员
注册时间: 2020-03-18
累计积分: 45

Re: 谁有emwin的arm9 gcc linux版本的静态库?

大帅 说:

越搞不定,越想搞!! big_smile

我用的和你的库一样, 动了这一处,难道不对? smile
https://whycan.cn/files/members/1398/QQ截图20200515172342.jpg

这么有研究精神我喜欢! 坐等大佬搞定

离线

#52 2020-05-16 00:15:38

regbbs
会员
注册时间: 2020-04-06
累计积分: 12

Re: 谁有emwin的arm9 gcc linux版本的静态库?

大帅 说:

越搞不定,越想搞!! big_smile

我用的和你的库一样, 动了这一处,难道不对? smile
https://whycan.cn/files/members/1398/QQ截图20200515172342.jpg

应该用跳转指令,XX 00 00 EA, 跳过某些指令

离线

#53 2020-05-17 23:18:28

gmyu
会员
注册时间: 2020-05-17
累计积分: 22

Re: 谁有emwin的arm9 gcc linux版本的静态库?

regbbs 说:

应该用跳转指令,XX 00 00 EA, 跳过某些指令

大虾可以帮我分析一下么?
我在N32926上面跑N9H26的 emWin demo,编译通过,只是运行一片黑。

GUIDRV_LIN_16 和 GIANTPLUS_GPM1006D 都和我的板子一样,如果放data到u8FrameBuf,是可以显示图片的。

就是指针要或800000000不明白,但是我注释掉也一样的不行。
u8FrameBufPtr  = (UINT8 *)((UINT32)u8FrameBuf );//| 0x80000000);

离线

#54 2020-05-17 23:19:16

gmyu
会员
注册时间: 2020-05-17
累计积分: 22

Re: 谁有emwin的arm9 gcc linux版本的静态库?

我是用N9H26的裸奔程序

离线

#55 2020-05-18 17:39:14

大帅
会员
注册时间: 2019-01-17
累计积分: 94

Re: 谁有emwin的arm9 gcc linux版本的静态库?

regbbs 说:

@大帅 ,只需要改一个地方,不行就是你改的地方不对。我用的是那个master的库测试的。

大佬可否告知下邮箱?
帮我试下.a,分析了几天感觉好像不在.a的问题上 sad

离线

#56 2020-05-18 17:52:08

regbbs
会员
注册时间: 2020-04-06
累计积分: 12

Re: 谁有emwin的arm9 gcc linux版本的静态库?

gmyu 说:

我是用N9H26的裸奔程序

没有看这两个芯片的资料。
按照经验0x80000000应该是分配给LCD的framebuffer,所以直接放数据是可以在屏幕上显示出来的。
至于不显示,你可以试试除了GUIDRV_LIN_32/GUIDRV_LIN_16的其他lin驱动,要看N32926和N9H26的LCD是不是一样,有没有硬件加速。

离线

#57 2020-06-04 08:53:00

regbbs
会员
注册时间: 2020-04-06
累计积分: 12

Re: 谁有emwin的arm9 gcc linux版本的静态库?

大帅 说:

大佬可否告知下邮箱?
帮我试下.a,分析了几天感觉好像不在.a的问题上 sad

FluxBB bbcode 测试

离线

#58 2020-06-04 10:45:45

大帅
会员
注册时间: 2019-01-17
累计积分: 94

Re: 谁有emwin的arm9 gcc linux版本的静态库?


俺是这么干的更狠一些,看着应该没什么错,我再试试你的,感觉不像是a的问题。
QQ图片20200604104033.png

离线

#59 2020-06-05 10:49:17

大帅
会员
注册时间: 2019-01-17
累计积分: 94

Re: 谁有emwin的arm9 gcc linux版本的静态库?

大帅 说:

俺是这么干的更狠一些,看着应该没什么错,我再试试你的,感觉不像是a的问题。
https://whycan.cn/files/members/1398/QQ图片20200604104033.png


卧槽,卧槽,丢塔喽木~~~
问题原来一直是空间分配的太小了。。。。。。 __Gui_NumBytes__=8192000

离线

#60 2020-06-05 20:22:28

sea18c
会员
注册时间: 2019-08-05
累计积分: 162

Re: 谁有emwin的arm9 gcc linux版本的静态库?

大帅 说:

卧槽,卧槽,丢塔喽木~~~
问题原来一直是空间分配的太小了。。。。。。 __Gui_NumBytes__=8192000



可以讲下过程吗,或放出改过的LIB吗?

离线

页脚

工信部备案:粤ICP备20025096号-1 Powered by FluxBB