Eu tenho um sistema com 3 elementos:
- Um sistema embarcado com esta biblioteca FAT que faz várias operações no sistema de arquivos FAT (por exemplo, adicionar / remover arquivo / dir, anexar ao arquivo). As funções de leitura / gravação do setor geram solicitações USB para executar essas operações no host USB do barramento.
- Em um PC Ubuntu, eu tenho uma regra do udev para iniciar um programa assim que o último sistema incorporado se conectar. Esse programa escuta mensagens vindas do USB (usando libusb) e executa as operações de leitura / gravação solicitadas no arquivo de destino.
- Como uma configuração para o programa posterior, temos que fornecer um arquivo de partição / binário a ser alterado pelo sistema incorporado FAT lib.
Eu criei uma partição FAT32 de 1 GB (/ dev / sdb1) e fiz um teste simples para adicionar diretórios e acrescentar texto aos arquivos. Aqui estão os resultados:
- Novos diretórios / arquivos serão imediatamente vistos no ponto de montagem (basta atualizar no diretório), mas anexar conteúdo a um arquivo já existente requer desmontar e montar para ser visto;
- Se eu adicionar um novo diretório e um novo arquivo dentro, essa alteração será vista no ponto de montagem, mas se eu desmontá-lo depois que todas as operações do setor estiverem concluídas (o sistema integrado é um loop while) meu aplicativo de PC, quando eu montar esse diretório será completamente vazio (nem mesmo. e .. estará lá). Para um propósito de teste eu chamo fflush e fsync após cada fwrite e o resultado é o mesmo.
Alguém pode explicar por que isso acontece? Especialmente o último ponto, não consigo entender como posso ter os dados lá, remontar a partição e depois desaparece. No final, provavelmente vou desmontar tudo pelo software para ter certeza de que o sistema embarcado é o único que está alterando o sistema de arquivos, mas por enquanto estou apenas curioso.
EDITAR
Veja como meu sistema está conectado: