У меня есть программа на C, которая должна сканировать память от 0xC0000000 до 0xC0001FFF. Перед началом цикла сканера есть подпрограмма, которая заполняет память 0xFFFFFFFF, и она успешно проходит через все пространство памяти. Однако когда начинается основной цикл, переменная addr сбрасывается в 0xC00003e0, а не в 0xC0001FFF. Есть идеи, почему это может происходить? Дайте мне знать, если мне нужно включить что-нибудь еще. Эта программа работает на FPGA Basys3 с использованием программного процессора Microblaze.
В настоящее время первичные подпрограммы находятся в цикле while, while(addr <= MEM_TOP_ADDR)
[проверяет, равен ли addr концу адресного пространства или равен ему. Мой предыдущий метод был if(addr >= MEM_TOP_ADDR)
, оба они приводят к одному и тому же поведению.
while(1){ //The main loop
while(addr <= MEM_TOP_ADDR){
LFSR_runtime();
MEM_SCANNER();
MEM_SCANNER_1();
addr += 4;
addr_1 += 4;
if(addr_1 >= MEM_1_TOP_ADDR){
addr_1 = MEM_1_BASE_ADDR;
}
}
addr = MEM_BASE_ADDR;
}
addr = MEM_BASE_ADDR;
В текущем пространстве программы он может считать до 0xC00003e0, а затем цикл while завершается. Он должен считать до 0xC0001FFF перед выходом из цикла while