どのようにSTM 32 F 1で一人称の3 Dシューティングゲームを保存するには?

8072 ワード

我々は3 D一人称シューティングゲームに言及するたびに、それだけでなく、いくつかのGBまたはGBのハードドライブのストレージ空間の数十の高性能なグラフィックカードを考えることは当然ですので、256 KBのフラッシュでSTM 32 F 103 RCのような小さなボード上に大きな一人称シューティングゲームを保存することが可能ですか?

私たちがUSBケーブルでコンピュータにボードを接続するとき、私たちは100 MB以上でUSBスティックを見ることができました.

次に、USBスティックに90 KBのゲームがあることがわかります.

ダブルクリックしてSTM 32で一人称シューティングを有効にします.

完全なデモプレゼンテーションビデオを参照してくださいRT-Thread YouTube Channel .

RTスレッドを実行する


RT - threadはオープンソースの組み込みリアルタイムオペレーティングシステムで、コードを保存するGithub , そして、それは詳細なドキュメンテーションを提供します.以下は、このプロジェクトに必要なツールをまとめたものです.
  • ジットバッシュ
  • キール
  • STM 32
  • RT-Thread source code
  • RT-Thread Env Tool
  • 2 .オンチップフラッシュファイルシステム


    stm 32にファイルシステムとしてフラッシュをマウントし、cubemxでUSBを有効にします.

    USBをオンにした後、外部の結晶がクロック構成でボード上の結晶と一致していることを確認し、USBクロックが48 MHzであることを確認し、それをクリックしてコードを生成します.クロックを変更したので、ボード/cubemxCount config/src/mainの中にvoid - system - systousconfig ( void )関数をコピーする必要があります.Cボード/ボードに.Cと置換します.
    次に、bspの下のボードディレクトリのkconfigファイルを変更します.
    1config BSP_USING_ON_CHIP_FLASH
    2    bool "Enable on-chip FLASH"
    3    default n 
    4
    5config BSP_USING_USBD_FS
    6    bool "Enable USBD as USB device"
    7    select RT_USING_USB_DEVICE
    8    default n
    
    これにより、BSPディレクトリでConemuを右クリックして設定インターフェイスを確認できますEnv tutorial ) 次のオプションを選択します.
    ハードウェアドライバの設定

    2 . RTスレッドコンポーネント-->デバイスドライバ-- MTDとFlashデバイスドライバを使用する

    3 . RTスレッドオンラインパッケージ--システムパッケージはfal & littlefsを選択する

    RT thread component --デバイス仮想ファイルシステム

    設定と終了を保存し、Env内のコマンドを入力してKEILプロジェクトを自動的に生成します.
    1pkgs --update
    2scons --target=mdk5 -s
    
    私たちは最初にフラッシュを組織する必要があります、STM 32 F 103 RCは合計256 KBを持ちます.H
    1extern const struct fal_flash_dev stm32_onchip_flash;
    2
    3#define FAL_FLASH_DEV_TABLE                                          \
    4{                                                                    \
    5    &stm32_onchip_flash,                                           \
    6}
    7
    8#define FAL_PART_TABLE                                                          \
    9{                                                                               \
    10    {FAL_PART_MAGIC_WROD,       "app", "onchip_flash",         0,   128*1024, 0}, \
    11    {FAL_PART_MAGIC_WROD,      "flash0", "onchip_flash",   128*1024,  128*1024, 0}, \
    12}
    
    その後、メインを変更します.Cマウントファイルシステム
    1#include <rtthread.h>
    2#include <rtdevice.h>
    3#include <board.h>
    4#include <fal.h>
    5#include <dfs_posix.h>
    6
    7/* defined the LED0 pin: PC13 */
    8#define LED0_PIN    GET_PIN(C, 13)
    9
    10#define FS_PARTITION_NAME  "flash0"
    11
    12int main(void)
    13{
    14    int count = 1;
    15    /* set LED0 pin mode to output */
    16    rt_pin_mode(LED0_PIN, PIN_MODE_OUTPUT);
    17
    18    fal_init();
    19
    20#ifdef RT_USB_DEVICE_MSTORAGE
    21    struct rt_device *flash_dev = fal_blk_device_create(FS_PARTITION_NAME);
    22#else
    23    struct rt_device *flash_dev = fal_mtd_nor_device_create(FS_PARTITION_NAME);
    24#endif
    25
    26    if (flash_dev == NULL)
    27    {
    28        rt_kprintf("Can't create a block device on '%s' partition.\n", FS_PARTITION_NAME);
    29    }
    30    else
    31    {
    32        rt_kprintf("Create a block device on the %s partition of flash successful.\n", FS_PARTITION_NAME);
    33    }
    34
    35    while (count++)
    36    {
    37#ifndef RT_USB_DEVICE_MSTORAGE
    38        if(rt_device_find(FS_PARTITION_NAME) != RT_NULL)
    39        {
    40            dfs_mkfs("lfs", FS_PARTITION_NAME);
    41
    42            if (dfs_mount(FS_PARTITION_NAME, "/", "lfs", 0, 0) == RT_EOK)
    43            {
    44                rt_kprintf("sd card mount to '/'\n");
    45                break;
    46            }
    47            else
    48            {
    49                rt_kprintf("sd card mount to '/' failed!\n");
    50            }
    51        }
    52#endif
    53        rt_pin_write(LED0_PIN, PIN_HIGH);
    54        rt_thread_mdelay(500);
    55        rt_pin_write(LED0_PIN, PIN_LOW);
    56        rt_thread_mdelay(500);
    57    }
    58
    59    return RT_EOK;
    60}
    
    プロジェクトをボードにコンパイルしてダウンロードし、パーティションテーブルを参照してください.

    ls、cat、mkdir、cdのようなLinuxの一般的なコマンドはすべてサポートされているので、ファイルシステムとしてSTM 32でオンチップフラッシュをマウントすることができ、次のステップはUSBスティックとして認識させることです.

    チップ上のマウントオンチップフラッシュ


    同様に、ENV設定でオプションを選択します.
    ハードウェアドライバの設定

    2 . RTスレッドコンポーネント-->デバイスドライバ-- USBを使う


    設定を保存し、プロジェクトファイルをenvで生成します.
    1scons --target=mdk5 -s
    
    コンパイルしてボードにダウンロードして、コンピュータにUSBを接続してください、例えばSTM 32 F 103 USB PINがPA 11とPA 12であるならば、あなたはコンピュータが新しいUSBスティックを認識するのを見ます.

    最後に、あなたはゲームをコピーし、STM 32のオンチップフラッシュにそれを置く必要があります.
    RTスレッドの連絡先情報:
    Website | Github | | Facebook |