Prev: Floating Point Division
Next: NETWORK MARKETING
From: Paolo Roberto Grassi on 8 May 2010 17:44 Hello everybody!! I spent 3 days on it without success and after it I decided to searching for an help. I have a Virtex-II system with Microblaze 7.10.d and external SDRAM memory. The hardware and software system correctly working and the usual "hello world" and "blinking leds" programs work properly. Since I plan to use linux on it, I start preparing a bootloader to be stored into BRAM. In order to perform some test, I prepare two projects in EDK: the bootloader and the SDRAM application. The bootloader waits for a "magic word" (0xDEADBEEF) from PCI bus before starting. From PCI bus I load the second application in SDRAM in the correct location (I create the bin file using mb-objcopy -O binary). When the program receives the "magic word", the program jump to the SDRAM address. But no console output is visible...I try to manually insert the interrupt/reset/exception vectors but nothing change. Here's the codes //BOOTLOADER PROGRAM #include "xparameters.h" #include "xbasic_types.h" #include "xgpio.h" #include "gpio_header.h" //==================================================== void (*app_start)(); int main (void) { #if XPAR_MICROBLAZE_0_USE_ICACHE microblaze_init_icache_range(0, XPAR_MICROBLAZE_0_CACHE_BYTE_SIZE); microblaze_enable_icache(); #endif #if XPAR_MICROBLAZE_0_USE_DCACHE microblaze_init_dcache_range(0, XPAR_MICROBLAZE_0_DCACHE_BYTE_SIZE); microblaze_enable_dcache(); #endif xil_printf("waiting for magic word\n"); Xuint32 magic_word=0; do { magic_word = XIo_In32(XPAR_PLBV46_LOCAL_BRIDGE_0_BASEADDR +0X10); }while(magic_word!=0xDEADBEEF); XIo_Out32(XPAR_OPB_GPIO_0_BASEADDR,0xFFFFFFFF); xil_printf("magic word received\n"); #if XPAR_MICROBLAZE_0_USE_DCACHE microblaze_disable_dcache(); microblaze_init_dcache_range(0, XPAR_MICROBLAZE_0_DCACHE_BYTE_SIZE); #endif #if XPAR_MICROBLAZE_0_USE_ICACHE microblaze_disable_icache(); microblaze_init_icache_range(0, XPAR_MICROBLAZE_0_CACHE_BYTE_SIZE); #endif app_start = 0x44000000; app_start(); return 0; } // SDRAM APPLICATION #include "xparameters.h" #include "xbasic_types.h" #include "xgpio.h" int main (void) { #if XPAR_MICROBLAZE_0_USE_ICACHE microblaze_init_icache_range(0, XPAR_MICROBLAZE_0_CACHE_BYTE_SIZE); microblaze_enable_icache(); #endif #if XPAR_MICROBLAZE_0_USE_DCACHE microblaze_init_dcache_range(0, XPAR_MICROBLAZE_0_DCACHE_BYTE_SIZE); microblaze_enable_dcache(); #endif xil_printf("Hello World, I'm the one in the SDRAM!!\n"); #if XPAR_MICROBLAZE_0_USE_DCACHE microblaze_disable_dcache(); microblaze_init_dcache_range(0, XPAR_MICROBLAZE_0_DCACHE_BYTE_SIZE); #endif #if XPAR_MICROBLAZE_0_USE_ICACHE microblaze_disable_icache(); microblaze_init_icache_range(0, XPAR_MICROBLAZE_0_CACHE_BYTE_SIZE); #endif return 0; } What's wrong?!? Please help me!!! Thanks for your attention
|
Pages: 1 Prev: Floating Point Division Next: NETWORK MARKETING |