导航

    全志在线开发者论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 话题
    • 在线文档
    • 社区主页
    1. 主页
    2. yofa2008
    Y
    • 资料
    • 关注 0
    • 粉丝 0
    • 我的积分 1071
    • 主题 0
    • 帖子 27
    • 最佳 8
    • 群组 0

    yofa2008LV 5

    @yofa2008

    1071
    积分
    9
    声望
    2
    资料浏览
    27
    帖子
    0
    粉丝
    0
    关注
    注册时间 最后登录

    yofa2008 取消关注 关注

    yofa2008 发布的最佳帖子

    • 回复: Gaviar Handheld (小志掌機)

      继上次弃坑之后,这次定要跟上大佬的脚步

      发布在 爱搞机专区
      Y
      yofa2008
    • 回复: Gaviar Handheld (小志掌機)

      @steward 感谢提供的固件资料。手上D88已经正常开机,大致看了一下,那个年代感又回来了。。。再次拜谢;后续紧跟大佬搞游戏机,找找那些 【爷青回】的瞬间。哈哈哈,再次拜谢了
      welcome screen.png
      1_0_2_firmware message.png

      发布在 爱搞机专区
      Y
      yofa2008
    • 回复: Gaviar Handheld (小志掌機)

      @whycan 根据上面的图片整理了一下MCU的IO去向,第二版更新的电机请问是使用了哪几个GPIO
      Screenshot from 2023-08-18 09-20-35.png

      发布在 爱搞机专区
      Y
      yofa2008
    • 回复: Gaviar Handheld (小志掌機)

      【碟】照来了,丑了点。但功能验证应该够用了。没有司徒 大佬的加藤鹰手法,右边的接口焊接失败了,。@steward
      LTS241QV-F08.png
      我要尽快跟上你的节奏了@lovehex99

      发布在 爱搞机专区
      Y
      yofa2008
    • 回复: Gaviar Handheld (小志掌機)

      @lovehex99 你没打板如何 搭硬件环境的?是有现成的板子买吗?
      @xiaowenge 都是想尽可能匹配‘小志’的硬件外设,布局按键在CAD里转来转去花了些时间。哈哈

      发布在 爱搞机专区
      Y
      yofa2008
    • 回复: Gaviar Handheld (小志掌機)

      @lovehex99 在 Gaviar Handheld (小志掌機) 中说:

      @steward 在 Gaviar Handheld (小志掌機) 中说:

      @lovehex99

      兩個問題問一下:

      1. 你是如何燒錄檔案到 MicroSD ?
      2. 因為預設是使用 adb shell 進入操作(USB Type-C), 你有使用 adb shell 試試嗎?

      1.用PhoenixCardv4.2.7.7z
      2.有的 ADB SHELL可以操作

      @steward 请问提示Is not Boot mode!是什么意思?我只写了uart4的那个img,没有在adb下找到devices哦

      by the way.重新烧写了一下img解决,work type选择start up.
      bootupok.png

      发布在 爱搞机专区
      Y
      yofa2008
    • 回复: Gaviar Handheld (小志掌機)

      播放wav文件,拷贝了一个windows自带的wav.
      playWAVok.png

      发布在 爱搞机专区
      Y
      yofa2008
    • 回复: Gaviar Handheld (小志掌機)

      @lovehex99 @steward
      今天测试了一张256MB的卡,能正常播放wav。UART4也可正常交互
      256Mplaywav.png

      发布在 爱搞机专区
      Y
      yofa2008

    yofa2008 发布的最新帖子

    • 回复: Gaviar Handheld (小志掌機)

      @lovehex99 啊嘻,这……哈哈哈原来是这样,

      发布在 爱搞机专区
      Y
      yofa2008
    • 回复: Gaviar Handheld (小志掌機)

      我用MangoPI官网的github包编译出能正常启动的img,网址(https://mangopi.org/mqr);
      !LOG_.png
      但用司徒大神的包编译的img始终不能正常引导,提示如之前反馈的错误,大致意思是两个ERROR:没有找到uboot.fex头和opensbi.fex头;
      !
      对比了一些目录发现差异还是比较多的,特别是lichee\brandy-2.0\spl下面:
      司徒大神的包里面没有找到sboot文件夹,不知道是啥原因;
      LOG_2.png
      我按@steward 你的包编译的固件日志第二行直接调用了include\commit_info.h的CI_INFO那个hash,但你编译好的Img第二行是sh脚本调用log文件生成的。能提示可能是什么原因吗?
      MangoPI使用的是lichee\brandy-2.0\目录下的spl-pub,里面内容和你的spl文件目录相差还是比较大。目前已经重新在github上多次下载并编译,问题仍然一致。基本可以排除文件 不一致造成的

      发布在 爱搞机专区
      Y
      yofa2008
    • 回复: Gaviar Handheld (小志掌機)

      @lovehex99 别啊,这就弃坑了吗?我的F1C100都还在坑里呢

      发布在 爱搞机专区
      Y
      yofa2008
    • 回复: Gaviar Handheld (小志掌機)

      @lovehex99 你github下载的工程能编译出可运行的img吗? 在没有任何改动的情况下,编译出的img串口启动时提示出错,我用的是ubuntu20.04。292e34e2-4905-4afe-8adf-c197f72fd97d-image.png
      有没有什么思路?

      发布在 爱搞机专区
      Y
      yofa2008
    • 回复: Gaviar Handheld (小志掌機)

      @johnaa 临时自己打板做的,用它来完成gpio转接

      发布在 爱搞机专区
      Y
      yofa2008
    • 回复: Gaviar Handheld (小志掌機)

      @steward 在 Gaviar Handheld (小志掌機) 中说:

      司徒接下來介紹點屏的步驟,而在點屏之前,我們需要先了解一下屏的一些特性,這樣才可以跑順後面的開發,一般常說的 8080 屏、i80 屏、MCU 屏,指的就是傳輸資料的方式是使用 Intel 8080 的讀寫方式,其實早期是有兩大派別,分別是 Intel 8080 和 Motorola 6800,至於為何後來都用 Intel 8080,這應該不用多說,8080 和 6800 的格式可以從下圖知曉
      1.jpg
       
      那為何 i80 屏需要做初始化呢 ?因為裡面有專門用來做顯示處理的 MCU,因此,需要設定一些參數,如:width=320, height=240, fps=60 等參數,所以傳送給屏的資料會分成 Data 和 Command,當然,有些特殊制定規格的屏就不須要初始化,因為參數都已經寫死並且固定在 MCU 裡,不過,市面上比較難購買到這類產品
      2.jpg
      MCU 在顯示圖像時,會固定從 RAM(或稱呼:顯示記憶體、Graphic RAM、GRAM)讀取資料並顯示在屏上面
       
      那該如何初始化呢?目前市面上的屏大約可以分成兩種作法:1. 使用 DB0~DB15 傳送初始化 Data 和 Command, 2. 使用 I2C 傳送 Data 和 Command
      3.jpg
      兩種方式都可以達到初始化的目的,因此,在購買 i80 屏後,記得跟賣家索取初始化命令
       
      那問題來了,當我們正在刷屏(寫入 RAM)時,MCU 是否有可能正在讀取 RAM ?答案:沒錯,這種狀況一定會發生,假如寫入跟讀取沒有一個同步機制,那就會發生這種狀況,而這種狀況就是一般俗稱:撕裂、閃屏、Screen Tearing,司徒畫了一張流程圖,下圖是 MCU 讀取 RAM 並且顯示在屏上的流程
      4.jpg
       
      當 F133 透過 TCON_LCD i80 介面傳送資料給屏時(黃色的像素),由於共用同一塊 RAM,因此,RAM 的內容被更新成黃色,同時,屏的 MCU 也正在更新圖像到屏上,因此,變成第一個畫面(紅色)和第二個畫面(黃色)的交疊狀況,如下圖
      5.jpg
       
      那 i80 屏的撕裂問題如何解決呢?其實,一般 i80 屏都會拉出 TE/FRAME 腳位,這個腳位一般不使用,因為它跟時序高度相關,需要同步處理,同常 TE/FRAME 腳位都會懸空,不過,TE/FRAME 腳位其實是用來告知屏的 MCU 是否正在更新圖像(讀取 RAM),因此,為了避免撕裂,F133 TCON_LCD 可以在 MCU 空閒時,傳送更新的資料,這樣就可以避免撕裂
      6.jpg
       
      那是不是搞定 TE/FRAME 腳位後,屏就不會撕裂?答案:不是,因為,從模擬器、顯示驅動到硬件傳送都可能會有撕裂問題,所以要確保顯示品質,任何經過的地方都必須仔細處理才可以保證畫面不撕裂
      7.jpg
       
      根據司徒的經驗,在不同地方的所造成的撕裂,將會有不一樣的結果,下圖是司徒整理的有趣現象,模擬器因為是像素更新居多,因此,覆蓋一般是從起始像素開始,所以撕裂比較像是上下分層,而顯示驅動一般使用區塊複製,因此,撕裂是屬於左右分層,屏的撕裂,由於更新跟寫入是屬於追跑的現象,因此,撕裂屬於三角分層
      8.jpg
       
      LCD 電路
      9.jpg
      10.jpg
       
      main.s

          .global _start
       
          .equ GPIO_BASE,  0x02000000
          .equ PD_CFG0,    0x0090
          .equ PD_CFG1,    0x0094
          .equ PD_CFG2,    0x0098
          .equ PD_DAT,     0x00a0
       
          .equ LCD_RST,    (1 << 0)
          .equ LCD_WR,     (1 << 18)
          .equ LCD_RS,     (1 << 19)
          .equ LCD_RD,     (1 << 20)
          .equ LCD_CS,     (1 << 21)
          .equ LCD_BL,     (1 << 22)
       
          .equ _250MS,     50000000
          .equ _500MS,     100000000
          .equ _1S,        200000000
       
          .text
          .long 0x4000006f
          .byte 'e','G','O','N','.','B','T','0'
          .long 0x5F0A6C39
          .long 0x8000
          .long 0, 0
          .long 0, 0, 0, 0, 0, 0, 0, 0
          .long 0, 0, 0, 0, 0, 0, 0, 0
         
          .org 0x0400
      _start:
          li t0, 0x11111111
          li a0, GPIO_BASE + PD_CFG0
          sw t0, 0(a0)
          li a0, GPIO_BASE + PD_CFG1
          sw t0, 0(a0)
          li a0, GPIO_BASE + PD_CFG2
          sw t0, 0(a0)
       
          li t0, 0xffffffff
          li a0, GPIO_BASE + PD_DAT
          sw t0, 0(a0)
       
          jal lcd_rst
       
          li t0, 0xb2
          jal lcd_cmd
          li t0, 0x5c
          jal lcd_dat
          li t0, 0x5c
          jal lcd_dat
          li t0, 0x00
          jal lcd_dat
          li t0, 0x33
          jal lcd_dat
          li t0, 0x33
          jal lcd_dat
           
          li t0, 0xb7
          jal lcd_cmd
          li t0, 0x35
          jal lcd_dat
           
          li t0, 0x21
          jal lcd_cmd
           
          li t0, 0x11
          jal lcd_cmd
       
          li t0, _250MS
          jal delay
       
          li t0, 0xe0
          jal lcd_cmd
          li t0, 0xd0
          jal lcd_dat
          li t0, 0x06
          jal lcd_dat
          li t0, 0x0b
          jal lcd_dat
          li t0, 0x07
          jal lcd_dat
          li t0, 0x07
          jal lcd_dat
          li t0, 0x24
          jal lcd_dat
          li t0, 0x2e
          jal lcd_dat
          li t0, 0x32
          jal lcd_dat
          li t0, 0x46
          jal lcd_dat
          li t0, 0x37
          jal lcd_dat
          li t0, 0x13
          jal lcd_dat
          li t0, 0x13
          jal lcd_dat
          li t0, 0x2d
          jal lcd_dat
          li t0, 0x33
          jal lcd_dat
           
          li t0, 0xe1
          jal lcd_cmd
          li t0, 0xd0
          jal lcd_dat
          li t0, 0x02
          jal lcd_dat
          li t0, 0x06
          jal lcd_dat
          li t0, 0x09
          jal lcd_dat
          li t0, 0x08
          jal lcd_dat
          li t0, 0x05
          jal lcd_dat
          li t0, 0x29
          jal lcd_dat
          li t0, 0x44
          jal lcd_dat
          li t0, 0x42
          jal lcd_dat
          li t0, 0x38
          jal lcd_dat
          li t0, 0x14
          jal lcd_dat
          li t0, 0x14
          jal lcd_dat
          li t0, 0x2a
          jal lcd_dat
          li t0, 0x30
          jal lcd_dat
           
          li t0, 0x36
          jal lcd_cmd
          li t0, 0xb0
          jal lcd_dat
           
          li t0, 0x2a
          jal lcd_cmd
          li t0, 0x00
          jal lcd_dat
          li t0, 0x00
          jal lcd_dat
          li t0, 0x01
          jal lcd_dat
          li t0, 0x3f
          jal lcd_dat
           
          li t0, 0x2b
          jal lcd_cmd
          li t0, 0x00
          jal lcd_dat
          li t0, 0x00
          jal lcd_dat
          li t0, 0x00
          jal lcd_dat
          li t0, 0xef
          jal lcd_dat
           
          li t0, 0x3a
          jal lcd_cmd
          li t0, 0x55
          jal lcd_dat
       
          li t0, 0x29
          jal lcd_cmd
           
          li t0, 0x2c
          jal lcd_cmd
       
          li t6, 320 * 80
      red:
          li t0, 0xf800
          jal lcd_dat
          addi t6, t6, -1
          bgtz t6, red
           
          li t6, 320 * 80
      green:
          li t0, 0x7e0
          jal lcd_dat
          addi t6, t6, -1
          bgtz t6, green
           
          li t6, 320 * 80
      blue:
          li t0, 0x1f
          jal lcd_dat
          addi t6, t6, -1
          bgtz t6, blue
      1:
          j 1b
       
      lcd_wr:
          li a0, GPIO_BASE + PD_DAT
       
          li t4, 0x00ff
          and t2, t0, t4
          li t4, 0xff00
          and t3, t0, t4
          sll t2, t2, 1
          sll t3, t3, 2
       
          move t5, t1
          or t5, t5, t2
          or t5, t5, t3
          sw t5, 0(a0)
       
          li t0, LCD_WR
          or t5, t5, t0
          sw t5, 0(a0)
          jr ra
       
      lcd_dat:
          move a1, ra
          li t1, LCD_RS | LCD_RD | LCD_BL | LCD_RST
          jal lcd_wr
          jr a1
       
      lcd_cmd:
          move a1, ra
          li t1, LCD_RD | LCD_BL | LCD_RST
          jal lcd_wr
          jr a1
       
      lcd_rst:
          move a1, ra
          li t0, 0x00000000
          li a0, GPIO_BASE + PD_DAT
          sw t0, 0(a0)
       
          li t0, _250MS
          jal delay
       
          li t0, 0xffffffff
          li a0, GPIO_BASE + PD_DAT
          sw t0, 0(a0)
       
          li t0, _250MS
          jal delay
          jr a1
       
      delay:
          addi t0, t0, -1
          bgtz t0, delay
          jr ra
          .end
      

       
      完成
      11.jpg

      请教@steward 这个main.s文件 怎么加载到启动完成的系统中去执行啊,目前在配置lcd需要在上面 修改些参数

      发布在 爱搞机专区
      Y
      yofa2008
    • 回复: Gaviar Handheld (小志掌機)

      @xiaowenge 三明治结构的全键盘工程机来了,准备就绪。就等司徒大佬回来传授一下如何替换屏驱动开机了@steward,linux开发不会搞,跟大神学会
      图:sandwiches.png

      发布在 爱搞机专区
      Y
      yofa2008
    • 回复: Gaviar Handheld (小志掌機)

      @awwwwa 啊,原来这样。感谢告知,司徒大佬在帖里提了一下,没说细节。有空我试一下了

      发布在 爱搞机专区
      Y
      yofa2008
    • 回复: Gaviar Handheld (小志掌機)

      @steward 许久没见大佬跟贴,猜测一定是在忙大事。目前我遇到了诡异的问题:为何用dd的命令复制到TF卡的img不写入,而phoenix写的img就能写入。是dd命令的问题??
      见图Screenshot from 2023-09-12 05-03-05.png

      发布在 爱搞机专区
      Y
      yofa2008
    • 回复: Gaviar Handheld (小志掌機)

      @lovehex99 对的。建议您也先排除简单的问题,再上手改比较容易。

      发布在 爱搞机专区
      Y
      yofa2008