Thank you for your fast response, I've adapted your code to my needs (using the uart_pxa driver in drivers-frst). It compiles and starts up fine on the BananaPi but sadly I'm not getting any response on the uart3 pins... It seems to have a problem in the l4\pkg\drivers-frst\uart\src\uart_pxa.cc when calling the Uart_16550::startup(regs). I get a few wierd boxlike characters on the console and then "failed to startup uart regs".
This is my init() :
#define IRQ_NUM 86 #define UART_BASE 0x01C28C00 . . . bool Maestro_server::init() { l4_addr_t virt_base = 0;
if (l4io_request_iomem((l4_addr_t)UART_BASE, 0x1000, L4IO_MEM_NONCACHED, &virt_base)) { printf("maestro-drv: request io-memory from l4io failed.\n"); return false; } printf("maestro-drv: virtual base at:%lx\n", virt_base);
L4::Io_register_block_mmio *regs = new L4::Io_register_block_mmio(virt_base);
_uart = new (malloc(sizeof(L4::Uart_16550))) L4::Uart_16550((unsigned long) 115200); if(!(_uart->startup(regs))){ printf("failed to startup uart regs!"); }
if(!(_uart->change_mode(0x00 | 0x03 | 0x00, 115200))){ printf("failed to change uart mode!"); }
the rest of it is equal to the serial-drv example. Any idea what i couldve done wrong?
regard, Clemens
l4-hackers@os.inf.tu-dresden.de