Amm*_*mar 3 embedded microcontroller microchip pic bootloader
我正在制作一个bootloader.在向该块中的那些寄存器写入任何内容之前,我必须擦除1024字节的内存.即使我想写2个字节,我也不得不擦除1024个字节.我的问题是我不知道每个块的起始位置.例如,假设我想将以下字节写入此地址.
地址: 0x198F0
字节:C80E00010001616FDFECD6F08C8C92EC
当我尝试从地址开始擦除1024个字节时,0x198F0
我注意到它开始从中删除0x19800
.
我怎么知道每个块从哪里开始,所以我可以在软件中计算它?
我想知道这个的原因是我可以在擦除它之前将整个块复制到ram中,然后修改它,然后将它写回到同一个块中.我正在使用PIC18f87J11和MPLAB XC8编译器.我希望清楚我想要做什么,否则请在评论中告诉我.
谢谢!
PIC18f87J11的FLASH存储器模块对齐1024字节.要将某个块的起始地址设置为将最后10位地址设置为0,因此您可以使用:
StartAddress = AddressPtr and 0xFFFC00
Run Code Online (Sandbox Code Playgroud)
在你的情况下:
0x198F0 and 0xFFFC00 = 0x19800
Run Code Online (Sandbox Code Playgroud)