virtex 4 linux driver bus error

Mirsad Vejseli Vejseli at web.de
Wed Oct 22 23:10:12 EST 2008


hello at all,

at the moment I use development board ML410 with montavistalinux. 

I have a problem, please help me! 

I try to write a linux-driver for writing or reading registers.
I have a ace-file, which contents Linux and EDK-project with a component (IP-wizard) which is added on a PLB-bus.
I also have a driver-construct which I can register (insmod driver.ko) into the linux-Kernel only if i do not use functions to write or read the bus (XIO_out32() or XIO_in32 ()  ). If I use this function after registering the driver I got an error.
If I try to insert the modul with Insmod driver.ko I get a bus error!  

my driver is similar to http://ozlabs.org/pipermail/linuxppc-embedded/2006-January/021578.html
 

her the two importent functions  of the driver:

#define REG_BASE 	(u32) XPAR_komponente_0_BASEADDR // defined in xparameters_ml41x.h 
#define REG_HIGH 	(u32) XPAR_komponente_0_HIGHADDR // defined in xparameters_ml41x.h 


#define reg0_upper	(u32) komponente_SLV_REG0_OFFSET // 32-bit register / defined in komponente.h
#define reg1_upper	(u32) komponente_SLV_REG1_OFFSET // 32-bit register / defined in komponente.h
#define reg2_upper	(u32) komponente_SLV_REG2_OFFSET // 32-bit register / defined in komponente.h

const static long remap_size = REG_HIGH - REG_BASE + 1;

static void read_register_values(void)
{
	static u32 upper;
	

	printk("%s:\n",DRIVERNAME);
	printk("%s:                      |     upper         |\n",DRIVERNAME);
	printk("%s:----------------------|-------------------|\n",DRIVERNAME);
	
	upper = XIo_In32(reg_remapped_address + reg1_upper);

    printk("%s: Daten im Register 35 |%15X |\n", DRIVERNAME, upper );
	
}


static int __init meintreiber_init(void)    
reg_remapped_address = (u32) ioremap(REG_BASE, remap_size);
   
    rtn = misc_register(&miscdev);
    if (rtn) 
    {
		printk("%s: %s error driver not reg. \n",DRIVERNAME, miscdev.name);
        return rtn;
    }

	read2_register_values();
	
in the messeges log file i got the 3 printk lins and this line 
"upper = XIo_In32(reg_remapped_address + reg1_upper);"
creates a error

 


Thank you very much for your kind help! 
________________________________________________________________________
Schon gehört? Bei WEB.DE gibt' s viele kostenlose Spiele:
http://games.entertainment.web.de/de/entertainment/games/free/index.html



More information about the Linuxppc-embedded mailing list