Módulo controlador universal para a Internet das coisas. Teste FatFs
Neste artigo, demonstrarei os projetos de teste da biblioteca FatFs portados para o módulo K66BLEZ1. A biblioteca de código aberto FatFs é bem conhecida pelos programadores de microcontroladores e implementa o suporte ao sistema de arquivos FAT32 em cartões SD e MMC. Uma coisa indispensável no desenvolvimento de registradores, controladores lógicos programáveis, gravadores de som, rastreadores, etc. Mas, às vezes, pode se tornar um gargalo em sistemas em tempo real.A introdução do módulo K66BLEZ1 foi iniciada neste artigo:Módulo Universal Controller para a Internet das Coisas. Breathing LifeO artigo mencionou o conjunto de software (SDK) da família de microcontroladores K66.Em particular, no SDK, você pode encontrar um exemplo para testar FatFs. O exemplo é muito simples e, portanto, eu o modifiquei para maior praticidade.Organização da saída de informações de depuração.
Para que o exemplo original do SDK funcione na placa K66BLEZ1, não é necessário fazer alterações. Mas há uma coisa, mas! Não haverá saída para o terminal de depuração. Como a placa do módulo não possui um conector especial para saída de depuração com a interface RS232.A depuração do módulo foi projetada para um trabalho restrito por meio da interface SWD e usando a tecnologia Real Time Terminal (RTT) descrita neste artigo. No entanto, essa abordagem pode não agradar aos proprietários de adaptadores de depuração incompatíveis com o J-Link. Portanto, não corrigi o código de saída de depuração no aplicativo, mas o redirecionei para o UART4. Aqui, novamente, para evitar a criação de protótipos, aproveitei o J-Link. Os sinais RX e TX do conversor de porta UART <-> virtual COM interno são enviados para este adaptador no conector SWD. Eu os usei. Assim, a primeira sintonia apareceu na placa do módulo. É mostrado no diagrama abaixo em vermelho.
(Clique para ampliar)Ie na placa K66BLEZ1, solde a conexão dos sinais vermelhos do conector de depuração com os sinais necessários provenientes do microcontrolador.
(Clique para ampliar)Abaixo está um diagrama do adaptador do conector J-Link ao conector de depuração da placa K66BLEZ1 para entender de onde os sinais vêm do adaptador.
(Clique para ampliar)Organização de projetos.
Eu fiz dois projetos no ambiente IAR Embedded Workbench for ARM 7.40.7.Umrepete completamente o exemplo de trabalho com FatFs do SDK do fabricante.Para uma cópia mais conveniente do projeto, seu estudo e refatoração, extraí todos os arquivos associados a esse projeto do SDK e os transferi para outra estrutura de diretório mais simples, com menos arquivos.Em seguida, alterei as configurações do UART de depuração no arquivo board.h .Para a taxa máxima performance no arquivo sdcard_FatFs.c substituir a função BOARD_BootClockRUN em BOARD_BootClockHSRUN , ou seja, defina a frequência do processador para 180 MHz120 MHzO projeto está localizado aqui.Osegundo projeto é baseado no primeiro, mas com acréscimos significativos.Este projeto permite testar a velocidade de abertura, criação, gravação, leitura, fechamento e exclusão de arquivos.O projeto está aquiDescrição do teste
Compilamos o projeto em IAR e programamos através do adaptador JTAG / SWD no microcontrolador MK66FN2M0VLQ18 na placa.Após o início do programa, um menu do seguinte tipo é exibido no terminal:
(Clique para ampliar) Omenu oferece a execução de um dos três testes e a capacidade de alterar vários parâmetros de teste.O teste número 1 grava sequencialmente o número especificado de arquivos com o tamanho especificado. Dados aleatórios obtidos pela função rand são gravados. Cada registro é acompanhado por uma medida dos tempos de abertura, gravação e fechamento do arquivo.Em seguida, os arquivos são lidos seqüencialmente e seu conteúdo é verificado, o tempo de abertura, leitura e fechamento do arquivo também é medido.Se o sinalizador Apagar estiver definido, os arquivos serão excluídos e o tempo para excluir os arquivos será medido.Para 3 grupos de operações: criação de arquivo, leitura e exclusão reversa, as estatísticas são resumidas.É assim que a janela para testar a escrita, leitura e exclusão de 5 arquivos do tamanho 8192 baht se parece.
(Clique para ampliar) Onúmero de arquivos e seu tamanho podem ser alterados arbitrariamente. Se os valores forem muito grandes, o programa exibirá uma mensagem sobre memória insuficiente.O teste número 2 cria, grava, lê, exclui um arquivo de um determinado tamanho e repete esse número de vezes.O nome do arquivo muda sempre. Aqui o número de entradas pode ser muito grande. O teste permite testar os cartões para concluir o desgaste e, ao mesmo tempo, ver uma imagem da degradação das velocidades de gravação e leitura.Teste número 3cria um arquivo e grava nele o número especificado (valor Cnt de arquivos) multiplicado por blocos do tamanho especificado. Em seguida, o procedimento é repetido para outro arquivo. Este cenário permite testar o modo de gravação contínua típico de dispositivos de gravação de áudio com alterações de volume.Resultados
Na placa K66BLEZ1, a biblioteca FatFs mostrou resultados muito bons.Para o teste, usamos um cartão microSD de 8 GB GOOD RAM SDU8GDMGR (10a série) .Avelocidade média de gravação de um arquivo de 32768 bytes é de 5,1 Mb / s. Avelocidade máxima de gravação de um arquivo de 32768 bytes é de 11,8 Mb / s.A velocidade de leitura média de um 32768 bytes é de 15,9 Mb / s Avelocidade máxima de leitura de um arquivo de 32.768 bytes é 16,2 Mb / s.As medidas foram realizadas pelo teste número 1 em 100 arquivos.Foi observado que a multiplicidade do tamanho do arquivo para o tamanho do cluster tem um forte efeito na velocidade de leitura e gravação.Além disso, com um grande número de arquivos, o tempo de abertura do arquivo começa a influenciar a velocidade geral, que aumenta em duas ordens de magnitude quando o número de arquivos muda de cem para cem.O valor prático dos testes é que eles permitem encontrar as opções ideais de formatação de cartão, tamanhos de arquivo ideais e otimizar o tamanho dos blocos dos arquivos gravados para obter o desempenho máximo.Os mesmos testes ajudarão a ver e avaliar os atrasos de gravação esporádicos característicos dos cartões SD e MMC em conexão com a operação de seu mecanismo interno para nivelar o desgaste dos setores de memória.Todos os materiais relacionados a este projeto estão armazenados aqui - https://github.com/Indemsys/K66BLEZ1Source: https://habr.com/ru/post/pt392955/
All Articles