Simple test for framebuffer driver

This commit is contained in:
Martin Stein 2012-06-01 20:31:37 +02:00 committed by Norman Feske
parent b3dd9fcb45
commit 4c3df9caf1
3 changed files with 161 additions and 0 deletions

96
os/run/framebuffer.run Executable file
View File

@ -0,0 +1,96 @@
#
# Build
#
build { core init test/framebuffer drivers/framebuffer drivers/timer }
create_boot_directory
#
# Generate config
#
append config {
<config>
<parent-provides>
<service name="ROM"/>
<service name="RAM"/>
<service name="IRQ"/>
<service name="IO_MEM"/>
<service name="IO_PORT"/>
<service name="CAP"/>
<service name="PD"/>
<service name="RM"/>
<service name="CPU"/>
<service name="LOG"/>
</parent-provides>
<default-route>
<any-service> <parent/> <any-child/> </any-service>
</default-route>}
append_if [have_spec sdl] config {
<start name="fb_sdl">
<resource name="RAM" quantum="4M"/>
<provides>
<service name="Input"/>
<service name="Framebuffer"/>
</provides>
</start>}
append_if [have_spec pci] config {
<start name="pci_drv">
<resource name="RAM" quantum="1M"/>
<provides><service name="PCI"/></provides>
</start>}
append_if [have_spec vesa] config {
<start name="vesa_drv">
<resource name="RAM" quantum="1M"/>
<provides><service name="Framebuffer"/></provides>
</start>}
append_if [have_spec pl11x] config {
<start name="pl11x_drv">
<resource name="RAM" quantum="2M"/>
<provides><service name="Framebuffer"/></provides>
</start>}
append_if [have_spec omap4] config {
<start name="timer">
<resource name="RAM" quantum="1M"/>
<provides><service name="Timer"/></provides>
</start>
<start name="omap44xx_fb_drv">
<resource name="RAM" quantum="4M"/>
<provides><service name="Framebuffer"/></provides>
</start>}
append config {
<start name="test-framebuffer">
<resource name="RAM" quantum="10M"/>
</start>
</config>}
install_config $config
#
# Boot modules
#
# generic modules
set boot_modules {
core init timer
test-framebuffer
}
# platform-specific modules
lappend_if [have_spec sdl] boot_modules fb_sdl
lappend_if [have_spec pci] boot_modules pci_drv
lappend_if [have_spec vesa] boot_modules vesa_drv
lappend_if [have_spec pl11x] boot_modules pl11x_drv
lappend_if [have_spec omap4] boot_modules omap44xx_fb_drv
build_boot_image $boot_modules
run_genode_until forever

View File

@ -0,0 +1,51 @@
/*
* \brief Basic test for framebuffer session
* \author Martin Stein
* \date 2012-01-09
*/
/*
* Copyright (C) 2012 Genode Labs GmbH
*
* This file is part of the Genode OS framework, which is distributed
* under the terms of the GNU General Public License version 2.
*/
/* Genode includes */
#include <framebuffer_session/connection.h>
#include <dataspace/client.h>
#include <base/printf.h>
#include <base/env.h>
using namespace Genode;
int main()
{
printf("--- Test framebuffer ---\n");
/* create framebuffer */
static Framebuffer::Connection fb;
Framebuffer::Mode const mode = fb.mode();
PINF("framebuffer is %dx%d@%d\n", mode.width(), mode.height(), mode.format());
Dataspace_capability fb_ds_cap = fb.dataspace();
if (!fb_ds_cap.valid()) {
PERR("Could not request dataspace for frame buffer");
return -2;
}
Framebuffer::Mode const fb_mode = fb.mode();
/* write pixeldata to framebuffer */
void * fb_base = env()->rm_session()->attach(fb_ds_cap);
unsigned j;
unsigned const fb_size = (unsigned)(mode.width()*mode.height())/2;
for(unsigned i = 0; i < fb_size; i++)
{
*(((unsigned volatile *)fb_base) + i) = j;
j++;
}
fb.refresh(0, 0, fb_mode.width(), fb_mode.height());
printf("--- end ---\n");
while(1);
return 0;
}

View File

@ -0,0 +1,14 @@
#
# \brief Basic test for framebuffer session
# \author Martin Stein
# \date 2012-04-25
#
# set program name
TARGET = test-framebuffer
# add c++ sources
SRC_CC += main.cc
# add libraries
LIBS += cxx env