国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

[NES]從模板工程到NES模擬的實現 | 技術集結

RT-Thread官方賬號 ? 2025-08-23 10:06 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

目錄


摘要視頻


前置準備


軟件包設置


CubeMx配置


工程主體


感慨

2 前置準備


nes游戲就選用最經典的SuperMary,先創建一個基于06_demo_nes_simulator示例的示例工程,找到其中game目錄下的SuperMary.nes文件,將其復制到SD卡上、

3 軟件包設置


新建一個基于RT-Spark的模板工程,進入RT setting,進入詳細界面,選中硬件,將以下設置添加(選中)


<板載驅動設備>

1.SRAM

2.onboard LCD(ST7789)—>TIM14_CH1

3.File system—>SDCARD


<芯片驅動設備>

1.PWM14 channel1

2.SPI BUS—>RW007 onboard


添加完成后,ctrl+s保存設置

4 CubeMx配置


找到board—>CubeMx_Config目錄下的CubeMx_Config.ioc文件,雙擊進入STM32CubeMx界面

配置同LCD配置

Timers—>TIM14—>PWM Generation CH1

Connectivity—>FSMC—>LCD1

Memory type

LCD Register Select

Data

LCD Interface

A18

8 bits

設置完成后,點擊右上角的GENERATE CODE,回到RT-Studio界面

5 工程主體


先構建項目,此時,CubeMx_Config目錄下會多出Drivers,MDK-ARM兩個文件夾,控制臺會出現很多報錯,將這兩個文件夾和Src目錄下的main.c文件刪除,右鍵工程文件—>同步Scons配置至項目

同步完成后,將示例工程application目錄下的main.c的代碼復制到模板工程相同目錄的main.c文件中進行替換,nes文件夾同理復制到模板工程中,再次構建項目,如果出現報錯,再次進行Scons同步后重復操作

此時將工程下載到開發板中,然后打開串口工具(!!記得插上SD卡,不然就會出現如下報錯!!)

bf3ac090-7fc5-11f0-9080-92fbcf53809c.png

插上SD卡后,串口工具輸出正常

bf4eaa9c-7fc5-11f0-9080-92fbcf53809c.png

輸入命令nes_start sdcard/SuperMary.nes

然后就能看到,又報錯了…

bf669e2c-7fc5-11f0-9080-92fbcf53809c.png

這里的報錯提示出現了斷言失敗,那么回到RT-Studio分析代碼,搜索small_mem,定位相關代碼段

bf813098-7fc5-11f0-9080-92fbcf53809c.png

仔細分析一遍并沒有發現代碼有什么問題,那么問題在哪,為什么會導致斷言出現?

查閱相關資料發現,RT_ASSERT的啟用依賴于debug.h頭文件,而在正式發布產品時,通常會禁用調試代碼功能(即不定義RT_DEBUG宏)從而減少代碼體積并提高代碼效率,但是這里又沒有用到debug相關的語句

再次檢查代碼發現并沒有明顯問題,使用BC輔助分析

bf94cfea-7fc5-11f0-9080-92fbcf53809c.png

對比可以看到模板工程和示例工程的不同點,重點關注各種config文件還有scons文件,這些都與配置有關

bfa5ef32-7fc5-11f0-9080-92fbcf53809c.png

在rtconfig.h文件中,可以看到,模板工程在這里定義了DEBUG的宏,將這兩行注釋掉,同步scons配置,再次構建項目,下載,測試輸入指令LCD是否成功運行游戲

bfb8a726-7fc5-11f0-9080-92fbcf53809c.png

可以看到,這次并沒有報錯,說明上述操作正常,但是發現LCD上依舊是白屏,并沒有按想象中那樣運行游戲,這就很令人疑惑了

雖然沒有報錯,但LCD也沒有正常工作,那問題出在哪了?LCD沒有運行游戲,但是正常亮起,說明LCD配置方面沒有問題,而在這個項目中,RT-Spark開發板上只用到了 LCD,SD插口,按鍵,很顯然按鍵和當前問題聯系不大,那么問題最有可能出在了SD相關的東西上

順著上面的思路,可以推測,也許是SD插口相關配置沒有正常工作,導致SD插口沒有讀取到SD卡上的數據,也有可能是LCD沒有接收到SD卡傳入的數據,重新回到代碼分析尋找思路

在application的main.c文件中,可以找到nes_start函數的定義,正好在輸入指令時用到了nes_start的指令,而通過輸入的指令可以看出,nes_start的作用應該是讀取SD卡上相關數據

bfc31c38-7fc5-11f0-9080-92fbcf53809c.png

那么可以大膽推測nes_start和我們想要解決的問題有關聯,分析nes_start函數,可以知道這個函數的工作就是讀取nes文件地址,下載nes文件,然后判斷下載的nes文件是否為NULL,這時根據這段代碼,又可以發現些許蹊蹺

if(!nes){ return-1; }

這段代碼在判斷nes是否為空,為空則提前退出,那么,又多了一種可能,就是SD的讀取和LCD的接收都沒有問題,而是提前退出導致nes文件沒有運行,往這個if中加入一段打印日志的代碼

rt_kprintf("create default!\n");

再次構建項目,下載,然后輸入指令

bfd9e206-7fc5-11f0-9080-92fbcf53809c.png

那么問題就顯而易見了,程序運行到這時提前退出導致LCD沒有顯示游戲畫面,但是,什么原因導致了程序的提前退出,回到BC將模板工程和示例工程的main.c進行對比

可是并沒有發現差異,而且發現application文件夾并沒有差異,排除法縮小范圍,setting,rt-thread明顯無關,application,libraries,和Debug沒有差異,都進行排除,再排除一些明顯無關的文件

bfe58606-7fc5-11f0-9080-92fbcf53809c.png

那么只剩下了這些部分,rtconfig_preinc.h文件內容沒有差異,Kconfig文件也幾乎沒有差異,排除

打開board目錄,CubeMx_Config,.ignore_format.yml,link.icf,board.h,board.c無明顯差異也可以進行排除

bff329be-7fc5-11f0-9080-92fbcf53809c.png

那么只剩下了這幾個文件,先分析之前分析過的rtconfig.h

c003da66-7fc5-11f0-9080-92fbcf53809c.png

這幾段包含了和TIMER有關的宏定義,考慮到LCD雖然沒有正常運行游戲,但是能正常亮起,先進行排除

c0156056-7fc5-11f0-9080-92fbcf53809c.pngc025e07a-7fc5-11f0-9080-92fbcf53809c.pngc033ce92-7fc5-11f0-9080-92fbcf53809c.png

前兩張雖然看不懂,但是明顯和LCD以及nes關聯不大,最后一張和網絡協議相關,直接排除,那么就排除了rtconfig.h

再來分析其他文件,.config,cconfig.h文件中的內容同理rtconfig.h,排除,那么只剩下了和link相關的兩個文件

c03fb928-7fc5-11f0-9080-92fbcf53809c.png

這些和開發板的linker有關,想到之前的一種可能,SD插口與LCD連接配置出問題導致LCD接收不到SD插口發送的數據,從而程序運行時提前退出,考慮到這種可能,分析代碼發現

c04d0196-7fc5-11f0-9080-92fbcf53809c.pngc055e662-7fc5-11f0-9080-92fbcf53809c.png

這幾段代碼都和nes相關,將它們復制過去,同步scons,構建項目,下載,輸入指令,查看運行結果

c05e9a64-7fc5-11f0-9080-92fbcf53809c.pngc066fc04-7fc5-11f0-9080-92fbcf53809c.jpg

游戲正常運行,串口工具處也沒有報錯,說明操作正確,問題解決,nes模擬成功實現!

6 感概


過程有那么一點點曲折,但是最終成功分析出了問題所在并解決,從模板工程到實現示例工程的過程相當于從無到有的創造,滿滿的成就感,仿佛離b站大佬更近了一步()

示例工程雖然很方便,但是只授之予魚而非漁,從模板工程開始,一步一步的創造,雖然做出了以后很有成就感,但還是希望相關教程能多出一點(一步步推真的很不容易)

此外,在查看日志的時候還發現不管是示例工程還是模板工程

c0738a50-7fc5-11f0-9080-92fbcf53809c.png

并沒有發現這一段命令打印的路徑日志,也沒有分析出是什么原因,有知道的大佬可以解答一下

(BC真的很好用)

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5189

    文章

    20192

    瀏覽量

    329551
  • SD卡
    +關注

    關注

    2

    文章

    583

    瀏覽量

    67914
  • NES
    NES
    +關注

    關注

    0

    文章

    7

    瀏覽量

    7564
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    如何安裝模擬器玩nes小游戲-基于米爾瑞芯微RK3576開發板

    本篇源自:優秀創作者 小手涼涼本文將介紹基于米爾電子MYD-LR3576開發板(米爾基于瑞芯微 RK3576開發板)的安裝模擬器玩nes小游戲方案測試。 核心板系統 操作系統鏡像文件說明
    發表于 02-08 12:10

    賺人氣,用STM32F407做個NES游戲機玩玩

    的,感謝一下,不過不爽的是原子的NES是跑在UCOS上的,這個被我移植裸機上的,自由度高一點,代碼還有BUG,最近忙沒優化,可以公開大家一起搞搞,不過工程都是分開的,沒合到一起,看看大家感興趣不,再傳。`
    發表于 11-18 11:29

    STM32F1做的NES模擬器 支持聲音及全屏游戲

    最近一直想做個NES模擬器玩玩,在網上一頓狂搜各種資料,視頻,移值過很多各版本的模擬器,我感覺效果最好的是原子哥和ye781205網友的程序。移值很簡單這里就不提了。這里說下改進:支持DAC輸出
    發表于 01-31 15:07

    NES模式下規劃精度及測試效率提升分析

    NES是什么? NES系統包括哪些部分?有什么應用?
    發表于 06-02 06:40

    ESP32 NES模擬器教程

    (模擬器),玩上幾把小時候最喜歡玩的游戲,而nes模擬器正是不二之選,通過制作模擬器我們能學習軟硬件各方面的知識,可謂是很多程序員走向編程
    發表于 01-12 08:20

    游戲精靈NES頂部裝載機適配器

    描述游戲精靈 NES 頂部裝載機適配器接口板允許 Game Genie正確連接 NES Top Loader 。提供必要的 1.2
    發表于 09-08 06:26

    【HD-G2UL-EVM開發板體驗】掌上游戲機之三 —— NES游戲模擬器移植

    前言前面我們完成了USB手柄按鍵采集,RTP實時推流H264PC端顯示作為虛擬顯示器。完成了移植NES游戲模擬器的基本要素,這一篇我們開始進行真正的移植。過程如下是移植好的代碼git clone
    發表于 12-22 16:01

    5個步驟,讓你的核桃派玩回當年火爆全球NES游戲

    1.準備好你的nes游戲: nes游戲鏈接:鏈接:百度網盤 請輸入提取碼 提取碼:k6sh 2.安裝nes游戲模擬器: sudo apt-get install nestopia 3
    發表于 11-22 10:50

    PC專用經典NES手柄

    PC專用經典NES手柄 在電腦城轉轉,隨便哪個攤位都可以看到各種電腦用手柄,這東西實在是爛大街了,可是今天的新聞不由得讓我頭頂青天了。
    發表于 03-10 09:28 ?1327次閱讀

    如何使用ESP32和ATtiny861制作NES模擬器游戲控制臺

     NES模擬器不是ESP32唯一有趣的事情。例如。你可以用它構建一個微型python控制臺。您需要更改的唯一組件是I2C游戲手柄I2C鍵盤。我認為使用ATtiny88控制器制作它并
    的頭像 發表于 08-27 14:20 ?1.4w次閱讀
    如何使用ESP32和ATtiny861制作<b class='flag-5'>NES</b><b class='flag-5'>模擬</b>器游戲控制臺

    NES盒式外置硬盤的制作

    現在,您可以使用新的NES驅動器來容納NES仿真器和所有非法的NES rom。
    的頭像 發表于 10-10 09:48 ?2736次閱讀

    NES更換PSU PCB開源

    電子發燒友網站提供《NES更換PSU PCB開源.zip》資料免費下載
    發表于 07-21 14:49 ?1次下載
    <b class='flag-5'>NES</b>更換PSU PCB開源

    游戲精靈NES頂部裝載機適配器

    電子發燒友網站提供《游戲精靈NES頂部裝載機適配器.zip》資料免費下載
    發表于 08-17 09:55 ?0次下載
    游戲精靈<b class='flag-5'>到</b><b class='flag-5'>NES</b>頂部裝載機適配器

    開源!自制NES模擬器,3元MCU也能跑

    器的樂趣——模擬器已集成LuatOS中!1開源NES模擬器簡介本文演示NES模擬器由合宙社群@
    的頭像 發表于 04-13 11:06 ?5946次閱讀
    開源!自制<b class='flag-5'>NES</b><b class='flag-5'>模擬</b>器,3元MCU也能跑

    超越節點引擎臨界:華為云 NES 顛覆游戲規則

    技術領域,創新是引人注目的產物。華為云 Web3 節點引擎服務 NES(以下簡稱:華為云 NES)以卓越的技術實力贏得業內良好口碑。在近期 SUSTAINABLE WEB3 SG 2
    的頭像 發表于 04-07 17:06 ?1221次閱讀