爱喝柠檬水 发表于 2021-7-11 22:39:23

GUIX在FREERTOS上面的移植!

因为比较熟悉Freertos,也用得比较多,想尝试下使用Freertos移植一个GUIX,照着UCOS-III的模板套了一遍,没有成功!!有没有哪位坛友有捣鼓过,指点一下呢?自己移植的RTOS适配文件:

eric2013 发表于 2021-7-12 01:06:25

有时间了,我做个分享下。

miss-you 发表于 2021-7-12 11:42:11

我有移植过RTT的, 你也可以参考一下

爱喝柠檬水 发表于 2021-7-12 13:15:31

miss-you 发表于 2021-7-12 11:42
我有移植过RTT的, 你也可以参考一下

可以分享一下吗?

爱喝柠檬水 发表于 2021-7-12 14:10:38

miss-you 发表于 2021-7-12 11:42
我有移植过RTT的, 你也可以参考一下

看到你的帖子了,感谢!我研究下

flyflyfly001 发表于 2021-12-27 18:04:51

兄弟移植GUIX到freeRTOS成功了没,可否参考一下,谢谢!

eric2013 发表于 2021-12-28 00:40:18

flyflyfly001 发表于 2021-12-27 18:04
兄弟移植GUIX到freeRTOS成功了没,可否参考一下,谢谢!

后面我做个,分享给大家。

flyflyfly001 发表于 2021-12-28 09:23:55

eric2013 发表于 2021-12-28 00:40
后面我做个,分享给大家。

好的,感谢版主,持续关注!

yxydoctor 发表于 2021-12-30 19:41:19

可以考虑移植一下threadx,比freertos强

ccschen 发表于 2022-6-17 01:25:08

eric2013 发表于 2021-7-12 01:06
有时间了,我做个分享下。

GUIX 移植到 FREERTOS上了?

eric2013 发表于 2022-6-17 10:21:35

ccschen 发表于 2022-6-17 01:25
GUIX 移植到 FREERTOS上了?

还没着手做。

ccschen 发表于 2022-6-17 22:34:22

eric2013 发表于 2022-6-17 10:21
还没着手做。

我这边试着参考本贴的文件,然后把那个UCOS的部分,拿来修改了下,看了,GUIX任务和定里器都跑起来了,就是屏幕上不显示内容。。。

ccschen 发表于 2022-6-18 13:46:20

大佬弄好了么?

唐伯虎点蚊香 发表于 2022-6-18 13:52:23

我移植到了CMSIS_RTOS2,你可以用这个试下

唐伯虎点蚊香 发表于 2022-6-18 13:53:00

可以测下

ccschen 发表于 2022-6-18 22:12:28

参考这个楼主的,以及RTT的,移植好了。只是感觉GUIX对按键不太友好。。。

ccschen 发表于 2022-6-18 23:52:17

本帖最后由 ccschen 于 2022-6-19 16:24 编辑

唐伯虎点蚊香 发表于 2022-6-18 13:53
可以测下
谢谢。你这个是FREERTOS V2?我这边已经移植好了,但现在出现新问题了,就是在界面上增加个定时器,用来刷新参数和数据,结果先进页面的回调启动定时器比,这时GUIX的定时器还没建立,然后就挂了,进断言了。如果在gx_generic_rtos_initialize就初始化GUIX任务和定时器,会进错误中断。

唐伯虎点蚊香 发表于 2022-6-19 17:23:13

ccschen 发表于 2022-6-18 23:52
谢谢。你这个是FREERTOS V2?我这边已经移植好了,但现在出现新问题了,就是在界面上增加个定时器,用来 ...

不要关定时器任务

唐伯虎点蚊香 发表于 2022-6-19 17:25:19

ccschen 发表于 2022-6-18 23:52
谢谢。你这个是FREERTOS V2?我这边已经移植好了,但现在出现新问题了,就是在界面上增加个定时器,用来 ...

初始化的时候不要把定时器任务挂起

ccschen 发表于 2022-6-19 22:31:23

唐伯虎点蚊香 发表于 2022-6-19 17:25
初始化的时候不要把定时器任务挂起

现在调整了下代码,在gx_generic_rtos_initialize初始化定时器,在GX_SYSTEM_THREAD_START中初始化GUIX任务。就没进断言或错误中断了。但是试了下TEXT控件,参照例程,定时器在更新,但文本内容没随着更新。。。

ccschen 发表于 2022-6-19 22:35:55

实际上进错误中断是在GX_SYSTEM_THREAD_START中新建任务引起的。
                uc_error = xTaskCreate( gx_system_thread_entry_shell,
                           "guix_task",
                            GX_THREAD_STACK_SIZE,//256,
                           NULL,
                         GX_SYSTEM_THREAD_PRIORITY,//4,
                            /*&guix_tcb*/NULL);

如果把新建任务和定里器放到gx_generic_thread_start里面,是不会进错误中断,也不进断言,但窗口不会显示出来。试了下AZURE的全家桶不会有这个问题。估计系统机制还是有区别,看了下UCOS的接口,也是后面统一启动的。不像FREE RTOS,新建任务马上就运行了。。。

Jinsq 发表于 2022-6-20 09:46:42

ThreadX最近几个版本里,os_capability_layer里有FreeRTOS的适配层

ccschen 发表于 2022-6-20 11:24:54

界面上的TEXT控件,通过定里器更新显示,返回GX_SYSTEM_MEMORY_ERROR错误。。。

UINT _cbEventWindow_language(GX_WINDOW *widget, GX_EVENT *event_ptr)
{
    static uint32_t count = 6;
    char buf = {0};

   
    switch (event_ptr->gx_event_type)
    {
      /* 控件显示事件 */
      case GX_EVENT_SHOW:
         
            /* 启动一个GUIX定时器 */
            gx_system_timer_start((GX_WIDGET *)widget, GUI_ID_Timer0, 1, GX_TICKS_SECOND);

            /* 默认事件处理 */
            gx_window_event_process(widget, event_ptr);
            break;

      /* 定时器时间溢出事件*/
      case GX_EVENT_TIMER:
            if (event_ptr->gx_event_payload.gx_event_timer_id == GUI_ID_Timer0)
            {
                sprintf(buf, "%d", count--);
                gx_prompt_text_set((GX_PROMPT *)&(window_language.window_language_prompt_countdown), buf);
            }
            break;

      default:
            return gx_window_event_process(widget, event_ptr);
    }

    return 0;
}

唐伯虎点蚊香 发表于 2022-6-20 11:53:07

ccschen 发表于 2022-6-19 22:31
现在调整了下代码,在gx_generic_rtos_initialize初始化定时器,在GX_SYSTEM_THREAD_START中初始化GUIX任 ...

我觉得现在问题出在信号量那边

ccschen 发表于 2022-6-20 13:32:47

唐伯虎点蚊香 发表于 2022-6-20 11:53
我觉得现在问题出在信号量那边

本来是FREE RTOS +EMWIN的,结果EMWIN偶尔出现定时器不刷新的情况,而且自己手上一直没复现,都是在用户那里复现的,所以最简单的方法,做个备份方案,就是FREERTOS + GUIX。如果用THREAD X全家桶就工作量太大了。然后简单试了下,THREAD全家桶,更新TEXT显示,定时器中断能进,但是呢,TEXT没刷新,GX_SYSTEM_MEMORY_ERROR错误。

ccschen 发表于 2022-6-20 20:48:15

gx_system_memory_allocator_set(memory_allocate, memory_free);
试了,THREADX全家桶加上这句,定时器中断也可以更新数字了,一个倒计时。。。
问题是现在FREERTOS + GUIX 怎么弄。。。没得这个函数啊。。。难道要部分使用THREADX的函数?


硬汉大佬的FREERTOS+GUIX什么时候出来?

ccschen 发表于 2022-6-20 20:55:03

tx_byte_pool_create(&memory_pool, "guix", guix_pool_memory, 1024);

这个函数,在FREE RTOS +GUIX中,怎么修改,直接包含THREADX的源文件?

ccschen 发表于 2022-6-26 15:48:00

现在用了FREERTOS V2,把 threadx中的内存池,用freertos v2中的代码实现了,先试了下定时器,跑得时快时慢。不行的话就用THREADX全家桶了。。。ST也鸡贼,只推自家的TOUCH GFX,不给集成GUIX中间件。

ccschen 发表于 2022-6-26 19:48:18

已经换成FREERTOS V2了,里面的内存池操作。只是先分配了内存后,后面malloc内存的时候,不是按大小需要获取的。
然后出了另一个问题,定时不准,定时器刷新,中断时快时慢。。。不如THREADX全家桶中断稳定。

xuxin1967 发表于 2024-1-11 20:41:56

ccschen 发表于 2022-6-26 19:48
已经换成FREERTOS V2了,里面的内存池操作。只是先分配了内存后,后面malloc内存的时候,不是按大小需要获 ...

我移植了 freertos + GUIX,现在出图不完整有啥思路。出来的尺寸坐标是对的,数据不对。
800*480 无论设置 ARGB 还是 RGB56,看着有效元素都只有一半
页: [1]
查看完整版本: GUIX在FREERTOS上面的移植!