您尚未登录。

#1 Re: 工业芯 匠芯创 » 评估板和样片购买方式说明,匠芯创ArtInChip » 2023-11-22 23:10:14

pzh
ArtInChip 说:

正在做4.3寸的开发板,以最低的价格给各位。
https://whycan.com/files/members/13307/微信图片_20231114214515.png

这个活动已经结束啦?:o

#2 Re: 计算机图形/GUI/RTOS/FileSystem/OpenGL/DirectX/SDL2 » lvgl8.2 freetype 如何支持 » 2022-09-19 22:24:02

pzh

@达子666
1、这个报错信息可以通过下面的命令安装 SDL 来解决

sudo apt install libsdl2-dev

2、如果实际的板子是运行发行版的 Linux,比如 Ubuntu Server,可以直接使用这个模拟器。
3、如果是自己通过 busybox + kernel + rootfs 构建的 Linux,那么就可以在服务器上通过交叉编译生成目标文件,再将目标文件放到板子上运行。
     大概的过程是:
     1)提供 /dev/fb0
     2)修改 lvgl_linux_simulator/include/lv_drv_conf.h 文件

#ifndef USE_SDL
# define USE_SDL 0
#endif

...

#ifndef USE_FBDEV
#  define USE_FBDEV           1
#endif

#if USE_FBDEV
#  define FBDEV_PATH          "/dev/fb0"
#endif

     3)修改 src/lv_port.c 文件

void lv_port_disp_init(void)
{
    /* 分配显示缓冲区 */
    int buf_size = sizeof(lv_color_t) * SDL_HOR_RES * SDL_VER_RES;
    buf_1 = malloc(buf_size);
    buf_2 = malloc(buf_size);
    if ((NULL != buf_1) && (NULL != buf_2))
        lv_disp_draw_buf_init(&disp_buf, buf_1, buf_2, buf_size);

    /* 默认初始化 */
    lv_disp_drv_init(&disp_drv);
    
    /* 缓冲区 */
    disp_drv.draw_buf = &disp_buf;
    /* 回调函数,需开发者提供,用于将缓冲区的内容复制到显示器的特定区域 */
    disp_drv.flush_cb = ;
    /* 显示器的水平分辨率,单位是像素 */
    disp_drv.hor_res = ;
    /* 显示器的垂直分辨率,单位是像素 */
    disp_drv.ver_res = ;

    /* 注册显示设备 */
    disp = lv_disp_drv_register(&disp_drv);
}

     4)修改 CMakeLists.txt 文件

/* 这里改为交叉编译工具链 */
set(CMAKE_C_COMPILER "/usr/bin/gcc")
...
/* 把下面的 SDL2 去掉 */

#4 Re: 全志 SOC » F1C100S 跑LVGL滑动撕裂 » 2022-08-27 19:30:14

pzh

等 TE 信号,或者直接关闭 tabview 的滑动过程也行

#5 RK3288/RK3399/RK1108 » 大家有遇到过Linux内核分配空间失败的情况吗? » 2022-08-04 20:41:18

pzh
回复: 0

为 framebuffer 分配空间,但是失败了,所用的函数是 dma_alloc_wc
device 是设备树解析 i2c 节点生成的 platform device,即 client->dev。

info->screen_base = (char __iomem *)dma_alloc_wc(&(client->dev), info->fix.smem_len, &phy_addr, GFP_KERNEL);

报错的信息:

[   78.640247] dma alloc failure, device may be missing a call to arch_setup_dma_ops
[   78.640265] WARNING: CPU: 3 PID: 1094 at arch/arm64/mm/dma-mapping.c:490 __dummy_alloc+0x1c/0x2c

内核的版本:(ubuntu server)

rock@rock-3a:~/share$ uname -a
Linux rock-3a 4.19.193-44-rockchip-g5a07852a55cf #rockchip SMP Tue Jun 14 12:35:45 UTC 2022 aarch64 aarch64 aarch64 GNU/Linux

报错的函数:

static void *__dummy_alloc(struct device *dev, size_t size,
			   dma_addr_t *dma_handle, gfp_t flags,
			   unsigned long attrs)
{
	WARN(1, "dma alloc failure, device may be missing a call to arch_setup_dma_ops");
	return NULL;
}

根据报错的内容,是需要调用 arch_setup_dma_ops 这个函数,找了一下,发现在 platform_dma_configure 会调用这个函数,那么是不需要修改设备树呢?还是别的原因?

页脚

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

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn