K210 Introducción-Desarrollo desnudo (8:30) Suplemento del sistema de archivos

Placa de desarrollo: K210 AIRV R3 versión widora

Entorno de desarrollo: kendryte IDE official

Documentos de referencia necesarios: Guía de programación del SDK independiente v0.5.0 y esquema de Widora

(1) En este episodio, pruebe el sistema de archivos para abrir sus propios archivos

Primero lea un.txt y obtenga la longitud dentro de v_fileinfo.fsize

Luego imprime lo que lees

Comente primero el siguiente código y pruébelo por separado 

Ve todo en uno

Se informa un error. V_fileinfo.fsize no se puede inicializar. No quiero usar mem para asignar, así que solo uso la constante fija 128 (se recomienda usar la asignación dinámica de memoria, no uso el fijo)

El efecto es bueno, lo leí todo

Continuar leyendo el siguiente documento

Lo acabo de leer aquí y no obtengo información

El puerto serie no se imprime, prueba que los chinos no pueden ser reconocidos, no sé cómo resolver el problema del reconocimiento chino. 

Entonces no puedo usar chino

(2) Entonces probemos y leamos mp3

Yo también puedo leerlo, pero no sé si se lee el contenido.

Escriba a un.txt a continuación (escriba directamente sin leer, espere a que el lector lea)

No está mal esta vez, escribir en chino está bien

Cambiar los nombres de los archivos a todos en inglés

Lea la imagen de abajo 

No se puede leer el contenido, la razón debería ser que el obtenido es de 8 bits, pero la imagen no es de 8 bits sino de 32 bits, por lo que no funcionará

 

Solo fui a aprender una ola de calloc de memoria dinámica, recuerda liberar para liberar la matriz después de usar

 

El aprendizaje del sistema de archivos está completo, nos vemos la próxima vez

 

Resumen

Crear carpeta

  char *dir = "jwdeng1995";
  ret = f_mkdir(dir);

Obtenga el tamaño del archivo (se puede mostrar otra información en FILINFO, aquí solo se usa .fsize)

  char *path = "jwdeng1995/test.txt";
  printf("/*******************sd read write test*******************/\n");
  uint32_t v_ret_len = 0;

  FILINFO v_fileinfo;
  if ((ret = f_stat(path, &v_fileinfo)) == FR_OK) {
    printf("%s length is %lld\n", path, v_fileinfo.fsize);
  } else {
    printf("%s fstat err [%d]\n", path, ret);
  }

Abra el documento y envíe el contenido


  if ((ret = f_open(&file, path, FA_READ)) == FR_OK) {
    char v_buf[128] = {0};
    ret = f_read(&file, (void *)v_buf, 128, &v_ret_len);
    if (ret != FR_OK) {
      printf("Read %s err[%d]\n", path, ret);
    } else {
      printf("Read :> %s %d bytes lenth\n", v_buf, v_ret_len);
    }
    f_close(&file);
  }

 Escribir documentación

  if ((ret = f_open(&file, path, FA_CREATE_ALWAYS | FA_WRITE)) != FR_OK) {
    printf("open file %s err[%d]\n", path, ret);
    return ret;
  } else {
    printf("Open %s ok\n", path);
  }
  uint8_t hello[1024]= "阿斯打扫打扫打扫打扫打扫";
  ret = f_write(&file, hello, sizeof(hello), &v_ret_len);
  if (ret != FR_OK) {
    printf("Write %s err[%d]\n", path, ret);
  } else {
    printf("Write %d bytes to %s ok\n", v_ret_len, path);
  }
  f_close(&file);

 

Espacio de asignación de memoria dinámica para impresión en matriz

  char *v_buf = calloc(v_fileinfo.fsize, sizeof(char));

//用完free掉
  free(v_buf);
  v_buf = NULL;

 

En esta sección no se proporciona ningún código ni ingeniería.

Supongo que te gusta

Origin blog.csdn.net/jwdeng1995/article/details/108063316
Recomendado
Clasificación