Earlier versions of Vxworks didn't support multiprocessing but I read Vxworks 6.6 and above support SMP (Symmetric multiprocessing).SMP would allow process to run parallel in multiple cores. But does Vxworks support multi-programming? One of the issues with Vxworks was that since whole software is one program, if one thread crash the whole software crash! Is it still the case?
The answer is Yes. There are several specific answers of Yes.
VxWorks 6.x and 7.x have process models (called RTPs)
VxWorks 6.6+ and 7.x have SMP.
VxWorks 7.x have memory models more like Unix.
VxWorks 6.x and VxWorks 7 both have Posix pthreads and native multiprogramming API including processor affinity API
I am using Vxworks 6.8 and it supports multiple threads well. Crash in a thread is isolated to it. Crashed thread terminates while others keep their execution.
Related
I wonder by any chance is there a way to install vxworks on vdx86d(vdx6354)? I searched a lot on the net and did not find NO to this question, but no manual or help could be find by me. anybody did this before and know how to do it?
VxWorks certainly runs on PC architecture x86 targets; there is probably already a suitable 80486 BSP that will suit this board. You can search for a suitable BSP here. There is only one BSP explicitly listed for 486 targetted at VxWorks 5.4/Tornado 2.0 - so it is as antique as 486 architecture itself. VxWorks 6.9 however has a single unified BSP for x86 which will no doubt work with your board.
VxWorks is not "installed" as such in the same way as a GPOS such as Linux or Windows; rather you link your application with the VxWorks libraries to create an application image that runs directly on boot. How the bootstrap process works varies between architectures and hardware implementation, but as a generic PC architecture board, booting a VxWorks application on your board will be the same as any other PC target. As such what you need to look for are directions on booting VxWorks on PC architecture rather then being specific about your actual board.
On PC architecture you can boot from mass-storage, or from a network server. Booting via a network connection is the normal method during debug/development. A great deal of the information available is for older versions of VxWorks. However it seems that it is possible to boot VxWorks via a VxWorks specific bootstrap, or from a generic PC bootloader such a s U-Boot.
Ultimately Wind River Support is probably a good starting point.
I have Spectrum Digital evaluation board (evm816x).
I have the problem, when i'm trying to port vxWorks 6.9 to the TMS320DM8168(davinci).
I load u-boot to NAND, it starts, all okey. Then, I load vxWorks image with xds510 usb emulator. All okey, vxWorks works good. Then, i'm trying to start vxWorks from u-boot, its crashing through initialization process.
After a few experiments I came to conclusion that vxWorks start only after CPU reset.
What prevents loading vxWorks in CPU?
Thank you.
Generally VxWorks 6.x BSPs are not designed to work with U-Boot. You may encounter random crash using the U-Boot go/bootelf/bootvx command after loading the VxWorks kernel. The reasons behind this might be different, for example it might be due to disagreement with the physical memory address configured in U-Boot, or inconsistent cache/MMU state.
The latest VxWorks 7 supports U-Boot as the bootloader by default on ARM and PPC targets.
Patches are now in the mainstream of the U-Boot Git repo since U-Boot v2014.01 relesae.
There may be bootable and loadable vxworks images. You are probably run loadable image. That is the default option to build vxworks in workbench. That image expects some initialization to be done by bootloader (which is bootable vxworks that runs the "boottask", which in turn loads the vxworks image).
In short, try to build bootable/romable vxworks image and to load it. Otherwise load the bootloader (bootrom) image which will load your loadable vxworks image.
Is installing MONO on an IBM RISC running AIX possible and or practical?
And if so where do I start?
AIX is not one of Mono's supported platforms.
From the FAQ:
Mono currently runs on Linux, Windows, Solaris, FreeBSD and MacOS X. The Just-In-Time engine (JIT) is available on x86 and PowerPC, Sparc and S390 processors and can generate code and optimizations tailored for a particular CPU. Interpreters exist for the Itanium, HP-PA, StrongARM CPUs.
You could always download the source, and compile it yourself, after working out the platform specifics. Namely, the JITter would need to be ported to handle the processor.
I'm using this Java version:
java version "1.6.0_24"
OpenJDK Runtime Environment (IcedTea6 1.11.3) (suse-9.1-x86_64)
OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)
When I start a java program, e.g.
java TestApp
by default, will the JVM run in parallel ?
If so, which parts run in parallel ?
I am interested in this, because I found if I use taskset -c 0 java TestApp to bind TestApp running on processor 0, the first running time is much slower than java TestApp. Does this imply something?
There are a number of single threaded tasks which have a thread of their own.
the main thread which runs you program
the background byte code to native compiler
the finalizer thread (to call finalize() on objects)
the GC thread pool
Your code will only use as many threads as you create (plus "main" which created for you)
The JVM has native threads and no Global Lock, if that's what you're asking.
The first running time is probably largely JITing the bytecode to machine code. I would suspect very strongly that process is optimized for parallel scenarios.
As i know java programs are able to run on any Operating System.
and there are JVM's for any kind of machines.
I need a JVM that runs on my PC stand alone, and not on my OS (windows or any thing else).
I mean a JVM that acts like a boot, instead of the OS boot
i searched for all versions of JVM on "www.java.com/en/download/manual.jsp", but i did not get the suitable JVM.
the following link helped me a little but that was not enough
http://java-virtual-machine.net/other.html#jvm
my PC CPU is AMD Athlon(tm) 64X2 Dual Core Processor 5200 + 2.69 GHz
any body can help me to find the suitable jvm version ?!
Sure, have a look at JRockit Virtual Edition. As I understand it it's basically a micro kernel especially tailored for the JRockit VM.
From this page:
Java without the OS: JRockit Virtual Edition (VE)
Am I the only one that's never heard of this before? The Oracle JRockit team is looking at eliminating the OS from the stack required to run Java. This product will be called JRockit VE (not out yet)
JavaOS
Good lucking getting hold of it, though, it's nothing more than a historical curiosity.
There are two JVMs that I am aware of, which have this property:
The Fiji WM: http://www.fiji-systems.com/index.html
According to http://rtjava.blogspot.com/2009/11/new-real-time-vm-was-born-fiji-vm.html it also runs on bare metal.
The next possibility is JNode: an open source operating system where most parts are written in Java (the rest in assembly): http://www.jnode.org/
JNode is still beta, though.
No.
There was an idea of making a machine that could run a JVM as an actual machine (non virtualized), similiar to LISP machines, but that idea never took off...
You need a host OS to run a JVM.
Googling "java real machine" might give you some interesting articles.
I've found two: one from 2004, talking about how such a machine could be built and another one, talking about how JVM runs as a real machine on hardware such as mobile devices.
Still, no dice with a plain PC.