在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

    文章

    2339

    瀏覽量

    46773
  • 賽昉科技
    +關注

    關注

    3

    文章

    159

    瀏覽量

    14369
收藏 人收藏

    評論

    相關推薦

    科技RISC-V家庭云解決方案:NAS存儲性能升級,隱私安全雙保障

    (VisionFive2)單板計算機,推出全新RISC-V家庭云(NAS)解決方案,用戶提供高性能、高安全性的私有云存儲服務,滿足家庭及輕量級企業場景需求。方案亮點01高性能硬件支持
    的頭像 發表于 02-18 17:50 ?291次閱讀
    <b class='flag-5'>賽</b><b class='flag-5'>昉</b>科技<b class='flag-5'>RISC-V</b>家庭云解決方案:NAS存儲性能升級,隱私安全雙保障

    科技亮相世界互聯網大會,精彩呈現RISC-V創新成果

    豐富的RISC-V創新成果,包括·驚鴻-7110(JH-7110)RISC-V應用處理器,·星光2(VisionFive2)
    的頭像 發表于 11-28 15:14 ?404次閱讀
    <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 ?342次閱讀
    預售啟動!<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 ?539次閱讀
    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 ?1132次閱讀
    暢玩<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 ?587次閱讀
    <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 ?821次閱讀
    <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 ?558次閱讀
    <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 ?718次閱讀
    <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 ?793次閱讀
    <b class='flag-5'>昉</b>·<b class='flag-5'>星光</b>2 <b class='flag-5'>RISC-V</b><b class='flag-5'>單板計算機</b>體驗(一) - 開箱
    主站蜘蛛池模板: 久操综合| 91色视| 色视频网站在线观看 | 久久综合九九亚洲一区 | 韩日一级毛片 | 久久久一本波多野结衣 | 欧美性受xxxx | 亚洲欧美日韩在线观看你懂的 | 黄色日批网站 | 亚洲偷偷| 萌白酱白丝护士服喷水铁牛tv | 大黄网站色多多 | 久久青草免费免费91线频观看 | 中文字幕一区二区三区在线不卡 | 色视频免费观看高清完整 | 日本资源在线观看 | 久久婷婷成人综合色 | 久久精品国产精品亚洲人人 | 免费高清成人啪啪网站 | 国产黄色一级网站 | 在线播放免费人成毛片乱码 | 国产激烈床戏无遮挡在线观看 | 免费a级毛片出奶水 | 网站毛片 | 欧美一级欧美三级在线观看 | re久久 | 久久精品国产免费看久久精品 | 日本妈妈4 | 欧美三级视频网站 | 久久精品视频免费观看 | 久久夜色tv网站免费影院 | 日毛片 | 一区二区三区免费视频播放器 | 日本美女视频网站 | 天天做.天天爱.天天综合网 | 人人草人人 | 四虎国产在线观看 | 日韩一级视频 | 五月天婷婷色 | 亚洲一级免费视频 | 99久久999久久久综合精品涩 |