Ravi Kumar Pujari wrote:
> Hello,
> 
> I am a student of Technical University Munich, currently researching on SMP 
> and 
> RISC architectures.
> As part of my work I was interested in getting a Microkernel running on the 
> OpenRISC processor (from www.opencores.org).
> I am aiming to get a SMP system running and to validate a Microkernel 
> performance on it.

Hi Ravi,

It sounds interesting and it would be great to see Codezero running on
an open core.

> Hence would like to port the Codezero stand of L4 kernel as the site suggests 
> it 
> is a lean implementation for embedded systems and should be easily portable.
> 
> As a staring point I did try to compile the v0.3 obtained from the git 
> repository (www.git.l4dev.org/codezero.git) using the gcc ported for OpenRISC 
> processor, just to see where all the compilation would fail and in this way 
> to 
> get the list of all the functions that are ARM specific and need to be 
> ported. 
> While I saw that the build is automated heavily based on the build.py and as 
> such it uses some hard coding in terms of architecture specific compiler 
> switches like "-march=armvX", which isnt supported for the OpenRISC port of 
> gcc 
> and "arch and subarch" for path rules and hence my compilation fails on every 
> file :(

This is due to the configuration file. We use an ARM configuration file
which we created, and the build logic generates these flags based on the
architecture it has parsed in the cml file. cml files are under
config/cml/ and have a syntax of their own. Please google for cml2 for this.

Here you go, from config/configuration.py

121     # Extract cpu from a name value pair
122     def get_cpu(self, name, val):
123         if name[:len("CONFIG_CPU_")] == "CONFIG_CPU_":
124             parts = name.split("_", 3)
125             self.cpu = parts[2].lower()
126
127             # derive gcc "-march" flag
128             for cputype, archflag in self.arch_to_gcc_flag:
129                 if cputype == parts[2]:
130                     self.gcc_arch_flag = archflag

You need to create a basic configuration file for your core, and there
are bits like this that you will need to change.

> Could you please send me the SMP version of Codezero v0.3 kernel and also 
> some 
> wiki/documents/hints on the code structure breakup and the necessary 
> architecture specific parts in the code that I would have to port from ARM to 
> OpenRISC.

This is already on the site git.l4dev.org. And wiki documentation is
under l4dev.org as well.

However, we don't have specific directory documentation.

Particularly you need to be confident with your core's virtual memory
details.

1) Do you know how to create and manipulate page tables?
2) You need detailed assembler knowledge for implementing context
switching, entry and exit from exceptions.
3) You need to write some basic timer and irq controller driver
4) Uart driver would be helpful.

If you are capable of doing (1) and (2) the rest should be easy.

> I would be thankful for this support from you.
> 
> Thanks and Best Regards,
> 
> Ravi Kumar
> Graduate Student
> Institute for Integrated Systems
> Department of Electrical Engineering and Information Technology
> Technische Universität München
> 80331 Munich, Germany

Good luck!

-- 
Bahadir
_______________________________________________
codezero-devel mailing list
codezero-devel@lists.l4dev.org
http://lists.l4dev.org/mailman/listinfo/codezero-devel

Reply via email to