0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【赛昉科技昉·星光RISC-V单板计算机试用体验】添加tft触摸屏(ili9488)并显示开机logo,为qt做准备

开发板试用精选 来源:开发板试用 作者:电子发烧友论坛 2022-11-14 14:40 次阅读
本文来源电子发烧友社区,作者:cszzlsw, 帖子地址:https://bbs.elecfans.com/jishu_2287667_1_1.html


1.前言
前面两篇帖子咱们回顾了从头制作系统并运行homeassistant,其中不可谓不辛酸,然后我就在想再做个啥,找了一下自己库存的外设,有一个tft屏带触摸芯片的,一想,这不正好的嘛,可以玩玩图形编程了,老听说linux开发板的qt编程咱也没见过啊,说干就干,这就开始了.

2.移植驱动并首先尝试
首先我的屏主控是lil9488的,分辨率320*480,据说再往上就得上rgb屏了,这咱没玩过也不懂,把手头上这个整明白先.
这个在git仓库:https://github.com/starfive-tech/freelight-u-sdk,给的linux内核里面找了一圈,也没见,
然后发现有一个芯片是ili9486的,跟我这差一位数,一想差不多,这个开始弄吧,把文件拷过来,然后改吧:
poYBAGKvOuSAF2LVAAeGDGqwUu0153.png

然后把所有涉及9486的地方都改成9488,
然后是设备树里面改吧改吧(改了好多次,也是第一次写设备树):
poYBAGKvOuWAZB-XAAI6kW0Ce0E876.png

这款tft屏除了常规的spi线之外,还有BL(背光BackLight),Reset(复位),DC(Data-Control)线需要接,这里我用的gpio1,2,3脚,
另外最后的那个debug如果不需要就置0,需要就置1.

然后在linux内核里面配置一下,把ili9488加进来:

-> Device Drivers │
│ -> Staging drivers (STAGING [=y]) │
│ -> Support for small TFT LCD display modules (FB_TFT [=y])



然后就是编译内核,再删除rootfs,然后再生成rootfs,这都老熟人了,
这些都整完之后,就把卡插上准备烧录,
然后漫长的等待过程之后,终于烧完了,

紧跟着就把屏接上,按照文档里介绍的40pin引脚对应接好,
上电,然而,并没有出现期待中的点亮屏幕,

二.各种解决问题
1.spi没有设备id问题:

出现这个问题的原因是因为sdk的系统是5.15,属于是很新的系统了,但是linux里面的驱动几年都不更新,所以过期了,需要在ili9844里这么改:
pYYBAGKvO-SAJ-yFAAI69KcV_ZI462.png

2.ili支持888颜色而ili9486是565模式
这里需要改好几个地方,
首先是ili9488文件里初始化序列里面,把这个值由0x55改成0x66,
poYBAGKvO-OAFf5pAAIYBPog7Es333.png

然后在ser_var里面添加上888色彩的信息,
poYBAGKvOueAWJQeAAIcRie2rlU025.png

然后是display的值,增加一个函数和bbp值:
poYBAGKvPC2AXou-AAGByCRqGIA557.png

这里面涉及的这个函数:fbtft_write_vmem24_bus8就是写入像素信息的
这个函数需要放到fbtft-core.c里,放文件最后也行
fbtft-core.c文件还需要修改fbtft_framebuffer_alloc函数的几个地方:
pYYBAGKvOuaAIKAKAAJRHQhnjk4959.png

pYYBAGKvOuaAcDOxAADqWe8BQmQ610.png



3.修改fbtft-core.c里面的几个函数,
首先是:fbtft_request_one_gpio:


  1. #include "linux/gpio.h"
  2. #include "linux/of_gpio.h"
  3. static int fbtft_request_one_gpio(struct fbtft_par *par,
  4. const char *name, int index,
  5. struct gpio_desc **gpiop)
  6. {
  7. struct device *dev = par->info->device;
  8. struct device_node *node = dev->of_node;
  9. int gpio, flags, ret = 0;
  10. enum of_gpio_flags of_flags;
  11. if (of_find_property(node, name, NULL)) {
  12. gpio = of_get_named_gpio_flags(node, name, index, &of_flags);
  13. if (gpio == -ENOENT)
  14. return 0;
  15. if (gpio == -EPROBE_DEFER)
  16. return gpio;
  17. if (gpio < 0) {
  18. dev_err(dev,
  19. "failed to get '%s' from DTn", name);
  20. return gpio;
  21. }
  22. //active low translates to initially low
  23. flags = (of_flags & OF_GPIO_ACTIVE_LOW) ? GPIOF_OUT_INIT_LOW :
  24. GPIOF_OUT_INIT_HIGH;
  25. ret = devm_gpio_request_one(dev, gpio, flags,
  26. dev->driver->name);
  27. if (ret) {
  28. dev_err(dev,
  29. "gpio_request_one('%s'=%d) failed with %dn",
  30. name, gpio, ret);
  31. return ret;
  32. }
  33. *gpiop = gpio_to_desc(gpio);
  34. fbtft_par_dbg(DEBUG_REQUEST_GPIOS, par, "%s: '%s' = GPIO%dn",
  35. __func__, name, gpio);
  36. }
  37. return ret;
  38. }
复制代码

然后是fbtft_request_gpios:


  1. static int fbtft_request_gpios(struct fbtft_par *par)
  2. {
  3. int i;
  4. int ret;
  5. ret = fbtft_request_one_gpio(par, "reset-gpios", 0, &par->gpio.reset);
  6. if (ret)
  7. return ret;
  8. ret = fbtft_request_one_gpio(par, "dc-gpios", 0, &par->gpio.dc);
  9. if (ret)
  10. return ret;
  11. ret = fbtft_request_one_gpio(par, "rd-gpios", 0, &par->gpio.rd);
  12. if (ret)
  13. return ret;
  14. ret = fbtft_request_one_gpio(par, "wr-gpios", 0, &par->gpio.wr);
  15. if (ret)
  16. return ret;
  17. ret = fbtft_request_one_gpio(par, "cs-gpios", 0, &par->gpio.cs);
  18. if (ret)
  19. return ret;
  20. ret = fbtft_request_one_gpio(par, "latch-gpios", 0, &par->gpio.latch);
  21. if (ret)
  22. return ret;
  23. for (i = 0; i < 16; i++) {
  24. ret = fbtft_request_one_gpio(par, "db-gpios", i,
  25. &par->gpio.db[i]);
  26. if (ret)
  27. return ret;
  28. ret = fbtft_request_one_gpio(par, "led-gpios", i,
  29. &par->gpio.led[i]);
  30. if (ret)
  31. return ret;
  32. ret = fbtft_request_one_gpio(par, "aux-gpios", i,
  33. &par->gpio.aux[i]);
  34. if (ret)
  35. return ret;
  36. }
  37. return 0;
  38. }
复制代码

最后是fbtft_reset:


  1. static void fbtft_reset(struct fbtft_par *par)
  2. {
  3. if (!par->gpio.reset)
  4. return;
  5. fbtft_par_dbg(DEBUG_RESET, par, "%s()n", __func__);
  6. gpiod_set_value_cansleep(par->gpio.reset, 1);
  7. usleep_range(20, 40);
  8. gpiod_set_value_cansleep(par->gpio.reset, 0);
  9. msleep(120);
  10. gpiod_set_value_cansleep(par->gpio.reset, 1);
  11. // gpiod_set_value_cansleep(par->gpio.cs, 1);/* Activate chip */
  12. }
复制代码

这里主要是那个复位脚重启一下,原来的是把cs脚使能,不知道为什么是这样

烧录之后如果不能显示,可以尝试把系统原来的显示去掉(不知道有没有作用,可以试下,我实验过程中去掉了):
pYYBAGKvPMOAEW48AAHy_EFy4ls921.png

大概主要碰到的问题就是这些吧,可能有些忘记了,想起来的时候再添加.

三.显示logo,
这里需要修改linux配置,配置这个参数,这个就是显示logo的
-> Device Drivers │
│ -> Graphics support │
│ -> Bootup logo (LOGO [=y])
poYBAGKvPqGAZe1YAACjBEmibBg426.png


效果看一看(后面有时间换成咱们赛昉的logo试试):
poYBAGKvPqOAQYaAAAIlZZNBTts207.jpg

如果还想把终端的打印信息在屏幕上显示出来,就配置这个
│ -> Device Drivers │
│ -> Graphics support │
│ -> Console display driver support
pYYBAGKvPqKAOHWpAADtd5hadfw531.png


但是这还不够,还需要把console额外赋个值,在bootarg那里增加一个参数(这个功能很酷炫,但实际没什么用,建议不要搞):
这里我们把固件编译出来试一下是可以将字符显示在屏幕上的,在linux终端上输入:
echo hello >/dev/tty0
可以看到hello字符出现在屏幕上了.

四.总结
到这里一款LCD屏幕的移植过程大致就完了,整个步骤其实不是很繁琐,其实最有意义的是这中间找问题的过程,借此机会大致弄明白了设备数的写法
也知道了一些驱动方面的知识,后续等tf卡刷方式速度快点再玩了,准备的实验有触摸,QT写界面等等,拭目以待吧.
再次吐槽发烧友的发帖机制,太难受,要赶紧把图片粘贴功能弄出来

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • RISC-V
    +关注

    关注

    45

    文章

    2277

    浏览量

    46162
  • 赛昉科技
    +关注

    关注

    3

    文章

    153

    浏览量

    14282
收藏 人收藏

    评论

    相关推荐

    科技亮相世界互联网大会,精彩呈现RISC-V创新成果

    丰富的RISC-V创新成果,包括·惊鸿-7110(JH-7110)RISC-V应用处理器,·星光2(VisionFive2)
    的头像 发表于 11-28 15:14 339次阅读
    <b class='flag-5'>赛</b><b class='flag-5'>昉</b>科技亮相世界互联网大会,精彩呈现<b class='flag-5'>RISC-V</b>创新成果

    预售启动!·星光 2 AI套件正式发布,基于RISC-V构建AI算力

    10月24日,·星光2(VisionFive2)AI套件正式开启预售。该套件由中国RISC-V软硬件生态领导者科技携手边缘人工智能(A
    的头像 发表于 10-25 08:05 226次阅读
    预售启动!<b class='flag-5'>昉</b>·<b class='flag-5'>星光</b> 2 AI套件正式发布,基于<b class='flag-5'>RISC-V</b>构建AI算力

    Ubuntu现已适配RISC-V单板计算机Milk-V Mars

    近期,Canonical宣布优化的Ubuntu24.04镜像已可用于RISC-V单板计算机Milk-VMars。Milk-VMars由深圳市群芯闪耀科技有限公司(Milk-V)设计
    的头像 发表于 06-12 08:19 466次阅读
    Ubuntu现已适配<b class='flag-5'>RISC-V</b><b class='flag-5'>单板计算机</b>Milk-<b class='flag-5'>V</b> Mars

    畅玩·星光 2|手把手教你搭建基于RISC-V的家用NAS

    方案。通过科技与开源社区的共同努力,·星光2(VisionFive2)RISC-V单板计算机
    的头像 发表于 06-04 08:19 957次阅读
    畅玩<b class='flag-5'>昉</b>·<b class='flag-5'>星光</b> 2|手把手教你搭建基于<b class='flag-5'>RISC-V</b>的家用NAS

    信用卡大小的 RISC-V 单板计算机介绍

    信用卡大小的 RISC-V 单板计算机 —— Mars Mars 由深圳市群芯闪耀科技有限公司(Milk-V)设计推出,搭载
    发表于 04-12 16:39

    科技RISC-V人才培育赋能

    中国RISC-V软硬件生态领导者,科技受邀在峰会发表主题演讲,正式加入RISC-V国际人才培养认证中心。
    的头像 发表于 04-02 08:18 509次阅读
    <b class='flag-5'>赛</b><b class='flag-5'>昉</b>科技<b class='flag-5'>为</b><b class='flag-5'>RISC-V</b>人才培育赋能

    科技VisionFive 2生态进展双周报(2.1-2.29)

    Image for VisionFive 2) 社区开发者发布4篇【·星光 2高性能RISC-V单板计算机体验】系列文章,内容包括:U
    发表于 02-29 15:45

    RISC-V智能化网络解决方案|科技·星光 2成功运行OpenWrt

    。近期,科技在·星光2(VisionFive2)RISC-V单板计算机上成功运行OpenW
    的头像 发表于 02-23 08:18 679次阅读
    <b class='flag-5'>RISC-V</b>智能化网络解决方案|<b class='flag-5'>赛</b><b class='flag-5'>昉</b>科技<b class='flag-5'>昉</b>·<b class='flag-5'>星光</b> 2成功运行OpenWrt

    ·星光 2 高性能RISC-V单板计算机体验】以容器的方式安装 HomeAssistant

    ·星光 2 高性能RISC-V单板计算机体验】以容器的方式安装 HomeAssistant 下载启动容器 HomeAssisatant
    发表于 02-21 18:07

    ·星光 2 高性能RISC-V单板计算机体验】 Ubuntu 安装 Docker 及常用软件

    ·星光 2 高性能RISC-V单板计算机体验】 Ubuntu 安装 Docker 及常用软件 目的 为了更好的利用
    发表于 02-21 17:54

    ·星光 2 高性能RISC-V单板计算机体验】VisionFive2开箱+安装Ubuntu

    ·星光 2 高性能RISC-V单板计算机体验】VisionFive2开箱+安装Ubuntu 前言 很感谢
    发表于 02-21 17:49

    ·星光2 RISC-V单板计算机体验(三) - SSH连接

    ·星光2 RISC-V单板计算机体验(三) - SSH连接 一、官方资料 RISC-V官网: [https://rvspace.org]
    的头像 发表于 02-21 10:21 503次阅读
    <b class='flag-5'>昉</b>·<b class='flag-5'>星光</b>2 <b class='flag-5'>RISC-V</b><b class='flag-5'>单板计算机</b>体验(三) - SSH连接

    ·星光2 RISC-V单板计算机体验(二) - 系统环境

    ·星光2 RISC-V单板计算机体验(二) - 系统环境 一、官方资料 RISC-V官网: [https://rvspace.org]
    的头像 发表于 02-21 10:15 664次阅读
    <b class='flag-5'>昉</b>·<b class='flag-5'>星光</b>2 <b class='flag-5'>RISC-V</b><b class='flag-5'>单板计算机</b>体验(二) - 系统环境

    ·星光2 RISC-V单板计算机体验(一) - 开箱

    ·星光2 RISC-V单板计算机体验(一) - 开箱 一、开箱 ·星光2( VisionFi
    的头像 发表于 02-21 10:10 720次阅读
    <b class='flag-5'>昉</b>·<b class='flag-5'>星光</b>2 <b class='flag-5'>RISC-V</b><b class='flag-5'>单板计算机</b>体验(一) - 开箱

    ·星光 2 高性能RISC-V单板计算机试用体验】开箱及装载Debian系统

    上周收到了·星光 2高性能RISC-V单板计算机开发板,在此非常感谢科技提供的
    发表于 01-24 00:32