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/をご覧ください。