Forum Discussion
Altera_Forum
Honored Contributor
15 years ago --- Quote Start --- Hi Teddy, Apart from the fopen issue, I'm concerned about the two R/W instructions:
IOWR(SDRAM_0_BASE, 0, input_data);
output_data = IORD(SDRAM_0_BASE, input_data);Problem 1: You are writing to address 0 and reading from address 1 (content of input_data) which has not been initialized. Maybe, you meant this: output_data = IORD(SDRAM_0_BASE, 0);Problem 2: Are you sure this part of sdram is not already used for anything else? Otherwise your IOWR would corrupt code or other data. Cris --- Quote End --- Thanks for your answer. I used 16bit input_data in c code and 16bit SDRAM using SOPC Builder, but I got only 8bit output_data. Where is the problem? <result> output data1 = 11111111 output data2 = 10101010 =================================================# include <stdio.h># include <unistd.h># include "system.h" int main() { long input_data1 = 0x0000000011111111; long input_data2 = 0x1010101010101010; long output_data1; long output_data2; IOWR(SDRAM_0_BASE, 0, input_data1); output_data1 = IORD(SDRAM_0_BASE, 0); printf("output data1 = %x\n", output_data1); IOWR(SDRAM_0_BASE + 1, 0, input_data2); output_data2 = IORD(SDRAM_0_BASE + 1, 0); printf("output data2 = %x\n", output_data2); return 0; } =================================================