HaaS EDUK1機器リソース用のSDカード

1。概要

多くのSCMシステムでは、データを保存するために大容量のストレージデバイスが必要です。現在、Uディスク、FLASHチップ、SDカードなどが一般的に使用されています。総合的に比較すると、SDカードはシングルチップマイクロコンピュータシステムに最適です。容量が大きく(32GB以上)、SPI / SDIOドライブをサポートできるだけでなく、さまざまなサイズを選択できます。 from(標準のSDカードサイズ、TFカードサイズなど)は、さまざまなアプリケーションの要件を満たすことができます。

外部メモリを最大32GB以上に拡張するために必要なIOポートはわずかです。容量は数十Mから数十Gです。サイズが大きく、交換も非常に便利で、プログラミングも簡単です。シングルチップマイクロコンピュータの大容量外部メモリの最初の選択肢。

 

2.リソースの紹介

HaaS EDU K1は、最大1つのeMMC4.41 / SD3.0 / SDIO3.0ホストインターフェイス、最大50MHzの単一データレート、および最大64Gをサポートします。

 

3.紹介例

3.1、ハードウェアの実装

HaaS EDU K1で使用されるSDカードは、標準のTFカードスロットです。回路はデフォルトですでに開発ボードに接続されています。したがって、ハードウェア上で何かを移動する必要はありません。接続回路図は次のとおりです。

                                        SDカードスロット原理図

 

3.2、ソフトウェア設計

SDが使用するテストコードファイルパスは次のとおりです。

application / example / edu_demo / mfg_test / sd_test.c

ドライバファイルは次の場所にあります。

プラットフォーム/mcu/haas1000/hal/sd.c

 

3.2.1、テストプロセス

 

3.2.2、初期化関数

int32_t hal_sd_init(sd_dev_t *sd)

{

    int ret;

    hal_iomux_init((struct HAL_IOMUX_PIN_FUNCTION_MAP *)sd_pinmux, sizeof(sd_pinmux) / sizeof(struct HAL_IOMUX_PIN_FUNCTION_MAP));

    ret = hal_sdmmc_open(HAL_SDMMC_ID_0);



    if (0 == ret)

    {

        sd_initialised = 1;

        if (sd)

        {

            sd->port = HAL_SDMMC_ID_0;

            sd->config.bus_wide = hal_sdmmc_get_bus_width(HAL_SDMMC_ID_0);

            sd->config.freq = hal_sdmmc_get_clock(HAL_SDMMC_ID_0);

            sd->priv = NULL;

        }

    } else {

        printf("sd init failed!\n");

    }



    return ret;

}

 

3.2.3、テストコード

  testfd = fopen(SDTEST_FILE_NAME, "w");

    if(testfd == NULL) {

        printf("create /sdcard/sdtest.test fail !!!\n");

        return;

    }



    printf("create /sdcard/sdtest.test success !!!\n");

    data = (char *)malloc(SDTEST_FILE_LEN);

    for (i = 0; i < SDTEST_FILE_LEN / strlen(SDTEST_WORDS); i++) {

        memcpy(data + i * strlen(SDTEST_WORDS), SDTEST_WORDS, strlen(SDTEST_WORDS));

    }



    printf("begin init /sdcard/sdtest.test ... \n");

    ret = fwrite(data, 1, SDTEST_FILE_LEN, testfd);

    if(ret != SDTEST_FILE_LEN) {

        printf("write data SDTEST_FILE_LEN bytes to file /sdcard/sdtest.test fail !!!\n");

    }

    fsync(testfd);



    printf("write init data to /sdcard/sdtest.test success !!!\n");

    fclose(testfd);

    free(data);



    aos_msleep(1000);



    ret = sdtest_read();

    ret += sdtest_write();

 

3.3、コンパイルしてダウンロード

3.3.1、コードの準備

edu_demoの本番テストスイッチをオンにします

application / example / edu_demo / Config.in

このファイルのコンパイルオプションを変更し、EDK_DEMO_FACTORY_TEST_ENABLIEスイッチをオンにします。

config EDK_DEMO_FACTORY_TEST_ENABLIE

    bool "enable factory test function"

    default y

 

スタートアップコードにデモを追加する

application / example / edu_demo / app_entry.c

関数application_startで、menu_init();をコメントアウトし、sdcard_test();を追加します。 

       //menu_init();
       
       sdcard_test();

 

3.3.2、コンパイル

次のようにコマンドラインを使用します

aos make distclean

aos make edu_demo@haaseduk1 -c config

aos make

4.3.3、燃やす

  • コマンドライン
aos upload
  • グラフィカルインターフェイス

詳細については、HaaS EDUK1クイックスタート第4.3.3章-GUIツールを使用した書き込みを参照してください

 

開発者テクニカルサポート

さらにテクニカルサポートが必要な場合は、DingTalk開発者グループに参加するか、WeChatパブリックアカウントをフォローしてください。

テクノロジーとソリューションの詳細については、AliyunAIoTホームページhttps://iot.aliyun.com/をご覧ください。

 

おすすめ

転載: blog.csdn.net/HaaSTech/article/details/114694509