导航

    全志在线开发者论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 话题
    • 在线文档
    • 社区主页

    Gaviar Handheld (小志掌機)

    爱搞机专区
    21
    136
    255243
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • Y
      yofa2008 LV 5 最后由 编辑

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

      xiaowenge L 2 条回复 最后回复 回复 引用 分享 1
      • xiaowenge
        DOT小文哥 LV 8 @yofa2008 最后由 编辑

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

        【碟】照来了,丑了点。但功能验证应该够用了。没有司徒 大佬的加藤鹰手法,右边的接口焊接失败了,。

        你这个看着像个黑莓手机,上面一个屏幕,下面好多按键

        Y 1 条回复 最后回复 回复 引用 分享 0
        • whycan
          whycan晕哥 LV 9 @yofa2008 最后由 编辑

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

          第二版更新的电机请问是使用了哪几个GPIO

          MO0 ==> PB7
          MO1 ==> PB6

          1 条回复 最后回复 回复 引用 分享 1
          • L
            lovehex99 LV 5 @yofa2008 最后由 编辑

            @yofa2008 你自己打版喔 厲害

            Y 1 条回复 最后回复 回复 引用 分享 0
            • L
              lovehex99 LV 5 @steward 最后由 编辑

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

              編譯步驟

              換了16G
              root@TinaLinux:/etc# mount /dev/mmcblk0p8 /mnt/UDISK/
              mount /dev/mmcblk0p8 /mnt/UDISK/
              mount: mounting /dev/mmcblk0p8 on /mnt/UDISK/ failed: Input/output error
              只有沒對 /dev/sdb8 進行擴充

              但UART還是開不起來
              我編譯步驟是照這個帖子的
              Starting kernel ...

              [02.156][mmc]: MMC Device 2 not found
              [02.160][mmc]: mmc 2 not find, so not exit

              steward 1 条回复 最后回复 回复 引用 分享 0
              • steward
                司徒 LV 6 @lovehex99 最后由 编辑

                @lovehex99

                兩個問題問一下:

                1. 你是如何燒錄檔案到 MicroSD ?
                2. 因為預設是使用 adb shell 進入操作(USB Type-C), 你有使用 adb shell 試試嗎?
                L 1 条回复 最后回复 回复 引用 分享 0
                • Y
                  yofa2008 LV 5 @lovehex99 最后由 编辑

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

                  W L 2 条回复 最后回复 回复 引用 分享 1
                  • W
                    whycanservice2 LV 8 @yofa2008 最后由 编辑

                    @yofa2008 厉害厉害。。怎么用CAD的?

                    1 条回复 最后回复 回复 引用 分享 0
                    • L
                      lovehex99 LV 5 @yofa2008 最后由 编辑

                      @yofa2008 買的喔

                      J 1 条回复 最后回复 回复 引用 分享 0
                      • L
                        lovehex99 LV 5 @steward 最后由 编辑

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

                        @lovehex99

                        兩個問題問一下:

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

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

                        steward Y 2 条回复 最后回复 回复 引用 分享 0
                        • steward
                          司徒 LV 6 @lovehex99 最后由 编辑

                          @lovehex99

                          解開後, 使用 dd 命令燒錄到 MicroSD 卡後, 插入開機, 就會開始播放 Nokia 手機鈴聲~

                          1 条回复 最后回复 回复 引用 分享 0
                          • Y
                            yofa2008 LV 5 @lovehex99 最后由 yofa2008 编辑

                            @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 1 条回复 最后回复 回复 引用 分享 1
                            • Y
                              yofa2008 LV 5 @yofa2008 最后由 编辑

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

                              1 条回复 最后回复 回复 引用 分享 1
                              • Y
                                yofa2008 LV 5 @lovehex99 最后由 yofa2008 编辑

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

                                L 1 条回复 最后回复 回复 引用 分享 1
                                • L
                                  lovehex99 LV 5 @yofa2008 最后由 编辑

                                  @yofa2008
                                  你是直接燒司徒給的那個img吧?
                                  我是從github下載自己編譯的

                                  Y 2 条回复 最后回复 回复 引用 分享 0
                                  • Y
                                    yofa2008 LV 5 @lovehex99 最后由 编辑

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

                                    L 1 条回复 最后回复 回复 引用 分享 0
                                    • L
                                      lovehex99 LV 5 @yofa2008 最后由 编辑

                                      @yofa2008 我硬件是用買的 所以應該沒問題
                                      最近也忙 等後續教程多點再來玩

                                      1 条回复 最后回复 回复 引用 分享 0
                                      • steward
                                        司徒 LV 6 最后由 编辑

                                        最近在幫 Miyoo Mini/Miyoo Mini Plus 移植 drastic NDS 模擬器, 目前已經快完善了, 這邊先晚一點更新 ~

                                        Y 1 条回复 最后回复 回复 引用 分享 0
                                        • Y
                                          yofa2008 LV 5 @steward 最后由 编辑

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

                                          A 1 条回复 最后回复 回复 引用 分享 0
                                          • A
                                            awwwwa LV 8 @yofa2008 最后由 编辑

                                            @yofa2008 img不是磁盘镜像文件,是专有的压缩格式,不带分区表。可以用OpenixCard转换为dd可以写入的带分区表的镜像

                                            Y 1 条回复 最后回复 回复 引用 分享 0
                                            • Y
                                              yofa2008 LV 5 @awwwwa 最后由 编辑

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

                                              1 条回复 最后回复 回复 引用 分享 0
                                              • Y
                                                yofa2008 LV 5 @xiaowenge 最后由 编辑

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

                                                J 1 条回复 最后回复 回复 引用 分享 0
                                                • Y
                                                  yofa2008 LV 5 @steward 最后由 编辑

                                                  @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需要在上面 修改些参数

                                                  1 条回复 最后回复 回复 引用 分享 0
                                                  • J
                                                    johnaa LV 2 @lovehex99 最后由 编辑

                                                    @lovehex99
                                                    请问哪里买的?谢

                                                    L 1 条回复 最后回复 回复 引用 分享 0
                                                    • L
                                                      lovehex99 LV 5 @johnaa 最后由 编辑

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

                                                      @lovehex99
                                                      请问哪里买的?谢

                                                      TAOBAO

                                                      xiaowenge 1 条回复 最后回复 回复 引用 分享 0
                                                      • xiaowenge
                                                        DOT小文哥 LV 8 @lovehex99 最后由 编辑

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

                                                        @lovehex99
                                                        请问哪里买的?谢

                                                        淘宝晕哥(哇酷)家的店有卖:
                                                        https://item.taobao.com/item.htm?spm=a1z10.3-c-s.w4002-24100641678.20.374078c9as1fAj&id=725660521821

                                                        1 条回复 最后回复 回复 引用 分享 0
                                                        • J
                                                          johnaa LV 2 @yofa2008 最后由 编辑

                                                          @yofa2008 你好,蓝色的有按钮的板是哪里买的?

                                                          Y 1 条回复 最后回复 回复 引用 分享 1
                                                          • Y
                                                            yofa2008 LV 5 @johnaa 最后由 编辑

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

                                                            1 条回复 最后回复 回复 引用 分享 1
                                                            • Y
                                                              yofa2008 LV 5 @lovehex99 最后由 编辑

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

                                                              L Y 2 条回复 最后回复 回复 引用 分享 1
                                                              • L
                                                                lovehex99 LV 5 @yofa2008 最后由 编辑

                                                                @yofa2008
                                                                很久没玩了 我在等晕哥的安卓掌机

                                                                Y 1 条回复 最后回复 回复 引用 分享 1
                                                                • Y
                                                                  yofa2008 LV 5 @lovehex99 最后由 编辑

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

                                                                  L 1 条回复 最后回复 回复 引用 分享 1
                                                                  • Y
                                                                    yofa2008 LV 5 @yofa2008 最后由 编辑

                                                                    我用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上多次下载并编译,问题仍然一致。基本可以排除文件 不一致造成的

                                                                    1 条回复 最后回复 回复 引用 分享 1
                                                                    • L
                                                                      lovehex99 LV 5 @yofa2008 最后由 编辑

                                                                      @yofa2008 司徒大神都鴿了 暈哥的安卓掌機也...

                                                                      Y 1 条回复 最后回复 回复 引用 分享 1
                                                                      • Y
                                                                        yofa2008 LV 5 @lovehex99 最后由 编辑

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

                                                                        1 条回复 最后回复 回复 引用 分享 1
                                                                        • steward
                                                                          司徒 LV 6 最后由 编辑

                                                                          司徒前些日子真的相當相當忙碌, 真的相當抱歉, 三年後的今天才又開始更新這個貼子~也相當欣慰 bankbank 還有持續聯繫司徒, 因此, 等後半段需要高手逆向 NeoGeo ROM 時, 司徒再來呼叫 bankbank, 哈, 這機器, 司徒已經三年沒有碰了, 因此, 每當夜裡總是會夢見暈哥在他的豪宅呼喚司徒, 該起來動一動了, 哈, 七月半, 不怕不怕, 哈, Gaviar 掌機還是處於開發階段, 因此, 最終樣貌會變成如何, 尚不得而知, 不過為了可以更方便的 Debug, 司徒決定先小改一下, 因此, OpenSCAD 畫了一個簡易底座

                                                                          $fn = 50;
                                                                           
                                                                          module panel(ch) {
                                                                              hull() {
                                                                                  cd = 3;
                                                                                  translate([0, 0, 0]) cylinder(ch, cd, cd);
                                                                                  translate([81.85, 0, 0]) cylinder(ch, cd, cd);
                                                                                  translate([0, 32.75, 0]) cylinder(ch, cd, cd);
                                                                                  translate([81.85, 32.75, 0]) cylinder(ch, cd, cd);
                                                                              }
                                                                          }
                                                                           
                                                                          difference() {
                                                                              union() {
                                                                                  difference() {
                                                                                      union() {
                                                                                          hull() {
                                                                                              ch = 4;
                                                                                              cd = 3;
                                                                                              translate([0, 0, 0]) cylinder(ch, cd, cd);
                                                                                              translate([81.85 + 2, 0, 0]) cylinder(ch, cd, cd);
                                                                                              translate([0, 32.75 + 2, 0]) cylinder(ch, cd, cd);
                                                                                              translate([81.85 + 2, 32.75 + 2, 0]) cylinder(ch, cd, cd);
                                                                                          }
                                                                           
                                                                                          hull() {
                                                                                              ch = 4;
                                                                                              cd = 1;
                                                                                              translate([-2, 0, 0]) cylinder(ch, cd, cd);
                                                                                              translate([16, 0, 0]) cylinder(ch, cd, cd);
                                                                                              translate([-2, -19, 0]) cylinder(ch, cd, cd);
                                                                                              translate([16, -19, 0]) cylinder(ch, cd, cd);
                                                                                          }
                                                                           
                                                                                          translate([69.85, 0, 0]) hull() {
                                                                                              ch = 4;
                                                                                              cd = 1;
                                                                                              translate([-2, 0, 0]) cylinder(ch, cd, cd);
                                                                                              translate([16, 0, 0]) cylinder(ch, cd, cd);
                                                                                              translate([-2, -19, 0]) cylinder(ch, cd, cd);
                                                                                              translate([16, -19, 0]) cylinder(ch, cd, cd);
                                                                                          }
                                                                                      }
                                                                           
                                                                                      translate([1, 1, 1]) panel(10);
                                                                           
                                                                                      // socket
                                                                                      translate([-2, -19, 0]) cube([18, 16, 4]);
                                                                                      translate([67.85, -19, 0]) cube([18, 16, 4]);
                                                                                  }
                                                                           
                                                                                  // type-c
                                                                                  translate([-2, -19, 0]) difference() {
                                                                                      cube([19, 17, 4]);
                                                                                      translate([0.25, 0, 1]) cube([17.5, 16, 10]);
                                                                                  }
                                                                           
                                                                                  translate([67.85, -19, 0]) union() {
                                                                                      difference() {
                                                                                          cube([19, 17, 4]);
                                                                                          translate([0.25, 0, 1]) cube([17.5, 16, 10]);
                                                                                      }
                                                                                  }
                                                                              }
                                                                           
                                                                              // type-c
                                                                              translate([10.75, -10, 1]) cube([5, 10, 5]);
                                                                              translate([-5, -15.75, 2.5]) cube([10, 10, 5]);
                                                                           
                                                                              // speaker
                                                                              translate([73.5, -10, 1]) cube([6, 10, 5]);
                                                                          }
                                                                          

                                                                          預計外觀是這樣
                                                                          1.jpg

                                                                          拓竹3D印表機還是相當給力
                                                                          2.jpg

                                                                          使用三秒膠將該上的元件都補齊
                                                                          3.jpg

                                                                          將CH340E的+5V連接到這裡
                                                                          4.jpg

                                                                          相當短的接線
                                                                          5.jpg

                                                                          正面
                                                                          6.jpg

                                                                          下邊
                                                                          7.jpg

                                                                          側邊
                                                                          8.jpg

                                                                          上邊
                                                                          9.jpg

                                                                          側邊
                                                                          10.jpg

                                                                          完美的開發機
                                                                          11.jpg

                                                                          1 条回复 最后回复 回复 引用 分享 0
                                                                          • steward
                                                                            司徒 LV 6 最后由 steward 编辑

                                                                            由於全志針對F133的開機設計流程過於複雜,因此,為了可以更精簡以及方便維護程式碼,司徒特別針對小志掌機修改了一版OpenSBI,修改後的流程如下所示
                                                                            1.jpg

                                                                            編譯步驟:

                                                                            $ cd
                                                                            $ wget https://github.com/steward-fu/website/releases/download/gaviar/thead_toolchain.tar.gz
                                                                            $ tar xvf thead_toolchain.tar.gz
                                                                            $ sudo mv thead /opt
                                                                            $ export PATH=/opt/thead/bin:$PATH
                                                                            
                                                                            $ cd
                                                                            $ wget https://github.com/steward-fu/website/releases/download/gaviar/opensbi_20260906.tar.gz
                                                                            $ tar xvf opensbi_20260906.tar.gz
                                                                            $ cd opensbi
                                                                            
                                                                            $ export PLATFORM=allwinner/f133
                                                                            $ export CROSS_COMPILE=riscv64-unknown-linux-gnu-
                                                                            
                                                                            $ make distclean
                                                                            $ CONFIG=BROM make
                                                                            $ python3 scripts/gen_checksum.py ./build/platform/allwinner/f133/firmware/fw_jump.bin fw_jump.bin
                                                                            $ dd if=fw_jump.bin of=payload/brom.bin bs=1024 count=32
                                                                            $ rm -rf fw_jump.bin
                                                                            
                                                                            $ make distclean
                                                                            $ make
                                                                            $ python3 scripts/gen_checksum.py ./build/platform/allwinner/f133/firmware/fw_jump.bin payload/fw_jump.bin
                                                                            $ python3 scripts/gen_checksum.py ./build/platform/allwinner/f133/firmware/fw_payload.bin payload/fw_payload.bin
                                                                            
                                                                            $ sudo dd if=payload/brom.bin    of=/dev/sdX bs=1024 seek=8
                                                                            $ sudo dd if=payload/fw_jump.bin of=/dev/sdX bs=1024 seek=40
                                                                            
                                                                            $ sudo dd if=dtb   of=/dev/sdX bs=1024 seek=300
                                                                            $ sudo dd if=Image of=/dev/sdX bs=1024 seek=400
                                                                            

                                                                            由於目前Kernel程式碼尚未完成,因此,司徒使用LED閃爍程式替代,開機後,OpenSBI會跑LED閃爍程式
                                                                            2.jpg

                                                                            Baudrate 115200bps

                                                                            [UART] Gaviar Handheld
                                                                            [DRAM] ZQ value = 0x2f
                                                                            [DRAM] get_pmu_exist() = -1
                                                                            [DRAM] ddr_efuse_type = 0xa
                                                                            [DRAM] trefi = 7.8ms
                                                                            [DRAM] single rank and full DQ!
                                                                            [DRAM] ddr_efuse_type = 0xa
                                                                            [DRAM] trefi = 7.8ms
                                                                            [DRAM] rank 0 row = 13 
                                                                            [DRAM] rank 0 bank = 4 
                                                                            [DRAM] rank 0 page size = 2 KB 
                                                                            [DRAM] DRAM BOOT DRIVE INFO: v0.33
                                                                            [DRAM] DRAM CLK = 528 MHz
                                                                            [DRAM] DRAM Type = 2 (2:DDR2, 3:DDR3)
                                                                            [DRAM] DRAMC read ODT  off
                                                                            [DRAM] DRAM ODT off
                                                                            [DRAM] ddr_efuse_type = 0xa
                                                                            [DRAM] DRAM SIZE = 64M
                                                                            [DRAM] dram_tpr4 = 0x0
                                                                            [DRAM] PLL_DDR_CTRL_REG = 0xf8002b00
                                                                            [DRAM] DRAM_CLK_REG = 0xc0000000
                                                                            [DRAM] MR2 = 0x0
                                                                            [DRAM] DRAM simple test OK
                                                                            [eMMC] MicroSD size = 59688MB
                                                                            [eMMC] Copy DTB to 0x41500000 (size = 65536)...
                                                                            [eMMC] Copy Kernel to 0x40008000 (size = 8388608)...
                                                                            [eMMC] Copy OpenSBI to 0x41000000 (size = 262144)...
                                                                            
                                                                            
                                                                            Welcome to Gaviar handheld
                                                                            OpenSBI v1.3
                                                                               ____                    _____ ____ _____
                                                                              / __ \                  / ____|  _ \_   _|
                                                                             | |  | |_ __   ___ _ __ | (___ | |_) || |
                                                                             | |  | | '_ \ / _ \ '_ \ \___ \|  _ < | |
                                                                             | |__| | |_) |  __/ | | |____) | |_) || |_
                                                                              \____/| .__/ \___|_| |_|_____/|____/_____|
                                                                                    | |
                                                                                    |_|
                                                                            
                                                                            Platform Name             : Allwinner F133
                                                                            Platform Features         : medeleg
                                                                            Platform HART Count       : 1
                                                                            Platform IPI Device       : ---
                                                                            Platform Timer Device     : --- @ 0Hz
                                                                            Platform Console Device   : f133_uart
                                                                            Platform HSM Device       : ---
                                                                            Platform PMU Device       : ---
                                                                            Platform Reboot Device    : ---
                                                                            Platform Shutdown Device  : ---
                                                                            Platform Suspend Device   : ---
                                                                            Platform CPPC Device      : ---
                                                                            Firmware Base             : 0x41000000
                                                                            Firmware Size             : 194 KB
                                                                            Firmware RW Offset        : 0x20000
                                                                            Firmware RW Size          : 66 KB
                                                                            Firmware Heap Offset      : 0x28000
                                                                            Firmware Heap Size        : 34 KB (total), 2 KB (reserved), 8 KB (used), 23 KB (free)
                                                                            Firmware Scratch Size     : 4096 B (total), 728 B (used), 3368 B (free)
                                                                            Runtime SBI Version       : 1.0
                                                                            
                                                                            Domain0 Name              : root
                                                                            Domain0 Boot HART         : 0
                                                                            Domain0 HARTs             : 0*
                                                                            Domain0 Region00          : 0x0000000041000000-0x000000004101ffff M: (R,X) S/U: ()
                                                                            Domain0 Region01          : 0x0000000041020000-0x000000004103ffff M: (R,W) S/U: ()
                                                                            Domain0 Region02          : 0x0000000000000000-0xffffffffffffffff M: () S/U: (R,W,X)
                                                                            Domain0 Next Address      : 0x0000000040008000
                                                                            Domain0 Next Arg1         : 0x0000000041500000
                                                                            Domain0 Next Mode         : S-mode
                                                                            Domain0 SysReset          : yes
                                                                            Domain0 SysSuspend        : yes
                                                                            
                                                                            Boot HART ID              : 0
                                                                            Boot HART Domain          : root
                                                                            Boot HART Priv Version    : v1.11
                                                                            Boot HART Base ISA        : rv64imafdcvx
                                                                            Boot HART ISA Extensions  : zicntr
                                                                            Boot HART PMP Count       : 8
                                                                            Boot HART PMP Granularity : 2048
                                                                            Boot HART PMP Address Bits: 38
                                                                            Boot HART MHPM Count      : 0
                                                                            Boot HART MHPM Mask       : 0x0
                                                                            Boot HART MIDELEG         : 0x0000000000000222
                                                                            Boot HART MEDELEG         : 0x000000000000b109
                                                                            Jump to kernel (0x40008000) ...
                                                                            
                                                                            1 条回复 最后回复 回复 引用 分享 0
                                                                            • 1
                                                                            • 2
                                                                            • 2 / 2
                                                                            • First post
                                                                              Last post

                                                                            Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号

                                                                            行为准则 | 用户协议 | 隐私权政策