Operações de limpeza e invalidação de cache

Use um chip ARM para descompactação lógica de hardware, retire o código de descompactação de seu Uboot de código aberto e use-o no LiteOS.

Primeiro leia o arquivo compactado do Flash para a memória, solicite um buffer de destino que seja grande o suficiente e entregue os dois blocos de memória para a lógica do hardware de descompactação.Há uma baixa probabilidade de falha na descompactação; 

  。。。

Depois de ler os dados compactados na memória flash, a operação de limpeza do cache foi executada na memória que armazena os dados compactados e o problema não voltou a ocorrer.

A razão deveria ser que a lógica de descompressão não utiliza o conteúdo do Cache e acessa diretamente a memória.Os dados acessados ​​​​podem ser inconsistentes com os do flash. A operação de limpeza do cache fará com que o cache seja gravado na memória para garantir que os dados sejam consistentes. Invalidar Cache descartará os dados do cache.

O seguinte foi extraído do "Guia do programador da série ARM Cortex-A"

8.8 Invalidando e limpando a memória cache
A limpeza e a invalidação podem ser necessárias quando o conteúdo da memória externa foi alterado e você deseja remover dados obsoletos do cache. Também pode ser necessário após atividades relacionadas à MMU, como alteração de permissões de acesso, políticas de cache ou mapeamentos de endereços virtuais para físicos.
A palavra flush é frequentemente usada em descrições de operações de limpeza e invalidação. ARM geralmente
usa apenas os termos limpar e invalidar.
• A invalidação de um cache ou linha de cache significa limpar seus dados. Isto é feito limpando o bit válido de uma ou mais linhas de cache. O cache deve sempre ser invalidado após a redefinição, pois seu conteúdo será indefinido. Se o cache contiver dados sujos, geralmente é incorreto invalidá-los. Quaisquer dados atualizados no cache provenientes de gravações em regiões passíveis de write-back em cache seriam perdidos por simples invalidação.
• Limpar um cache ou uma linha de cache significa gravar o conteúdo das linhas de cache sujas na memória principal e limpar o(s) bit(s) sujo(s) na linha de cache. Isso torna o conteúdo da linha de cache e da memória principal coerentes entre si. Isto só é aplicável para caches de dados nos quais uma política de write-back é usada. As operações de invalidação e limpeza de cache podem ser executadas por conjunto de cache, ou forma, ou por endereço virtual.

Supongo que te gusta

Origin blog.csdn.net/konga/article/details/89007209
Recomendado
Clasificación