Я обращаюсь к памяти на FPGA из HPS под управлением Linux, и наткнулся на проблему.
{
long long address_debug = *(shared_memory + i);
printf("index: %i - value: %16x \n", i, address_debug);
}
возвращает ожидаемые значения в шестнадцатеричном формате, тогда как
for (i = 0; i < 700; i++)
{
long long address_debug = *(shared_memory + i);
printf("index: %i - value: %lld \n", i, address_debug);
}
возвращает значения, сдвинутые на 32 бита влево.Я получаю правильные результаты с:
printf("index: %i - value: %lld \n", i, address_debug>>31);
или
printf("index: %i - value: %llu \n", i, address_debug>>31);
Я в замешательстве, так как сама переменная имеет то же значение, что мне не хватает?