WhyCan Forum(哇酷论坛)

人过留名,雁过留声,感谢各位朋友不离不弃地支持。 QQ: 516333132, 微信: whycan_cn (哇酷网/挖坑网/填坑网) admin@whycan.cn

您尚未登录。

#1 2020-01-09 10:33:12

staunchheart
会员
注册时间: 2019-12-17
累计积分: 31

F1C100S下LittleVgl+RTT触摸、GT911、看门狗踩坑记录

代码放到
https://gitee.com/zhangheyang/f1c100s_rt-thread

照着XBOOT老大的项目搞,其实没有坑,只是自己学艺不精,左脚踩到右脚摔了跟头。
一、移植I2C驱动
    照着Xboot上的配置,  本来没有坑,只是我没有处理
    #define I2C0_BASE_ADDR (0x01C27000)
    #define I2C0_CCU_BUS_SOFT_RST_BASE (F1C100S_CCU_BASE | CCU_BUS_SOFT_RST3)
    #define I2C0_CCU_BUS_SOFT_RST_BIT (1 << (80-64))
    write32(I2C0_CCU_BUS_SOFT_RST_BASE, read32(I2C0_CCU_BUS_SOFT_RST_BASE)|I2C0_CCU_BUS_SOFT_RST_BIT);
   然后就一路顺了。

二、移植GT911驱动
   1、Xboot在老的主线GT911线序不对,
       橘子 大神告诉我:
       https://github.com/xboot/xboot/pull/11/commits/b119553d16f6b260090f16436e250ff316a550a4
       看文档GT911有两个地址,这里用的是0x14,实际上这个代码与文档也稍有些差异,按文档INT后面要先拉低,再50msm后悬浮输入。
       这里没有,但能跑,想不通就不想了,能跑就行。
   2、在GT911中,INT中断后去获取从标,从解藕的角度来说,应该是
       i2c_transfer(dev->i2c, msgs, 2)   但这里面用了锁,RTT在中断中不能用锁。
       实际上XBoot代码中在中断时先关了中断,再开中断。应该不会有中时访问的问题,
       所以改成了ingenic_i2c_xfer(dev, msgs, 2),OK了,能跑了,我继续不管他。。
三、将LittleVgl升到6.1.1
      这里确实有些坑,搞了很久。
      1、6.0开始
           #if LV_COLOR_DEPTH == 24
           #error "LV_COLOR_DEPTH  24 is deprecated. Use LV_COLOR_DEPTH  32 instead (lv_conf.h)"
            #endif
           XBOOT上是24,5.0也是24,我选错方向了,我决定去改LittleVgl的代码。入坑了,出不来。
           这里要改的是FB里,改成32。
     2、本来应该出坑了,但LittleVgl本身改变蛮大的,5.0根本不需要lv_disp_buf_init 这种操作
          https://github.com/ZJ-TEK/ZJ_RT_Thread_NimBLE_LittlevGL_Nordic/blob/928dd3902a015931745ee36069a0e464b6a8aa97/ZJ_Application_NRF52840/001.lvgl_nimble_hrm/littlevgl/vgl_rtt_drv/lvgl_rtt_drv.c
          我参考这个修改的,他直接用FB的缓冲当作lv_disp_buf_init,实际上不行,必需另外定义一个缓冲区。
          然后就是修改一些5.0与6.0的函数不同的地方了,除了稍堵外没有什么坑。
    3、将触摸驱动加进来
          这个完全是没问题的,很简单,是我自己犯了些笔误错误将一个指针搞错了,大家应该不会遇到。
四、看门狗驱动
      完全没问题,挂D档,冲过去。
      在littleVgl中喂狗,也没什么可说的。
五、其它说明
      主要是我的硬件引脚与荔枝派这些不同,所以大家使用时要注意了。
      1、我的背光与LCD POWER有独立的IO控制,如果大家没有要修改一下。
      2、我的I2C RST INT引脚可能与大家不同。好几位朋友使用时就是这个问题,他的RST/INT在我的背光控制中。

这样,在RTT下,触摸、看门狗驱动都OK了。


看门狗的视频就不上传了,就是点击一个按钮,while(1); 
    13秒后设备会重启。

离线

#2 2020-01-12 14:48:45

lld1995
会员
注册时间: 2020-01-11
累计积分: 3

Re: F1C100S下LittleVgl+RTT触摸、GT911、看门狗踩坑记录

boot成功执行完jmp到rtt之后就没反应了是什么原因呢

离线

#3 2020-01-12 14:57:25

staunchheart
会员
注册时间: 2019-12-17
累计积分: 31

Re: F1C100S下LittleVgl+RTT触摸、GT911、看门狗踩坑记录

可能是地址不对吧。
当时觉得SPL BOOT只有10K,原来他提默认留了1M,
所以改了#define SIZE_START    (0x00010000)
这样的话,烧FLASH也要烧到同一个地址。

检查一下,如果用我的哪个脚本  windows目录下哪个我改了 。
linux下的我忘了改,我改后重新上传一下。

离线

#4 2020-01-12 18:33:12

lld1995
会员
注册时间: 2020-01-11
累计积分: 3

Re: F1C100S下LittleVgl+RTT触摸、GT911、看门狗踩坑记录

不是,我找到原因了,我虚拟机里面编译器的问题,我后来做官网的bin,改了下boot 你magic的检测就可以用了,这boot做得非常清晰简洁!简直完美,感谢兄弟

离线

页脚