To ease the creation of drivers for Genode I've
written a shell script that takes simple Register
specs as input and generates appropriate
MMIO-framework declarations as output.

As an example this input:

r M0_grp0_span 28 32
b Span 0 15

t M0_grp0_xy 32
b Y 0 11
b X 16 11

x M0_grp0_sxy M0_grp0_xy 2c
x M0_grp0_dxy M0_grp0_xy 34

r M0_grp0_wh 30 32
b Height 0 11
b V_scale 12 2
b Width 16 11
b H_scale 28 2



Would result in this output:

struct M0_grp0_span : Register<0x28, 32>
{
    struct Span : Bitfield<0, 15> { };
};

template <unsigned OFF>
struct M0_grp0_xy : Register<OFF, 32>
{
    struct Y : Register<OFF, 32>::template Bitfield<0, 11> { };
    struct X : Register<OFF, 32>::template Bitfield<16, 11> { };
};

struct M0_grp0_sxy : M0_grp0_xy<0x2c> { };
struct M0_grp0_dxy : M0_grp0_xy<0x34> { };

struct M0_grp0_wh : Register<0x30, 32>
{
    struct Height : Bitfield<0, 11> { };
    struct V_scale : Bitfield<12, 2> { };
    struct Width : Bitfield<16, 11> { };
    struct H_scale : Bitfield<28, 2> { };
};


It fastens my workflow a lot when adding many
new registers at a time.

The tool can be found as 'tool/mmio' in my branch
https://github.com/m-stein/genode/tree/tool_mmio.
This branch is not meant to be merged into
genodelabs/master and is updated manually.

To print the tools manual call the tool without an
argument. If you have further questions don't hesitate
to ask me.

Martin

------------------------------------------------------------------------------
Introducing Performance Central, a new site from SourceForge and 
AppDynamics. Performance Central is your source for news, insights, 
analysis and resources for efficient Application Performance Management. 
Visit us today!
http://pubads.g.doubleclick.net/gampad/clk?id=48897511&iu=/4140/ostg.clktrk
_______________________________________________
Genode-main mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/genode-main

Reply via email to