Uma biblioteca de utilitários de programação e emulação eeprom para dispositivos PIC32MX. Até agora, esta biblioteca suporta apenas os dispositivos PIC32MX1XX/2XX/5XX 64/100PIN da folha de dados D60001290.
Esta biblioteca pressupõe que você tenha a cadeia do compilador xc32-gcc instalada. Se não o fizer, você pode encontrá -lo aqui.
eeprom_read_word lê uma palavra da EEPROM emulada, se habilitadoeeprom_write_word escreve uma palavra para emular EEPROM, se habilitadoflash_write_word escreve uma palavra para programar a memória flashflash_program_page_offset Read/Modify/Write Algorithm para escrever uma página que seja deslocada no tamanho da página. Observe que esta função escreverá apenas uma única página. Se os dados fornecidos forem maiores que uma página, os dados adicionais não serão gravados.flash_program_page Read/modificar/gravar algoritmo para escrever uma página para programar a memória flash. Retornará FLASH_NOT_ALIGNED se o endereço fornecido não estiver alinhado na páginaflash_write_page grava uma página para programar a memória flash. Observe que isso vai apagar o que estiver na página antes.flash_write_row escreve uma linha para programar a memória flashflash_erase_page apaga uma página do programa Flash Memoryflash_erase_all_program_memory apaga toda a memória flash do programa - incluindo o setor EEPROM emulado. Use com cautela. Observe que esta função é ativada por padrão, mas pode ser desativada para evitar acidentes com a variável DISABLE_ERASE_ALL_PROGRAM_MEM cmake Basta adicionar a pasta como um subdiretório. Não se esqueça de definir o compilador para o compilador xc32-gcc .
add_subdirectory(path/to/flashlib)
...
target_link_libraries(target flashlib)
Agora você pode incluir o arquivo flashlib.h e usar as funções definidas nele.
Você pode especificar na hora do compilação qual seção do flash você deseja dedicar à emulação da EEPROM. As seguintes variáveis cmake estão disponíveis:
-DENABLE_EEPROM_EMU # Enabling compilation of eeprom emulation
-DEEPROM_SECTOR_START=<ksegaddr> # Determines start address for eeprom dedicated flash memory
-DEEPROM_SECTOR_END=<ksegaddr> # Determines end address for eeprom dedicated flash memory
As variáveis de partida e final são necessárias se você deseja usar a emulação da EEPROM. Se ENABLE_EEPROM_EMU não estiver definido, não há necessidade de definir os setores de início e final. Observe que todos os endereços flash devem estar no espaço do kernel (KSEG0/1). Abaixo está um exemplo de uso:
cmake -DENABLE_EEPROM_EMU=1 -DEEPROM_SECTOR_START=0x9D070000 -DEEPROM_SECTOR_END=0x9D07FFFF ..
Se o seu MCU suportar programação de palavras duplas (nem todas), você poderá compilar com o suporte para isso com a variável de sinalizador CMake ENABLE_DOUBLEWORD_PROGRAMMING .
Você pode proteger um segmento de flash, de modo que a biblioteca se recusará a escrever para endereços nesse segmento. Use essas variáveis cmake para determinar seu segmento protegido:
-DPROTECTED_FLASH_SECTOR_FROM=<ksegaddr> # Determines start address for flash protection
-DPROTECTED_FLASH_SECTOR_TO=<ksegaddr> # Determines end address for flash protection
Se você tiver alguma adição que deseja enviar, sinta -se à vontade para abrir uma solicitação ou problema de tração. Certifique -se de adicionar -se à lista de autores nos arquivos apropriados.
O CMake tenta verificar se o compilador fornecido I "válido", mas xc32-gcc não suporta o sinalizador padrão -rdynamic . Esta verificação pode ser evitada, fornecendo ao CMake o -DCMAKE_C_COMPILER_WORKS=1 sinalizador.