mirror of
https://github.com/genodelabs/genode.git
synced 2025-04-08 11:55:24 +00:00
Simple test for framebuffer driver
This commit is contained in:
parent
b3dd9fcb45
commit
4c3df9caf1
96
os/run/framebuffer.run
Executable file
96
os/run/framebuffer.run
Executable 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
|
||||
|
51
os/src/test/framebuffer/main.cc
Normal file
51
os/src/test/framebuffer/main.cc
Normal 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;
|
||||
}
|
||||
|
14
os/src/test/framebuffer/target.mk
Normal file
14
os/src/test/framebuffer/target.mk
Normal 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
|
Loading…
x
Reference in New Issue
Block a user