Handmade01 (黑妹01)

設計


最先的構想是製作一台可以點對點的迷你FC掌機,而這樣的想法是來自QQ群的剃頭,雖然司徒一開始不想理他且一再拖延,不過,最終這個專案還是成行,於是司徒設定這台掌機的用途為超可攜、超高續航掌機,不過隨著時間流逝,目標越來越高遠,原本只是希望模擬FC遊戲,最後卻變成是跟丁果A320一樣的模擬效果,於是司徒開始找尋可用的核心板,最後選定使用MT7688模組(CPU 580MHz),因為價格相對低廉且CPU速度比丁果A320快一點,至於按鍵部分(DPad、4按鍵、Start、Select、L和R),則全部採用既有的NDSL按鍵,希望可以保有按鍵的手感(非整機手感),屏幕則是2.0吋 IPS ILI9325 320x240解析度,於是司徒使用開源的OpenSCAD,畫了一個迷你外殼的雛型:


接著司徒使用自己的3D印表機列印


背面


其實原本的設計是使用DC記憶卡當外殼,這樣可以節省開發時間,不過最後,司徒還是選擇自己設計外殼,而身形依舊保持迷你短小的樣子


相較於Wiz掌機


再度修飾並添加限位槽


背面


使用白色按鍵也不錯看


螺帽設計


設計之初是使用MT7688全引腳的開發板,而相較於君正JZ4740,MT7688顯然不適合用於顯示相關的應用,因為缺少LCD或Smart LCD介面


接著司徒使用開源的KiCAD畫了一個測試電路圖


畫好電路圖之後,接著製作硬體測試電路


裁掉多餘的空間並焊接2.0吋 IPS ILI9325 320x240屏


接著上MT7688開發板


使用雙面膠帶固定屏幕


接著把其餘按鍵焊完


粗線果然比較好焊


由於MT7688開放出來的Kernel程式碼並沒有包含Framebuffer驅動程式,因此,司徒需要花了一些時間去移植Framebuffer驅動到MT7688身上,不過,在移植之前,最先要做的事情,就是必須先把屏的驅動程式完成,於是司徒依照淘寶賣家提供的初始化程式碼做移植,雖然中途遇到一些問題,不過司徒最終還是把屏給點亮了


接著花了一些時間,順利的把Framebuffer驅動移植到MT7688身上,而對於Framebuffer驅動程式的撰寫,司徒會找時間整理一系列的教學文章於Linux驅動程式


對於大多數遊戲模擬器來說,SDL是它們統一使用的多媒體介面,因此,移植SDL Library是一個很關鍵的步驟,而MT7688本身已經提供prebuilt toolchain,因此,司徒並沒打算透過使用buildroot編譯SDL Library,取而代之的是直接下載SDL程式碼並使用prebuilt toolchain進行編譯,不過,事實證明,使用buildroot才是最省時的,因為相依的Library不須一個一個編譯且buildroot提供了一個相當友好的配置界面


在司徒心中,GMenu2X是一款最適合掌機使用的遊戲配置界面,加上它是開源專案的關係,更是讓司徒認定它是作為黑妹01遊戲界面的不二人選


接著移植FC模擬器測試,馬上發現問題,因為MT7688沒有Smart LCD Drive以及DMA的輔助,因此,CPU花費很多時間在做I/O切換和屏的資料輸出,佔比達75%


GBC模擬器(GBC ROM)


GBC模擬器(GB ROM)

由於使用GPIO做掃屏的動作,導致CPU 75%都被佔據,只剩下25%可以拿來使用,效果不甚理想,雖然可以使用MT7688的SPI介面,不過SPI介面會有更新速度過慢的問題,因此,SPI屏也不適合作為遊戲機的顯示用途,加上如果把顯示與檔案系統都綁在同一個SPI Bus上,可以預期不會得到一個好的效能表現,而司徒目前也不想額外使用其它晶片去做顯示處理,因此,司徒最後決定使用TI AM3358來做黑妹01的核心設計。

因此,司徒找了一塊AM3358開發板(BBGW)來作為實驗的硬體電路,待實驗成功後,再使用核心板設計最終電路,於是準備如下電路元件進行焊接


司徒希望實驗電路可以很迷你,因此,需要比較精準的裁切


為了比較好焊接,司徒只好浪費一塊轉板


固定轉板位置


開始焊接


完成


側邊


因怕攜帶時,會不小心把漆包線扯斷,因此,司徒特地設計一個保護殼


完美結合


完成


接著還是一樣需要幫AM3358移植Framebuffer驅動,雖然AM3358的資源已經比MT7688多很多,不過司徒還是沒有找到針對ILI9325移植的Kernel程式碼,而由於之前已經幫MT7688移植過,因此,司徒這次花費的時間相對比較少,最終順利移植完成


使用山寨邏輯分析儀測試LCD_WR腳位後,發現畫面更新是可以達到60fps,LCD_WR腳位Low的時間大約是80ns(Channel-0是AM335x LCD Clock 33MHz,而Channl-1則是MT7688 580MHz)。


接著編譯Github上面最新的PCSX ReARMed測試,可以看到FPS是可以達到60FPS


這個2.0吋IPS屏(320x240解析度),具有相當不錯的可視角





接著測試音效電路,司徒目前是使用TI PCM5102A,因為它算是CP值蠻高的音效元件,雖然司徒目前抓到的AM3358 Kernel程式碼並沒有PCM5102A的部份,不過資源多的好處,就是很容易找到相關資料,終究還是讓司徒很順利的移植到AM3358身上


由於,目前大部份的硬體電路幾乎都已經確定完畢,司徒其實可以開始畫PCB電路圖了,不過,司徒擔心核心板可能會有其它未知的問題需要解決,因此,司徒特地為了這個問題而再度焊接硬體測試電路


飛線果然還是很累


感謝QQ群(掌機愛好者)的春華秋實幫忙設計的概念圖

司徒需要說明一件事情,那就是原本使用的是2.0吋 ILI9325 IPS 320x240屏,但是,因為這個屏沒有RGB介面,加上缺少Frame Sync硬體接腳,因此,無法做到VSync,導致在玩遊戲的過程中,會有閃屏的現象發生(Screen Tearing),如果使用者有玩過丁果A320掌機或者Wiz掌機,應該就可以發現這個現象,因此,司徒再度花了一些時間找尋可以使用的屏幕,也剛好趁這個機會,司徒把原本2.0吋 IPS 320x240改為2.4吋 IPS 320x240,驅動介面也從原本的8080改為RGB介面,司徒希望讓這台遊戲機可以更趨完美,雖然硬體電路一再變更,不過這些都是值得的

接著司徒再度花了一些時間移植驅動程式,也終於把進度跟上,下圖是2.4吋屏對比於2.0吋屏


司徒相當感謝QQ群(掌機愛好者)的群友幫忙,提供了許多意見給司徒,也相當感謝win2next幫忙設計開機圖片和黑妹01的Logo


加上背光控制電路


黑妹01的Logo如下圖所示,設計的靈感來自於HM(HandMade01)英文字母加上手工打造硬體電路的想法


目前測試PCSX ReARMed模擬器並執行太空戰士7遊戲,可以看出RAM的溫度大約是40度,雖然這個溫度測試槍主要是用於廚房煮菜專用,不過還是有一定的參考價值


AM3358的溫度大約是38度


返回上一頁