搜索
bottom↓
回复: 71

AWTK 在腾讯 TOS 上的移植笔记

  [复制链接]

出0入0汤圆

发表于 2019-11-9 08:46:56 | 显示全部楼层 |阅读模式
本帖最后由 lixianjing 于 2019-11-9 08:48 编辑

AWTK 在腾讯 TOS 上的移植笔记
本文以 STM32f103ze 为例,介绍了 AWTK 在 RTOS 上移植的经验。与其说移植,倒不如说是集成。因为 RTOS 通常没有提供标准的 LCD 驱动接口,显示部分并不需要特别的改动。所做的事情不过是把 AWTK 放到 RTOS 的一个线程中执行而已。

1. 加入 TOS 相关文件。
AWTK 已经移植到 STM32f103ze 裸系统上,为了简单起见,直接在 awtk-stm32f103ze-raw 基础上加入 TOS 支持。

在 Keil 中增加下列文件:


  1. TencentOS/kernel/core/tos_event.c
  2. TencentOS/kernel/core/tos_fifo.c
  3. TencentOS/kernel/core/tos_global.c
  4. TencentOS/kernel/core/tos_mmblk.c
  5. TencentOS/kernel/core/tos_mmheap.c
  6. TencentOS/kernel/core/tos_msg.c
  7. TencentOS/kernel/core/tos_mutex.c
  8. TencentOS/kernel/core/tos_pend.c
  9. TencentOS/kernel/core/tos_queue.c
  10. TencentOS/kernel/core/tos_robin.c
  11. TencentOS/kernel/core/tos_sched.c
  12. TencentOS/kernel/core/tos_sem.c
  13. TencentOS/kernel/core/tos_sys.c
  14. TencentOS/kernel/core/tos_task.c
  15. TencentOS/kernel/core/tos_tick.c
  16. TencentOS/kernel/core/tos_time.c
  17. TencentOS/kernel/core/tos_timer.c
  18. TencentOS/kernel/pm/tos_pm.c
  19. TencentOS/kernel/pm/tos_tickless.c
  20. TencentOS/arch/arm/arm-v7m/common/tos_cpu.c
  21. TencentOS/arch/arm/arm-v7m/common/tos_fault.c
  22. TencentOS/arch/arm/arm-v7m/cortex-m3/armcc/port_c.c
  23. TencentOS/arch/arm/arm-v7m/cortex-m3/armcc/port_s.S
复制代码


增加 include 的路径


  1. TencentOS/arch/arm/arm-v7m/common/include
  2. TencentOS/arch/arm/arm-v7m/cortex-m3/armcc
  3. TencentOS/kernel/core/include
  4. TencentOS/kernel/hal/include
  5. TencentOS/kernel/pm/include
  6. TencentOS/TOS-CONFIG
复制代码


修改配置文件
根据自己的需要修改配置 TencentOS/TOS-CONFIG/tos_config.h:

一般来说不需要修改,使用官方提供的即可。我用的是 TencentOS-Demo 项目中的。
2. 加入针对 TOS 实现的线程和同步的函数。


  1. src/platforms/tos/mutex.c
  2. src/platforms/tos/semaphore.c
  3. src/platforms/tos/thread.c
  4. src/platforms/common/sys_tick.c
复制代码


3. 实现 rtos.c

主要就是 SysTick 中断的实现,从 TencentOS-Demo 中拷贝过来就行了。


  1. ret_t rtos_init(void) {
  2.   tos_knl_init();
  3.   tos_robin_config(TOS_ROBIN_STATE_ENABLED, (k_timeslice_t)500u);

  4.   return RET_OK;
  5. }

  6. ret_t rtos_start(void) {
  7.   tos_knl_start();

  8.   return RET_OK;
  9. }

  10. void rtos_tick(void) {
  11.   if (tos_knl_is_running()) {
  12.     tos_knl_irq_enter();
  13.     tos_tick_handler();
  14.     tos_knl_irq_leave();
  15.   }
  16. }

  17. void rtos_delay(uint32_t ms) {
  18.   tos_task_delay(ms);
  19. }
复制代码


4. 在线程中启动 AWTK


  1. void* awtk_thread(void* args) {
  2.   gui_app_start(320, 480);

  3.   return NULL;
  4. }

  5. static ret_t awtk_start_ui_thread(void) {
  6.   tk_thread_t* ui_thread = tk_thread_create(awtk_thread, NULL);
  7.   return_value_if_fail(ui_thread != NULL, RET_BAD_PARAMS);

  8.   tk_thread_set_priority(ui_thread, 3);
  9.   tk_thread_set_name(ui_thread, "awtk");
  10.   tk_thread_set_stack_size(ui_thread, 2048);

  11.   return tk_thread_start(ui_thread);
  12. }

  13. int main() {
  14.   hardware_prepare();
  15.   platform_prepare();

  16.   rtos_init();
  17.   awtk_start_ui_thread();
  18.   rtos_start();
  19.        
  20.         return 0;
  21. }
复制代码


这里与裸系统不同的地方,主要有两个:

在线程中启动 AWTK。

要提前调用 platform_prepare,platform_prepare 负责初始化内存,放在 tk_init 中就有些晚,需要单独提出来调用。

为此 platform_prepare 函数做了防重复调用的处理。


  1. static bool_t s_inited = FALSE;
  2. static uint32_t s_heam_mem[4096];

  3. ret_t platform_prepare(void) {
  4.         if(!s_inited) {
  5.                 s_inited = TRUE;
  6.     tk_mem_init(s_heam_mem, sizeof(s_heam_mem));
  7.         }
  8.   return RET_OK;
  9. }
复制代码

出0入90汤圆

发表于 2019-11-9 10:02:34 | 显示全部楼层
不错,我最近也关注了这个os,虽然不一定用。这个是腾讯为了卖云平台推出的一个rtos。

出0入0汤圆

发表于 2019-11-9 11:14:46 来自手机 | 显示全部楼层
楼主是AWTK原著?

出0入0汤圆

发表于 2019-11-9 11:22:04 | 显示全部楼层
laoyi 发表于 2019-11-9 11:14
楼主是AWTK原著?

同问 lixianjing

出0入0汤圆

 楼主| 发表于 2019-11-9 11:32:51 | 显示全部楼层
laoyi 发表于 2019-11-9 11:14
楼主是AWTK原著?

是的

出0入0汤圆

发表于 2019-11-9 11:38:12 | 显示全部楼层
请问如何评价lvgl和emwin,这三者应该是对标的吧

出0入0汤圆

 楼主| 发表于 2019-11-9 11:55:38 | 显示全部楼层
AWTK 与 lvgl和emwin 不是对标的,因为它们太简陋,适用范围太小。当然我对 lvgl和emwin了解不多,没有真正用过,评价可能会有失偏颇。

说说AWTK本身吧,作为一个嵌入式开发者,你可以用AWTK 开发酷炫的嵌入式软件,如果过几天你想写个App来控制你的设备,或者写个PC软件来配置你的设备,甚至写个放到嵌入式系统的web服务器里,在浏览器里运行的APP,都可以用AWTK来写。

总之,学习一次就可以了,然后到处都可以用。

AWStudio 即将发布,它本身就是用AWTK开发的。

出0入8汤圆

发表于 2019-11-9 12:04:09 | 显示全部楼层
laoyi 发表于 2019-11-9 11:14
楼主是AWTK原著?

看头像就知道了。

出0入0汤圆

发表于 2019-11-9 12:04:30 | 显示全部楼层
lixianjing 发表于 2019-11-9 11:55
AWTK 与 lvgl和emwin 不是对标的,因为它们太简陋,适用范围太小。当然我对 lvgl和emwin了解不多,没有真正 ...

那看来确实厉害啊,有模拟器肯定是必须了,设计器也有吧,emwin appwizard还没出来,纯代码写非常不友好

出0入0汤圆

发表于 2019-11-9 13:20:13 | 显示全部楼层
本帖最后由 风的微笑 于 2019-11-9 13:24 编辑

膜拜大佬  等AWStudio出来就开始了解使用

出0入4汤圆

发表于 2019-11-9 13:54:45 | 显示全部楼层
ametal awtk,第一个做界面的吗?第二个做小应用?

出0入0汤圆

 楼主| 发表于 2019-11-9 17:10:02 | 显示全部楼层
谢谢新老朋友的支持

出0入0汤圆

发表于 2019-11-9 19:10:19 | 显示全部楼层
lixianjing 发表于 2019-11-9 17:10
谢谢新老朋友的支持

本坛又新入一牛人!!!

出0入0汤圆

发表于 2019-11-9 19:42:31 | 显示全部楼层
支持AWTK!

出0入0汤圆

发表于 2019-11-9 20:17:29 | 显示全部楼层
本帖最后由 RAMILE 于 2019-11-9 20:28 编辑

楼主去B站开直播吗

LZ最近有没有出新书啊

出0入0汤圆

发表于 2019-11-9 20:21:29 | 显示全部楼层
赶紧出pc端的模拟吧,emwin的appwizard也出不来

出150入135汤圆

发表于 2019-11-9 20:44:46 来自手机 | 显示全部楼层
merphy 发表于 2019-11-9 20:21
赶紧出pc端的模拟吧,emwin的appwizard也出不来

的确是,如果没有Pc端,或Pc端不友好,说什么都没用

出0入36汤圆

发表于 2019-11-9 20:46:45 来自手机 | 显示全部楼层
为什么不出本书来推广呢

出0入0汤圆

发表于 2019-11-9 20:59:56 | 显示全部楼层
lixianjing 发表于 2019-11-9 17:10
谢谢新老朋友的支持

好钜润的几个屏需要适配一下

出0入0汤圆

 楼主| 发表于 2019-11-9 21:17:01 | 显示全部楼层
neqee 发表于 2019-11-9 20:44
的确是,如果没有Pc端,或Pc端不友好,说什么都没用

PC端模拟器当然有啊,而且支持Windows、Linux、MacOS和Web多个平台。

出0入0汤圆

 楼主| 发表于 2019-11-9 21:20:08 | 显示全部楼层
merphy 发表于 2019-11-9 20:59
好钜润的几个屏需要适配一下

好的。有遇到什么问题吗?

出0入0汤圆

发表于 2019-11-9 21:31:07 | 显示全部楼层
楼主是我的偶像,系统程序员成长计划让我学到很多,之前也关注了FTK,并移植到stm32f103上,但是FTK是比较占用内存,所以后面就没继续玩了。在此对楼主说声谢谢!

出0入0汤圆

 楼主| 发表于 2019-11-10 07:04:15 | 显示全部楼层
syj0925 发表于 2019-11-9 21:31
楼主是我的偶像,系统程序员成长计划让我学到很多,之前也关注了FTK,并移植到stm32f103上,但是FTK是比较 ...

感谢你的支持。

能把FTK移植到F103上,你也很牛了  

FTK作为学习C语言的例子还可以,但是作为一个GUI确实是失败的 , AWTK 是我第5次重写GUI,希望不会让大家失望。

出0入0汤圆

发表于 2019-11-10 09:29:45 来自手机 | 显示全部楼层
pc端模拟器是免费使用吗?

出0入0汤圆

 楼主| 发表于 2019-11-10 11:15:42 | 显示全部楼层
Excellence 发表于 2019-11-10 09:29
pc端模拟器是免费使用吗?

当然! 免费而且开源。

AWTK 本身是跨平台的,可以在PC上运行,只是初始化参数不同。

指定为 APP_SIMULATOR,则启用内置的输入法和软件盘,模拟在实际设备上运行的效果。如:


  1. tk_init(lcd_w, lcd_h, APP_SIMULATOR, NULL, NULL);
复制代码


指定为 APP_DESKTOP,则启用平台提供的输入法,和其它PC软件一样。如:


  1. tk_init(800, 480, APP_DESKTOP, "AWTK Demo", NULL);
复制代码

出0入0汤圆

发表于 2019-11-10 13:39:31 | 显示全部楼层
lixianjing 发表于 2019-11-10 07:04
感谢你的支持。

能把FTK移植到F103上,你也很牛了  

呵呵,我会一如既往的支持AWTK,祝愿AWTK成为受欢迎的开源GUI。

出0入76汤圆

发表于 2019-11-10 14:49:42 | 显示全部楼层
膜拜大神,先观注一下,以后可能会用到AWTK,有没有学习书籍资料。

出0入0汤圆

 楼主| 发表于 2019-11-10 16:22:56 | 显示全部楼层
foxpro2005 发表于 2019-11-10 14:49
膜拜大神,先观注一下,以后可能会用到AWTK,有没有学习书籍资料。

AWTK的文档还是比较全的:github.com/zlgopen/awtk/blob/master/docs/README.md

出0入0汤圆

发表于 2019-11-10 17:38:48 | 显示全部楼层
lixianjing 发表于 2019-11-10 11:15
当然! 免费而且开源。

AWTK 本身是跨平台的,可以在PC上运行,只是初始化参数不同。

好。谢谢回复。
支持。。。。。。

出0入0汤圆

发表于 2019-11-10 20:42:21 | 显示全部楼层
支持AWTK!

出0入0汤圆

 楼主| 发表于 2019-11-11 08:16:06 | 显示全部楼层
谢谢大家支持。

AWTK 提供了一个小工具 preview_ui.exe,可以直接预览XML界面描述文件。

出0入8汤圆

发表于 2019-11-11 09:29:32 | 显示全部楼层
我一直向新人力荐「系统程序员成长计划」,
在还算是新书的时候,自己就买了一本,一直持有,坐等升值

出0入0汤圆

发表于 2019-11-11 09:35:10 | 显示全部楼层
security 发表于 2019-11-11 09:29
我一直向新人力荐「系统程序员成长计划」,
在还算是新书的时候,自己就买了一本,一直持有,坐等升值{:lol ...

哈哈 我也收藏了一本

出0入0汤圆

发表于 2019-11-11 09:50:24 | 显示全部楼层
lixianjing 发表于 2019-11-9 11:55
AWTK 与 lvgl和emwin 不是对标的,因为它们太简陋,适用范围太小。当然我对 lvgl和emwin了解不多,没有真正 ...

AWStudio能内测一下吗?

出0入0汤圆

发表于 2019-11-11 10:12:17 | 显示全部楼层
有移植后的实际的效果图了吗,看看

出0入0汤圆

 楼主| 发表于 2019-11-11 10:28:16 | 显示全部楼层
cc1987 发表于 2019-11-11 10:12
有移植后的实际的效果图了吗,看看

github上有在线演示的例子。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2019-11-11 10:29:04 | 显示全部楼层
security 发表于 2019-11-11 09:29
我一直向新人力荐「系统程序员成长计划」,
在还算是新书的时候,自己就买了一本,一直持有,坐等升值{:lol ...

感谢支持

出0入0汤圆

发表于 2019-11-11 11:25:24 | 显示全部楼层
楼主大神,github上一直关注

出870入263汤圆

发表于 2019-11-11 13:44:34 | 显示全部楼层
楼主牛人啊!从最早的ftk就知道你了。如今牛逼的产品已经成型,推广是第一要务了。

出0入0汤圆

发表于 2019-11-11 15:00:31 | 显示全部楼层
来GUI大神了,最早知道ftk 是RTT里面

出0入0汤圆

发表于 2019-11-11 17:40:48 | 显示全部楼层
lixianjing 发表于 2019-11-11 10:28
github上有在线演示的例子。

这个是哪个控件?

出0入0汤圆

发表于 2019-11-11 17:45:43 | 显示全部楼层
在F103移植的显示

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2019-11-11 17:45:51 | 显示全部楼层
又一个可选ui了

出0入0汤圆

发表于 2019-11-11 18:11:14 | 显示全部楼层
mark 向大神学习

出0入0汤圆

发表于 2019-11-12 06:39:32 来自手机 | 显示全部楼层
LZ再出本书讲这个GUI吧!

出0入0汤圆

发表于 2019-11-12 07:35:23 | 显示全部楼层
关注,STM32GUI

出0入0汤圆

 楼主| 发表于 2019-11-12 08:48:36 | 显示全部楼层
感谢大家支持

同事写了一本《AWTK开发实践.pdf》: github.com/zlgopen/awtk-docs/blob/master/AWTK%E5%BC%80%E5%8F%91%E5%AE%9E%E8%B7%B5/AWTK%E5%BC%80%E5%8F%91%E5%AE%9E%E8%B7%B5.pdf

出0入8汤圆

发表于 2019-11-12 09:03:34 | 显示全部楼层
lixianjing 发表于 2019-11-12 08:48
感谢大家支持

同事写了一本《AWTK开发实践.pdf》: github.com/zlgopen/awtk-docs/blob/master/ ...

下载看看。
多谢分享!

我帮大神,贴个可以使劲戳的链接吧:「AWTK开发实践.pdf」

出0入85汤圆

发表于 2019-11-12 09:05:41 | 显示全部楼层
冒昧问一下楼主大神,在开源且而不盈利的情况下,是什么动力让楼主能坚持完成这么庞大的项目?

出0入8汤圆

发表于 2019-11-12 09:07:58 | 显示全部楼层
roseason 发表于 2019-11-12 09:05
冒昧问一下楼主大神,在开源且而不盈利的情况下,是什么动力让楼主能坚持完成这么庞大的项目? ...

大神,现在被 ZLG 收编了,短期内不需要考虑这些。

出0入0汤圆

发表于 2019-11-12 10:40:54 | 显示全部楼层
膜拜下大神偶像

出0入0汤圆

发表于 2019-11-12 11:14:34 | 显示全部楼层
大神啊,希望你的AWTK能火

出0入0汤圆

 楼主| 发表于 2019-11-12 11:15:20 | 显示全部楼层
security 发表于 2019-11-12 09:07
大神,现在被 ZLG 收编了,短期内不需要考虑这些。

知道的内幕不少  

感谢老板周立功教授的支持,让我有机会去做一些好玩的东东。

出0入0汤圆

发表于 2019-11-12 12:38:43 | 显示全部楼层
能不能出个频谱雨图的控件

出0入0汤圆

发表于 2019-11-12 12:46:03 来自手机 | 显示全部楼层
让周老板过来开个专栏吧,宣传下周公的产品

出0入0汤圆

发表于 2019-11-12 14:55:01 | 显示全部楼层
楼主  帖子代码格式不错

是用markdown写的吗?

出10入0汤圆

发表于 2019-11-12 15:48:33 | 显示全部楼层
能够在现在认真去一些看起来不怎么有回报的事情,的确非常了不起。并且如此的OPEN!
感谢!!!
有空了一定好好学习!

出0入25汤圆

发表于 2019-11-14 14:08:26 | 显示全部楼层

膜拜大神,,期待AWStudio,,

出0入0汤圆

 楼主| 发表于 2019-11-14 15:01:13 | 显示全部楼层
Mr.D 发表于 2019-11-12 14:55
楼主  帖子代码格式不错

是用markdown写的吗?

这个工具可以把markdown转成bbcode,再手工调整一下,去掉不支持的格式。https://alfateam123.github.io/md2bbc/

出0入0汤圆

 楼主| 发表于 2019-11-14 15:01:58 | 显示全部楼层
gongcsf 发表于 2019-11-12 12:38
能不能出个频谱雨图的控件

这个我不懂,你要做的话,我可以协助你

出0入0汤圆

发表于 2019-11-14 15:43:00 | 显示全部楼层
如果有设计器,个人感觉成功的可能性大了一倍以上

出0入0汤圆

发表于 2019-11-14 17:14:56 | 显示全部楼层
关注一下,学习了。

出0入0汤圆

 楼主| 发表于 2019-11-14 17:18:14 | 显示全部楼层
谢谢大家支持

AWStudio已经提交测试部门测试了,年后应该可以对外试用。

出0入0汤圆

 楼主| 发表于 2019-11-14 17:19:23 | 显示全部楼层

完善了一下片段缓冲区,效果好些,你可以更新一下。

出0入0汤圆

发表于 2019-11-27 13:26:01 | 显示全部楼层
lixianjing 发表于 2019-11-14 15:01
这个工具可以把markdown转成bbcode,再手工调整一下,去掉不支持的格式。https://alfateam123.github.io/ ...

好的 谢谢

刚看到回复,不好意思

出0入0汤圆

发表于 2019-11-27 13:59:55 | 显示全部楼层
关注一下AWTK

出0入0汤圆

发表于 2019-11-27 15:40:16 | 显示全部楼层

请问你这个是你自己移植过来的吗?

出0入0汤圆

发表于 2019-11-27 15:47:51 | 显示全部楼层
jaky80000 发表于 2019-11-27 15:40
请问你这个是你自己移植过来的吗?

是,移植到F103

出0入0汤圆

发表于 2019-11-27 15:52:50 | 显示全部楼层

请问你用的是最新的V1.3的版本,还是V1.2的版本,我看了一下,git上的提供的移植103上的并没有AWTK的src文件夹

出0入0汤圆

发表于 2019-11-27 16:02:16 | 显示全部楼层
jaky80000 发表于 2019-11-27 15:52
请问你用的是最新的V1.3的版本,还是V1.2的版本,我看了一下,git上的提供的移植103上的并没有AWTK的src ...

https://github.com/zlgopen/awtk,下载这个文件,放F103工程根目录

出0入0汤圆

发表于 2022-9-1 17:49:18 | 显示全部楼层
软件做的这一步了,与工控组态软件、触摸屏编程软件非常接近了。


回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-30 15:43

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表