卧槽,卧槽,丢塔喽木~~~
问题原来一直是空间分配的太小了。。。。。。 __Gui_NumBytes__=8192000
可以讲下过程吗,或放出改过的LIB吗?
]]>俺是这么干的更狠一些,看着应该没什么错,我再试试你的,感觉不像是a的问题。
https://whycan.cn/files/members/1398/QQ图片20200604104033.png
卧槽,卧槽,丢塔喽木~~~
问题原来一直是空间分配的太小了。。。。。。 __Gui_NumBytes__=8192000
俺是这么干的更狠一些,看着应该没什么错,我再试试你的,感觉不像是a的问题。
大佬可否告知下邮箱?
帮我试下.a,分析了几天感觉好像不在.a的问题上
]]>
我是用N9H26的裸奔程序
没有看这两个芯片的资料。
按照经验0x80000000应该是分配给LCD的framebuffer,所以直接放数据是可以在屏幕上显示出来的。
至于不显示,你可以试试除了GUIDRV_LIN_32/GUIDRV_LIN_16的其他lin驱动,要看N32926和N9H26的LCD是不是一样,有没有硬件加速。
@大帅 ,只需要改一个地方,不行就是你改的地方不对。我用的是那个master的库测试的。
大佬可否告知下邮箱?
帮我试下.a,分析了几天感觉好像不在.a的问题上
应该用跳转指令,XX 00 00 EA, 跳过某些指令
大虾可以帮我分析一下么?
我在N32926上面跑N9H26的 emWin demo,编译通过,只是运行一片黑。
GUIDRV_LIN_16 和 GIANTPLUS_GPM1006D 都和我的板子一样,如果放data到u8FrameBuf,是可以显示图片的。
就是指针要或800000000不明白,但是我注释掉也一样的不行。
u8FrameBufPtr = (UINT8 *)((UINT32)u8FrameBuf );//| 0x80000000);
越搞不定,越想搞!!
我用的和你的库一样, 动了这一处,难道不对?
https://whycan.cn/files/members/1398/QQ截图20200515172342.jpg
应该用跳转指令,XX 00 00 EA, 跳过某些指令
]]>越搞不定,越想搞!!
我用的和你的库一样, 动了这一处,难道不对?
https://whycan.cn/files/members/1398/QQ截图20200515172342.jpg
这么有研究精神我喜欢! 坐等大佬搞定
]]>@大帅 ,只需要改一个地方,不行就是你改的地方不对。我用的是那个master的库测试的。
越搞不定,越想搞!!
我用的和你的库一样, 动了这一处,难道不对?
其实只要看下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.
#
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,
};