В функции ошибка, из за которой всегда данные вводились из тетрады MAIN. Нужно 0 заменить на addr :) Про 64-битную систему сказать пока не могу, так как нет под руками. Вообще-то запускалось и кажется работало.
u32 pex_board::core_set_local_addr(int DmaChan, u32 addr)
{
AMB_SET_DMA_CHANNEL DmaParam;
DmaParam.DmaChanNum = DmaChan;
DmaParam.Param = addr;
if(m_Descr[DmaChan])
{
if (0 > ioctl(fd, IOCTL_AMB_SET_SRC_MEM, &DmaParam)) {
fprintf(stderr, "%s(): Error set source for DMA\n", __FUNCTION__ );
return -1;
}
}
return 0;
}