我在 Xilinx SDK 中为 microblaze 编写 ac 代码。变量定义为:
int xcoi;
int ycoi;
u16 mat[1280][720];
该代码读取存储在 DDR2 内存中的图像数据并将其保存到变量中。
if ((lBtnChanges & bitBtnD) && (lBtnStateNew & bitBtnD))
{
for(xcoi = 0; xcoi<1280; xcoi++)
{
for(ycoi = 0; ycoi<720; ycoi++)
{
mat[xcoi][ycoi] = Xil_In16(pFrame + ycoi*(lLineStride*2) + xcoi*2);
xil_printf("\n\r xcoi = %d ycoi = %d \n\r",xcoi,ycoi);
}
}
}
为了检查代码是否正常工作,我在控制台中打印了 x 和 y 坐标。我得到错误的输出部分是:
xcoi = 11 ycoi = 253
xcoi = 11 ycoi = 254
xcoi = 11 ycoi = 255
xcoi = 11 ycoi = 256
xcoi = 11 ycoi = 257
xcoi = 11 ycoi = 258
xcoi = 11 ycoi = 259
xcoi = 11 ycoi = 260
xcoi = -547553269 ycoi = 261
xcoi = -547553269 ycoi = 262
xcoi = -547553269 ycoi = 263
xcoi = -547553269 ycoi = 264
xcoi = -547553269 ycoi = 265
xcoi = -547553269 ycoi = 266
xcoi = -547553269 ycoi = 267
为什么 xcoi = 11 ycoi = 260 后 xcoi 会发生变化?相反,它应该是下一行的 xcoi = 11 ycoi = 261。