哦明白了,那就是说你现在的系统必须要TE脚反馈信号才能继续写帧。我的已换了液晶,就是没TE的原因了。我暂时所知小横米出过两款液晶屏,看你前面说POCKETGO能解决分裂,我以为只有后期出的那款屏才有TE.原来早期MIYOO版也有吗,那就是说小横米机子都能解决分裂问题?
离线
@huanxing
對~小橫米從第一版開始就有TE腳位(到目前為止也一樣有TE腳位),因此,確定硬件是可以解決閃屏問題~如果你更換屏幕,記得買有TE腳位的,最好是ST7789V系列驅動IC,因為解決閃屏是需要調整一些屏的參數,買一樣的驅動IC比較沒問題~
如司徒之前提過,要解決閃屏問題:硬件、驅動、模擬器都必須互相配合才可以真正解決閃屏問題
硬件:如果是CPU屏(小橫米),需要TE腳的輔助,確保寫RAM的動作不會跟驅動IC重疊,如果是RGB屏(TRIMUI),直寫RAM就可以
驅動:開啟雙緩衝,但是必須確保送給硬件的資料、從模擬器接收的資料不重疊
模擬器:開啟雙緩衝,但是必須確保送給驅動的資料、模擬器畫面刷新的資料不重疊
离线
哦,合理安排一环扣一环的衔接,各个环节不重复,达到同步。一样规格参数的IPS并有TE脚的,不易找到,除非有量定制!
离线
TRIMUI机子我之前改过LR键,如让它及小横米再添上LR2的小翅膀就能飞了,哈!
离线
可以,我晚点处理下。我的小横米LR2文件还保留着咧,哈!
离线
@huanxing
Q20mini刷小横米的那个超频系统,跟你的是一样的效果,不过Q20mini的屏是24根线的,小横米40根线。
Q20
miyoo
离线
不过,普通的系统,q20和小横米是相互通用的。
离线
现司徒的小横米新系统就算同驱IC也要有TE/TS才可,不同IC更不用说了。
离线
TRIMUI原机的LR小而平坦,抓着卡片机的身段那小不点实在有些难操控,于是本人重制大LR改良键,操控会有改善,需把原键开口打磨扩大如下图,也不算难,有点动手能力的人应该能搞定,现把文件分享,有兴趣的友人可打印玩玩!
TRIMUI-LR.rar
离线
@huanxing
我原以为你要添加l2,r2,没想到你只是改了按键而已。我觉得这样做还不如换好些的微动添加个弹簧来的好些,个人拙见。
离线
@时尚电子王
那小位置很有限,没什么好微动可换,就算找到好点的,主要那原机LR键太小了,也不怎么好按。LR2是软硬的落实,不是小弟我的能力,期待司徒大哥吧!
离线
插花一下 , 最近有出台 RS-77 , 很像 RS-50(Q8) , 但是刷包江西恐龍那種客製包後 , 螢幕驅動跟按鍵不太對 , 有空研究下吧 , 官網沒看到這台說 ....
我繼續去移植 RGB10 的東西了 ....
最近编辑记录 lzgame02 (2021-08-19 08:48:52)
离线
@司徒
没洞的含义,只是看到你做背壳时提到LR2,作为小DIY玩家感到喜悦,共鸣互动下。,中途也许有些小提议、小见解、小期望。不想听的小插曲,直接跳过就可,你的只是兴趣分享,按自己意愿,顺其自然就可,我还是那位小观众小粉丝。
最近编辑记录 huanxing (2021-08-19 14:43:01)
离线
@司徒
我没打出来改上,只为小横米落实了能放置LR2的方案及键建了模,功能实现我没能力。我到时画个示意图分享下吧
离线
司徒把Q8的系统开源了,又开始折腾Q90了
离线
司徒把Q8的系统开源了,又开始折腾Q90了
盘Q90,不如盘Q20MINI,Q20小机身大电池,还是全贴合的屏
离线
司徒把Q8的系统开源了,又开始折腾Q90了
那是可以裝 Nokia 電池的機子吧 , 除了這個之外
應該還有 V90 , 小龍王升級版 , FC3000
除了這些還有可以刷開源系統 , 跑 PS1 , 又可以用 Nokia 電池的機子嗎 ?
印象中好像就看過這些 ....
离线
@司徒
小横米,超频改机后续航大减。有没有改装大电池的方案呢?
离线
@时尚电子王
目前沒有小橫米的大電池改機方案~小橫米由於按鍵和屏幕問題,司徒目前都是當作測試機器使用,很少拿來把玩,所以,小橫米動刀的機會應該是沒有了~司徒目前的改機方向主要是放在TRIMUI~
很感謝时尚电子王提供Switch Lite的導電膠更換建議,司徒買來更換後,給出的建議是:不建議更換,過程如下說明~
小橫米導電膠
背面
Switch Lite導電膠
背面
司徒使用三秒膠固定導電膠,因此,畫出十字固定點
十字鍵部份
接著使用三秒膠固定
十字鍵部份
但是,安裝好後,司徒發現會撐起PCB,因此,司徒裁切導電膠
十字鍵部份
4顆功能鍵部份還算是可以接受,跟替換周哥導電膠差不多,不過,最重要的十字鍵並沒有辦法使用,因為整個頂住十字鍵,無法使用~
另外,關於電池部份,在不改外殼的情況下,扣除支撐點,可用的面積如下
但是,考慮到PCB的元件,可以使用的區域只能縮小成如下,基本上,如果要替換大電池,外殼必須墊厚,這樣的結果就是跟Q20 Mini一樣厚~
离线
@司徒
我一看就知道你换的绝不是原装导电胶,我只换了右边四个按键,左边方向键我用了psvita的增高按键。真正原装导电胶是完全贴合上部按键和下部导电电路的,换后手感真的很好,而不需要任何修剪和裁切。
https://item.taobao.com/item.htm?spm=a1z1r.7974869.0.0.78e73ad4XaWHUu&id=631522094117
这是导电胶地址。
为什么我发贴无法插入图片和照片呢?
最近编辑记录 时尚电子王 (2021-08-23 12:45:38)
离线
我已经给小横米换了404562的电池,1500的
离线
@时尚电子王
哈哈~原來我兩個都是買到右邊的導電膠~
選擇上傳文件,上傳後還需要點擊圖片右下角的插入,這樣才可以插入圖片@gamece
沒圖沒真相,你可以上個圖嗎?
404562的电池就是要长一点,宽几毫米也够了,厚度一样,蓝圈处的螺丝我没装,喇叭插座也拆了,喇叭线直接焊上去,刚刚好。
离线
请问下,MX25L12833FM2I-10G怎么烧录boot程序,是短接CS脚吗,具体怎么操作呢
离线
@gamece
了解,感謝~
@笔走天下
https://steward-fu.github.io/website/handheld/trimui/flash_phoenix.htm
离线
Q8掌机用司徒2个roms刷完花屏,有没有办法解决
最近编辑记录 老黄lh (2021-08-24 22:19:18)
离线
Q8掌机用司徒2个roms刷完花屏,有没有办法解决https://whycan.com/files/members/7179/IMG_20210824_220141446.jpg
没办法 屏幕和司徒的不一样
离线
@老黄lh
很抱歉,目前沒有辦法~
司徒深知各位老男人已經很久沒有玩街機遊戲了~主要原因是搓招速度跟不上(手會抖)、反應太慢(一扎眼就被KO了),老男人只能回味當年自己的KOF有多強,從實踐者,退化成一個嘴砲王,因為,現今已經展現不出當年的雄風,你們的問題,司徒都知道,因為司徒也遇到一樣的問題~為此,司徒特別開發一個好玩的東西,要來孝敬各位老男人們,那就是一鍵連招,按下一個按鍵,就把複雜的大絕招搓出來~太複雜的搓招,以後就交給RK模擬器吧~讓我們這些老男人一起重回當年的雄風吧~
更新事項:
1. 修復一些之前無法玩的遊戲
2. 第一版RK模擬器v20210825發布(支援一鍵連招)
RK模擬器v20210825:https://github.com/steward-fu/trimui/releases/download/v1.0/rk_v20210825.zip
越後期的遊戲,加解密的難度,越來越高,幾乎什麼鬼東西都做加密,不過,對司徒來說,這才叫真正的樂趣~目前修復後的表格如下
RK模擬器是基於GNGEO模擬器修改而來,主要針對小橫米、TRIMUI優化使用,重新修改操作界面,主要以中文界面、操作簡單為主,司徒將以RK模擬器為基礎,加入更多FBA、MAME的街機遊戲,期許RK模擬器可以在小橫米、TRIMUI跑順多數街機遊戲~而製作風格,司徒使用KOF97底圖、KOF98選單等效果搭配使用,畢竟司徒還是最愛KOF97、KOF98~
運行參數(載入ZIP),檔案位置可以隨意放,不需要放在固定的位置,如:/mnt/roms/NEOGEO
$ rk xxx.zip
運行參數(載入GNO),檔案位置可以隨意放,不需要放在固定的位置,如:/mnt/roms/NEOGEO
$ rk xxx.gno
載入遊戲的畫面如下
按下MENU按鍵可以進入設定選單,選單項目跟GNGEO差不多,司徒將在下面介紹每個項目
快速讀檔,提供9個儲存格,使用左、右按鍵選擇,按下A鍵讀取,B鍵返回
快速存檔,提供9個儲存格(支援覆蓋),使用左、右按鍵選擇,按下A鍵儲存,B鍵返回
是否顯示FPS,使用A、左、右按鍵選擇
FPS顯示在左下角位置,提供FPS和CPU資訊
是否開啟聲音,使用A、左、右按鍵選擇
內建BIOS選擇,按A進入選單
提供29種內建BIOS,參考FBA BIOS選項,按A鍵選擇,按B鍵返回
設定按鍵(支援一鍵連招),按A進入選單
設定按鍵分成三個區域,最上方藍色是小橫米、TRIMUI的按鍵,中間部份有33個格子,可以設定連招的按鍵,下方則是可以選擇的按鍵
,司徒將於後面做詳細介紹,按A鍵可以前往下一個區域,按B鍵則是返回上一個區域
按下A鍵後,從第一個區域跑到第二個區域,使用上、下、左、右鍵選擇要設定的格子
按下A鍵後,從第二個區域跑到第三個區域,使用左、右鍵選擇要設定的按鍵
L、R:插入時槽(1T~9T),也就是延時的功能,1T就是延時1次,9T就是延時9次
A:選擇設定
B:返回第二層
X:清除格子內容
Y:回復該按鍵的預設值
SELECT:清除所有格子內容
如下是KOF98 八神的3段葵花連招,使用小橫米、TRIMUI的L鍵做設定,當按下L鍵,則RK模擬器開始發招,順序如下(從左到右,從上到下依序執行):下、左下、左+C、延時1次、下、左下、左+C、延時1次、下、左下、左+C
1. 每進到下一格按鍵時,將先釋放上一格的按鍵,因此,使用"+"才可以做按鍵同時按下的功能
2. 在時槽上,按L鍵可以減少時槽,如:在9T上面按L鍵,則改為8T
3. 在時槽上,按R鍵可以增加時槽,如:在1T上面按R鍵,則改為2T
4. 空白槽是結束的意思,其後的按鍵不會執行
儲存設定給全部遊戲,按A鍵儲存
儲存完畢後,會出現提示
儲存設定給當前遊戲,按A鍵儲存
儲存完畢後,會出現提示
離開RK模擬器
接下來,司徒說明一下一鍵連招的設定,因為這部份可是KOF的精髓呢~也算是搞死司徒的地方,司徒原本以為很簡單,只要依序送出按鍵就可以,但是,深入研究才發現,每一個角色的搓招速度,不一定都是等速度的,尤其是多段連招時,那可真是精華,有些間隔必須要有,才可以成功連招,真它媽一度讓司徒寫代碼寫到懷疑人生~不過,這部份可以說是依照各位老男人的能力配招,或許有人可以配出很強又很簡短的招式,也算是相當有趣的部份,發揮各位老男人的長才吧~值得注意的是,一鍵連招有方向性~
司徒使用小橫米、TRIMUI的L鍵做一鍵連招設定,首先,移動左、右鍵到L鍵的位置
按下A鍵後,跑到第二個區域,可以使用上、下、左、右鍵選擇位置,RK模擬器執行的順序是從左到右,從上到下依序執行,空白槽是結束的意思,其後的按鍵不會執行
選好位置後,再按下A鍵,跑到第三個區域,選擇想要使用的按鍵,按下A鍵做設定
第二區域就會顯示設定的按鍵,儲存格會自動往下一格移動,方便玩家設定
如下A+B+C,就是代表按下L鍵時,RK模擬器會自動送出A+B+C連招,如果玩家沒有使用+號,如:ABC,則RK模擬器發送順序是:按下A、釋放A 然後按下B、釋放B 然後按下C,因此,+號是連續按鍵的一個連接符號
假如玩家想要改成A+B+D,只要按下B鍵,退回到第二區域,接著移動左、右鍵到C的位置
接著按下A鍵,進到第三區域,選擇D
按下A鍵,就可以進行覆蓋的動作
P.S. 如果要清除,可以使用SELECT鍵做全清除,或者X鍵單一槽清除,Y鍵則是回復預設值(RK模擬器的預設值)
關於時槽部份,時槽用意是延時的作用,因為某些角色的招式,不能搓招太快,因此,需要時槽的協助,司徒設定每個時槽最大值是9T,也就是單一槽最長延時9次,因為按鍵是屬於輪詢方式,因此,當設定9T,代表再接下來的9次按鍵輪詢都不會有任何動作(針對這一個按鍵,不影響其它按鍵),最小時槽則是1T,因此,當沒有設定時槽,代表按鍵連招都是順序執行(沒有延時)
設定時槽只要按下L(插入1T)、R(插入9T)鍵就可以,如下是按下R鍵,因此,插入9T
如要變更成5T,只要回到第2區域,移動到9T位置
按下L鍵(減少),由於自動累加,因此,只要再按下左鍵回原本的時槽位置,然後,再度按下L鍵就可以再減1,反之,如果要增加食槽,只要按下R鍵(增加)
司徒嘗試過很多種設定方式,在有限的顯示區域下,這應該是最佳的呈現方式,司徒把原本3頁的設定,濃縮到一個頁面顯示,這樣才不至於感覺是很複雜的設定~而關於連招的數量,太多槽位就讓人感覺很複雜,太少槽位則是沒什麼好設定,都會失去那個味道,因此,司徒最後選擇使用33個連招槽,算是一個最佳的折衷方式~接著司徒分享一下角色的連招設定~
草薙京
招式:重拳、毒咬、罪詠、罰詠
標準:C、↓ ↘ → + C、→ ↘ ↓ ↙ ← + A、→ + A
RK招式表如下
P.S. 這就是連招設定的好玩地方,某些按鍵需要延遲才可以搓出招式,正好可以發揮想像力~
大門五郎
招式:重腳、下重拳、天地返
標準:D、↘ + C、→ ↘ ↓ ↙ ← → + C
RK招式表如下
P.S. 請發揮老男人的想像力~
克拉克
招式:重拳 + 究極阿根廷閃光
標準:→ ↘ ↓ ↙ ← + C、→ ↘ ↓ ↙ ← + C
RK招式表如下
P.S. 這個很簡單吧~
金卡法
招式:重拳、特拉擊、鳳凰腳
標準:C、→ + A、↓ ↙ ← ↙ → + B
RK招式表如下
P.S. easy easy~
八神庵
招式:重拳、夢彈、葵花
標準:C、→ + A.A、↓ ↙ ← + C、↓ ↙ ← + C、↓ ↙ ← + C
RK招式表如下
P.S. 想像力~
八神庵
招式:重拳、夢彈、八稚女
標準:C、→ + A.A、↓ ↘ → ↘ ↓ ↙ ← + C
RK招式表如下
P.S. 關鍵點不知道老男人是否有看出~
可能有人會想問司徒,何時才可以開始研究第二個模擬器?回答如下:
1. 把原本GNGEO模擬器不能玩的遊戲全部解掉
2. 解決卡頓問題(至少KOF97、KOF98、KOF99不能卡)
司徒估計可能至少還需要半年的時間~
离线
1键放大招,牛皮了老铁
离线
慕名而来,感谢司徒大佬做出的贡献
离线
那个出招表设定后文件保存位置说一下,然后可以共享,不用每人自己设置
离线
RK模擬器的所有配置文件位置
$(HOME)/.rk/
P. S. 也就是MicroSD第二分區下的.rk資料夾
如果是儲存給全部遊戲使用,文件名稱:rk.cfg
如果是儲存給目前遊戲使用,文件名稱:xxx.cfg
P. S. 省去轉換格式,文件是二進制格式,因此,請不要編輯它,一鍵搓招並不是一個獨立的配置檔案
當初司徒在設計一鍵搓招時,有在思考是否需要儲存多組一鍵搓招的選項,但是,考慮到搓招隨著人物、版本,差異頗大,如果把設置保留下來,這樣將讓一鍵搓招失去樂趣,也讓設定更複雜,因此,司徒最終才以嚐鮮的方式呈現,當然,還是建議不要太依賴一鍵搓招,因為,司徒自己把玩後,發現太依賴一鍵搓招,反而更容易被電腦KO,哈~
离线
@司徒
沒幫小龍王打廣告 , RS-97 Plus(雷同中國龍客製版本) 的售價更便宜 , 只是在意那個電池而已 ....
市面上都買不到 , BP-5L(不同於 Nokia 的 BP-5L ) 的 , 應該是廠家改過自製的規則
這個可以用 Nokia BL-5B 旁邊墊些紙片可以相容嗎 ?
手邊沒機子 , 之前賣人了 , 但一直很好奇這問題 .... @司徒 你那機子收藏多 , 有試過嗎 ?
最近编辑记录 lzgame02 (2021-08-29 09:05:18)
离线
@司徒
我用 ArkOS + RGB10
目前移植 Port 分區成功清單
Qauke3
Half-Life Final
Super Mario 64
Descent 1 + 2
Eduke32
Tomb Raider 1+2+3
後續還有些 3D FPS Game , ARPG Game 進行中 ...
如果有興趣的話 , 可以嘗試這個 => RPGMaker XP_VX_VXAce
附件放編譯流程(繁體 txt , 另存新檔轉換) , 不過 ArkOS 是 based on Ubuntu 的 ...
RPGMaker XP_VX_VXAce_ArkOS.txt
最近编辑记录 lzgame02 (2021-08-29 15:15:33)
离线
@司徒
網上有人說 BL-4D 也成
你那有這種型號的電池可測試看看嗎 ?
Google 查 ... 長寬厚好像也是差一些 mm
不知道那一些些的公差會不影響 .... 運氣好說不定不用墊紙片 .....
最近编辑记录 lzgame02 (2021-08-30 19:42:39)
离线
@司徒
還改機真是想太多了 , 之前因為電池缺乏問題賣掉 ....
當發現如果電池問題可以輕易的網購解決 , 當然就考慮再把機子買回來啊 ....
不然誰買個沒電池可換的機子 ... 萬一以後廠家停產了電池也跟著停產了
機子不就直接報廢了 ..... 看智慧型手機就知道了 , 多少屍體是因為電池官方停產 .... 強迫你要換機
最近编辑记录 lzgame02 (2021-08-30 22:47:51)
离线
龍非池中物~
經網友證實 => BL 4D电池,不一样的,接口都不对,BL 4D很薄,以前N97MINI用的
所以 , 目前只發現 BL-5B 可以免強墊些紙片替代 .....
好像沒問題了 , 閃人去 .....
最近编辑记录 lzgame02 (2021-09-02 20:26:13)
离线
感谢司徒先生的无私分享。
离线
@lzgame02
慢走,不送了~
@M+
感謝支持
GNO檔案: https://github.com/steward-fu/neogeo/releases/tag/v1.1
RK模擬器v20210903 (小橫米、TRIMUI): https://github.com/steward-fu/trimui/releases/download/v1.0/rk_20210903.zip
RK模擬器v20210903 (RG350系列): https://github.com/steward-fu/trimui/releases/download/v1.0/jz4770_od_rk_20210903.opk
司徒目前修復許多之前無法玩的遊戲,表格整理如下:
此版本加入L2、R2支援(算是幫TRIMUI鋪路)~
同場加映~司徒相當感謝前些日子,扬立铭贈送司徒兩台RG300X、老張贈送司徒一台鋁合金GKDMini,因此,作為報答,司徒移植RK模擬器到RG350系列掌機,司徒目前只有測試RG300X,不過,應該是可以跑在JZ4770、X1830 CPU上面,包含GCW0掌機,如果測試有問題,歡迎回報給司徒
P.S. RG300X的MicroSD,建議更換高速卡,那種爛卡,真的是不建議使用~
不過,司徒最喜愛攜帶的還是TRIMUI,外出時,拿出來搓兩招,爽~
离线
期待rk加入对mame游戏的支持!
离线
@司徒 logo为miyoo的小横米与logo为 pocket-go的小横米硬件一样吗,能不能解决屏闪问题,用改电阴的方法能不能交cpu超频1.2ghz
最近编辑记录 xgwmir (2021-09-09 14:26:49)
离线
@司徒 logo为miyoo的小横米与logo为 pocket-go的小横米硬件一样吗,能不能解决屏闪问题,用改电阴的方法能不能交cpu超频1.2ghz
拆开看一下主板就知道一不一样了,电阴是啥我淘宝没搜出来,我用的是电阻,超CPU频率教程翻一下上面的回帖就行。
离线
希望rk模拟器可以支持中文列表
离线
@gamece
可以,以前有人換過,把小橫米的F1C100S換成F1C200S,其餘電路不動,只要換CPU就可以~
没有问题的,无论是主线还是bsp都可以自动识别RAM大小。
离线
sfc模拟器能不能优化下,现在的情况不跳帧太卡
离线
作為最後一版以OpenDingux系統名目發布的更新,這篇文章有點長、更新有點複雜~
故事起因從司徒隨身攜帶TRIMUI掌機說起,外出時,司徒習慣帶上TRIMUI掌機,一有空檔,拿出來搓兩把KOF,爽度破表~缺點就是開機慢了點,但是,搓了幾次之後,司徒發現TRIMUI竟然還有閃屏問題(小橫米解決的比較乾淨),於是,司徒開始追查TRIMUI這個閃屏問題,最後發現在內核的PAN_DISPLAY()並沒有處理好,導致中斷副程式在刷屏時,模擬器有機會再次覆蓋緩衝區,導致閃屏問題,解決TRIMUI閃屏後,司徒也順便加入VSYNC同步機制(FBIO_WAITFORVSYNC),讓整個畫面顯示可以更穩定,也可以讓模擬器有一個同步機制,朝更好的方向發展~
於是,司徒心想,不如就趁這個機會,也把有閃屏問題的模擬器也一併解決,司徒的想法是修改內核、SDL元件庫來配合模擬器的閃屏問題,這是短期的最佳解決方式,如果可以順利解決閃屏問題,這些模擬器應該可以撐上一陣子,司徒只要慢慢修改RK模擬器就好~目前看來,這是一個錯誤的決定,因為司徒深入追查後,發現有些模擬器是無法解決閃屏問題的,表格整理如下:
SDL雙緩衝是標準寫法,這部份的模擬器不會有閃屏問題,SDL單緩衝則會有閃屏問題,因為只有一個緩衝區做傳遞,加上SDL元件庫的SDL_Flip()不做VSYNC同步,所以模擬器在更新畫面時,內核也在更新畫面,所以一定有閃屏問題,FB0直接操作是直接映射FB0緩衝區做寫入動作,優點就是速度快(省掉SDL元件庫的複製動作),但是,這位作者缺少做VSYNC的動作,所以模擬器瘋狂刷屏時,內核也在刷屏,確定會有閃屏問題,這些FB0操作的模擬器,應該都是出自同一個人,司徒也知道是誰,不方便繼續評論~
因此,從結果來看,可以用的模擬器(不會有閃屏問題),真的沒幾個~這也是司徒決定提前汰換掉OpenDingux的原因之一~
接著,司徒便開始研究是否有機會救救SDL單緩衝的模擬器,讓這些模擬器不會有閃屏問題,幸運地,透過修改SDL元件庫,從SDL_UpdateRect()進行修改並且配合內核調用,可以順利解決閃屏問題
void SDL_UpdateRect(SDL_Surface *screen, Sint32 x, Sint32 y, Uint32 w, Uint32 h)
{
if(need_fbflip){
#define MYFB_FLIP _IOWR(0x100, 0, unsigned long)
ioctl(*((int*)current_video->hidden), MYFB_FLIP, screen->pixels);
}
else{
if ( screen ) {
SDL_Rect rect;
/* Perform some checking */
if ( w == 0 )
w = screen->w;
if ( h == 0 )
h = screen->h;
if ( (int)(x+w) > screen->w )
return;
if ( (int)(y+h) > screen->h )
return;
/* Fill the rectangle */
rect.x = (Sint16)x;
rect.y = (Sint16)y;
rect.w = (Uint16)w;
rect.h = (Uint16)h;
SDL_UpdateRects(screen, 1, &rect);
}
}
}
司徒在SDL_SetVideoMode()判斷是否為SDL_DOUBLEBUF,如果不行,則拉起一個旗標,接著,後續更新都由內核配合刷屏
司徒對顯示驅動進行修改並且開啟四倍緩衝(Quad Buffer):
SDL單緩衝:第一塊緩衝區由SDL支配使用,第二、三塊緩衝區作為刷屏使用,第四塊緩衝則作為OSD備份區域
SDL雙緩衝:第一、二塊緩衝區由SDL支配使用,第四塊緩衝則作為OSD備份區域
P.S. 所以新版顯示驅動可以支援三倍緩衝(Triple Buffer)
在這一版內核更新中,司徒加入OSD顯示支援,只要按下MENU按鍵(持續1.5秒),則會跳出OSD選單,如下:
在OSD模式下(亮度10階,音量16階),只有如下按鍵可以操作,其餘按鍵是鎖定狀態:
上鍵:亮度增加
下鍵:亮度減少
左鍵:音量減少
右鍵:音量增加
MENU鍵:離開OSD模式
P.S. OSD屬於內核級別,因此,任何時候都可以叫出OSD,包含遊戲中~
聲音驅動部份,司徒也把音量調節拉到sysfs,方便調整音量(0~35階):
/sys/devices/platform/soc/soc:codec@1c22000/volume
亮度調節位置(0~10階):
/sys/devices/platform/backlight/backlight/backlight/brightness
小橫米更新部份
內核部份:
1. 支援VSYNC(FBIO_WAITFORVSYNC)
2. 支援4倍緩衝區(Quad Buffer)
3. 支援OSD模式(背光、聲音調節)
系統部份:
1. SDL元件庫修改(修復SDL單緩衝閃屏問題)
小橫米更新包
ROOTFS:https://github.com/steward-fu/pocketgo/releases/download/v1.0/rootfs_20210911
內核補丁:https://github.com/steward-fu/pocketgo/releases/download/v1.0/pocketgo_patch_20210911.zip
小橫米更新步驟
1. 透過讀卡機操作,把rootfs_20210911覆蓋到第一磁區的rootfs
2. 解壓縮pocketgo_patch_20210911.zip到第二磁區,接著執行run.sh,選擇想要更新的RAM速度,更新後,重新啟動就可以
P.S. 左上角會有VSYNC圖標
TRIMUI更新部份
內核部份:
1. 解決閃屏問題
2. 支援VSYNC(FBIO_WAITFORVSYNC)
3. 支援4倍緩衝區(Quad Buffer)
4. 支援OSD模式(背光、聲音調節)
系統部份:
1. SDL元件庫修改(修復SDL單緩衝閃屏問題)
TRIMUI更新包
ROOTFS:https://github.com/steward-fu/trimui/releases/download/v1.0/rootfs_20210911
內核補丁:https://github.com/steward-fu/trimui/releases/download/v1.0/trimui_patch_20210911.zip
TRIMUI更新步驟
1. 透過讀卡機操作,把rootfs_20210911覆蓋到第一磁區的rootfs
2. 解壓縮trimui_patch_20210911.zip到第二磁區,接著執行run.sh,選擇想要更新的RAM速度,更新後,重新啟動就可以
P.S. 中間會有VSYNC圖標
草食系統將在下一次發布,用來取代OpenDingux系統,草食本意為極度精簡系統,回歸最原始的初衷:好好的玩遊戲,不應該著重在主題這玩意上,司徒本身對肉食的定義就是花俏的圖標、圖片,把玩家從玩遊戲拉到玩主題的方向上,當然,人各有志,不勉強一定要玩什麼系統,司徒只是剛好想要一個適合自己的系統,順便分享給大家使用,如果合你胃口,歡迎使用,如果不合胃口,只能說聲抱歉~
由於還有很多東西還沒有做好,因此,下一次更新估計是至少一個月後了~在發布草食系統後,司徒將繼續RK模擬器原本的進度~
以上~
离线
第一,期待新系统~
部分模拟器FB0不建议使用的意思是打了补丁反而会出现问题吗?
离线
FB0不建议使用:補丁對這個沒有任何影響,因為FB0是直接操控顯示緩衝區,所以打或者不打,都是一樣有閃屏問題,打完補丁也不會有任何改善~
另外,GBA模擬器可以先使用我上次修復的那一版,那一版是使用SDL雙緩衝方式,所以不會有閃屏問題~
GBA模擬器:https://whycan.com/files/members/3145/gpsp_fix_border_tearing_bios.zip
离线
司徒大佬 我刷了您发布的最新补丁和超频的软件,发现一个问题。就是运行ps模拟器后速度和效率方面反而负优化了。原先的超频补丁后铁拳3可以流畅运行。这次再运行铁拳3就非常的拖慢和卡顿了。
离线
另外,这次的补丁我发现一个问题,就是按MENU按鍵也会触发休眠模式,然后黑屏就无法再唤醒了。从新开机后绿屏后还会看起来保持休眠状态(黑屏),然后在按住MENU按鍵触发调节亮度后亮度默认是最低,也就是黑屏状态,然后只能盲操作再调到最亮才能点亮屏幕。我不知道这是不是一个bug。
长按MENU按鍵已经无法唤出关机选项了,每次关机只能切换到关机按钮选择后关机了。
离线
我的机子是小横米
离线
期待miyoo新系统和 模拟器的更新
离线
1.PS模拟器问题:其实在超频后我感觉最不稳定的就是PS模拟器。死机概率非常高,经常碰见。我又测试最新补丁下的PS模拟器性能,我感觉调高CPU频率基本作用不大。铁拳3一样的拖慢卡顿包括声音。
2.关于MENU按鍵的快捷方式的设计,我建议MENU长按继续保持调出关机选项。至于音量和声音调整的调出我建议start+select组合键来实现(其他组合键也行)。因为从用户体验的角度说,由于横米有音量键,其实用软件方式调整的概率不高。再者关于亮度调节其实也是一个小概率操作的事情,所以没必要占用MENU按鍵的长按操作。
3.关于黑屏:我的操作是在app选择界面点击一次MENU按鍵,然后就休眠了,再按任何按键都不能唤醒。然后我强制关机再开机,开机到了绿屏以后就黑了,然后我盲操作MENU按鍵长按再调整亮度就是最暗模式黑屏逐步调亮。
离线
关于黑屏补充一下:我刚才在点击一次MENU按鍵休眠后我再按MENU按鍵1.5秒后盲操作调高亮度,我发现是可以调整的!但是!系统死机了! 我再进一步发现不是真正的死机!而是按键都无效了!因为我再次长按MENU按鍵后是可以调出音量和亮度界面!而且也可以调整!
离线
结论:点击一下MENU按鍵后的休眠其实是让按键都无效化的操作(除了MENU按鍵),同时让亮度变为0.
离线
1. 由於VSYNC的原因,所以,原來用來偷時間的機制不見了,導致FPS下降,超頻無法改善這個問題,顯示驅動以及PS模擬器需要修改解決這個問題~
2. 如何更方便的使用組合鍵去調整背光以及音量,這個部份,感謝你的建議,讓我想一下哪種方式比較好~
3. 黑屏問題,原因找到了,GMenu2X進入待機後,背後服務程序把目前背光值寫入.backlight.conf,所以,再次按下MENU鍵時(從待機返回正常),GMenu2X卻再次讀取.backlight.conf(黑屏時為0)並且設定背光,導致系統假死狀態,其實只是沒有背光而已~
感謝你的意見,司徒把上敘問題解決後,會再出一個修正補丁,目前機器還沒打補丁的,請先不要打~
离线
.backlight.conf里面是0
离线
感谢司徒大佬的回复!目前我就发现这些问题。如果有新问题我会再来的!
离线
@司徒
gngeo和rk模拟器在unibios 3.3下只能用家用机模式,如果设置为街机模式,会无法投币或是不知道哪个键才是投币。
不知司徒兄会不会考虑加入unibios 4.0的支持?
离线
请教下具体需要修改哪些代码才能解决unibios3.3的投币问题,我有从github教程编译了一个mac电脑版的gngeo,也是街机模式无法投币+家用机无法使用select,这貌似是gngeo各平台模拟器的通病!
离线
@fullniz
參考資料:https://gist.github.com/crabtw/3d4fee3049e342554134
後期的unibios使用bit-1當做街機投幣按鈕
--- src/event.c.orig 2016-01-01 15:55:03.995071650 +0800
+++ src/event.c 2016-01-01 15:56:36.584921148 +0800
@@ -385,6 +385,11 @@
if (joy_state[1][GN_START])
memory.intern_start &= 0xFB;
+ if (joy_state[0][GN_SELECT_COIN])
+ memory.intern_start &= 0xFD;
+ if (joy_state[1][GN_SELECT_COIN])
+ memory.intern_start &= 0xF7;
+
/* Update P1 */
memory.intern_p1 = 0xFF;
if (joy_state[0][GN_UP] && (!joy_state[0][GN_DOWN]))
离线
感谢提供教程,可以正常投币了。
试了下新修复的游戏里面侍魂5和5sp都黑屏,不知道什么情况?
离线
請更新GNO檔案試試
GNO:https://github.com/steward-fu/neogeo/releases/tag/v1.1
使用SP-S2 BIOS測試的結果
离线
重新下载sp是可以了,5还在下载当中估计也ok,下载github真慢
离线
哈~時間過得真快,距離上次更新已經是一週前的事情了~
不過,今天依然沒有更新訊息,原因是OpenDingux系統,司徒確定不會再更新了,原本司徒是想加入OSD支援(調整亮度和聲音)、解決SDL單緩衝的閃屏問題(Gambatte, Ohboy, Temper模擬器),然而,司徒製作了幾個OSD支援方式,最終並沒有達到滿意的設定方式,因此,司徒最後決定直接製作草食系統,這個系統目前大約完成1/10的工作量,所以,如果還在等OpenDingux最後補丁的玩家,司徒在此致上歉意~
草食系統完成後,司徒才會上來發布,估計至少一個月不會更新此貼~哈~
离线
非常不错的工程,默默看了很长时间,今天冒泡支持一下司徒
离线
非常不错的工程,默默看了很长时间,今天冒泡支持一下司徒
周哥好。
离线
@maxzhou88
周哥~好久不見了~小弟在此屈膝給您老人家請安~祝周哥 福如東海,壽比南山~司徒還念念不忘你那漂亮的女兒~
時間過得真快,距離上次爭吵也已經快一年了,那時候,司徒正直更年期,火氣有點盛大,因此,對於你老人家說話有點太過份,
司徒在此跟你道歉,也希望你老人家可以原諒小弟的過錯~
距離RetroGame(RS97)掌機問世已經過了3年多,希望周哥可以繼續做一些CP值高的掌機,就如同當初RS97掌機的榮景~
高CP值的定義就是要夠便宜、質量夠好、夠好攜帶,當然不是要周哥把自己的豪宅賣掉做虧本機器給我們玩家爽~
只是希望周哥想起當初為何要作Revo K101的初心~至少以後等我老了,我還可以跟小孩說說周哥的好機器~
對了~我還欠RG280M掌機一個系統,這部份我沒有忘記,之後我會找時間補上~
敬祝 安康
司徒
离线
司徒大佬, 我手里是miyoo早先国内版,电阻改好后(测得1.61V ok ,2.8V ok),试着烧录您发的“pocketgo_od_jutleys_no_roms.img”到32TF卡里,然后插卡开机无法黑屏不显示,灯亮,难道是因为屏幕驱动的问题吗?希望大佬看到能指点一下,谢谢。
离线
@M+
你可以觀察一下,電源打開後,屏的背光有亮嗎?
1. 如果沒有亮,代表燒錄的系統有問題
2. 如果有亮,有可能屏驅動不一樣,需要搭配UART查問題
感谢及时回复。
屏背光没有亮,只有电源灯亮,屏幕无显示。(我怀疑是屏幕坏掉了。。。)
离线
請問一下你是如何燒錄到MicroSD的?因為連背光都掛掉,那機率應該是很低,所以比較有可能的問題應該是MicroSD
嗯?就普通用Win32DiskImager烧录到TF卡上,闪迪32g的卡,用两张都试过,同样的状况,我想八成是我屏幕的问题吧。
PS:我的横米 是最早买的那个版本,屏幕连铁壳子都没有,电池是卡西欧?的
离线
很久没来了,今天来看了下发现司徒大佬更新了这么多东西,真的非常激动。非常可惜大佬停止了FC3000的进度.....因为我发现我的FC3000是IPS版的(哭。
只能等后续有没有什么突破性进展了。
离线
@司徒
主要就是我这台卡刷之前的系统开机是黑屏的,只有按A键进入原系统能有反应,所以估计还是没办法用.....
不过还是感谢司徒大佬。实在不行准备去买个小横米或者TRIMUI。
离线
司徒大佬,我之前那台横米(最初版miyoo) 不开机的原因找到了,本来找谢工要了个屏幕,结果还是同样不开机,我不得不怀疑是我改机的问题,然后我从别的地方割开飞线,从2.8V改回2.5V,这次开机了!
PS:原先更换电阻与飞线的改机操作,我用万用表测得均为1.62v与2.8V的理想值,谨慎的用倍镜查看,也是没有问题。
综合以上所述:我想有必要向您反馈,也许因为批次不同,个体差异,或者其他什么原因,硬改DRAM電路的位置并不是适用于所有的横米,miyoo。
谢谢大佬一贯 的无私分享,希望我的个例对其他朋友能有所帮助。
离线
@司徒 兄
你好,我的FC3000是IPS版,昨天嘗試使用你之前發布的自製系統"江西恐龍底包&Jutleys底包",黑屏無法顯示畫面。
後來我繼續爬文才發現,原來是螢幕版本不同,覺得可惜之際,今天卻發現我這台FC3000有奇怪的情況。
我把記憶卡清空,放回遊戲,開機卻是黑屏,可是我昨天因為都沒有顯示畫面,不確定有沒有誤按到刷機。
後來嘗試換記憶卡,也是如此,索性拿ips_fc3000_v1.img.7z來試試看。
有成功刷進去,開機正常有畫面,原本的FC卡帶也可以使用,但是接上記憶卡開機,螢幕有亮不過是黑色畫面。
後來嘗試使用記憶卡空卡開機,也是螢幕有亮黑色畫面,拔掉記憶卡開機又恢復正常。
-------------------------------------------------------------------------------------------
更新一下:剛剛發現使用"江西恐龍底包"開機黑屏的時候按A可以進入系統,也可以正常讀取遊戲,遊戲只能放在FC3000(FAT)這個分隔區。
最近编辑记录 IsaacJ (2021-10-14 16:12:32)
离线
@IsaacJ
由於燒錄到MicroSD的資料包含啟動程序,因此,該卡就具備從MicroSD開機的功能,如果要刪除這個啟動程序,你必須重新切割分割表(不是格式化)~
我發現還是有蠻多玩家希望自己的IPS FC3000可以刷新系統,雖然我之前說過,多花錢在FC3000身上,會失去它廉價的優勢,不過為了可以讓更多FC3000可以擁有IPS屏,我搜尋了一下淘寶店家,發現有賣2.8吋IPS 320x240,價格是25.5RMB,腳位是24Pin且相容可用,店家說下週才有貨,所以我應該會買幾片來測試看看,如果有發現更便宜的2.8吋IPS屏320x240 24Pin,歡迎跟我說,我可以買來測試一下~
离线
@司徒 兄
感謝快速的回應,關於上面問題,我測試的時候是如你所說把記憶卡分割區整個刪除,然後再重新分割成一個4G FAT格式分割區,不過這樣插卡開機卻會黑屏卡住,這就是我說的奇怪情況,我會再更換軟體試試看。
看到你說要繼續研究IPS螢幕,造福大家,真是太棒了,IPS螢幕真的在玩遊戲的時候舒適很多,而且當初在蝦皮購買的時候也蠻便宜的,買的時候沒注意螢幕版本,算是矇到的。
最近编辑记录 IsaacJ (2021-10-15 08:22:37)
离线
@司徒
這 Q8 的三方固件包是不是給錯了 ?
用 PowerISO 打開 , 磁區寫 fc3000 .....
不是 Q8 的吧 ..... ??????
离线
@司徒
這 Q8 的三方固件包是不是給錯了 ?
用 PowerISO 打開 , 磁區寫 fc3000 .....
不是 Q8 的吧 ..... ??????
不知道你在干什么,司徒大哥已经在#196说明了,“目前基於FC3000的資源,司徒幫Q8掌機製作了兩個客製化系統”,能看懂吗?
离线
@geekchun
因為看後來的回覆留言似乎沒人成功過 ....
所以懷疑名稱改了 , CFW 拿錯了 ..... 而是 FC3000 的 CFW
fc3000_tft_od_jckl_no_roms.img
q8_od_jckl_no_roms.img
兩個 size 一模一樣說 , 雖然 CRC 不同 ... 有點小懷疑
另外就是 BitBoy v2 的 CFW 固件好像可以拿來改用 , 螢幕顛倒 + 按鍵對應不對
如果可以修好應該可以用
最近编辑记录 lzgame02 (2021-10-16 10:39:19)
离线
@IsaacJ
OK
更新事項:
1. 草食系統測試版(只提供按鍵、屏幕測試)
2. 小橫米L2R2改造
PocketGo草食系統下載位置:https://github.com/steward-fu/pocketgo/releases/download/v1.2/veganos_pocketgo_20211016.img.7z
P. S. FC3000、TRIMUI會擇期釋出測試版
目前草食系統已經完成了一半的工作量,剛好搭配L2R2按鍵測試,司徒發布一版測試版,待正式發布時,司徒會做詳細介紹,目前只做簡單描述~
草食系統 製作的原因:
1. 更簡單易用的操作環境 (小白也知道如何使用)
2. 快速進入系統 (目前4.5秒進入系統,司徒預期1秒要進入系統)
3. 避免MicroSD卡崩 (重新設計的系統架構,除了cfg、swap檔案,其餘都使用唯讀方式掛載)
4. 採用核心做動態顯示 (取消傳統ICON方式,由核心做動態加載顯示)
5. 採用快照方式做暫存 (在選單中,斷電再開機後,可以從選單回到上次玩遊戲的位置)
草食系統 借鑒的地方
1. macOS GUI (整體界面風格使用類macOS GUI製作)
2. RetroArch (運作架構使用RetroArch的主從方式並且重新設計)
3. GCW-Zero (資源封裝採用GCW-Zero使用的SquashFS壓縮方式)
4. RG351MP (字型檔案從RG351MP提取使用)
5. Blackberry Priv (電源條的想法來自Blackberry Priv的設計)
草食系統的英文名稱是取自素食字眼Vegan,因此,司徒稱它為VeganOS,所有執行程序都是以*.VPK方式呈現,VPK就是VeganOS PacKage的意思,VPK是一個很特別的串接格式,司徒在正式發布時會說明原理,GUI使用一體三面方式設計,在一個畫面上同時顯示3樣東西,如下圖:
P. S. A、B按鍵用來做第一層和第二層的跳躍、返回動作,藍色字體屬於資訊類,紅色字體屬於警告類
接著司徒說明一下如何改造小橫米的L2R2按鍵~
由於PocketGo已經沒有多餘可用腳位,因此,司徒最後決定拿LCD_RD、LCD_CS作為L2、R2使用,腳位如下:
LCD_RD、LCD_CS對應到I/O腳位是PD20、PD21
接著找尋風水寶地
這個地理位置不錯
司徒使用小巧可愛的按鍵
標注位置
鑽孔
PCB對應位置如下:
割斷
LCD_RD接到VCC,LCD_CS連接到GND
測試一下是否可以正常顯示
刮線上錫
黏上按鍵
熱溶膠盡量跟模具切齊,因為,這樣可以使用PCB壓住按鍵,避免脫膠
跳線
按鍵的高度可以隨個人購買不同高度
滿意滿意
接著測試L2R2按鍵是否改造完成,首先,開啟L2R2支援
進入測試程序
P. S. 紅字部份代表目前的程序或者模擬器是測試版本
完成
有任何建議或者問題,都相當歡迎建議給司徒,感謝~
离线
@司徒
Q8 或是其他掌機的 AV 2.5mm 輸出孔
如果改插 2.5mm 耳機 , 會輸出聲音嗎 ?
還是連畫面都沒了 ? 還是沒作用只是變成裝飾而已 .....????
离线
@司徒 兄
我後來測試換了兩張記憶卡,一樣還是空卡無法正常開機。
研究了一下我發現這兩張卡之前都有寫入過ips_fc3000_v1.img,雖然後來有清除分區重新格式化,還是有問題。
原本使用的分區軟體是minitools partition magic, 後來使用DiskGenius也是同樣清況,最後使用SD CARD Formatter才終於恢復正常。
最近编辑记录 IsaacJ (2021-10-21 13:52:26)
离线
@司徒 最近入了一个 FC3000 V2, 说是 IPS 屏,拆机发现屏的型号是 T2812-M106-024C-7D , 网上查得驱动 IC 型号为 HX8347, 不知是否对你有帮助
离线
@司徒
Q8 最近出了很多套娃 , 小霸王Q4 , 還有的是改屏大小的 , 換彩色殼的
問過商家了 , 都是複合式的設計 , AV 端子那個輸出 , 都可以接耳機(2.5mm , 3.5mm) 的
Q8 不清楚能不雙打 , 有的似乎可以 , 但應該是特殊搖桿 , 一般的 PSx 搖桿應該不成
离线
@司徒
我之前买的 V2,和你发的屏外观也不一样,因此主控 IC 的信息可能有误,说明一下避免误导哈;
PS: 我肉眼目测屏不是 IPS 的,用先前 tft_v1_v2 的固件也点不亮,暂时没折腾了
离线
更新項目:
1. FC3000 DPAD改造
2. FC3000 L2R2改造
3. FC3000 草食系統測試版
FC3000草食系統下載位置:https://github.com/steward-fu/fc3000/releases/download/v1.1/veganos_pocketgo_20211030.img.7z
草食系統不在支援雙重開機選單,也就是不在支援官方系統,取得代之,司徒把這些多餘的腳位用來改造L2R2按鍵,剛好趁這個機會,司徒也順便改造一下FC3000掌機的十字鍵,使用3D印表機打印一個墊高支撐架,讓手感更好一些,過程說明如下~
OpenSCAD程式代碼
$fn = 100;
difference(){
union(){
cylinder(5, 4, 2);
translate([0, 0, 4.7]){
sphere(2);
}
}
translate([0, 0, -1.5]){
sphere(3.5);
}
}
預覽圖
列印後
直接插入即可卡住
墊高部份
接著司徒說明一下如何改造L2R2按鍵,由於,司徒超怕落塵,因此,先拆掉擋板,這樣比較方便找尋擺放按鍵的位置
原本位置如下,缺點是跟其它按鍵太過接近
接著找尋更好的位置
感覺不錯
漂亮
可以使用的GPIO
腳位
跳線
按鍵測試
R2鍵
L2鍵
堪用的機器
离线
司徒先生,我用 Win32DiskImager 燒入 fc3000_v1_v2_flash.img檔 後 fc3000 開機黑屏,沒有升級的選擇畫面,然後用原機卡开機,也是黑屏了。。。
离线
司徒先生,我用 Win32DiskImager 燒入 fc3000_v1_v2_flash.img檔 後 fc3000 開機黑屏,沒有升級的選擇畫面,然後用原機卡开機,也是黑屏了。。。
是不是 FC3000 v2, 目测你是不支持的屏,开机黑屏,但升级功能是正常的,你肯定按到 SELECT 或 START 升级按钮了;司徒前面有说的,如果是黑屏的话是不支持的屏,不要按升级键,你只能去找一下原厂固件,看能不能恢复了
离线
前段时间忙好久没关注了,看到LR2出来了,司徒大哥真给力!我抽点时间整理下,到时分享下小横米改加LR2键的试案
离线
请问有原厂固件吗?能分享一个给我吗?感谢。。。
离线
@hox
我的机子是V1的。
离线
@hox
我拆开看了一下,我屏幕上的编号是RB411-11A G021E。
离线
我的机器救回来了。。。刷的IPS-FC3000-V1.IMG。换言之,我这台机器就是IPS的屏8个模拟器的V1。是这样吗?也就是说,要用司徒大神的固件刷机,目前是不可能的,我这样理解对吗?
离线
@hox
我拆开看了一下,我屏幕上的编号是RB411-11A G021E。
我的也是V1 IPS屏,屏幕編號RB411-11A G022A,上面板子寫35Pto24P
最近编辑记录 IsaacJ (2021-11-04 21:06:56)
离线
如果開機是黑屏,代表是不支援的屏,請不要繼續操作~如果不小心刷了,可以翻翻前面的貼子,看看有無機會救回來~
Q8 應該可以拿 Miyoo Bitboy v2 CFW 來改吧
LCD 驅動換下 , 按鍵配置修復 , 那 CFW 應該就能用吧 .....
看 Github Miyoo 上 discord 有老外成功搞定螢幕了 ...
系統版本可能是 v1.2 or v1.6 其中一個 , 聽說這機子有三個版本 ......
屏的驅動可能在這裡 or discord 上(關鍵字 xyc q8) :
https://drive.google.com/drive/folders/15F4P9uKCGn5lPhkMSBVke8pjMkTMdbTm
or
http://drive.google.com/drive/folders/1sHdBiyfWhgUOLh0SCPZ73H3el6t1NCuJ
BitBoy v2 CFW
https://rs97.bitgala.xyz/Miyoo%20Devices/Bittboy%20cfw/
@司徒 有沒興趣整個一版 CFW 出來
最近编辑记录 lzgame02 (2021-11-07 09:22:48)
离线
q8把能刷的包都刷了一遍。老外的也刷了(那个谷歌云盘费我好大劲才下载下来),屏幕没花,但是画面反着的,然后控制方向和按键错位,也没法用。xyc q8还是没法整了,个人就是好奇刷着玩。看到大佬们有提到就被吸引过来了。
离线
还有就是@lzgame02发的链接,我试过了。。依旧不行。
离线
@yugaosi
第一個 Google 雲盤的連結中有 screen fix , 還有附上兩張圖
那兩張圖沒反 , 這機子聽說有三種屏版本 , 看起來有些能用有些不行 ....
离线
@司徒 。。。是cpu超频灭了吧?大佬威武。
离线
离线
离线
更新項目:
1. TRIMUI L2R2改造
2. TRIMUI 草食系統測試版
TRIMUI草食系統下載位置:https://github.com/steward-fu/trimui/releases/download/v1.3/veganos_trimui_20211121.img.7z
雖然司徒最近比較忙碌一點,不過,作為司徒寨機旅程的最後一站,司徒還是希望可以把這三台寨機(小橫米、TRIMUI、FC3000)作到一定的質量,因此,即使一年的開發時間到期,如果還沒有達到司徒要求,司徒還是會延續開發週期,然而~因為重新寫了很多新東西,因此,進度比較緩慢,建議可以一個月來看一下進度就可以,接著司徒說明 下TRIMUI L2、R2的改機說明~
尋得一塊風水寶地
標記位置
拆掉NAND FLASH
L2、R2使用的腳位
上按鍵
跳線
鑽孔,右邊竟然算錯位置...
完成
按鍵高度可以購買符合需求的高度
開啟L2R2
測試按鍵
R2
L2
10年一見的高CP值開源掌機
离线
司徒大神,简直是教育界的劳模!
离线
哈。看到TRIMUI有振动马达项!:)
离线
确实不错,怎么找不到在哪里下载呢?
离线
司徒大佬,你好,我想问下你研究过开源掌机能玩ps2的有可能吗?目前硬件水平都不差了,对于20年前的游戏机来说按道理可以模拟出来的。网上很少有研究这个的。
离线
@司徒
Aethersx2 , 用 apk decompiler , 運氣好可能可以獲取到源代碼
不然就要等作者釋出,聽說是這一兩個月內,如果不是忽悠的話
离线
@lzgame02
恩,有看到這個模擬器,大約看了下主要core只有一個,位於lib/arm64-v8a/libemucore.so,大小是10.2MB,其餘兩個比較特別的文件夾是(gx_dx11, gs_opengl),裡面有一些源代碼,看來應該是有一些動態編譯技術,你或許可以研究下接口,從classes.dex逆向看接口的使用方式,這樣你或許有機會可以直接使用在RK3326上面~
檔案格式(全部寫在一起,沒有其它相依元件,佛心~)
$ file lib/arm64-v8a/libemucore.so
lib/arm64-v8a/libemucore.so: ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, BuildID[sha1]=c0271fd2edb2c3c2452bd3ab904d04e2efbb79ae, stripped
$ aarch64-linux-gnu-readelf -d libemucore.so | grep NEED
0x0000000000000001 (NEEDED) Shared library: [libEGL.so]
0x0000000000000001 (NEEDED) Shared library: [libdl.so]
0x0000000000000001 (NEEDED) Shared library: [liblog.so]
0x0000000000000001 (NEEDED) Shared library: [libOpenSLES.so]
0x0000000000000001 (NEEDED) Shared library: [libandroid.so]
0x0000000000000001 (NEEDED) Shared library: [libm.so]
0x0000000000000001 (NEEDED) Shared library: [libc.so]
0x000000006ffffffe (VERNEED) 0xfb4c
0x000000006fffffff (VERNEEDNUM) 3
使用NDK方式,因此,可以使用C語言串接此接口
JNI_OnLoad
pthread_key_create
JNI_OnUnload
Java_xyz_aethersx2_android_NativeLibrary_getScmVersion
Java_xyz_aethersx2_android_NativeLibrary_getFullScmVersion
Java_xyz_aethersx2_android_NativeLibrary_initialize
Java_xyz_aethersx2_android_NativeLibrary_refreshGameList
Java_xyz_aethersx2_android_NativeLibrary_getGameListEntries
Java_xyz_aethersx2_android_NativeLibrary_getGameListEntry
Java_xyz_aethersx2_android_NativeLibrary_isBIOSAvailable
Java_xyz_aethersx2_android_NativeLibrary_runVMThread
Java_xyz_aethersx2_android_NativeLibrary_stopVMThreadLoop
Java_xyz_aethersx2_android_NativeLibrary_isVMPaused
Java_xyz_aethersx2_android_NativeLibrary_pauseVM
Java_xyz_aethersx2_android_NativeLibrary_resetVM
Java_xyz_aethersx2_android_NativeLibrary_applySettings
Java_xyz_aethersx2_android_NativeLibrary_reloadGameSettings
Java_xyz_aethersx2_android_NativeLibrary_changeDisc
Java_xyz_aethersx2_android_NativeLibrary_setDisplayAlignment
Java_xyz_aethersx2_android_NativeLibrary_hasValidRenderSurface
Java_xyz_aethersx2_android_NativeLibrary_changeSurface
ANativeWindow_fromSurface
Java_xyz_aethersx2_android_NativeLibrary_loadStateSlot
Java_xyz_aethersx2_android_NativeLibrary_saveStateSlot
Java_xyz_aethersx2_android_NativeLibrary_setFrameLimitEnabled
Java_xyz_aethersx2_android_NativeLibrary_toggleFrameLimit
Java_xyz_aethersx2_android_NativeLibrary_toggleSoftwareRenderer
Java_xyz_aethersx2_android_NativeLibrary_getPadButtonIndex
Java_xyz_aethersx2_android_NativeLibrary_getPadAxisIndex
Java_xyz_aethersx2_android_NativeLibrary_setPadButton
Java_xyz_aethersx2_android_NativeLibrary_setPadAxis
Java_xyz_aethersx2_android_NativeLibrary_setDefaultSettings
_ZNSt6__ndk19to_stringEj
Java_xyz_aethersx2_android_NativeLibrary_setDefaultSettingsToIni
Java_xyz_aethersx2_android_NativeLibrary_getBIOSDescription
Java_xyz_aethersx2_android_NativeLibrary_reloadPatches
Java_xyz_aethersx2_android_NativeLibrary_addOSDMessage
Java_xyz_aethersx2_android_NativeLibrary_addKeyedOSDMessage
OpenGL and Vulkan
eglInitialize
eglGetError
eglQueryString
eglGetDisplay
eglGetProcAddress
eglGetCurrentContext
eglMakeCurrent
eglDestroySurface
eglQuerySurface
eglSwapBuffers
eglSwapInterval
eglCreateWindowSurface
eglCreatePbufferSurface
eglGetConfigAttrib
eglDestroyContext
eglGetCurrentSurface
eglChooseConfig
eglBindAPI
eglCreateContext
glCreateShader
glDeleteShader
glUniform4f
glVertexAttrib4Nbv
glEndConditionalRender
glUniform4ui
glDrawElementsInstancedBaseVertex
glSamplerParameterfv
glQueryCounter
glVertexAttribP1ui
glVertexAttribP3ui
glTexCoordP4uiv
glMultiTexCoordP4uiv
glUniform2dv
glGetSubroutineUniformLocation
glUniformSubroutinesuiv
glProgramUniformMatrix3dv
glProgramUniformMatrix2x3dv
glClearBufferData
glInvalidateBufferSubData
glShaderStorageBlockBinding
glTransformFeedbackBufferBase
glMapNamedBufferRange
glNamedFramebufferTextureLayer
glClearNamedFramebufferfi
glTextureParameterfv
glCreateProgramPipelines
vkCreateDisplayModeKHR
vkCreateFence
vkGetPipelineCacheData
vkResetDescriptorPool
vkCmdCopyImageToBuffer
vkCmdFillBuffer
vkCmdResolveImage
元件
libdl.so
LIBC
libm.so
libc.so
LIBC_N
libEGL.so
liblog.so
libOpenSLES.so
libandroid.so
libemucore.so
有趣的字串(Rockchip)
DynGenFunc *_DynGen_EventTest(bool)
/home/user/p2-arm-gp/3rdparty/wxwidgets3.0/include/wx/log.h
/home/user/p2-arm-gp/3rdparty/wxwidgets3.0/src/common/hashmap.cpp
/home/user/p2-arm-gp/3rdparty/wxwidgets3.0/src/common/zipstrm.cpp
/home/user/p2-arm-gp/3rdparty/wxwidgets3.0/src/common/time.cpp
/home/user/p2-arm-gp/3rdparty/vixl/src/aarch64/macro-assembler-aarch64.cc
Android (7714059, based on r416183c1) clang version 12.0.8 (https://android.googlesource.com/toolchain/llvm-project c935d99d7cf2016289302412d708641d52d2f7ee)
Linker: LLD 12.0.8 (/buildbot/src/android/llvm-r416183/out/llvm-project/lld c935d99d7cf2016289302412d708641d52d2f7ee)
/tmp/GS_HW_dump32/
fcma
Samsung
Nvidia
Rockchip
bool VMManager::Initialize(const VMBootParameters &)
VM is shutdown
PCSX2.index.gzip.v1|
這模擬器不是憑空出世,從這些資訊來看應該是針對Android平台花了蠻長的時間製作,因此,如果是有OpenGL支援的平台,如:RK3326,應該是有很大的機會可以搬上去~
离线
慕名而来,认真学习。YYDS~~~
离线
snk模拟器怎么没有任何进展了是不是忙别的去了
原先还隔几天或一星期修正不能模拟的rom
期待100%那一天
离线
@fullniz
目前還是持續專注在RK模擬器以及草食系統的開發上,沒有參與其它東西,只是改了相當多的東西,也寫了很多新東西,只是開發初期,問題確實相當多,因此,花了很多時間在除錯上以及架構調整上,新的架構確實沒有我想像中的好,尤其是性能變成負優化,不過,我還是希望可以把這顆ARM9晶片作到一個最好的狀態,因此,還是會繼續花費時間在這個項目上,我估計還需要一段時間才會有成果出來,這些時間,請大家去玩玩其它機器,有好的成果時,我會更新~感謝大家的關注~
离线
报告司徒大佬,fc3000的IPS版正式开卖了,如果能成功开源的话,这个外观和价格或将大洗牌开源圈子,期待司徒大佬研究一下,前线消息汇报完毕,小的告退~
离线
离线
@司徒
喵到可能比 TRIMUI 搞的還小的機子出現啦 .....
牙膏狗 , 看來後續可能又有新貨可繼續搞了 .....
https://www.youtube.com/watch?v=tfo33IcMMYA YGG 掌機
最近编辑记录 lzgame02 (2021-12-22 19:45:36)
离线
@lzgame02
感謝你的資訊~
牙膏狗的作品我蠻久以前就注意到,就知道的資訊來看(應該是使用F1C200S),確實很用心在做,不過,比較值得說的是他的背後那個人,此人頗有來歷~這個人就是Miyoo第一代的作者,當初我移植Linux系統上Miyoo掌機,導致此人沒有了這個項目的收入,確實讓我相當內疚,而且剛好我跟他都是被謝工迫害的兩個人,於是,我們兩個成了好朋友,我也再次跟他道歉,害他沒有收入,他人相當好,並沒有再次怪罪,後來的Miyoo閃屏問題,我也是詢問他的意見,然後再加上"MiyooCROM"這位作者的解說,最終才知道解法,所以,牙膏狗的掌機,我是不會去碰的~畢竟,移植開源系統到掌機上,可能讓方案商沒了工作~最終自己只會惹來一身腥~
离线
司徒大佬,请问你是台湾的吗?还是香港的啊?
离线
@司徒
那還是等 POWKIDDY Q36 好了
1.5" 左右的 , PS1 也跑的順 .... ^^
离线
@司徒
前面文章有提到 RS-90 ....
這好像最近有出 RetroArch Cross Platform for RS-90
官網有
离线
由于买不到司徒大大同款的q8掌机,所以我在司徒大大的源码基础上,对我的q8掌机屏幕进行了驱动移植,我的屏幕排线如图
固件发出来和大家分享,感谢司徒大大的开源代码:D
链接:https://pan.baidu.com/s/19snjAws6KQ8AXpDDyKzs_g
提取码:r2yy
离线
@geekchun
這是指有換過屏還是沒有呢 ?
這機子聽說有三種屏 ....
最近编辑记录 lzgame02 (2022-01-08 19:44:27)
离线
@geekchun
這是指有換過屏還是沒有呢 ?
這機子聽說有三種屏 ....
我这个某鱼收来的,就用的原来的屏
离线
lzgame02 说:@geekchun
這是指有換過屏還是沒有呢 ?
這機子聽說有三種屏 ....我这个某鱼收来的,就用的原来的屏
測試後可用 .... 不過好像找不到調整音量的地方 ....
感謝司徒與geekchun 啦 ...
最近编辑记录 lzgame02 (2022-01-08 22:23:45)
离线
@lzgame02
你说的问题我这也存在,建议多换几张卡试下
我这里几张卡也有一张32G不行的,其他的没问题
离线
@lzgame02
你说的问题我这也存在,建议多换几张卡试下
我这里几张卡也有一张32G不行的,其他的没问题
對 , 卡在開機畫面真的換卡就成了 ....
或是一直重開機 , 會有成功的一次 , 然後就好了 ...
不過好像找不到調整音量的地方 ....
最近编辑记录 lzgame02 (2022-01-08 22:38:38)
离线
@geekchun
測試後基本上操作都正常 , 離開的組合鍵要自行測試找出
音量沒有發現統一調整的APP , 似乎只能在個別的模擬器選單中調整 ....
硬體面板上的音量按鈕變成了其他輔助功能的樣子 .....
离线
@geekchun
q8韌體更新成功, 感謝你提供的固件
离线
感谢大神们的研发
离线
司徒大佬,Q8那個兩個包可不可以帶上遊戲整合成進去。包裏面自帶的【F:\emus\fba-a320\roms\】三國戰紀和西遊記可以運行,但我別的地方下載的無法運行。
【F:\Images\】帶著許多遊戲的預覽圖,是否它最開始是整合了所有遊戲的。
可不可以弄個帶著這些遊戲的包。
离线
如何給司徒寄掌機?我有個69的掌機,自帶的系統可以跑合金彈頭1245X,但跑不了合金彈頭3,跑不了三國戰紀和西遊記。但是拳皇2000和2003可以跑。
感覺上和Q8差不多,如何寄給司徒?希望可以幫著弄個系統包
离线
@geekchun
大哥,Q8掌机另一个包能不能也弄一下,另个包界面更好看。
或者说一下哪个路径哪个文件是显示驱动,
最近编辑记录 8000945 (2022-02-13 05:03:56)
离线
特意前来支持司徒大大,加油
离线
前来支持下。顺便问一下,司徒大神提供的miyoo包和gpsp_fix_tearing那个模拟器按键不一致有修复吗?现在还在用江西恐龙的包,不知道是不是心里作用,感觉显示有点伤眼……
离线
离线
@geekchun
感謝分享~
@lzgame02
Q8音量並沒有實做在Kernel, 因此, 需要User Application自己去管理音效裝置
@8000945
很抱歉我盡量不放ROM在GitHub, 因此,無法整合遊戲包, 另外, Q8我沒有在研究了, 不用寄機器給我~
@jck0430
感謝支持~
@hydize
這部份需要你自己確認下~
此帖最後更新通知
司徒最近剛從深山修行出來~意識到此帖太過複雜且很多東西都混在一起,因此,司徒決定要拆帖~把接下來的東西,拆成各自獨立的開源帖子,所以,還是會繼續搞F1C100S/F1C200S~ARM9是一個里程碑,如果可以讓它跑出極致效能,那將會是一個很棒的成果(對我個人來說),當然,這些都是偏研究樂趣為主,如果真要玩遊戲,司徒還是真心建議去玩PSP, PSV, N3DS掌機,另外,不要再說我又拿了全志好處~
由於接下來的開源帖子都是以草食系統為製作方向,屬於全新製作,因此,司徒目前已經將手上的源代碼(FC3000, 小橫米, TRIMUI)都開源出來了,有興趣研究的玩家可以從如下位置下載:
Kernel、UBoot、Mininit源代碼:https://github.com/steward-fu/fc3000/releases/tag/source
FC3000編譯步驟:https://github.com/steward-fu/fc3000
小橫米編譯步驟:https://github.com/steward-fu/pocketgo
TRIMUI編譯步驟:https://github.com/steward-fu/trimui
FC3000恐龍包:https://github.com/steward-fu/fc3000/releases/download/v1.0/fc3000_tft_od_jckl_no_roms.img.7z
FC3000老外包:https://github.com/steward-fu/fc3000/releases/download/v1.0/fc3000_tft_od_jutleys_no_roms.img.7z
小橫米恐龍包:https://github.com/steward-fu/pocketgo/releases/download/v1.0/pocketgo_od_jckl_no_roms.img.7z
小橫米老外包:https://github.com/steward-fu/pocketgo/releases/download/v1.0/pocketgo_od_jutleys_no_roms.img.7z
TRIMUI恐龍包:https://github.com/steward-fu/trimui/releases/download/v1.0/trimui_od_jckl_no_roms.img.7z
TRIMUI老外包:https://github.com/steward-fu/trimui/releases/download/v1.0/trimui_od_jutleys_no_roms.img.7z
Toolchain:https://github.com/steward-fu/miyoo/releases/download/v1.0/toolchain.7z
Buildroot Config:https://github.com/steward-fu/miyoo/releases/download/v1.0/devel.zip
作為結帖,司徒說明一下源代碼的一些移植需要注意的地方,方便有興趣的玩家可以快速入手
Kernel
1. 配置統一使用arch/arm/configs/suniv_defconfig,DeviceTree位於如下位置:
arch/arm/boot/dts/pocketgo.dts
arch/arm/boot/dts/trimui.dts
arch/arm/boot/dts/fc3000.dts
2. FC3000, 小橫米, TRIMUI共用一份Kernel, 使用變數區隔(由CMDLINE在編譯時帶入)
init/main.c
int suniv_variant=0;
// 0: 小橫米
// 1: TRIMUI
// 2: FC3000
3. 按鍵驅動位於:drivers/input/keyboard/suniv-keypad.c,如果要打印按鍵訊息,開啟如下配置
#define DEBUG_LOG 1
P.S. 按鍵的處理,由suniv_variant判斷是要處理哪台機器(小橫米, TRIMUI, FC3000)
4. 屏幕背光、馬達驅動位於:drivers/pwm/pwm-suniv.c,馬達控制使用IOCTL方式控制
#define VMOTOR_ENABLE _IOWR(0x100, 0, unsigned long)
#define VMOTOR_SET _IOWR(0x101, 0, unsigned long)
控制裝置/dev/vmotor
alloc_chrdev_region(&major, 0, 1, "vmotor");
myclass = class_create(THIS_MODULE, "vmotor");
device_create(myclass, NULL, major, NULL, "vmotor");
cdev_init(&mycdev, &myfops);
cdev_add(&mycdev, major, 1);
switch(suniv_variant){
case 1:
break;
case 2:
break;
default:
pin = (32 * 4) + 12;
break;
}
do_gpio_request(pin);
5. 電池量測驅動位於:drivers/power/supply/suniv-battery.c
6. 顯示驅動位於:drivers/video/fbdev/sunivfb.c,由suniv_variant判斷是要處理哪台機器(小橫米, TRIMUI, FC3000)
小橫米、TRIMUI的顯示是60FPS,FC3000因為沒有手冊,所以速度有待調整
759 if(suniv_variant == 0){
760 writel((0xf << 28) | (6 << 0), iomm.lcdc + TCON_CLK_CTRL_REG);
761 }
762 else if(suniv_variant == 2){
763 //writel((0xf << 28) | (63 << 0), iomm.lcdc + TCON_CLK_CTRL_REG);
764 writel((0xf << 28) | (127 << 0), iomm.lcdc + TCON_CLK_CTRL_REG);
765 }
目前4個Layer全用上,使用者可以直接DMA映射填充像素,速度可以大大提昇
849 writel((uint32_t)(par->vram_phys + 320*240*2*0) << 3, iomm.debe + DEBE_LAY0_FB_ADDR_REG);
850 writel((uint32_t)(par->vram_phys + 320*240*2*1) << 3, iomm.debe + DEBE_LAY1_FB_ADDR_REG);
851 writel((uint32_t)(par->vram_phys + 320*240*2*2) << 3, iomm.debe + DEBE_LAY2_FB_ADDR_REG);
852 writel((uint32_t)(par->vram_phys + 320*240*2*3) << 3, iomm.debe + DEBE_LAY3_FB_ADDR_REG);
853
854 writel((uint32_t)(par->vram_phys + 320*240*2*0) >> 29, iomm.debe + DEBE_LAY0_FB_HI_ADDR_REG);
855 writel((uint32_t)(par->vram_phys + 320*240*2*1) >> 29, iomm.debe + DEBE_LAY1_FB_HI_ADDR_REG);
856 writel((uint32_t)(par->vram_phys + 320*240*2*2) >> 29, iomm.debe + DEBE_LAY2_FB_HI_ADDR_REG);
857 writel((uint32_t)(par->vram_phys + 320*240*2*3) >> 29, iomm.debe + DEBE_LAY3_FB_HI_ADDR_REG);
為了解決閃屏,User Application必須映射DMA,然後自己控制Layer輸出
315 static void flip_lcd(struct myfb_par *par)
316 {
317 #if 0
318 static uint32_t report=0;
319
320 if((report++ % 60) == 0){
321 printk("%s, vsync\n", __func__);
322 }
323 #endif
324 suniv_clrbits(iomm.lcdc + TCON_INT_REG0, (1 << 15));
325 suniv_clrbits(iomm.lcdc + TCON_CTRL_REG, (1 << 31));
326
327 if(par->lcdc_ready){
328 if(suniv_variant == 0){
329 lcdc_wr_cmd(0x2c);
330 }
331
332 if(par->app_virt->yoffset == 0){
333 suniv_setbits(iomm.debe + DEBE_MODE_CTRL_REG, (1 << 8));
334 suniv_clrbits(iomm.debe + DEBE_MODE_CTRL_REG, (1 << 9));
335 suniv_clrbits(iomm.debe + DEBE_MODE_CTRL_REG, (1 << 10));
336 suniv_clrbits(iomm.debe + DEBE_MODE_CTRL_REG, (1 << 11));
337 }
338 else if(par->app_virt->yoffset == 240){
339 suniv_clrbits(iomm.debe + DEBE_MODE_CTRL_REG, (1 << 8));
340 suniv_setbits(iomm.debe + DEBE_MODE_CTRL_REG, (1 << 9));
341 suniv_clrbits(iomm.debe + DEBE_MODE_CTRL_REG, (1 << 10));
342 suniv_clrbits(iomm.debe + DEBE_MODE_CTRL_REG, (1 << 11));
343 }
344 else if(par->app_virt->yoffset == 480){
345 suniv_clrbits(iomm.debe + DEBE_MODE_CTRL_REG, (1 << 8));
346 suniv_clrbits(iomm.debe + DEBE_MODE_CTRL_REG, (1 << 9));
347 suniv_setbits(iomm.debe + DEBE_MODE_CTRL_REG, (1 << 10));
348 suniv_clrbits(iomm.debe + DEBE_MODE_CTRL_REG, (1 << 11));
349 }
350 else if(par->app_virt->yoffset == 720){
351 suniv_clrbits(iomm.debe + DEBE_MODE_CTRL_REG, (1 << 8));
352 suniv_clrbits(iomm.debe + DEBE_MODE_CTRL_REG, (1 << 9));
353 suniv_clrbits(iomm.debe + DEBE_MODE_CTRL_REG, (1 << 10));
354 suniv_setbits(iomm.debe + DEBE_MODE_CTRL_REG, (1 << 11));
355 }
356 }
357 suniv_setbits(iomm.debe + DEBE_REGBUFF_CTRL_REG, (1 << 0));
358 suniv_setbits(iomm.lcdc + TCON_CTRL_REG, (1 << 31));
359
360 par->app_virt->vsync_count+= 1;
361 wake_up_interruptible_all(&wait_vsync_queue);
362 }
有實做VSYNC
147 static int wait_for_vsync(struct myfb_par *par)
148 {
149 uint32_t count = par->app_virt->vsync_count;
150 long t = wait_event_interruptible_timeout(wait_vsync_queue, count != par->app_virt->vsync_count, HZ / 10);
151 return t > 0 ? 0 : (t < 0 ? (int)t : -ETIMEDOUT);
152 }
支援FBIO_WAITFORVSYNC
1027 static int myfb_ioctl(struct fb_info *info, unsigned int cmd, unsigned long arg)
1028 {
1029 struct myfb_par *par = info->par;
1030
1031 switch(cmd){
1032 case FBIO_WAITFORVSYNC:
1033 wait_for_vsync(par);
1034 break;
如果玩家想修改以符合自己的FC3000屏,可以修改如下:
237 static void fc3000_gpio_init(void)
593 static void fc3000_lcd_init(void)
7. 音效驅動位於:sound/soc/suniv/dac.c,小橫米因為音效致能跟UART綁在一起,如果要開啟UART列印,可以打開
53 #define POCKETGO_USE_EARPHONE 1
UBoot
1. 司徒把UBoot, boot.scr, zImage, dtb都寫到啟動磁區,避免被誤刪,位置如下:
fs/fs.c
22 #include "hex_dtb.h"
23 #include "hex_boot.h"
24 #include "hex_kernel.h"
568 len_read = sizeof(hex_boot);
569 memcpy((void*)0x80c50000, (void*)hex_boot, sizeof(hex_boot));
570 memcpy((void*)0x80c00000, (void*)hex_dtb, sizeof(hex_dtb));
571 memcpy((void*)0x80008000, (void*)hex_kernel, sizeof(hex_kernel));
2. 啟動參數位置:param.cmd
mininit
1. mininit是用來載入rootfs.squashfs,傳統方式使用Partition方式(不正常斷電容易發生卡崩)
2. 開啟Debug Log
16 #define dbg(...) LOG("<14>", __VA_ARGS__)
最後,感謝大家對於此帖的熱情回復,司徒感謝大家的支持,期望開源可以發展的越來越好~
离线
感谢司徒先生的付出!
离线
专门注册帐号来支持一下司徒大神!
说起来有缘,我是在咸鱼找开源掌机才找到这里来的。
看到司徒大神的无私奉献甚是感动。
顺手在咸鱼收了一台 68RMB 的 FC3000v1 2G 。
SD 卡刷了 fc3000_tft_od_jutleys_no_roms.img.7z 启动黑屏(估计并非司徒大神兼容的屏了)。
当时还没来翻司徒大神的帖,被我乱按过按键,不知道有没被刷坏。
后来发现断电后拔卡可以进入系统。
等抽空拆机研究一下。
这两天把司徒大神发的帖基本看完,也刚发现 FC3000 已经开源了。
有空可以尝试一下适配我手上的屏。
离线
司徒达人,我严格按照着小橫米編譯步驟:
https://github.com/steward-fu/pocketgo
到Build kernel的最后一步./run.sh pocketgo 报错如下:
然后我尝试修改run.sh里面的CROSS_COMPILE=arm-linux-gnueabihf- 为arm-linux-也好像不对
离线
@kendling
感謝支持
@fullniz
感謝回報問題~
第一個問題,需要安裝gcc-arm,使用如下方式安裝
$ sudo apt-get install gcc-arm* -y
至於第二個問題,是缺少bc,使用如下方式安裝
$ sudo apt-get install bc -y
使用arm-linux-gnueabihf-或者arm-linux-編譯都可以使用,不過,我本意是使用miyoo toolchain,晚點會更新kernel.tar.gz檔案,感謝~
离线
司徒竟然忘記說明超頻的部份...
DRAM超頻是在UBoot設定,CPU超頻則可以在User Application設定(如:GMenu2X),如下說明:
UBoot (DRAM)
arch/arm/mach-sunxi/dram_suniv.c
56 // 156, 168, 192, 204, 216, 228, 240, 252
57 struct dram_para suniv_dram_para = {
58 .size = 32,
59 .clk = 156,
60 .access_mode = 1,
61 .cs_num = 1,
62 .ddr8_remap = 0,
63 .sdr_ddr = DRAM_TYPE_DDR,
64 .bwidth = 16,
65 .col_width = 10,
66 .row_width = 13,
67 .bank_size = 4,
68 .cas = 0x3,
69 };
目前預設是跑156MHz,玩家可以加壓測試DRAM的超頻~
為了避免超頻導致UBoot無法開機,司徒有做按下按鍵即可回復到156MHz的保護,超過252MHz的判斷記得拿掉~
407 static void do_dram_init(struct dram_para * para)
408 {
409 u8 m;
410 u32 val;
411 struct sunxi_ccm_reg * const ccm = (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
412
413 val = readl(SUNXI_PIO_BASE + (4 * 0x24) + 0x00) & 0xfffff0ff;
414 writel(val, SUNXI_PIO_BASE + ((4 * 0x24) + 0x00));
415 writel(0x00000010, SUNXI_PIO_BASE + ((4 * 0x24) + 0x1c));
416 udelay(5000);
417 m = readl(SUNXI_PIO_BASE + (4 * 0x24) + 0x10) & 4;
418 if(m == 0){
419 printf("(use default 156MHz)");
420 para->clk = 156;
421 }
422
423 if((para->clk < 156) || (para->clk > 252)){
424 printf("(adjust dram clock from 0x%x to 156MHz)", para->clk);
425 para->clk = 156;
426 }
427
428 printf("%d MHz,", para->clk);
CPU
GMenu2X CPU超頻修正:https://github.com/steward-fu/trimui/releases/download/v1.2/gmenunx_fix_oc.zip
直接Map Register(0x01c20000)做設定就可以,
876 void GMenu2X::hwInit() {
877 #if defined(TARGET_GP2X) || defined(TARGET_WIZ) || defined(TARGET_CAANOO) || defined(TARGET_RS97) || defined(TARGET_MIYOO)
878 memdev = open("/dev/mem", O_RDWR);
879 if (memdev < 0) WARNING("Could not open /dev/mem");
880 #endif
881
882 if (memdev > 0) {
900 memregs = (uint32_t*)mmap(0, 4096, PROT_READ | PROT_WRITE, MAP_SHARED, memdev, 0x01c20000);
902 if (memregs == MAP_FAILED) {
903 ERROR("Could not mmap hardware registers!");
904 close(memdev);
905 }
906 }
2474 uint32_t x, v;
2475 uint32_t total=sizeof(oc_table)/sizeof(uint32_t);
2476
2477 for(x=0; x<total; x++){
2478 if((oc_table[x] >> 16) >= mhz){
2479 memregs[0] = (1 << 31) | (oc_table[x] & 0x0000ffff);
2480 break;
2481 }
2482 }
2483 INFO("Set CPU clock: %d(0x%08x)", mhz, v);
离线
司徒能再介绍下怎么Build rootfs吗,
Build rootfs (remember configure filesystem as squashfs)
download buildroot-2018.02.9 from https://buildroot.org
use config_buildroot-2018.02.9(in miyoo repo) and then make it
是用uboot里面的.config吗?
make menuconfig里的选项哪些需要改动,我就照着教程改了2个
toolchain改成custom,/opt/miyoo,FIlesytem images改成squashfs
但是make过不了哈
离线
@司徒
大神,我在走 FC3000 的编译流程。遇到些问题:
环境:
系统:Debian 11
GCC:gcc 10.2
toolchain:toolchain.7z 解压到 ./opt/miyoo
GCC-ARM: sudo apt install 'gcc-arm-*'
PATH:export PATH=$PATH:/opt/miyoo/bin
1. Kernel
在执行 ./run.sh fc3000 命令之后报以下错误:
/usr/bin/ld: scripts/dtc/dtc-parser.tab.o:(.bss+0x10): multiple definition of `yylloc'; scripts/dtc/dtc-lexer.lex.o:(.bss+0x0): first defined here
collect2: error: ld returned 1 exit status
我在 https://blog.csdn.net/qq_36393978/article/details/117695708 找到解决方法。
修改 scripts/dtc/dtc-lexer.lex.c_shipped 文件,把 YYLTYPE yylloc; 一行改成 extern YYLTYPE yylloc; (在前面增加 extern)。
改后顺利编译完成。
2. UBoot
A) 我看到 UBoot 里的 run.sh 文件调用了 bin2header 命令,apt 仓库和 toolchain.7z 都找不到这个程序。
我在 https://github.com/spacerace/bin2header.git 仓库找到了匹配 run.sh 文件里调用方法的源代码编译了一个。
B) UBoot 也有 multiple definition of `yylloc'; 的问题,修改方法同上。
C)
Error: arch/arm/dts/.suniv-f1c100s-licheepi-nano.dtb.pre.tmp:45.1-10 syntax error
FATAL ERROR: Unable to parse input tree
这次在 https://blog.csdn.net/wanpengpenga/article/details/122313358 找到解决方法。
修改 scripts/Makefile.lib 文件的 321 行,
(cat $<; $(if $(u_boot_dtsi),echo '\#include "$(u_boot_dtsi)"')) > $(pre-tmp); \
把 echo 后面的 \# 改成 #
D)
ERROR:root:code for hash md5 was not found.
Traceback (most recent call last):
File "/opt/miyoo/lib/python2.7/hashlib.py", line 147, in <module>
globals()[__func_name] = __get_hash(__func_name)
File "/opt/miyoo/lib/python2.7/hashlib.py", line 97, in __get_builtin_constructor
raise ValueError('unsupported hash type ' + name)
ValueError: unsupported hash type md5
ERROR:root:code for hash sha1 was not found.
Traceback (most recent call last):
File "/opt/miyoo/lib/python2.7/hashlib.py", line 147, in <module>
globals()[__func_name] = __get_hash(__func_name)
File "/opt/miyoo/lib/python2.7/hashlib.py", line 97, in __get_builtin_constructor
raise ValueError('unsupported hash type ' + name)
ValueError: unsupported hash type sha1
ERROR:root:code for hash sha224 was not found.
Traceback (most recent call last):
File "/opt/miyoo/lib/python2.7/hashlib.py", line 147, in <module>
globals()[__func_name] = __get_hash(__func_name)
File "/opt/miyoo/lib/python2.7/hashlib.py", line 97, in __get_builtin_constructor
raise ValueError('unsupported hash type ' + name)
ValueError: unsupported hash type sha224
ERROR:root:code for hash sha256 was not found.
Traceback (most recent call last):
File "/opt/miyoo/lib/python2.7/hashlib.py", line 147, in <module>
globals()[__func_name] = __get_hash(__func_name)
File "/opt/miyoo/lib/python2.7/hashlib.py", line 97, in __get_builtin_constructor
raise ValueError('unsupported hash type ' + name)
ValueError: unsupported hash type sha256
ERROR:root:code for hash sha384 was not found.
Traceback (most recent call last):
File "/opt/miyoo/lib/python2.7/hashlib.py", line 147, in <module>
globals()[__func_name] = __get_hash(__func_name)
File "/opt/miyoo/lib/python2.7/hashlib.py", line 97, in __get_builtin_constructor
raise ValueError('unsupported hash type ' + name)
ValueError: unsupported hash type sha384
ERROR:root:code for hash sha512 was not found.
Traceback (most recent call last):
File "/opt/miyoo/lib/python2.7/hashlib.py", line 147, in <module>
globals()[__func_name] = __get_hash(__func_name)
File "/opt/miyoo/lib/python2.7/hashlib.py", line 97, in __get_builtin_constructor
raise ValueError('unsupported hash type ' + name)
ValueError: unsupported hash type sha512
这个网上搜了一下,貌似是 miyoo 工具链的 Python 没有链接 OpenSSL 的问题。
大神,这是需要更新工具链还是说可以修改一下调用系统的 Python 环境?
另外: run.sh 脚本里的 make 命令的参数 -j4 改成 -j 可以让 make 程序自动适配 CPU 核心数。
离线
@fullniz
buildroot編譯步驟可以參考:https://steward-fu.github.io/website/handheld/miyoo/build_buildroot.htm
如果你是使用外部toolchain,要記得選擇glibc作為相容(除非是musl),還需要知道你toolchain對應的kernel header版本,可以參考這篇:https://whycan.com/t_3177.html
$ cd
$ wget https://github.com/steward-fu/miyoo/releases/download/v1.0/devel.zip
$ unzip devel.zip -d devel
$ wget https://buildroot.org/downloads/buildroot-2018.02.9.tar.gz
$ tar xvf buildroot-2018.02.9.tar.gz
$ cp devel/config_buildroot-2018.02.9 buildroot-2018.02.9/.config
$ cd buildroot-2018.02.9
$ make -j
P.S. make menuconfig => 把filesystem改成squashfs
@kendling
目前我的編譯環境都是基於Debian 9和Debian 10,Debian 11換成了GCC 10.x,看來有很多相容問題,建議使用Debian 10作為編譯環境,可以省去一些問題,也感謝提供make -j資訊~
离线
@司徒
gcc 10 的问题已经解决了,最后是使用 miyoo 的工具链出问题了:
ERROR:root:code for hash md5 was not found.
Traceback (most recent call last):
File "/opt/miyoo/lib/python2.7/hashlib.py", line 147, in <module>
globals()[__func_name] = __get_hash(__func_name)
File "/opt/miyoo/lib/python2.7/hashlib.py", line 97, in __get_builtin_constructor
raise ValueError('unsupported hash type ' + name)
ValueError: unsupported hash type md5
这部分要怎么解决?我转外部工具链试试。
离线
@司徒
使用外部 Python 就可以。
cd /opt/miyoo/bin
sudo mkdir bak
sudo mv py* bak
再到 uboot 目录执行 ./run.sh /dev/sdX fc3000 顺利编译完成。
离线
@司徒
另外我作死把 130 FC 那个卡反插过,现在只要插上那个卡就无法开机,不知道是不是某些电路烧坏了。
离线
请问司徒 f1c 驱动 i80 mcu屏用的是 gpio 模式吗? 还是别的方式?
离线
@司徒 果然和你的屏不一样,也是 35to24 的屏,4 个角度没有变色。
离线
这机器用的是IPS面板屏?
离线
@司徒
网上搜了一下,没有找到这块屏的资料。
抓初始化资料这一块我不懂,目前只能借助逻辑分析仪了吗?
另外:那张 130FC 的“游戏卡”插进去后只是短路了几个脚。不插也能玩 FC 游戏呀,这卡实际有啥作用。。
离线
@司徒
大神,小横米屏幕的pin脚是什么,屏幕搞坏了,买的时候还要这个,求教
离线
感谢回答,那我得先学习学习这方面的知识了
最近编辑记录 kendling (2022-03-07 17:24:42)
离线
大佬,能推荐个小横米使用的屏幕么?想自己换个屏
离线
@新人
這恐怕買不到小橫米的屏(ST7789V),因為這個屏有Screen Tearing(TE)腳位,一般買不到~建議去二手市場買小橫米替換~
我看淘宝有好多st7789v,但是他们要参数不知道是要啥,我已经买了别的,就是想给这个整好
离线
哇,大佬还在继续更新哇。
我想问一下大佬,我手里只有树莓派zero2w搭建的gpi case,想编译retrofw系统玩玩,我目前能用buildroot编译出自定义的系统,具体怎么搞?
离线
感谢🙏
离线
@mrnull
RetroFW是基於GMenuNX(GMenu2X的延伸)作為桌面管理,所以你可以基於你的Buildroot去編譯GMenuNX:
GMenuNX https://github.com/pingflood/gmenunx
RetroFW當初是給JZ4760(MIPS CPU)整合的一套系統,所以RetroFW裡面的那些模擬器,如:ReGBA,你無法搬到你的系統上,你可以找gpSP或者mGBA使用,然後把模擬器或者遊戲一個一個移植到你的系統上就可以~
RetroFW https://github.com/retrofw/retrofw.github.io
离线
买了个 24M 的逻辑逻辑分析仪,应该够用了吧?
离线
买了个 24M 的逻辑逻辑分析仪,应该够用了吧?
24M 的估计够呛,能用也不好用;24M 最高速率,实测一般一两秒就卡死了。另外 24M 对应的是总速率,8个通道使能时达不到
离线
真的找不到,这就要扔了么!
离线
@司徒
谢谢大佬的指点,我buildroot出系统了,也试着去编译那个桌面管理软件,但是不知道为什么,启动了之后一直都是黑屏。
离线
kendling 说:买了个 24M 的逻辑逻辑分析仪,应该够用了吧?
24M 的估计够呛,能用也不好用;24M 最高速率,实测一般一两秒就卡死了。另外 24M 对应的是总速率,8个通道使能时达不到
先试试。
@kendling
用了就知道好壞,需要時,自然會找更好的,一般取樣率至少要兩倍,但是你目前不知道屏的速度,所以,不用擔心,用下去就對了~
我也是想着先试试,24M 的成本低很多,再往上成本就高很多了。
离线
@司徒
好的,感谢
离线
画了个板专门用来做逻辑分析,这样就不用刮焊点了。
离线
离线
kendling 说:https://whycan.com/files/members/8656/2022-03-09_13-33.png
画了个板专门用来做逻辑分析,这样就不用刮焊点了。
我画之前去找过,都是转 24P 2.54MM ,用了它就接不了屏,除非再用面包板转接。
离线
@司徒 我测了一下屏的脚,好像除了 VDD GND DB0~15 其他有点不同,我晚上再确认一下。
另外,我用 PulseView 12M 到 16M 可以采到数据。初始化屏的资料是不是只看前面一段数据可以了?
最近编辑记录 kendling (2022-03-12 19:17:29)
离线
@kendling
這裡是當初如何找出FC3000屏的過程,你可參考:https://steward-fu.github.io/website/handheld/fc3000/lcd_init.htm
P.S. 當沒有任何CMD送出時,就是初始化結束的訊息~
离线
@司徒 这个页面看过不止一次了,还有这个帖子也是从头到尾看过。
我尝试一下看能否找到吧。
离线
1 VDD
2 GND
3 ?(没有量到直通的脚)
4 ?(没有量到直通的脚)
5 PD21
6 PD19
7 PD18
8 VDD
9 PD13
10 PD14
11 PD15
12 PD16
13 PD17
14 PD6
15 PD7
16 PD8
17 PD10
18 PD11
19 PD12
20 PD1
21 PD2
22 PD3
23 PD4
24 PD5
@司徒 3、4 两个没有量到直通的引脚,其他都和你的一致。
离线
@司徒
D6 - RS
D7 - WR
D0~D5:
图1 - DB0~DB5
图2 - DB5~DB10
图3 - DB10~DB15
初始化是不是就在前面的 300ms 左右的时间,后面那些应该是刷新界面的信号了吧?
离线
@司徒 我试过 PulseView 导出几个选项都产生数 G 大小的文件,我不知道应该用哪个菜单导出。
离线
离线
我把采样时长调整到 2 秒,导致的 CSV 就小很多了。
离线
24M 采样貌似拿到的数据也不稳定啊
离线
@司徒
感谢你的帮助和指导,我重新采样了 4 次 RS,WR,DB0~DB5 。
我用以下流程分析,不知道对不对:
1、把导出的 csv 档案去除相邻的重复行
2、以 RS=0,WR=1 为起始信号,把前面的信号清除
3、以 RS=0,WR=1 为结束信号,把后面的信号清除
4、剩下的信号 4 次采样都基本可以对上。
离线
@司徒
new1.csv:DB0~DB5, RS, WR
new2.csv:DB5~DB10, RS, WR
new3.csv:DB10~DB15, RS, WR
离线
感谢司徒为开源作出的贡献~
小弟小白一个,只能默默为司徒加油:)
现有个问题请教,刷了横米的江西恐龙系统发现模拟器里面的按键反了(例如GBA和GB的A、B,PS的方块三角交叉圆圈等等),虽然有一些模拟器设置里面可以改回来,但像GB模拟器的设置就没有改按键,有没有办法能调整全局的按键可以一把改回正确?
最后期待你的草食~:)
离线
@司徒 我分析出来是这个初始化资料,不知道对不对。
HEX RS WR
3800 0 1
0 1 0
0 1 1
800 0 0
800 0 1
100 1 0
100 1 1
1000 0 0
1000 0 1
0 1 0
0 1 1
1800 0 0
1800 0 1
C022 1 0
C022 1 1
2000 0 0
2000 0 1
0 1 0
0 1 1
4000 0 0
4000 0 1
1200 1 0
1200 1 1
4800 0 0
4800 0 1
0 1 0
0 1 1
5000 0 0
5000 0 1
4000 1 0
4000 1 1
6000 0 0
6000 0 1
0 1 0
0 1 1
6800 0 0
6800 0 1
0 1 0
0 1 1
7000 0 0
7000 0 1
8020 1 0
8020 1 1
7800 0 0
7800 0 1
0 1 0
0 1 1
8000 0 0
8000 0 1
0 1 0
0 1 1
8800 0 0
8800 0 1
3800 1 0
3800 1 1
9000 0 0
9000 0 1
0 1 0
0 1 1
9800 0 0
9800 0 1
0 1 0
0 1 1
8000 0 0
8000 0 1
8720 1 0
8720 1 1
8800 0 0
8800 0 1
B920 1 0
B920 1 1
9000 0 0
9000 0 1
C1A0 1 0
C1A0 1 1
9800 0 0
9800 0 1
402 1 0
402 1 1
4820 0 0
4820 0 1
4000 1 0
4000 1 1
4020 0 0
4020 0 1
6800 1 0
6800 1 1
5020 0 0
5020 0 1
80 1 0
80 1 1
20 0 0
20 0 1
78E0 1 0
78E0 1 1
820 0 0
820 0 1
0 1 0
0 1 1
8020 0 0
8020 0 1
3F00 1 0
3F00 1 1
8820 0 0
8820 0 1
3800 1 0
3800 1 1
9020 0 0
9020 0 1
1E00 1 0
1E00 1 1
9820 0 0
9820 0 1
700 1 0
700 1 1
A020 0 0
A020 0 1
1200 1 0
1200 1 1
A820 0 0
A820 0 1
1000 1 0
1000 1 1
B020 0 0
B020 0 1
7F03 1 0
7F03 1 1
B820 0 0
B820 0 1
3F00 1 0
3F00 1 1
C020 0 0
C020 0 1
0 1 0
0 1 1
C820 0 0
C820 0 1
0 1 0
0 1 1
D020 0 0
D020 0 1
3F00 1 0
3F00 1 1
D820 0 0
D820 0 1
0 1 0
0 1 1
E020 0 0
E020 0 1
3800 1 0
3800 1 1
E820 0 0
E820 0 1
0 1 0
0 1 1
8040 0 0
8040 0 1
0 1 0
0 1 1
8840 0 0
8840 0 1
78E0 1 0
78E0 1 1
9040 0 0
9040 0 1
0 1 0
0 1 1
9840 0 0
9840 0 1
F920 1 0
F920 1 1
60 0 0
60 0 1
704 1 0
704 1 1
860 0 0
860 0 1
0 1 0
0 1 1
5060 0 0
5060 0 1
0 1 0
0 1 1
80 0 0
80 0 1
0 1 0
0 1 1
880 0 0
880 0 1
0 1 0
0 1 1
1080 0 0
1080 0 1
0 1 0
0 1 1
1880 0 0
1880 0 1
0 1 0
0 1 1
2080 0 0
2080 0 1
0 1 0
0 1 1
2880 0 0
2880 0 1
0 1 0
0 1 1
8080 0 0
8080 0 1
8000 1 0
8000 1 1
9080 0 0
9080 0 1
0 1 0
0 1 1
9880 0 0
9880 0 1
1800 1 0
1800 1 1
A880 0 0
A880 0 1
8100 1 0
8100 1 1
B880 0 0
B880 0 1
0 1 0
0 1 1
C080 0 0
C080 0 1
0 1 0
0 1 1
3800 0 0
3800 0 1
820 1 0
820 1 1
3800 0 0
3800 0 1
860 1 0
860 1 1
3800 0 0
3800 0 1
9960 1 0
9960 1 1
1800 0 0
1800 0 1
4020 1 0
4020 1 1
8040 0 0
8040 0 1
0 1 0
0 1 1
8840 0 0
8840 0 1
78E0 1 0
78E0 1 1
9040 0 0
9040 0 1
0 1 0
0 1 1
9840 0 0
9840 0 1
F920 1 0
F920 1 1
20 0 0
20 0 1
78E0 1 0
78E0 1 1
820 0 0
820 0 1
0 1 0
0 1 1
1020 0 0
1020 0 1
1020 1 1
0 1 1
离线
@jck0430
目前源代碼已經釋出,如果你無法自己修改,很抱歉~你只能等草食系統再回報問題了~
@kendling
你解析出來的資料跟我解析出來的不一樣,但是,就我感覺,都不像是屏的初始化資料~我的方法如下:
原始檔案大小
-rw-r--r-- 1 steward steward 800000048 Mar 12 22:57 new1.csv
-rw-r--r-- 1 steward steward 800000048 Mar 12 23:11 new2.csv
-rw-r--r-- 1 steward steward 800000048 Mar 12 23:13 new3.csv
slim.py (合併重複資料)
#!/usr/bin/python
import os
import sys
if len(sys.argv) != 2:
print 'slim.py xxx.csv'
sys.exit()
f = open(sys.argv[1])
c = f.readlines()
f.close()
pre = ''
for x in c:
l = x.replace('\r', '').replace('\n', '')
if pre != l:
pre = l
print l
合併後大小
-rw-r--r-- 1 steward steward 162121808 Mar 13 09:16 s1.csv
-rw-r--r-- 1 steward steward 153456496 Mar 13 09:17 s2.csv
-rw-r--r-- 1 steward steward 139407888 Mar 13 09:18 s3.csv
run.py (位元重組)
#!/usr/bin/python
import os
import sys
f = open('s1.csv')
c1 = f.readlines()
f.close()
f = open('s2.csv')
c2 = f.readlines()
f.close()
f = open('s3.csv')
c3 = f.readlines()
f.close()
cc = len(c3)
for x in range(cc):
l1 = c1[x].replace('\r', '').replace('\n', '').split(',')
l2 = c1[x].replace('\r', '').replace('\n', '').split(',')
l3 = c1[x].replace('\r', '').replace('\n', '').split(',')
l1.reverse()
l2.reverse()
l3.reverse()
if l1[0] == 'logic':
continue
if (l1[5] != l2[5]) or (l2[5] != l3[5]) or (l3[5] != l1[5]):
print 'error'
sys.exit()
wr = l1[0]
rs = l1[1]
t3 = ''.join('{:x}'.format(int(v)) for v in l3[2:8])
t2 = ''.join('{:x}'.format(int(v)) for v in l2[3:8])
t1 = ''.join('{:x}'.format(int(v)) for v in l1[3:8])
t = t3 + t2 + t1
v = '0x%04x' % int(t, 2)
if wr == '0':
if rs == '0':
print 'CMD:{}'.format(v)
else:
print 'DAT:{}'.format(v)
if 0:
print l3
print l2
print l1
print t
print v
print ''
最後取得的屏初始化資料
CMD:0x0000
CMD:0x0421
CMD:0x0c63
CMD:0x1ce7
CMD:0x3def
CMD:0x7fff
CMD:0xffff
DAT:0x0000
CMD:0x0000
DAT:0x0000
CMD:0x0000
DAT:0x0000
CMD:0x0000
DAT:0x0000
CMD:0x0000
DAT:0x8842
CMD:0x0000
DAT:0x0000
CMD:0x0000
DAT:0x0000
CMD:0x0000
DAT:0x0000
CMD:0x0000
DAT:0x0000
CMD:0x0000
DAT:0x0000
CMD:0x0000
DAT:0x0000
CMD:0x0000
DAT:0x8000
CMD:0x0000
DAT:0x0000
CMD:0x0000
DAT:0x0000
CMD:0x0000
DAT:0x0000
CMD:0x0000
DAT:0x0000
CMD:0x0000
DAT:0x0000
CMD:0x0000
DAT:0x8000
CMD:0x0000
DAT:0x8000
CMD:0x0000
DAT:0x8000
CMD:0x0000
DAT:0x0842
CMD:0x8000
DAT:0x0000
CMD:0x8000
DAT:0x0000
CMD:0x8000
DAT:0x0000
CMD:0x8000
DAT:0x8000
CMD:0x8000
DAT:0x0000
CMD:0x8000
DAT:0x0000
CMD:0x8000
DAT:0x0000
CMD:0x8000
DAT:0x0000
CMD:0x8000
DAT:0x0000
CMD:0x8000
DAT:0x0000
CMD:0x8000
DAT:0x0000
CMD:0x8000
DAT:0x0c63
CMD:0x8000
DAT:0x0000
CMD:0x8000
DAT:0x8000
DAT:0x0000
CMD:0x8000
DAT:0x0000
CMD:0x8000
DAT:0x0000
CMD:0x8000
DAT:0x0000
CMD:0x8000
DAT:0x0000
CMD:0x8000
DAT:0x0000
CMD:0x0000
DAT:0x0000
CMD:0x0000
DAT:0x8000
CMD:0x0000
DAT:0x0000
CMD:0x0000
DAT:0x8000
CMD:0x8000
DAT:0x1084
CMD:0x8000
DAT:0x0000
CMD:0x8000
DAT:0x0000
CMD:0x0000
DAT:0x0000
CMD:0x0000
DAT:0x0000
CMD:0x0000
DAT:0x0000
CMD:0x0000
DAT:0x0000
CMD:0x0000
DAT:0x0000
CMD:0x0000
DAT:0x0000
CMD:0x0000
DAT:0x0000
CMD:0x0000
DAT:0x0000
CMD:0x0000
DAT:0x0000
CMD:0x0000
DAT:0x0000
CMD:0x0000
DAT:0x0000
CMD:0x0000
DAT:0x0000
CMD:0x0000
DAT:0x8000
CMD:0x0000
DAT:0x8000
CMD:0x0000
DAT:0x8000
CMD:0x0000
DAT:0x8000
CMD:0x0000
DAT:0x0000
CMD:0x0000
DAT:0x0000
DAT:0x8000
CMD:0x8000
CMD:0x0000
DAT:0x0000
CMD:0x0000
DAT:0x8000
CMD:0x8000
DAT:0x8000
CMD:0x8000
DAT:0x0000
CMD:0x8000
雖然感覺都怪怪的,不過,我還是把它做成燒錄檔案給你測試,你依序燒錄到MicroSD並且插入到你的FC3000開機看看,如果有顯示RGB顏色,那代表可以動作~
20220313_0.img
20220313_1.img
离线
@司徒 感动的一刻终于来了!
真心感谢 司徒大神 的帮助和指导,这个是我以前无法想像任务!
离线
@司徒 我成功点亮 IPS 屏的代码在这里,我是把你的点屏代码改了初始化部分:
ips_lcd_init.7z
编译烧写到 SD 卡后,启动的时候看到是花屏的,然后从上到下刷新整个屏幕,不知道有没有异常的地方。
离线
最后一步编译 uboot 报错了,估计还是 Debian 11 环境的问题。明天再继续,已经是突破性进展了。
离线
@司徒
我没有用你解析出来的资料,今天一直在用逻辑分析仪抓资料,没来看帖。
我是用我解析出来的那份资料,然后把所有 WR==0 的行去除。
最后把剩下的资料更新你的点屏代码,成功点亮了。
离线
@司徒 确实躺下一段时间都睡不着。
另外有个问题请教一下,液晶接口 3、4 脚我没有量到直通的 MCU 引脚。你是怎么确定它用哪个引脚控制的?
离线
@司徒 完整编译写 SD 卡可以进入系统了。
目前发现 2 个小问题:
1、没有显示电池电量
2、A/B X/Y 调换了
离线
另外几个问题:
3、我应该刷的是 fc3000_tft_od_jutleys_no_roms.img.7z 包,启动时没有看到选择系统的界面
4、所有模拟器都找不到游戏,我看到 OD 分区 games 目录里是有游戏的
5、中文显示乱码,这个应该替换字体可以了
离线
A1: 第三腳位是LEDA,一般是接到PWM IC,所以你可以從PWM EN腳位查出是哪根F1C100S腳位
A2: 第四腳位是RST,一般是直接連接到F1C100S,FC3000則是透過MOSFET連接,你可以從MOSFET查到F1C100S腳位
A3: 電池電量需要看App是讀取那個位置,目前應該是不一樣的位置,GMenuNX可以改
A4: ABXY按鍵如果要更換,你可以修改驅動程式
A5: 选择系统的界面,這部份代碼沒有保留,因為後來轉到草食系統,不過,你只要在UBoot裡面添加按鍵判斷就可以
A6: games遊戲問題,你可能需要查下,這部份,從目前訊息,看不出哪裡有問題
A7: 中文亂碼,替換字型就可以,GMenu2X支援中文顯示
离线
@司徒
感谢回答,我有时间再看看,现在先上班。
离线
@司徒 今天午休的时候我制作了一个 fc3000ips 的 kernel 代码补丁。
离线
好的,相當感謝你的分享~
对了,打包好的 rootfs.squashfs 是烧写到 SD 卡什么位置的?
离线
第一磁區的rootfs檔案
原来是这里,我还以为 FC3000 分区全是官方系统使用的,难怪在 OD 分区没找到。
离线
更换 mininit 能成功启动。
更换 rootfs 黑屏,我要焊个 uart 看看是啥问题才行。
另外,我编译的 rootfs 比原来的小很多,是不是还没有 GMenu 那些程序?
离线
預設rootfs不包含GMenu2X,我都是使用miyoo的rootfs配置檔案,你可以參可:https://github.com/steward-fu/miyoo
离线
預設rootfs不包含GMenu2X,我已经是使用miyoo的rootfs配置檔案,你可以參可:https://github.com/steward-fu/miyoo
我已经是使用 miyoo 的配置档案,编译出来的 rootfs 只有 25.8 MB ,jutleys 包的 rootfs 有 48.5 MB 。
大小差太多了。
离线
@kendling
不知道你是否可以提供一個MicroSD鏡像IMG燒錄檔案(沒有包含ROMS)給我,我想給Dingoonity玩家測試一下~感謝
非常乐意提供,是使用 jetleys 的 IMG 档案修改一个吗?
rootfs 我还没有启动成功,这两天也没有时间焊接 UART 。
PS:本来为了做逻辑分析画的板子今天才到货,暂时用不上了。
离线
@kendling
不知道你是否可以提供一個MicroSD鏡像IMG燒錄檔案(沒有包含ROMS)給我,我想給Dingoonity玩家測試一下~感謝
https://github.com/kendling/my_bin_file/releases/download/v1.0/fc3000_ips_od_jutleys_no_roms.img.7z
离线
感謝~
大神客气了,是我感谢你的帮助和指导,我受益匪浅。
离线
司徒 说:@kendling
不知道你是否可以提供一個MicroSD鏡像IMG燒錄檔案(沒有包含ROMS)給我,我想給Dingoonity玩家測試一下~感謝https://github.com/kendling/my_bin_file/releases/download/v1.0/fc3000_ips_od_jutleys_no_roms.img.7z
看到有大佬接手了IPS屏的工作,真是喜出望外。我也刷了你这个镜像,很幸运能进系统,看起来我们是同一批的屏幕。有个问题是我从进系统之后就有非常大的电流音,不知道是我这边的个例还是目前的通病?在原系统是没有这个问题的。
离线
@司徒
晚上回去试一下。应该不是模拟器问题,开机后黑屏的时候没问题,到了选择模拟器那个界面就开始有电流音了。
离线
好的~
另外,測試請使用電池,不要接上USB電源~
今天中午居然有机会回去了一趟,正好试了一下。音量开到最大的话两个系统下音量是一样的,用的FC魂斗罗测试的。我没有接USB充电,只用电池。
离线
@司徒
我这边的情况是:
1、是只要进了 OD 系统就听到电流声(小声音就可以听到)
2、同样的音量原厂系统没有听到
离线
@光明之歌
我只是刚入门而已,并非大佬。
有幸得到 @司徒 的帮助和指导才得以完成这个工作。
离线
@司徒
我这边的情况是:
1、是只要进了 OD 系统就听到电流声(小声音就可以听到)
2、同样的音量原厂系统没有听到
对的,电流音什么音量都有。看来不是我的个例
离线
@司徒
会不会是音频输出电路不同?
离线
我靠近喇叭听了一下,原厂系统也是有杂音的。无论多大的音量。
离线
@司徒
请教一个问题,我按你的教程焊接了 uart1 。
我也看了 dts 文件,stdout 输出到 uart1 。但是我接好 TTL 线没有看到输出。
aliases {
serial1 = &uart1;
};
chosen {
stdout-path = "serial1:115200n8";
};
离线
我只接 GND+TX 倒是有输出了。
离线
输出只有这些,后面运行游戏就没有输出了。
F1C200S SPL Loader
DRAM:156 MHz, 32 MB
Boot: MMC1
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 4.14.0-vegan+ (kend@kendnb) (gcc version 10.2.1 20210110 (Debian 10.2.1-6)) #71 Mon Mar 14 13:42:45 CST 2022
[ 0.000000] CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=0005317f
[ 0.000000] CPU: VIVT data cache, VIVT instruction cache
[ 0.000000] OF: fdt: Machine model: allwinner suniv handheld
[ 0.000000] Memory policy: Data cache writeback
[ 0.000000] random: fast init done
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 8128
[ 0.000000] Kernel command line: rootwait root=/dev/mmcblk0p1 ro fstype=vfat init=/mininit -- fc3000ips
[ 0.000000] suniv model: fc3000ips
[ 0.000000] PID hash table entries: 128 (order: -3, 512 bytes)
[ 0.000000] Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)
[ 0.000000] Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)
[ 0.000000] Memory: 29064K/32768K available (2355K kernel code, 103K rwdata, 540K rodata, 112K init, 188K bss, 3704K reserved, 0K cma-reserved)
[ 0.000000] Virtual kernel memory layout:
[ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB)
[ 0.000000] fixmap : 0xffc00000 - 0xfff00000 (3072 kB)
[ 0.000000] vmalloc : 0xc2800000 - 0xff800000 ( 976 MB)
[ 0.000000] lowmem : 0xc0000000 - 0xc2000000 ( 32 MB)
[ 0.000000] modules : 0xbf000000 - 0xc0000000 ( 16 MB)
[ 0.000000] .text : 0xc0008000 - 0xc0255250 (2357 kB)
[ 0.000000] .init : 0xc02de000 - 0xc02fa000 ( 112 kB)
[ 0.000000] .data : 0xc02fa000 - 0xc0313d00 ( 104 kB)
[ 0.000000] .bss : 0xc0315e90 - 0xc034500c ( 189 kB)
[ 0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
[ 0.000000] clocksource: timer: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
[ 0.000000] sched_clock: 32 bits at 100 Hz, resolution 10000000ns, wraps every 21474836475000000ns
[ 0.000000] Console: colour dummy device 80x30
[ 0.000000] console [tty0] enabled
[ 0.070000] Calibrating delay loop... 203.16 BogoMIPS (lpj=1015808)
[ 0.070000] pid_max: default: 32768 minimum: 301
[ 0.070000] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.070000] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.070000] CPU: Testing write buffer coherency: ok
[ 0.070000] Setting up static identity map for 0x80008400 - 0x8000843c
[ 0.070000] devtmpfs: initialized
[ 0.070000] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[ 0.070000] futex hash table entries: 256 (order: -1, 3072 bytes)
[ 0.080000] pinctrl core: initialized pinctrl subsystem
[ 0.080000] DMA: preallocated 256 KiB pool for atomic coherent allocations
[ 0.090000] SCSI subsystem initialized
[ 0.090000] Advanced Linux Sound Architecture Driver Initialized.
[ 0.090000] clocksource: Switched to clocksource timer
[ 0.110000] workingset: timestamp_bits=30 max_order=13 bucket_order=0
[ 0.110000] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[ 0.110000] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)
[ 0.110000] io scheduler noop registered
[ 0.110000] io scheduler deadline registered
[ 0.110000] io scheduler cfq registered (default)
[ 0.110000] io scheduler mq-deadline registered
[ 0.110000] io scheduler kyber registered
[ 0.120000] suniv-pinctrl 1c20800.pinctrl: initialized sunXi PIO driver
[ 0.130000] do_gpio_request, invalid gpio pin
[ 0.130000] pwm-backlight backlight: backlight supply power not found, using dummy regulator
[ 0.170000] Console: switching to colour frame buffer device 40x30
[ 0.180000] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
[ 0.200000] 1c25400.serial: ttyS1 at MMIO 0x1c25400 (irq = 23, base_baud = 6250000) is a 16550A
[ 0.500000] console [ttyS1] enabled
[ 0.510000] loop: module loaded
[ 0.520000] SCSI Media Changer driver v0.25
离线
上面那个是 jetleys 的 rootfs 输出的信息。
下面这个是换了我编译的 rootfs ,输出也是到这里停了。输出的信息一样,但就是我的 rootfs 一直黑屏,喇叭也没有声音。
F1C200S SPL Loader
DRAM:156 MHz, 32 MB
Boot: MMC1
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 4.14.0-vegan+ (kend@kendnb) (gcc version 10.2.1 20210110 (Debian 10.2.1-6)) #71 Mon Mar 14 13:42:45 CST 2022
[ 0.000000] CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=0005317f
[ 0.000000] CPU: VIVT data cache, VIVT instruction cache
[ 0.000000] OF: fdt: Machine model: allwinner suniv handheld
[ 0.000000] Memory policy: Data cache writeback
[ 0.000000] random: fast init done
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 8128
[ 0.000000] Kernel command line: rootwait root=/dev/mmcblk0p1 ro fstype=vfat init=/mininit -- fc3000ips
[ 0.000000] suniv model: fc3000ips
[ 0.000000] PID hash table entries: 128 (order: -3, 512 bytes)
[ 0.000000] Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)
[ 0.000000] Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)
[ 0.000000] Memory: 29064K/32768K available (2355K kernel code, 103K rwdata, 540K rodata, 112K init, 188K bss, 3704K reserved, 0K cma-reserved)
[ 0.000000] Virtual kernel memory layout:
[ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB)
[ 0.000000] fixmap : 0xffc00000 - 0xfff00000 (3072 kB)
[ 0.000000] vmalloc : 0xc2800000 - 0xff800000 ( 976 MB)
[ 0.000000] lowmem : 0xc0000000 - 0xc2000000 ( 32 MB)
[ 0.000000] modules : 0xbf000000 - 0xc0000000 ( 16 MB)
[ 0.000000] .text : 0xc0008000 - 0xc0255250 (2357 kB)
[ 0.000000] .init : 0xc02de000 - 0xc02fa000 ( 112 kB)
[ 0.000000] .data : 0xc02fa000 - 0xc0313d00 ( 104 kB)
[ 0.000000] .bss : 0xc0315e90 - 0xc034500c ( 189 kB)
[ 0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
[ 0.000000] clocksource: timer: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
[ 0.000000] sched_clock: 32 bits at 100 Hz, resolution 10000000ns, wraps every 21474836475000000ns
[ 0.000000] Console: colour dummy device 80x30
[ 0.000000] console [tty0] enabled
[ 0.070000] Calibrating delay loop... 203.16 BogoMIPS (lpj=1015808)
[ 0.070000] pid_max: default: 32768 minimum: 301
[ 0.070000] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.070000] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.070000] CPU: Testing write buffer coherency: ok
[ 0.070000] Setting up static identity map for 0x80008400 - 0x8000843c
[ 0.070000] devtmpfs: initialized
[ 0.070000] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[ 0.070000] futex hash table entries: 256 (order: -1, 3072 bytes)
[ 0.080000] pinctrl core: initialized pinctrl subsystem
[ 0.080000] DMA: preallocated 256 KiB pool for atomic coherent allocations
[ 0.090000] SCSI subsystem initialized
[ 0.090000] Advanced Linux Sound Architecture Driver Initialized.
[ 0.090000] clocksource: Switched to clocksource timer
[ 0.110000] workingset: timestamp_bits=30 max_order=13 bucket_order=0
[ 0.110000] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[ 0.110000] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)
[ 0.110000] io scheduler noop registered
[ 0.110000] io scheduler deadline registered
[ 0.110000] io scheduler cfq registered (default)
[ 0.110000] io scheduler mq-deadline registered
[ 0.110000] io scheduler kyber registered
[ 0.120000] suniv-pinctrl 1c20800.pinctrl: initialized sunXi PIO driver
[ 0.130000] do_gpio_request, invalid gpio pin
[ 0.130000] pwm-backlight backlight: backlight supply power not found, using dummy regulator
[ 0.170000] Console: switching to colour frame buffer device 40x30
[ 0.180000] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
[ 0.200000] 1c25400.serial: ttyS1 at MMIO 0x1c25400 (irq = 23, base_baud = 6250000) is a 16550A
[ 0.500000] console [ttyS1] enabled
[ 0.510000] loop: module loaded
[ 0.520000] SCSI Media Changer driver v0.25
离线
下面分享一下本人采用的为小横米增加LR2实体键方案,改机操作如下图,推荐采用欧姆龙那款白色6x6x4.3的微动按键,力度合适,需把键底磨掉0.3的厚度,键帽如提供的STL文件,可根据自己喜好上色。提示此为极端位置的刚好实现方案,按个人实际操作,键帽、微动、壳子都可能需多次摆位测量打磨,才适用微动的GND已焊接于板上固定,只需焊接两飞线,具体引接如前面司徒所说明的,有动手能力可玩玩。接下继续期待司徒大哥的惊喜!
https://whycan.com/files/members/6792/%E5%B0%8F%E6%A8%AA%E7%B1%B3LR2.rar
https://whycan.com/files/members/6792/LR2%E5%BB%BA%E6%A8%A1.jpg
https://whycan.com/files/members/6792/%E5%B0%8F%E6%A8%AA%E7%B1%B3LR2%E6%94%B9%E6%9C%BA1.jpg
https://whycan.com/files/members/6792/%E5%B0%8F%E6%A8%AA%E7%B1%B3LR2%E6%94%B9%E6%9C%BA1.jpg
https://whycan.com/files/members/6792/%E5%B0%8F%E6%A8%AA%E7%B1%B3LR2%E6%94%B9%E6%9C%BA2.jpg
https://whycan.com/files/members/6792/%E5%B0%8F%E6%A8%AA%E7%B1%B3LR2%E6%94%B9%E6%9C%BA3.jpg
离线
@司徒
好,那我换 UART0 试试。
离线
最早买到miyoo时候 还想有没有可能这个usb充电口可以接上外置手柄或者摇杆玩,
要是有什么改机方案可以实现这个功能,或者像八位堂无线手柄那样,把无线接收器内置到miyoo里面.
虽然屏幕小,但外接手柄摇杆也是一个乐趣不是
离线
@fullniz
F1C100S有支援USB Host,只是目前我修改的這份Kernel 4.14並沒有實作,雖然Lichee Nano 5.1x有支援,不過,等之後看看吧~
如果最终支持了usb 那就厉害了哈! 就可以外接键盘或者手柄玩了~
可以用大大的摇杆配上小小的miyoo wow~~~
离线
@司徒 我把 kernel 改成 uart0 可以看到 console 了,也可以正常使用 root 登录。
BTW:我开始把 uboot 也改成 uart0 ,启动不了,uboot 改回 uart1 才可以启动。
换成我的 rootfs 就报错了。
[ 0.680000] Waiting for root device /dev/mmcblk0p1...
[ 0.740000] mmc0: host does not support reading read-only switch, assuming write-enable
[ 0.760000] mmc0: new high speed SDHC card at address aaaa
[ 0.770000] mmcblk0: mmc0:aaaa SC32G 29.7 GiB
[ 0.790000] mmcblk0: p1 p2
[ 0.830000] VFS: Mounted root (vfat filesystem) readonly on device 179:1.
[ 0.850000] devtmpfs: mounted
[ 0.850000] Freeing unused kernel memory: 112K
[ 0.860000] This architecture does not have kernel memory protection.
[ 0.930000] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000ff00
[ 0.930000]
[ 0.930000] CPU: 0 PID: 1 Comm: mininit Not tainted 4.14.0-vegan+ #73
[ 0.930000] Hardware name: Allwinner suniv Family
[ 0.930000] Backtrace:
[ 0.930000] [<c000e244>] (dump_backtrace) from [<c000e560>] (show_stack+0x18/0x1c)
[ 0.930000] r7:c181bf60 r6:00000000 r5:c0316090 r4:00000000
[ 0.930000] [<c000e548>] (show_stack) from [<c023d728>] (dump_stack+0x20/0x28)
[ 0.930000] [<c023d708>] (dump_stack) from [<c00178d0>] (panic+0xbc/0x234)
[ 0.930000] [<c0017818>] (panic) from [<c0019134>] (do_exit+0x874/0x8a8)
[ 0.930000] r3:c181fda0 r2:c181fdac r1:0000ff00 r0:c02a1cdc
[ 0.930000] r7:c181bf60
[ 0.930000] [<c00188c0>] (do_exit) from [<c0019d28>] (do_group_exit+0x44/0xbc)
[ 0.930000] r7:000000f8
[ 0.930000] [<c0019ce4>] (do_group_exit) from [<c0019db8>] (SyS_exit_group+0x18/0x1c)
[ 0.930000] r5:0002e000 r4:0002e23c
[ 0.930000] [<c0019da0>] (SyS_exit_group) from [<c000a5c0>] (ret_fast_syscall+0x0/0x3c)
[ 0.930000] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000ff00
[ 0.930000]
离线
https://blog.csdn.net/chuanzhilong/article/details/52901973
我搜索到上面这个地址,里面说是 gcc 版本的问题导致了 未定义的指令。
离线
開啟 mininit debug level
16 #define dbg(...) LOG("<14>", __VA_ARGS__) 17 //#define dbg(...)
重新編譯,替換後, 你應該就可以知道原因~
原因找到了, rootfs 缺少 boot 目录,去 buildroot 新建这个目录重新打包就可以了。
但是出现了 dbus 的错误:
[ 0.860000] This architecture does not have kernel memory protection.
[ 0.890000] mininit: mininit 2.0.2
[ 0.900000] mininit: free loop device: 0
[ 0.910000] mininit: setting up loop: 'rootfs' via '/dev/loop0'
[ 0.920000] mininit: mounting 'rootfs' on '/root'
[ 0.960000] mininit: rootfs mounted on /root
[ 0.970000] mininit: moving '/dev' mount
[ 0.990000] mininit: root switch done
[ 1.000000] mininit: init: /sbin/init
[ 1.010000] mininit: starting /sbin/init
Starting logging: OK
read-only file system detected...done
Starting system message bus: dbus-daemon[47]: Failed to start message bus: Failed to open socket: Function not implemented
done
Starting network: ip: socket: Function not implemented
ip: socket: Function not implemented
FAIL
Welcome to Miyoo
miyoo login:
离线
是不是我的 buildroot 配置有问题?
我是:
cp devel/config_buildroot-2018.02.9 .config
make menuconfig
#打开 Filesystem images->squashfs root filesystem
make
离线
请问如果从0开发一个掌机得话,需要使用哪些技能?哪些程序?
目前已知:需要一个硬件,需要一个操作系统(linux/others),支持一些外设,屏幕、案件、声音、网络、磁盘等。
然后就是在应用软件上面,需要支持哪些库才比较好移植模拟器?目前已知SDL库是必备,还有其他的吗?希望补充。
还有就是这个制作得可行性如何?难度大吗?
离线
Kernel Network Driver 預設沒有編譯,對於這個問題,你有兩個解法可以選擇:
1. Enable Kernel Network Driver
2. Disable DBUS (/etc/init.d/xxx)
不過,即使出現這個錯誤,預設是不影響功能的~
谢谢指导,这机器打开 Network Driver 没作用吧?还是关闭 DBUS 更省事。
离线
@kendling
OK~另外,關於電流聲問題,我的FC3000壞掉了,目前重新下單一台,等機器到了後,我在看一下電流聲問題~
@jasonhu
如果要重新開發一台掌機,大致步驟如下:
1. 硬件評估(需要哪款CPU,哪些外設,外設規格是否可以在此CPU上實現)
2. 開發板評估可行性
3. 外殼規劃
4. 硬件原理圖
5. PCB設計
6. PCB確認
7. 移植系統和驅動(包含外設)
8. 移植模擬器和遊戲(SDL, SDL2, X11, Python, OpenGL...)
可行性,在第2步驟可以得到確認,難不難,看你自己怎麼想~
离线
感谢 @司徒 大神的细心指导,我对比了一下 jutleys 包的 rootfs 作了一些修改,已经完成替换自己的 rootfs 启动进入 GMenu2X 了。
构建 rootfs 方法如下:
1. 下载 buildroot-2018.02.9 版本代码。
2. 解压后使用 devel.zip 里面的 config_buildroot-2018.02.9 文件替换 .config 文件。
3. 运行 make menuconfig 并打开 [Filesystem images->squashfs root filesystem] 。
4. 运行 make 命令构建 rootfs ,如果报错请搜索解决,或参考我之前发的错误解决办法。
5. 删除 output/images 目录里所有文件。
6. 新建 output/target/boot 目录。
7. 把 output/target/etc/init.d 目录所有文件移至 output/target/etc/init.d/disabled 。
8. 把 devel.zip 里面的 main 文件复制到 output/target/etc 目录并给执行权限。
9. 修改 output/target/etc/inittab 为下面的内容。
10. 运行 make 命令构建 rootfs ,把 output/images/rootfs.squashfs 文件替换 SD 卡 FC3000 分区里的 rootfs 文件。
inittab 文件:
# /etc/inittab
#
# Copyright (C) 2001 Erik Andersen <andersen@codepoet.org>
#
# Note: BusyBox init doesn't support runlevels. The runlevels field is
# completely ignored by BusyBox init. If you want runlevels, use
# sysvinit.
#
# Format for each entry: <id>:<runlevels>:<action>:<process>
#
# id == tty to run on, or empty for /dev/console
# runlevels == ignored
# action == one of sysinit, respawn, askfirst, wait, and once
# process == program to run
# Startup the system
::sysinit:/bin/mount -t proc proc /proc
::sysinit:/bin/mount -o remount,ro /
::sysinit:/bin/mkdir -p /dev/pts
::sysinit:/bin/mkdir -p /dev/shm
::sysinit:/bin/mount -a
::sysinit:/bin/hostname -F /etc/hostname
::sysinit:/bin/mount /dev/mmcblk0p2 /mnt -t vfat -o rw,sync,utf8
::sysinit:/sbin/swapon /mnt/.swap.img
# now run any rc scripts
#::sysinit:/etc/init.d/rcS
tty1::respawn:/etc/main
# Put a getty on the serial port
console::respawn:/sbin/getty -L console 0 vt100 # GENERIC_SERIAL
# Stuff to do for the 3-finger salute
#::ctrlaltdel:/sbin/reboot
# Stuff to do before rebooting
#::shutdown:/etc/init.d/rcK
::shutdown:/sbin/swapoff -a
::shutdown:/bin/umount -a -r
离线
@司徒
我的最初想法是,用自己的软件体系,就是用自己写的操作系统,不用Linux,然后加应用程序,移植模拟器什么的。
当然了,应用程序也会去支持SDL,OPENGL什么的。
不过目前系统还在开发中,现在想的是系统未来会有这么个应用场景,就是制作一个开源掌机这个东西。
不知道这个可行性怎么样?感觉硬件什么的,我可能不会很关注,更关注的是软件上面的东西。
开源项目地址:https://toscode.gitee.com/BookOS/nxos
除此之外,就是制作非模拟器游戏,可以开发游戏后,直接在上面运行,像switch/psp一样。
最近编辑记录 jasonhu (2022-03-31 14:23:54)
离线
@kendling
感謝分享~你自己的努力造就你的成功~
@jasonhu
重複做一個Linux Kernel是不建議的,原因如下:
1. 製作時間拉長
2. 太多硬件問題無法考慮到
3. 要支援的東西太多了
4. 需要修復的Bug,最終會發現Linux Kernel目前都已經修好了
硬件專長的人看不見軟件問題,軟件專長的人看不見硬件問題,可不可行,你心中已經有把尺,我建議你把目標在訂小一點,先在RISC-V上可以跑你的Kernel,其餘之後再談,當然,這是我個人想法,至於如何做,決定權在你身上~
离线
@司徒
这个当然我知道,软件是需要挺久时间去做的。
1. 首先不是Linux kernel的复制。
2. 会制作成混合内核,一些功能放到用户态去。
3. 目前是可以跑risc-v64架构的
4. 开发掌机只是最开始的一个应用场景,后面还会有其它应用场景的。
5. 我之前是做过可以跑图形界面的系统的,也支持sdl,所以技术方面是行得通的,只是需要花时间。
6. 我是真的想尝试去做一些,可能会失败,但是总得尝试嘛~比较这个只是个人爱好。
7. 很感谢你耐心的回复我,哈哈~
离线
@jasonhu
加油~只要朝自己喜愛的方向努力,最終都是可以開花結果的~
感谢大佬!
离线
@司徒 为什么 FC3000 只要接了 RX 就无法开机,不管是 UART0 还是 UART1。
开机后再接就没事。
离线
@kendling 群里有人发现只要把亮度开到100,电流音就没了
离线
@kendling 群里有人发现只要把亮度开到100,电流音就没了
这么神奇?我还真没试过。
离线
@司徒 能不能把ips_fc3000_v1屏信息改在fc3000_v1_v2_flash升级程序里面
离线
@光明之歌
如果是這樣,原廠系統也會有電流聲才對~@kendling
接上RX無法開機是因為RX腳位提供弱電流給F1C100S,導致F1C100S一直處於執行狀態,意思就是沒有斷電的意思~
原来是这个原因,我也怀疑是低电平的问题。
我也试了,亮度设置 100 确实没有电流声了。原厂系统没有设置亮度的功能,可能一直都是 100 亮度。
离线
@zjzixuan
不好意思,不太了解你說的意思,你可以詳細說明一下嗎?
我想他是想麻烦你更新一下刷系统的包支持 ips 屏吧。
离线
@光明之歌
如果是這樣,原廠系統也會有電流聲才對~@kendling
接上RX無法開機是因為RX腳位提供弱電流給F1C100S,導致F1C100S一直處於執行狀態,意思就是沒有斷電的意思~
原厂系统调不了亮度,有可能是固定在最亮的关系。
离线
说起来这机器没有3.5耳机孔,插AV线那个口有什么比较方便的方法能转接成耳机吗?也不知道在开源系统下这个口还能不能用
离线
@kendling 我刷了fc3000_ips_od_jutleys_no_roms电量显示错误 玩了很久的游戏指示灯变红的时候插充电器充电 充了大概5小时开不了机了 一股烧焦的味
我的机子就挂了
经检测是电源IC坏了 插充电器指示灯不亮 装干电池能开机 但耗电很快
最近编辑记录 zjzixuan (2022-04-05 10:40:07)
离线
@司徒 把ips_fc3000_v1固件里面IPS屏的信息代码提取出来 替换掉fc3000_v1_v2_flash固件里面的TFT屏的信息代码
离线
@zjzixuan
我没有试过玩到没电,我这边充电和使用都正常。
离线
@kendling 大佬fc3000的电源ic是哪一个啊 买什么型号替换
离线
@司徒
又换回 TN 屏了?我试试不装屏幕开机看有没电流声。
另外,我手上的 ips fc3000 是 v1 系统,没有 ngoego 模拟器的,可以试一下我抓到的初始化资料。
@zjzixuan 还可以看看 usb 下面那个小 IC 有没烧坏,丝印 7S 。司徒圈那个是 LTH7 。
离线
@司徒@kendling 两位大佬我买一部v2的机子赞助你提取固件 请问怎么联系你们
离线
@kendling
我新買的IPS FC3000是V2版本,然後測試下你的fc3000_ips_od_jutleys_no_roms.img.7z,發現進入OD後,背光跟聲音都有,但是,屏沒有顯示~@zjzixuan
感謝你的好意,目前不需要~
@司徒 那就是屏幕初始化资料不同了,你那个 IPS 屏有点像旧的 TN 屏。你确定可视角度是 IPS ? 我看了你的 IPS 版拆机页面没有拍可视角度。
@zjzixuan 感謝你的好意,就目前的情况来看:就算新买一部 IPS ,屏幕也未必和你手上的一致。如果屏幕不一样,重新抓屏幕初始化资料还是不能适配你手上的那部 FC3000 。
离线
@zjzixuan 你可以拆开看看,屏幕是否和我的一样,有个 35to24 的板子。如果一样可以试试下面这个包是否能驱动屏:
https://github.com/kendling/my_bin_file/releases/download/v1.0/fc3000_ips_od_jutleys_no_roms.img.7z
离线
@司徒 指导一下那个电流声要怎么分析原因?我尝试解决。
离线
@kendling 我的屏和你的一模一样 用了你提供的固件可以正常使用 不完美的地方是屏的亮度不调到最大声音就有电流声
离线
@zjzixuan
更正一下,usb 插座下面的小芯片应该是丝印 SL ,5V1A 的二极管。
参考这个链接:https://item.taobao.com/item.htm?id=671743757933
离线
@kendling 我的屏和你的一模一样 用了你提供的固件可以正常使用 不完美的地方是屏的亮度不调到最大声音就有电流声
那我换一下 v1_v2_flash 的内核试试。
离线
@kendling 我用万能表测试了一下那个sl二极管 正反测试结果是178和870 应该是好的 我先买那个电源管理芯片关上看看
我的屏是RB411-11A
Q021E
最近编辑记录 zjzixuan (2022-04-09 09:30:15)
离线
@kendling 我用万能表测试了一下那个sl二极管 正反测试结果是178和870 应该是好的 我先买那个电源管理芯片关上看看
我的屏是RB411-11A
Q021E
@zjzixuan
你用 fc3000_ips_od_jutleys_no_roms.img.7z 可以正常显示就说明屏幕和我的使用相同的初始化资料。
刚看了一下 v1_v2_flash.img,司徒把所有文档都写到预留给 uboot 的未分区空间里了。
我没有这些文档,暂时无法更新这个包。
离线
这个机器最大的槽点就是屏幕实在太烂了!
离线
这个机器最大的槽点就是屏幕实在太烂了!
我觉得 ips 屏还好吧,拆开看显示效果很好。整机看交易差估计是封装的问题,改全贴合肯定可以提升显示效果。
另外还可以换高分辨率的屏。
离线
劳驾问下小横米的喇叭规格淘宝如何搜啊
不知道什么情况不响了,这也太脆弱了,也可能是我运气好
要是买不到大小一样的 我就买个小的,就是不知道怎么搜索这个喇叭
离线
@fullniz
喇叭應該是找個形狀類似的就可以,小横米的喇叭规格不知道~
@kendling
我新買的FC3000 IPS屏(韌體是V2版本)
嘗試解析電流聲問題
依據網友測試,發現電流聲音跟LCD背光設定有關係,只要將LCD背光亮度調到100%,就不會有電流聲音,於是,司徒看一下PCB線路,發現聲音輸出是走在LCD背光電路旁邊
LCD背光使用PWM方式控制,亮度在100%時,輸出固定維持在高電位狀態,因此,不會有干擾的狀況發生,這也是為何原廠系統是固定在此亮度的原因
XS4890(LM4890)腳位
司徒看了一下PCB,發現FC3000使用的電路如下:
雖然目前看來,應該是輸出遭到EM干擾所造成的問題,不過,如果是輸入源遭到干擾,可以考慮改造成差分放大電路
解法,大約有幾個思路:
軟體思考:
1. 可以依據LCD背光的頻率,疊加對應的波形,類似主動式噪音消除法,可以在聲音驅動實作
硬體思考:
1. 將啦叭輸出線路切斷(PCB),使用外圍有接地包覆的線材取代
2. 使用鐵片包覆LCD背光電路並且將鐵片接地
3. 將喇叭移到下方
离线
@司徒 分析得好深入,可以当教学案例了。
离线
@aozima
頻率跟亮度呈現正比,所以越高頻率,代表越亮,如果要固定亮度,則代表PWM失去作用~@kendling
我們需要勇者幫忙做實驗~
@司徒
我看看啥时候有空做做实验吧。
离线
@kendling
OK,不用有壓力~
@司徒 学习状态,没压力。我本来是想尝试移植最新版 uboot 的(用现有的 uboot 代码参照修改,目前还没编译通过),现在先来做实验吧。
离线
小miyoo 的 ps1模拟器能更新下吗 玩不了nbalive99会卡界面, 看大米的ps模拟器就能玩
离线
@司徒
FC3000 十字键垫高的 STL 文件可以提供一下吗?
离线
离线
谢谢,我看看去某创打样要多少钱。
离线
谢谢,我看看去某创打样要多少钱。
某创打样 2元/件,邮费至少要 6 元。。还是算了。
离线
可以考慮買一台便宜的FDM 3D Printer,這樣比較有樂趣,會開啟你很多奇特製作的想法~
感谢推荐,这个后面再说吧。FC3000 电流声的问题我要周六才有时间做实验。
离线
@司徒
对了,那个外国友人成功点亮他的 ips 屏了没?
离线
q90 刷这个横米修复系统 卡开机蓝屏
离线
@司徒
第一个测试结果:
直接从功率放大器引线到喇叭,电流声还是存在,没有变化。
这个是不是代表和背光电路相关性不大了?
还是说,进入功率放大器之前就已经被干扰了?
离线
@kendling
後來老外應該是沒有點亮IPS屏,不然我應該是可以知道~哈~
直接从功率放大器引线到喇叭,但是,你PCB線有斷開嗎 ?原本拉出去的PCB線也要斷開,不然,還是會被干擾回去~
@司徒
PCB 倒是没有断开哦。:) 我原来是想做无损实验,所以只是用测试夹在功率放大器引线出来而已。那我再试试割断 PCB 之后还会不会有影响吧。
离线
报告个问题,我的ips版fc3000用fc3000_ips_od_jutleys_no_roms.img.7z可以启动可以玩,就是屏幕有时有残影,而且目视刷新率没有60hz,画面有撕裂,和tft lcd版比较非常明显。
离线
我后悔没备份此贴子,很多图片都死图了 。
离线
我后悔没备份此贴子,很多图片都死图了 。
司徒的个人网站有有他的研究记录。
离线
@kendling 哪个模拟器可以玩igs三国战纪3
离线
@kendling 哪个模拟器可以玩igs三国战纪3
@zjzixuan
你试试 MAME 。
离线
@司徒
测试二:
功率放大器输出割断之后直接引线到喇叭没有声音了,是否线路后面还有元件?
我测过两条引线有大概有 20 千欧电阻,应该没有引错(我用测试夹引线)。
我看再找时间焊接引线试试吧。
离线
信息量太大,收藏备用!
离线
@kendling
應該不會,官方也是建議這樣接的,你拍下你的PCB~
@司徒
昨天末没空,我晚上拍一下。我
测量了一下,接喇叭的是功率放大器向着电池方向最外面 2 个引脚。
我就是所这两个引脚外面的引线割断了,直接在引脚处接喇叭。
离线
@司徒
我割的时候没有留意靠 tf 卡这边的引脚是连着电阻的。
离线
@司徒
问一下大大,我的横米miyoo的屏幕漏液可以用这个屏幕代替吗
最近编辑记录 k3355792 (2022-04-29 19:49:36)
离线
还要看屏IC是否7789,有否TE同步脚位,没有的只能用回之前原机的旧系统且画面会撕裂,还要制作排线接口转接的PCB小板子,绝不是直插上能用的。司徒后期的新系统需TE配合。但尺寸、IC、信号类型符合并有TE的屏不易找的,基本是要定制
最近编辑记录 huanxing (2022-04-30 08:44:31)
离线
@司徒
测试三:
还是有电流声!
离线
@kendling
感謝你的測試,PCB部分是從功放IC連接到耳機孔,所以耳機孔那端也要斷開,因為餘線還是靠在LCD背光旁邊,會從餘線導回耳機孔,耳機孔是連接到F1C100S的LR音頻腳位~
@k3355792
你這個屏的腳位不對,你可以看下這個原理圖:
https://github.com/steward-fu/pocketgo/releases/download/v1.0/schematic.pdf
离线
@司徒
感谢大大,理解了
离线
@司徒
测试四:
电流声依旧!
下面是我割 PCB 的位置,不知道是不是位置有错?
离线
@kendling
相當感謝你的實驗,我原本的用意只是想把你機器搞壞,然後,你就自我放棄,想不到你是殺不死的蟑螂,感動上天,馬祖託夢叫司徒需要關心一下~
接著司徒開始嘗試解決噪音問題,首先,標注相關線路
背面
1:Vo2割斷,下半部份接地
2:Vo1割斷,下半部份接地
3:Vo2、Vo1、GND接在一起
4:4.7v割斷
5:4.7v下半部份接地
6:4.7v下半部份接地
7:GND接MicroSD的GND(這個可以省略)
8:Vo1割斷
9:Vo2割斷
LM4890第5腳接喇叭
LM4890第6腳連接到加密IC第一腳位3.3V
LM4890第8腳接喇叭
Vo2下半部份接地
連接示波器量測訊號(需要掛上喇叭負載)
官方系統開機後,量測的喇叭訊號
OD系統開機後,量測的喇叭訊號(4.7v割斷,但是沒有接地)
OD系統開機後,量測的喇叭訊號(4.7v割斷,餘線部份接地)
從量測到的訊號,可以發現4.7v那根線是一個關鍵性的影響,因為有一個很穩定影響波形,這個波形應該就是LCD背光震盪電路,因此,玩家也可以先從4.7v割斷開始改造,目前司徒測試改造後的電流聲音,已經跟原廠系統幾乎一樣
离线
横米玩着玩着会时不时出"噗"的一声音量很大的杂音:不知道是喇叭不好还是像这个一样或其他干扰?
我拆开看到主芯片f1c100s上方还有一个8管脚芯片空白未焊,
不知道是否为了节省成本少焊了些应有原件和使用了些低端原件,
要是有办法提高音质减少杂音尤其是那很突兀的"噗"就好了
离线
@司徒
感谢回答!果然还是我没做够。
电路基础薄弱啊,是该补补了。
离线
@aozima
頻率跟亮度呈現正比,所以越高頻率,代表越亮,如果要固定亮度,則代表PWM失去作用~@kendling
我們需要勇者幫忙做實驗~
大神,一般情况下: 屏幕亮度应该跟PWM的占空比成正比吧
离线
@司徒
对了,司徒,你找到的这个 4.7v 是不是屏幕的供电电压?直接接地会不会影响屏幕的供电?
离线
屏幕供電(LED或核心電壓)一般來說不會使用不穩定的電壓(如:電池會隨著使用時間下降電壓),一般都是使用背光IC或者電源切換IC,省電路元件的可能會使用MOSFET(適用於並聯LED),而且根據之前量測的結果,FC3000的屏不是使用電池的4.7v,而根據LM4890手冊描述,LM4890可以工作的電壓是2.2~5.5v,LM4890手冊有做一些詳細測試數據,對於FC3000來說,把LM4890電壓接到3.3v,是可行的,所以目前看來,這個雜訊,很大一部分是從背光電路經由4.7v電源線灌入LM4890供放IC,所以我把電源線割斷,中間部分接地做屏蔽用途~
离线
@司徒
感谢回答。学习了。
另外:如果不把 LM4890 的电压接到 3.3v,在其 4.7v 引入 LM4890 之前增加电容进行滤波,理论上是否可解决此问题?
离线
真是强到全宇宙了啊 。。。。各种飞线 对于我这种手残党来说 只能看看图片了 呵呵
离线
@kendling
對~這個可以測試下~
接多大的电容应该怎么计算?
离线
@kendling
一般旁路電容使用1uF、0.1uF、0.01uF,你可以在功放的電源接腳做測試~
好,我抽空测试一下。
离线
@geekchun this link with modified steward source for q8 LCD has expired https://pan.baidu.com/s/19snjAws6KQ8AXpDDyKzs_g
提取码:r2yy
Could you reupload these sources?
Thanks
离线
@tiopex
当然可以
链接:https://pan.baidu.com/s/1qOgtu5qJJO5_W9pS6_wRYA
提取码:grko
离线
@geekchun
Thank you very much.
Do you have also uboot sources used in this img, or diff (patch) with fix video?
I'm working on open source cfw for q8 and sup m3 console basing on miyoo cfw, everything's works fine (keymap, volume control) except video problem with q8.
Here is the kernel source on which I'm working: https://github.com/tiopex/kernel
Thanks.
最近编辑记录 tiopex (2022-05-28 22:50:53)
离线
离线
@tiopex
May I know LCD works or not on your Q8 handheld after uses the image file provided by geekchun ?
If not work, according to the image you provided, I guess the model should be GC9306 or ST7789.
In your GitHub repo, the initialization code of ST7789 was located in panel_init() in r61520fb.c file.
You can try it firstly.
离线
The LCD model is same as https://whycan.com/t_6647_2.html#p65793
离线
@司徒
Yes, it's works with R61520 but some colors are saturated with grain. On img from @geekchun all colors are fine with no issues. Also when I use uboot from @geekchun img and my kernel, colors also are fine.
On uboot from https://github.com/steward-fu/q8 also same colors issues saturated with grain
离线
The LCD model is same as https://whycan.com/t_6647_2.html#p65793
Which one is better you think ? IDA Pro or Ollydbg ?
离线
@司徒
司徒先生好,代码在我笔记本上,没有带回家,明天上班我会发出来
离线
@司徒
如您所说,驱动IC正是GC9306,我参考的初始化序列如下,我记得只修改了旋转方向,您可以先参考下,修改后的我明天发出来
//------------- display control setting -----------------------//
LCD_WR_REG(0xfe);
LCD_WR_REG(0xef);
LCD_WR_REG(0x36);
// LCD_WR_DATA(0x48); // Y=0 X=1 V=0 L=0 0x48
LCD_WR_DATA(0x98); // Y=1 X=0 V=0 L=1 0x98
LCD_WR_REG(0x3a);
LCD_WR_DATA(0x05);
LCD_WR_REG(0x35);
LCD_WR_DATA(0x00);
LCD_WR_REG(0x44);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x60);
//------end display control setting----//
//------Power Control Registers Initial----//
LCD_WR_REG(0xa4);
LCD_WR_DATA(0x44);
LCD_WR_DATA(0x44);
LCD_WR_REG(0xa5);
LCD_WR_DATA(0x42);
LCD_WR_DATA(0x42);
LCD_WR_REG(0xaa);
LCD_WR_DATA(0x88);
LCD_WR_DATA(0x88);
LCD_WR_REG(0xe8);
LCD_WR_DATA(0x11);
LCD_WR_DATA(0x71);
LCD_WR_REG(0xe3);
LCD_WR_DATA(0x01);
LCD_WR_DATA(0x10);
LCD_WR_REG(0xff);
LCD_WR_DATA(0x61);
LCD_WR_REG(0xAC);
LCD_WR_DATA(0x00);
LCD_WR_REG(0xAe);
LCD_WR_DATA(0x2b);
LCD_WR_REG(0xAd);
LCD_WR_DATA(0x33);
LCD_WR_REG(0xAf);
LCD_WR_DATA(0x55);
LCD_WR_REG(0xa6);
LCD_WR_DATA(0x2a);
LCD_WR_DATA(0x2a);
LCD_WR_REG(0xa7);
LCD_WR_DATA(0x2b);
LCD_WR_DATA(0x2b);
LCD_WR_REG(0xa8);
LCD_WR_DATA(0x18);
LCD_WR_DATA(0x18);
LCD_WR_REG(0xa9);
LCD_WR_DATA(0x2a);
LCD_WR_DATA(0x2a);
//-----display window 240X320---------//
LCD_WR_REG(0x2a);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0xef);
LCD_WR_REG(0x2b); // 0x002B = 239
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x01);
LCD_WR_DATA(0x3f); // 0x013F = 319
// LCD_WR_REG(0x2c);
//--------end display window --------------//
//------------gamma setting------------------//
LCD_WR_REG(0xf0);
LCD_WR_DATA(0x02);
LCD_WR_DATA(0x01);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x02);
LCD_WR_DATA(0x09);
LCD_WR_REG(0xf1);
LCD_WR_DATA(0x01);
LCD_WR_DATA(0x02);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x11);
LCD_WR_DATA(0x1c);
LCD_WR_DATA(0x15);
LCD_WR_REG(0xf2);
LCD_WR_DATA(0x0a);
LCD_WR_DATA(0x07);
LCD_WR_DATA(0x29);
LCD_WR_DATA(0x04);
LCD_WR_DATA(0x04);
LCD_WR_DATA(0x38);//v43n 39
LCD_WR_REG(0xf3);
LCD_WR_DATA(0x15);
LCD_WR_DATA(0x0d);
LCD_WR_DATA(0x55);
LCD_WR_DATA(0x04);
LCD_WR_DATA(0x03);
LCD_WR_DATA(0x65);//v43p 66
LCD_WR_REG(0xf4);
LCD_WR_DATA(0x0f);//v50n
LCD_WR_DATA(0x1d);//v57n
LCD_WR_DATA(0x1e);//v59n
LCD_WR_DATA(0x0a);//v61n 0b
LCD_WR_DATA(0x0d);//v62n 0d
LCD_WR_DATA(0x0f);
LCD_WR_REG(0xf5);
LCD_WR_DATA(0x05);//v50p
LCD_WR_DATA(0x12);//v57p
LCD_WR_DATA(0x11);//v59p
LCD_WR_DATA(0x34);//v61p 35
LCD_WR_DATA(0x34);//v62p 34
LCD_WR_DATA(0x0f);
//-------end gamma setting----//
LCD_WR_REG(0x11); // SleepOut
HAL_Delay(120);
LCD_WR_REG(0x29); // Display ON
LCD_WR_REG(0x2c);
最近编辑记录 geekchun (2022-05-29 15:55:18)
离线
@geekchun
只改旋轉方向 , 該不會是我之前貼地去改的吧 .....
那個有的刷完的確是上下顛倒的 ....
离线
@lzgame02
不太明白你说的
离线
@geekchun @司徒
Thank you very much for your help, everything works fine.
离线
@lzgame02
小強~好久不見了~IDA Pro比適合用於靜態分析,OllyDbg比較適合用於Windows PE檔案做動態分析,兩個都是很經典好用,如果可以不要逆向,那是最好,因為太花時間了,對於時間上來說,不見得划算,當然,不得已,那只能逆向了~
@tiopex
Welcome~
I am happy you can find the solution in this website.
The latest revised kernel source has been uploaded by geekchun today.
You can download and test it to see whether it has more better than previous one or not.
Backup source code has been put on: https://github.com/steward-fu/q8/releases/download/v1.1/lcd_q8_tf28qs006a.7z
@geekchun
相當感謝你的幫助,也感謝你開源出來讓大家使用,感謝~
离线
一直在享用司徒先生做的系统,今天终于也能做出一点点细微的贡献,相当开心哈哈哈
离线
@司徒
XYC Q8 的套娃機 SUP M3 基本上也成了 .....
這套娃好像淘寶上一堆 , 霸王小子 , 酷孩 RS-77 也是的樣子 ......
上面那老外的 github 上好像有開源的樣子 .....
既然驅動應該都有了 , 那 ..... 剩下的就 ..... 交給掌機買的多的處理了 .....
畢竟在下也只有一台 Q8 而已 ....
最近编辑记录 lzgame02 (2022-06-03 21:19:45)
离线
@lzgame02
牛哇~想收集全系列套娃机器
离线
@lzgame02
牛哇~想收集全系列套娃机器
酷孩的 Rs-77 看起來跟 m3/q8 屬同一類的套娃 , 群內有人刷成功了 ....
上面那老外 github 上的固件看起來也成 , 應該跟 q8 m3 螢幕驅動都差不多
最近编辑记录 lzgame02 (2022-06-06 11:12:46)
离线
@lzgame02
可惜屏幕素质真的感人,有时间找找同IC同尺寸的IPS屏替代
离线
@lzgame02
可惜屏幕素质真的感人,有时间找找同IC同尺寸的IPS屏替代
這台以前我買過 , 後來丟了換 Q8 .....
螢幕作工都不怎樣 , 電池還是強力膠黏在基板後面的 ....
感覺還是買可換電池的 Q8 / M3 之類的
或是高檔些的會比較好 ....
离线
@司徒
你好,
我需要为这个 IPS 显示器“WL-28H105-A1”刷固件。有人可以把文件发给我恢复吗?
我的单位死了,只能在电视上播放。非常感谢
离线
@司徒 大佬啥时候出掌机啊 只有大佬你在用心研究这开源掌机 我们大家都欠你一个掌机
离线
@txusevas
Thank you for providing stock rom dumped from WL-28H105-A1 panel.
Restore back to stock rom for FC3000 with WL-28H105-A1 panel: https://github.com/steward-fu/fc3000/releases/download/v1.0/WL-28H105-A1_restore.img
Steps:
1. clone WL-28H105-A1_restore.img into microsd
2. insert MicroSD into your FC3000
3. power on (blank screen)
4. it starts to write stock rom from microsd automatically (take about 10 mins)
5. when screen backlight starts to blink (on ~ off ~ on ~ off...)
6. remove microsd and then reboot your IPS FC3000
离线
@司徒
Thank you so much for all!
Is it possible to change screen brightness by adding a variable resistor?
离线
整理了一下先前抓屏幕初始化资料的过程:https://myvnet.com/p/how-to-use-dla/
自己做一个总结,也方便其他人入门逻辑分析仪的使用。
抓完初始化资料之后曾整理了 2 周,快结束的时候被别的事情拖了一下导致懒癌发作,一直拖到现在才完成。
离线
@司徒 大神你好,我自己做了块板子。烧录pocketgo_od_jckl_no_roms.img这个镜像屏幕正常,我用源码编译出来的屏幕白屏,会是哪方面的原因呢?用github上的镜像串口不能输入,我编译的串口能输入。只编译了内核、源码。
ARCH=arm CROSS_COMPILE=arm-linux- make suniv_defconfig
./run.sh pocketgo
./run.sh /dev/sdb pocketgo
离线
板子丑,要不是想验证下,PCB回来差点直接丢了。
用GitHub镜像启动
用我编译的镜像
启动log
F1C200S SPL Loader
DRAM:156 MHz, 64 MB
Boot: MMC1
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 4.14.0-vegan (wj@debian) (gcc version 7.3.0 (Buildroot 2018.02.9)) #70 Mon Jul 4 18:49:51 HKT 2022
[ 0.000000] CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=0005317f
[ 0.000000] CPU: VIVT data cache, VIVT instruction cache
[ 0.000000] OF: fdt: Machine model: allwinner suniv handheld
[ 0.000000] Memory policy: Data cache writeback
[ 0.000000] random: fast init done
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 16256
[ 0.000000] Kernel command line: rootwait root=/dev/mmcblk0p1 ro fstype=vfat init=/mininit -- pocketgo
[ 0.000000] suniv model: pocketgo
[ 0.000000] PID hash table entries: 256 (order: -2, 1024 bytes)
[ 0.000000] Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
[ 0.000000] Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
[ 0.000000] Memory: 61612K/65536K available (2296K kernel code, 103K rwdata, 544K rodata, 112K init, 188K bss, 3924K reserved, 0K cma-reserved)
[ 0.000000] Virtual kernel memory layout:
[ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB)
[ 0.000000] fixmap : 0xffc00000 - 0xfff00000 (3072 kB)
[ 0.000000] vmalloc : 0xc4800000 - 0xff800000 ( 944 MB)
[ 0.000000] lowmem : 0xc0000000 - 0xc4000000 ( 64 MB)
[ 0.000000] modules : 0xbf000000 - 0xc0000000 ( 16 MB)
[ 0.000000] .text : 0xc0008000 - 0xc0246600 (2298 kB)
[ 0.000000] .init : 0xc02d0000 - 0xc02ec000 ( 112 kB)
[ 0.000000] .data : 0xc02ec000 - 0xc0305d00 ( 104 kB)
[ 0.000000] .bss : 0xc0307ce0 - 0xc0336f9c ( 189 kB)
[ 0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
[ 0.000000] clocksource: timer: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
[ 0.000000] sched_clock: 32 bits at 100 Hz, resolution 10000000ns, wraps every 21474836475000000ns
[ 0.000000] Console: colour dummy device 80x30
[ 0.000000] console [tty0] enabled
[ 0.070000] Calibrating delay loop... 203.16 BogoMIPS (lpj=1015808)
[ 0.070000] pid_max: default: 32768 minimum: 301
[ 0.070000] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.070000] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.070000] CPU: Testing write buffer coherency: ok
[ 0.070000] Setting up static identity map for 0x80008400 - 0x8000843c
[ 0.070000] devtmpfs: initialized
[ 0.070000] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[ 0.080000] futex hash table entries: 256 (order: -1, 3072 bytes)
[ 0.080000] pinctrl core: initialized pinctrl subsystem
[ 0.080000] DMA: preallocated 256 KiB pool for atomic coherent allocations
[ 0.090000] SCSI subsystem initialized
[ 0.090000] Advanced Linux Sound Architecture Driver Initialized.
[ 0.090000] clocksource: Switched to clocksource timer
[ 0.120000] workingset: timestamp_bits=30 max_order=14 bucket_order=0
[ 0.120000] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[ 0.120000] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)
[ 0.120000] io scheduler noop registered
[ 0.120000] io scheduler deadline registered
[ 0.120000] io scheduler cfq registered (default)
[ 0.120000] io scheduler mq-deadline registered
[ 0.120000] io scheduler kyber registered
[ 0.130000] suniv-pinctrl 1c20800.pinctrl: initialized sunXi PIO driver
[ 0.130000] pwm-backlight backlight: backlight supply power not found, using dummy regulator
[ 0.170000] Console: switching to colour frame buffer device 40x30
[ 0.180000] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
[ 0.200000] 1c25400.serial: ttyS1 at MMIO 0x1c25400 (irq = 23, base_baud = 6250000) is a 16550A
[ 0.500000] console [ttyS1] enabled
[ 0.510000] loop: module loaded
[ 0.510000] SCSI Media Changer driver v0.25
[ 0.520000] input: suniv-keypad as /devices/virtual/input/input0
[ 0.530000] set pocketgo keypad handler
[ 0.540000] sunxi-wdt 1c20ca0.watchdog: Watchdog enabled (timeout=16 sec, nowayout=0)
[ 0.610000] sunxi-mmc 1c0f000.mmc: base:0xc48f7000 irq:18
[ 0.620000] suniv audio driver soc:codec@1c22000: soc:codec@1c22000 <-> soc:codec@1c22000 mapping ok
[ 0.640000] ALSA device list:
[ 0.640000] #0: suniv audio card
[ 0.650000] Waiting for root device /dev/mmcblk0p1...
[ 0.700000] mmc0: host does not support reading read-only switch, assuming write-enable
[ 0.710000] mmc0: new SDHC card at address 0001
[ 0.720000] mmcblk0: mmc0:0001 SD8GB 7.28 GiB
[ 0.730000] mmcblk0: p1 p2
[ 0.770000] VFS: Mounted root (vfat filesystem) readonly on device 179:1.
[ 0.780000] devtmpfs: mounted
[ 0.790000] Freeing unused kernel memory: 112K
[ 0.800000] This architecture does not have kernel memory protection.
[ 1.570000] FAT-fs (mmcblk0p2): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
[ 3.270000] Adding 262140k swap on /mnt/.swap.img. Priority:-2 extents:1 across:262140k SS
Welcome to Miyoo
miyoo login: root
Jun 25 16:33:02 login[31]: root login on 'console'
# top
Mem: 18156K used, 43568K free, 4K shrd, 2780K buff, 9524K cached
CPU: 7% usr 7% sys 0% nic 84% idle 0% io 0% irq 0% sirq
Load average: 0.16 0.03 0.01 1/27 40
PID PPID USER STAT VSZ %VSZ %CPU COMMAND
40 31 root R 1528 2% 15% top
37 30 root S 8024 13% 0% ./gmenu2x
32 30 root S 2292 4% 0% /usr/bin/daemon
31 1 root S 1536 2% 0% -sh
1 0 root S 1532 2% 0% init
30 1 root S 1532 2% 0% {main} /bin/sh /etc/main
7 2 root SW 0 0% 0% [ksoftirqd/0]
19 2 root SW 0 0% 0% [mmcqd/0]
21 2 root SW< 0 0% 0% [loop0]
14 2 root IW 0 0% 0% [kworker/0:1]
20 2 root IW< 0 0% 0% [kworker/0:1H]
8 2 root SW 0 0% 0% [kdevtmpfs]
3 2 root IW 0 0% 0% [kworker/0:0]
2 0 root SW 0 0% 0% [kthreadd]
15 2 root SW 0 0% 0% [irq/18-sunxi-mm]
4 2 root IW< 0 0% 0% [kworker/0:0H]
5 2 root IW 0 0% 0% [kworker/u2:0]
18 2 root IW 0 0% 0% [kworker/0:2]
6 2 root IW< 0 0% 0% [mm_percpu_wq]
16 2 root IW 0 0% 0% [kworker/u2:1]
#
附上源文件,KICAD的
F1C2.7z
最近编辑记录 暗影 (2022-07-05 12:29:04)
离线
。
应该是没有了。我手欠改了按键引脚,所以要重新编译。上面图片的最下方有原理图PCB的文件,KICAD5.0的。原理图我转PDF了。Printing 打印原理图.pdf
最近编辑记录 暗影 (2022-07-05 21:19:34)
离线
看起来是这样改了,明天试下。
static irqreturn_t lcdc_irq_handler(int irq, void *arg)
{
// if((suniv_variant == 1) || (suniv_variant == 2)){
// flip_lcd(arg);
// }
flip_lcd(arg);
suniv_clrbits(iomm.lcdc + TCON_INT_REG0, (1 << 15));
return IRQ_HANDLED;
}
离线
你修改下如下源代碼, 讓LCD IRQ也可以掃屏試試~
drivers/video/fbdev/sunivfb.c
370 static irqreturn_t lcdc_irq_handler(int irq, void *arg)
371 {
372 //if((suniv_variant == 1) || (suniv_variant == 2)){
373 flip_lcd(arg);
374 //}
375 suniv_clrbits(iomm.lcdc + TCON_INT_REG0, (1 << 15));
376 return IRQ_HANDLED;
377 }
离线
还是白屏,我烧录能显示的那个镜像,示波器在TE脚上测到了60Hz的信号。开机logo看起来在uboot阶段,我编译的是一直没显示,uboot里没找到显示相关代码。
离线
好的,谢谢。
离线
小弟想上來發問, 小橫米跟FC3000幾乎相同,但FC3000上的FBA A320卻無法按熱鍵跳出遊戲,有爬文在前面司徒兄有提到要重新編譯,但小弟對這個不太懂,除了重新編譯以外還有其他方法嗎?感謝各位
离线
司徒兄,想請教一下有沒有FC3000 IPS版V1刷V2的映像檔,上面的文只有TFT版的,我下載後放入記憶卡開機只有黑畫面,謝謝
离线
hi there, i have bricked my v1 old version, was trying to dump the stock rom but used a flasher image instead.
does anybody have the stock rom from the v1 old version (M800 cpu, tft t2812-m106-24c-7d) or can anyone point me in a direction to port the linux to this device?
thank you very much
离线
@司徒 最近入了一个 FC3000 V2, 说是 IPS 屏,拆机发现屏的型号是 T2812-M106-024C-7D , 网上查得驱动 IC 型号为 HX8347, 不知是否对你有帮助
i have the same model, my cpu is M800 and i bricked mine, i need help, the stock v1 rom or how i can port the linux over
离线
@neotendo
Q1: does anybody have the stock rom from the v1 old version ?
A1: As I known, we don't have such backup rom for you to restore your device back to normal. If you can find someone has the model as yours, I can provide dump progam to you and then you can try to dump it. I think this is what we can help on.
Q2: can anyone point me in a direction to port the linux to this device ?
A2: Sure, we can. But before porting Linux into your device, you need known which LCD model is used in your device.
So, what is your next step ?
离线
@Situ
A1: Thank you very much, maybe i can find someone with the same model, a dump tool would be handy.
A2: my device has an tft display i think (T2812-M106-24C-7D, maybe an HX8347 driver) cpu is M800.
i would be very grateful if you would help me there at least to have linux on it
thank you
最近编辑记录 neotendo (2022-08-22 18:28:52)
离线
@neotendo
I have same model but already bricks by mistake, just drop it.
sorry can't help you
离线
@Hox
Yes, I saw it, that's why I didn't even ask you. I accidentally bricked mine too. I thought I started a dump program, but then it was an ips flasher. I hope that I can at least get linux running on it through situ before I throw it away
离线
@neotendo
[Q1] Thank you very much, maybe i can find someone with the same model, a dump tool would be handy.
[A1]
Here is the dump tool you can use to dump firmware from another FC3000:
https://github.com/steward-fu/fc3000/releases/download/v1.0/ips_fc3000_dump_0627_1.img.7z
Step 1: extract ips_fc3000_dump_0627_1.img.7z
Step 2: flash image into MicroSD as the following command
$ sudo dd if=ips_fc3000_dump_0627_1.img of=/dev/sdX bs=1M
Step 3: put this MicroSD into another FC3000 and then power on
Step 4: wait for 10 minutes and then power off
Step 5: provide v1rom.img back to me and I will create restore tool for you
[Q2] i would be very grateful if you would help me there at least to have linux on it
[A2]
It is easy for you to port Linux OS into your FC3000 if leverage existing source code.
So, here is what you need: https://github.com/steward-fu/fc3000
Preparation
Step 1: make sure your development environment is ready
Step 2: download https://github.com/steward-fu/fc3000/releases/download/v1.0/fc3000_ips_od_jutleys_no_roms.img.7z
Step 3: extract fc3000_ips_od_jutleys_no_roms.img.7z and then flash into MicroSD
Step 4: build kernel source code (kernel.tar.gz) without any problem
Step 5: build uboot source code (uboot.tar.gz) without any problem
Step 6: put MicroSD into your FC3000 and then power on
Step 7: when boot into Linux OS, you can hear a beep sound from speaker
Step 8: make sure all of steps as described above are ready and then you can go to next step
Porting LCD driver for Linux OS
Step 1: update initial code for HX8347 panel, kernel source code: kernel/drivers/video/fbdev/sunivfb.c
593 static void fc3000_lcd_init(void)
Since we guess the LCD panel is HX8347, so, we need try example code to see whether it works or not.
Here is the example code we can use: https://os.mbed.com/users/Suky/code/LCDTFT//file/1085b6177f6e/LCDTFT.cpp
If it does not work, you need google it and then try different example code.
Such method we use is more like black box testing.
Step 2: build modified kernel source
Step 3: build uboot source code (in this step, kernel and uboot images will be updated into MicroSD)
Step 4: put MicroSD into your FC3000 and then power on
Step 5: if the LCD is still blank, go back to Step 1
Here are the steps I wrote for your referece to port Linux OS into your FC3000.
I cannot make sure whether it is clear or not.
If not, it is welcome to post your question.
离线
@Situ
Thank you very much, I'll try that. Had already tried to compile that yesterday, but I had errors in the gdb compilation.
离线
@Situ
fc3000 starts with a white screen now. is that right?
最近编辑记录 neotendo (2022-08-23 05:39:40)
离线
@Situ
fc3000 starts with a white screen now. is that right?
here is website i found about screen, (https://www.skytech.ir/product_details.aspx?ID_Parts=4919&T2812-m106-24c-7d-2.8inch-lcd-tft-hx8347-driver)
i can't open it, hope this could help you
离线
@Hox
Thank you
Here some more informations
https://www.ramtex.dk/display-controller-driver/rgb/hx8347.htm
离线
@Situ
ps: i do not hear any sound when booting linux
I don't know. Maybe an older V1 version. As my mcu is an M800 and not M900.
SPI flash is on the other side
最近编辑记录 neotendo (2022-08-23 13:10:42)
离线
@Situ
Thank you so much <3
离线
@neotendo
[Q1] Had already tried to compile that yesterday, but I had errors in the gdb compilation.
[A1] Please post error logs if need help.
[Q2] fc3000 starts with a white screen now. is that right?
[A2] Yes, it means your FC3000 is bootig from MicroSD.
[Q3] i do not hear any sound when booting linux
[A3] Basically, it is a noise when turn on speaker.
According to the image you posted, it seems your FC3000 is more older than ours.
I guess some of LCD pinouts may be different with our FC3000.
Except for pinout changed, I am afraid that the LCD panel on your FC3000 is not HX8347.
So, it is not easy for us to port Linux OS into your FC3000 beacuse of many unknown information.
But we can try our best to see whether it is possible or not.
I spent some time to collect initial code from google for your FC3000 as possible.
Here are the lists I would like to test on your FC3000:
1. https://os.mbed.com/users/Suky/code/LCDTFT//file/1085b6177f6e/LCDTFT.cpp
2. https://searchcode.com/codesearch/view/46088261/
3. https://steward-fu.github.io/website/handheld/q8/asm_lcd_gpio.htm
4. https://whycan.com/t_6647.html#p64598
5. https://whycan.com/t_6647.html#p64694
6. https://www.microchip.com/forums/m624935.aspx
7. https://github.com/CariadDisplayLibrary/HX8347D/blob/master/src/HX8347D.cpp
All of them are compiled and packed as flash image files.
So, you just need flash them into your MicroSD and then test it on your FC3000.
Source code: https://github.com/steward-fu/fc3000/releases/download/source/lcd_panel_identify_src.zip
Flash image: https://github.com/steward-fu/fc3000/releases/download/v1.0/lcd_panel_identify_img.zip
SHA1
beb68550727732fe80b8f5083463df0e5f2996d8 test_1.img
3d4d309a1111e6cc813de2dfba485a7888ad67eb test_2.img
57de59c85e1cca75983c1a1dc5283444137b4e76 test_3.img
dbef7df5b042f95398c8e7ff3d7188ec7a57a47c test_4.img
47fa196756b54ee022ae305a81fe7dc200ccb727 test_5.img
e9efbfd13c8c508e7a392ce20bbb7e1dc79f1e2b test_6.img
f7a49d1ea656d7df7800b4bec202d4e60a98fab8 test_7.img
How to test (test_1.img ~ test_7.img):
Step 1: flash test_x.img into MicroSD as the following command
$ sudo dd if=test_x.img of=/dev/sdX bs=1M
Step 2: put MicroSD into FC3000 and then power on
Step 3: if the initial code is correct, your FC3000 should look like this
离线
@Situ
was able now to compile it. gcc version 8 and higher has a problem with null pointer strings, i had to change 2 lines in gdbusmessage.c and gdbusauth.c
why do you think it's not hx8347?
thanks <3,you are a master, i will try the images now
最近编辑记录 neotendo (2022-08-23 22:50:36)
离线
@Situ
None of the images gives color on screen, boots only in white (backlight) screen.
as you mentioned it before, another driver or pinout i guess
最近编辑记录 neotendo (2022-08-23 21:57:09)
离线
@Situ
Here are some photos from the display and connector, maybe you can use it
离线
@Situ
i checked our displays, both connections look similar but mirrored somehow (different pinout?)
最近编辑记录 neotendo (2022-08-24 04:20:12)
离线
@neotendo
[Q1] why do you think it's not hx8347?
[A1] In my experiences, ST-xxxx, GC-xxxx, ILI-xxxx series are more commonly used in inexpensive handheld.
Thanks for your information.
If I understood correctly, it seems the bus of R and B are swapped from F1C100S side as the following image I depicted:
Here is link for all of the LCD pinouts (TFT FC3000):
https://steward-fu.github.io/website/handheld/fc3000/lcd_init.htm
It is worthy to try this idea on your FC3000.
I will prepare testing images for your FC3000 later on.
Please wait for update.
离线
@neotendo
Here is testing file (test_1.img ~ test_8.img):
https://github.com/steward-fu/fc3000/releases/download/v1.0/lcd_panel_identify_swap_img.zip
SHA1
f18644f790e4b2ccd6cc55ce161b8661e369ed42 test_1.img
f51dc6390855e26676f9f0564cc9b8f6b7ffa57e test_2.img
65c541eb2e3aa9807cacf99dd6b0a7a3f56ea531 test_3.img
7df42ceb8cfec7b421980b7544a8481ed83d8b9a test_4.img
93ffd00c223166149afa91c835e90be12a5ab3b4 test_5.img
6f3e295018b2aa3a363ca169510327e294c17afa test_6.img
59df3d8467e044ee725a200522ff52ec1c59e466 test_7.img
c4dddb1afb0cfe5ffd7450e84c524a10caa3062b test_8.img
离线
@Situ
if R and B are swapped, shouldn't it just be wrong colors?
i try your test files now
最近编辑记录 neotendo (2022-08-24 18:13:06)
离线
@Situ
something new my brother.
all test files shows white screen, only test_6 and test_7 are different, they showed a colored "snow" image
ps:the sound from the video comes from the power switch (not speaker)
TEST_6
TEST_7
最近编辑记录 neotendo (2022-08-24 18:14:48)
离线
neotendo 说:@Situ
fc3000 starts with a white screen now. is that right?
here is website i found about screen, (https://www.skytech.ir/product_details.aspx?ID_Parts=4919&T2812-m106-24c-7d-2.8inch-lcd-tft-hx8347-driver)
i can't open it, hope this could help you
thank you very much, unfortunately there is no information or downloads on their site, I wrote via the contact link, let's see.
离线
@neotendo
[Q1] if R and B are swapped, shouldn't it just be wrong colors?
[A1]
For i80 interface, there is a MCU embedded in LCD panel, which is in charge of rendering color on LCD.
Before MCU gets started, we need to initialize this MCU firstly, ex: voltage, gamma, frame rate and so on.
So, this is why we need initial code to initialize LCD panel.
If the bus of R and B are swapped, the MCU cannot be initialized properly due to invalid initial sequence.
It means MCU cannot work properly, just like "snow" screen as your testing.
I have to think what of testing we can use.
If you have any suggestion or idea, it is very welcome.
离线
@司徒
right, of course. silly me. the data runs naturally over this bus. I'm excited, seems like we're on the right track.
many thanks for your effort
ps: i know much about electronics, i know that the hx8347 for example is an mcu, i simply forgotten some logic in my brain, hahaha
I would work with the test_6 source code, test_7 seems to do something different somehow. did you program the "snow" like this or should it be 3 color bars?
最近编辑记录 neotendo (2022-08-24 20:34:50)
离线
@neotendo
I guess it should miss write command (0x2c), which is used to tell MCU we can start to write data into memory.
So, the screen you posted is like the following one:
Here is the modified test_6 for your testing (append 0x2c at the end of code):
test_6.img.zip
SHA1:
b530ea20039c5ed7dd695f3ee9bd2228275a4fca test_6.img
离线
@司徒
result: colored "snow/noise"
离线
@司徒
How about reversing the pins from DB0-DB15 left to right -> DB15-DB0 left to right? (your FC3000 diagram: so DB0 starts from the right then)
i think RST,CS,RS,WR,RD are ok else we would see nothing
最近编辑记录 neotendo (2022-08-24 21:05:53)
离线
@司徒
How about reversing the pins from DB0-DB15 left to right -> DB15-DB0 left to right? (your FC3000 diagram: so DB0 starts from the right then)
i think RST,CS,RS,WR,RD are ok else we would see nothing
https://whycan.com/files/members/10141/Screenshot%202022-08-24%20150026.png
glad to see you making progress,I have 500M/32 Channel logic analysis. unfortunately my fc3000 bricking after arrival in one hours. or i could help hack it,
PS: i try to flash firmware without read notice first, try to fix it but my baby cost all my free time, so just drop it.
离线
@neotendo
Here is the testing file (swap R-B and then reverse DB0-DB15):
https://github.com/steward-fu/fc3000/releases/download/v1.0/lcd_panel_identify_swap-1_img.zip
SHA1
3a1e957291d36ff5302f30dcb54dcb54aec79063 test_1.img
6b4ffd2e876c1fae617482ed52147b46e537c884 test_2.img
b1ad9914b93e1262820c028e631dc315f10caf06 test_3.img
83749d860e9642d5b3b8f3c6082d3b501d95b111 test_4.img
d744e25906877e2c30da15694e2ca24d3a52e53f test_5.img
459bf12908d91cc3ebe22338cccbbbc20eda9d0b test_6.img
1ff27922d41d53c479bef6d6f220d868f36ed6b0 test_7.img
离线
@hox
thank you very much
Unfortunately I don't have a logic analyzer. it was the same for me, I read that I can make my v1 a v2, then I thought that I would start a dump program, but unfortunately it was an ips flasher. nothing is possible without stock old v1. apart from what Situ and I try, we can't do anything else for the device. unless someone has the same old v1 and would dump the rom
keep your device if you still have it, maybe we can run situ's linux on them later
最近编辑记录 neotendo (2022-08-25 00:00:44)
离线
@司徒
you are awesome,
but sorry, nothing. all images show white screen.
Except for these DB15...DB0 images swapping R and B again, I wouldn't think of anything now either
最近编辑记录 neotendo (2022-08-25 00:10:18)
离线
@neotendo
Here is the another idea for testing as the following image:
For i80 interface, there are 2 methods used to send command, which are DB0~DB7 and DB8~DB15 respectively.
In our previous testing, we focused on DB0~DB7 bus for command.
It is time to test another testing to see whether it works or not.
Here is the download link for testing (swap R-B and send command via DB8~DB15):
https://github.com/steward-fu/fc3000/releases/download/v1.0/lcd_panel_identify_swap-2_img.zip
SHA1
2ed14db691ad2add6257ef450cc003819e0708ad test_1.img
f119dcd0328bf34114f969234477624252e8e30b test_2.img
c8a20326a5896045f73e124d96d68ec0b4d534db test_3.img
27d85a6b8f2408fc507e8e2a37cab78b0d4401c1 test_4.img
8f586266ad2b3b19b18bf9bbf738495884537f9f test_5.img
01753ae90098cec8992732107fb3ef0f50c30063 test_6.img
88bf176e7bafc24e5f857d581a7982c5e7f9535a test_7.img
离线
@司徒
again, nothing , all white / only backlight
ps: i did it!!! took your test_6 with the "snow" and added command 0x22 at the end of init
(cmd 0x22, write sram, hx8347)
main.s.txt
pps: test_7.s works also, added ldr r0, =0x22(bl lcd_cmd) at the end of init
最近编辑记录 neotendo (2022-08-25 13:39:13)
离线
@Situ
screen orientation seems wrong. your display starts from top with color blue, my display starts with red color from left
pps: switched the mode from RGB to BGR and changed MX,MY,ML (cmd 0x16, dat 0x20), changed window area
i think we can shorten the init routine, looks to much, but atleast we have some good results
used datasheets
HX8347-D_Himax.pdf
HX8347.pdf
最近编辑记录 neotendo (2022-08-25 16:08:04)
离线
@neotendo
Congratulations !
Thank you so much! what do you think, could you do something on the linux kernel now?
离线
@neotendo
Since I have stopped maintaining FC3000 some time ago, it is recommended to port by yourself.
If you need help or suffer from problem, it is welcome to post your question.
I don't think I'll be able to do it, I have no idea where to start or which files to change.
I have no idea how and where I swap R and B, for example.
离线
@Situ
can you convert the lcd_wr assembler routine to c#? i am not able to convert assembler to c#.
i think i have to modify sunivfb.c and lcdc.h atleast
i will try the reset routine by my self, it is hard for me either, hahaha
最近编辑记录 neotendo (2022-08-25 19:47:22)
离线
@neotendo
T2812-M106-24C-7D_HX8347.zip
sunivfb.c: replaced initial code as hx8347 (based on your previous file) for fc3000
sunivfb_hx8347.patch: patch file for hx8347
For your requirement, just update sunivfb.c file and then rebuild kernel and uboot.
I think it is time to run Linux OS on your FC3000.
Ref: https://github.com/steward-fu/fc3000
离线
@司徒
IT'S ALIVE!!!
But it seems this hardware is much different then yours...
- sound not working
- most buttons not working
- colors wrong (ps: i only updated uboot atm, device is not booting with my rootfs and mininit)
- green power led not working
atleast fc3000 is running your linux image
thank you very much for your help <3
ps: is it possible to inject the new lcd code into an stock v1 or v2 rom?
最近编辑记录 neotendo (2022-08-25 23:51:23)
离线
@neotendo
Congratulations !
I am very happy to see Linux OS runs on your FC3000 ~
[Q1] sound not working
In general, there is an enable pin in amplifier IC to mute or unmute sound.
You can use multimeter to see where this pin connects to.
[Q2] most buttons not working
You can use multimeter to find all of them out.
Then you need update changes into kernel/drivers/input/keyboard/suniv-keypad.c file.
[Q3] green power led not working
As I known, the LED isn't controlled by F1C100S.
It is just a power indicator.
[Q4] is it possible to inject the new lcd code into an stock v1 or v2 rom?
Yes, it is possible but you need reverse and analyze stock firmware in assembly to see how to do inject.
If you can do this, we appreciate your efforts.
[Q5] colors wrong
You can change the settings (swap r-g-b) in LCD panel or framebuffer driver.
离线
@司徒
Got the colors fixed now👍
最近编辑记录 neotendo (2022-08-26 16:43:14)
离线
@司徒
(injecting lcd code into stock rom) - thats too much for me
(wrong colors) - Fixed
(Green LED) - Not important
(Sound) - Can you point me to the right file? I then have to find out the port/pin and then change it in the file, right?
(Buttons) - I then have to find out the port/pin and then change it in the file, right?
ps: how i can enter the gmenu2x app? i accidentally accessed it yesterday and fc3000 boots into gmenu2x everytime, now it's gone after flashing linux image of course.
pps: fc 3000 does not boot with my rootfs, filesize is only 25MB, it's missing the boot folder, but fc3000 does even not boot after manually adding boot folder.
kind regards
最近编辑记录 neotendo (2022-08-26 20:41:16)
离线
@neotendo
[Q1] Sound
Source code: kernel/sound/soc/suniv/dac.c
In our FC3000, sound signal is connected to LM4890 amplifier IC directly and the SHUTDOWN pin is connected to 3.3V, which is always in unmute state.
So, you need to check whether the hardware is same as ours or not.
If not, it may be controlled by mute/unmute pin.
Check your sound hardware first and then we can make decision for next step.
LM4890 location in our FC3000:
[Q2] Buttons
Source code: kernel/drivers/input/keyboard/suniv-keypad.c
Find all of GPIO pins and then I will teach you how to modify in kernel source code.
All of GPIO pins in our FC3000: https://steward-fu.github.io/website/handheld/fc3000/pin.htm
[Q3] how i can enter the gmenu2x app?
Please post the content of "/etc/main" file.
[Q4] fc3000 does not boot with my rootfs
If you need more detailed information about why your rootfs cannot be launched properly, you need solder UART to see detailed logs.
UART pin: https://steward-fu.github.io/website/handheld/fc3000/uart.htm
离线
@司徒
thank you very much, you are the best <3
离线
@司徒
hmmm, ok... i have no main in my selfmade rootfs (i think buildroot does not compile all what is needed, i believe there is no SDL, X11 or whatever either)
this is in the main file from your prebuild linux images
#!/bin/sh
export HOME=/mnt
export SDL_NOMOUSE=1
swapon /mnt/.swap.img > /dev/null 2>&1
/usr/bin/daemon&
while [ 1 ]
do
cd /mnt/gmenu2x
./gmenu2x > /dev/null 2>&1
done
And it boots into that menu
But i want to switch to the "filebrowser" menu
最近编辑记录 neotendo (2022-08-27 07:42:55)
离线
@neotendo
What is filebrowser menu ?
Do you mean the ROMS list menu you can select the rom to be loaded in PICRODRIVE emulator ?
If yes, you need to press A button and then it shows ROMS lists for you.
Before this, you need make sure all of buttons can work properly.
I mean your input driver can work properly.
离线
@司徒
No idea how I got there, but the menu looked something like this (every time after booting)
最近编辑记录 neotendo (2022-08-27 18:57:44)
离线
@neotendo
GUI is very complicated than you think and there are many variants based on classical GMenu2X GUI.
And there are many configurations you need to know how to configure for your need (google is your friend).
It is a long story in open source handheld.
If you are interested about this, I can explain for you later.
In current stage, it will be good if all of drivers are ready.
离线
@司徒
As I said, I just pressed a few keys or something and after a restart it suddenly looked like this, no idea
离线
@Situ
I checked the sound chip (4890s), shutdown pin = 0-1.2v (low or floating), traced the pin to cpu (see pictures)
Hopefully my cpu is f1c100s pin compatible (i can not find the PAx pins)
最近编辑记录 neotendo (2022-08-28 05:19:01)
离线
@neotendo
[Q1] GUI issue
I have no idea too.
[Q2] Sound issue
It is PA2 (TPY1) as the following image shown:
We need configure PA2 as OUTPUT so that it can be controlled as HIGH and the bits for PA2 are bit8 ~ bit10:
Source code: kernel/sound/soc/suniv/dac.c
suniv_variant = 1: PocketGo
suniv_variant = 2: TRIMUI
suniv_variant = 3: FC3000
Change L144 as the following one:
129 static void suniv_gpio_init(void)
130 {
131 uint32_t ret;
132
133 if(suniv_variant == 0){
134 ret = readl(iomm.gpio + PA_CFG0);
135 #if POCKETGO_USE_EARPHONE
136 ret&= 0xfffff0f0;
137 #else
138 ret&= 0xfffffff0;
139 #endif
140 ret|= 0x00000001;
141 writel(ret, iomm.gpio + PA_CFG0);
142 suniv_setbits(iomm.gpio + PA_DATA, (1 << 0));
143 }
144 else if((suniv_variant == 1) || (suniv_variant == 2)){
145 ret = readl(iomm.gpio + PA_CFG0);
146 ret&= 0xffffff0f;
147 ret|= 0x00000010;
148 writel(ret, iomm.gpio + PA_CFG0);
149 suniv_setbits(iomm.gpio + PA_DATA, (1 << 1));
150 }
151 }
离线
@Situ
I'm going crazy , the only thing that happens is that the green LED lights up hahaha
The Green LED is connected at Pin 65(PA1)
i slowy believe that my board has many different pinouts / connections then yours
maybe i cut the shutdown line and wire it to the green LED, so i can use the uart1 later for debugging if needed, because snd shutdown line is connected to UART1 RX (PA2 Pin 64)
最近编辑记录 neotendo (2022-08-28 17:56:03)
离线
@Situ
yes, my board has lot differences, my UART1 RX pad from your picture is GND on my board.
seems my CPU is a chinese knockoff or much different version
I can't thank you enough for helping me <3
最近编辑记录 neotendo (2022-08-28 18:07:21)
离线
@neotendo
ha ha, it seems very different compared with our FC3000.
It is more easy to resolve the sound issue if cut the SHUTDOWN line and then connect to 3.3v.
For debug purpose, you can also use UART0 for debug log.
Haha, ok, i bypassed the shutdown pin to 3v from the spi flash, sound is working now but there is a whining noise (from display or a coil)
I try to trace the buttons at the moment, i found out that L1 and R1 are connected to A and B, what a shame.
最近编辑记录 neotendo (2022-08-28 21:39:03)
离线
@Situ
Tracing my buttons done!
L1 = A
R1 = B
i tried this, but results are not as expected (UP/DOWN/LEFT/RIGHT are working)
suniv-keypad.c in function static int __init kbd_init(void)
else if(suniv_variant == 2) {
I_UP = ((32 * 5) + 0);
I_DOWN = ((32 * 5) + 5);
I_LEFT = ((32 * 5) + 4);
I_RIGHT = ((32 * 4) + 2);
I_A = ((32 * 4) + 7); //PE7
I_B = ((32 * 4) + 5); //PE5
I_X = ((32 * 4) + 9); //PE9
I_Y = ((32 * 4) + 8); //PE8
I_L1 = ((32 * 4) + 7); //PE7 (L1 = A)
I_R1 = ((32 * 4) + 5); //PE5 (R1 = B)
I_MENU = ((32 * 0) + 3); //PA3
I_L2 = ((32 * 4) + 10);
I_R2 = ((32 * 4) + 7);
...
最近编辑记录 neotendo (2022-08-29 00:19:55)
离线
@neotendo
It seems (A / L1, B / R1) share the same I/O pins in your FC3000.
In our FC3000, the designing is almost same as yours but different buttons mapping.
The following schematic I depicted shows the buttons share same I/O pins in our FC3000:
And functionality is shown in the following image:
Here is the code shows how to check MENU button:
290 l = gpio_get_value(I_L1);
291 r = gpio_get_value(I_R1);
292 if((l == 0) && (r == 0)){
293 val|= R_MENU;
294 }
Check PE12 firstly to see whether it connects to NMOS or PMOS elments or not.
离线
@司徒
as far i can tell, I,L,R,START,SELECT are switching against GND (i hold one probe on GND, one probe on START for example, got connection when i press it (BEEP).
PS: looks like every button switches against GND, so no multiplexing
最近编辑记录 neotendo (2022-08-29 18:34:22)
离线
@neotendo
May I know how did you debug this issue on your FC3000 ? Using multimeter only ?
yes, multimeter and my eyes with magnification glas
The line from start and select beeps when I check the negative pole of the battery
START -> PE4
SELECT -> PE3
最近编辑记录 neotendo (2022-08-29 19:40:03)
离线
i changed some code for testing in...
static void fc3000_handler(unsigned long unused)
and
static int __init kbd_init(void)
now a have sega buttons A,B,C (FC3000 Buttons X,B,A) in Picodrive Emulator working
suniv-keypad.c_20220829-2012.txt
PS: FC 3000 buttons A and B working. when i press A or B in menu, they are corresponded with (B=Cancel, A Select).
funny, traced the lines, for example A goes to PE7 but has to write PE5 in the code
and here is a video about the "whining" sound
https://youtu.be/RFDxZAKQIuo
my FC3000 came from hell
最近编辑记录 neotendo (2022-08-29 20:25:44)
离线
@neotendo
Good spot !
I need to check whether we are on the same page or not.
Is our goal to find out why L/R and A/B use the same pins ?
If yes, please provide PCB front view image without LCD panel.
(you have already provided PCB back view in previous testing)
I would like to check something on this PCB.
In such scenario, black box testing is more powerful than white box testing.
I have an idea for this issue based on kernel level testing.
I will explain to you later.
离线
@司徒
L1/R1 are electrical connected with A/B, i must cut the trace and connect it to any free pin on the mcu if possible.
atleast i want to get A,B,X,Y,START,SELECT,I working.
the whinig noise in the speaker comes from the LCD, when i press I the noise is little lower.
i will take photos from the pcb for you of course.
离线
here are the photos my friend
PS: Just found out, TV-OUT does not function either (not important)
最近编辑记录 neotendo (2022-08-29 22:23:45)
离线
@Situ
All buttons but I(Menu) working now.
Since my I button connects to PA3 i think this pin is not in input mode!?
PS: when reading ((32 *4) + 6) system does not boot when Green LED is on via DAC.C (your attempt to enable sound but only did the Green LED Light up)
AND.... the coil noise is gone when setting backlight to 100%
PPS: Thats not me in the twitch stream
最近编辑记录 neotendo (2022-08-30 06:38:44)
离线
@Situ
I got all buttons working, only need to cut traces from L1,R1 and connect it to free io pins on mcu if possible.
do_input_request(I_MENU,"menu") and gpio_get_value(I_MENU) like all other Inputs.
L1 and R1 are simulated (L1 = Y+LEFT, R1 = Y+RIGHT) to change sections in gmenu2x atleast.
MY 5 CENTS: i guess the encryption/decryption chip is only for the roms when inserting the "cartridge". these roms (ziped files found in folder pro/rom) ends with .ky and looks enrypted in hexeditor.
suniv-keypad.c_20220830-1548.txt
最近编辑记录 neotendo (2022-08-30 17:57:09)
离线
@neotendo
[Q1] TV-OUT
It is not implemented yet and no any plan for this feature.
[Q2] Since my I button connects to PA3 i think this pin is not in input mode!?
PA3 was mapped as Y button.
[Q3] when reading ((32 *4) + 6) system does not boot when Green LED is on via DAC.C
PE6 was used as PWM output for LCD backlight.
[Q4] the coil noise is gone when setting backlight to 100%
Yes, sound signal is effected by PWM.
Ref:
https://whycan.com/t_6647.html#p78183
https://whycan.com/t_6647.html#p76849
[Q5] I got all buttons working, only need to cut traces from L1,R1 and connect it to free io pins on mcu if possible.
Goooood !
[Q6] i guess the encryption/decryption chip is only for the roms when inserting the "cartridge".
We only focusd on Linux OS so far.
If you have any update information, it is welcome to share with us.
I think you have already completed all of tasks for Linux OS on your FC3000.
It is excellent task done by yourself.
If it is possible, please help share the image file that can be flashed into MicroSD to someone who needs it.
Thanks
离线
By the way, here is the way (black box testing) to find L1 and R1 in kernel level.
(it assumes that they are not physically connected with A and B buttons):
1. List out all of unused GPIO, ex: PAx, PBx, PCx and so on.
2. Change framebuffer as console mode that log can be printed on LCD.
3. Try each unused GPIO and configure it as output (only 1 ouput for every round).
4. Press L1 and R1 and check the result on LCD.
But I am wrong because L1=A and R1=B, ha ha
离线
@司徒
[A1] no problem, not important
[A2] "I" now working without modification "I_MENU = ((32 * 0) + 3);"
[A3] ahhh, that's logical then
[A4] till now i do not knew how to set the brightness, now after configure the system to 100% brightness, all went fine
[A5] Danke<3
[A6] just came in my head, only an idea
I thank you so much for your help, my FC3000 would be complete dump without you. i am happy to work with you, was a lot of fun.
i wil try to optimice the modified code, maybe add a new variant (fc3000_old).
i will even try to enable the snd_shutdown pin via gpio, so everyone who needs this firmware can use it without hardware modification.
can you tell me how i can add a new variant?
i saw in an other forum that someone got the .wst files decrypted, do you have the tool or can you maybe ask the user for his tool please (User: aoa)?
https://boards.dingoonity.org/other-game-systems/fc3000-linux-porting-from-scratch/100/
最近编辑记录 neotendo (2022-08-30 20:07:16)
离线
@Situ
Thank's for the L1/R1 information, i will try it.
i will try to edit the u-boot code to add an fc3000_old variant, so everyone can compile kernel/uboot atleast.
i still have an rootfs problem. rootfs is too small and does not boot, but as long i can boot your linux with my u-boot, i am happy with that.
离线
@neotendo
[Q1] can you tell me how i can add a new variant?
In kernel folder, run the following command and then you will know how to do next
$ grep suniv_variant . -r
[Q2] do you have the tool or can you maybe ask the user for his tool please (User: aoa)?
I don't have any tool to decrypt ".wst" file.
I have asked "aoa" for further information on dingoonity forum.
[Q3] rootfs is too small and does not boot
Make sure SDL v1.2 library is included and then edit "/etc/inittab" and "/etc/main" files.
离线
@司徒
thank you, i will add variant 3 for fc3000_old
离线
@Situ
All right, sound is working with unmodded connection.
Now the firmware is able to run on unmodified fc3000 old version.
I need to flash your linux firmware without roms, and dump it with my uboot.
Can you tell me how to dump only the needed data like your linux images (~2GB)?
dd ..... bs=2048M count=1 ?
I do not want to dump a 32GB sdcard.
The kernel source code needs still some cleanup, but i was abe to compile it with
./run.sh fc3000_old
PS: only thing left, maybe fixing the battery level icon (shows dead/empty battery all the time)
最近编辑记录 neotendo (2022-08-31 06:06:54)
离线
@neotendo
[Q1] sound is working with unmodded connection.
Do you mean the noise issue is fixed without any hardware modding ?
[Q2] Can you tell me how to dump only the needed data like your linux images (~2GB)?
Here are the steps to create 2GB image and then you can flash what you want into this 2GB image file
$ sudo dd if=/dev/zero of=test.img bs=1M count=2024
2024+0 records in
2024+0 records out
2122317824 bytes (2.1 GB, 2.0 GiB) copied, 1.83519 s, 1.2 GB/s
$ sudo fdisk test.img
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-4145151, default 2048): 16384
Last sector, +/-sectors or +/-size{K,M,G,T,P} (16384-4145151, default 4145151):
Created a new partition 1 of type 'Linux' and of size 2 GiB.
Command (m for help): p
Disk test.img: 2 GiB, 2122317824 bytes, 4145152 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x0eb9d800
Device Boot Start End Sectors Size Id Type
test.img1 16384 4145151 4128768 2G 83 Linux
Command (m for help): w
The partition table has been altered.
Syncing disks.
$ sudo losetup -f test.img
$ sudo kpartx -a -v test.img
add map loop0p1 (254:0): 0 4128768 linear 7:0 16384
$ sudo mkfs.vfat -F32 /dev/mapper/loop0p1
mkfs.fat 4.1 (2017-01-24)
$ sudo fatlabel /dev/mapper/loop0p1 FC3000
$ sudo kpartx -d -v /dev/loop0
del devmap : loop0p1
$ sudo losetup -d /dev/loop0
离线
@司徒
Noise is gone when setting backlight to 100.
Unmodded= you provided me the code for "dac.c" to poweron the amp chip, but only what happend was that the green led lights up.
So i bypassed the shutdown pin from the sound amplifier to 3.3v, cause uboot did not poweron the amplifier.
I got it working in "dac.c", green led on, and amp on.
So, everyone can use our linux version without modify the hardware.
I want to dump my OS like your linux images...
Partition 1 - 32MB empty (uboot)
Partition 2 - 256MB fat32 FC3000 (rootfs,mininit)
Partition 3 - ~2GB fat32 OD (folders,configs,menu etc)
All in one .img file.
The user has to expand Partition 3 after flashing on sdcard to the rest space
最近编辑记录 neotendo (2022-08-31 14:17:44)
离线
!!! Celebrating Post #1000!!!
I proudly present.... Linux for the (originally incompatible) TFT FC3000 (old version)
A notice:
L1/R1 are hard coded to A/B so I added an L1/R1 simulation.
Hold X and tap DPAD Left for L1.
Hold X and tap DPAD Right for R1.
This allows you to switch sections in the menu.
Hopefully someone can use this firmware, thanks Situ for your hard work and help to port your linux to my FC3000 (old version).
Download link for "fc3000_old_tft_od_no_roms.7z"
https://mega.nz/file/jbxiWRZa#JmnwkdG57oYORvfYo9LbUwHZ1CRjU52H_5ppMoCuh80
FC3000 in Action
https://youtu.be/h37twdx07OQ
最近编辑记录 neotendo (2022-08-31 20:11:07)
离线
快要可以看到第6頁了~哈~
hahaha 😊
PS: it is done! happy downloading
最近编辑记录 neotendo (2022-08-31 19:50:24)
离线
@neotendo
Thanks for your efforts.
I will put this file on my github.
Thanks
you're welcome, was lot of fun, and maybe we can help 1 or 2 people with this port.
PS: Added an "FC3000 in Action" video to post #1000.
最近编辑记录 neotendo (2022-08-31 20:15:23)
离线
I know somebody already mentioned that the I(Menu) key us not working in FBA, is there a solution or source code?
最近编辑记录 neotendo (2022-09-01 04:41:56)
离线