Mil-Spec Forth & Mil-Spec Linux, platform for Parallax
mklrobo
Posts: 420
I would like to ask a question, to Parallax, if I could.
I am developing a linux operating system, Mil-Spec. I would like to commit this OS system, as a
Parallax development enviroment. I will have to develop a language for the propeller that is
"in sync" with the Libraries for the operating system, Mil-Spec Forth. I have made commitments
and investments with Parallax products,(like everybody else in this forum), and have noticed that most of the
core problems have already been solved by somebody else. In the interest of stop reinventing the wheel,
Mil-Spec OS would contain libraries of solved projects, with code, and some other goodies in the plan.
I will need help from this forum, to help build the project. I am asking your permission, because I plan to
make it in your best interest, as well as the people in the forum, and mine. If I overstep, please let
me know. I am starting on the infrastructure now, and will put the project in the project section, with
your blessing. all documentation, schematics, CAD drawings, authors, code, instruction where applicable
will be included with each project. When you download the operating system , Mil-Spec OS, you get this
automatically, plus Mil-Spec Forth, and more; Free.(also avaliable for Raspberry Pi & BeagleBone systems)
:cool: If it's Mil-Spec, you know it works! :cool:
May "The code" be with us!
I am developing a linux operating system, Mil-Spec. I would like to commit this OS system, as a
Parallax development enviroment. I will have to develop a language for the propeller that is
"in sync" with the Libraries for the operating system, Mil-Spec Forth. I have made commitments
and investments with Parallax products,(like everybody else in this forum), and have noticed that most of the
core problems have already been solved by somebody else. In the interest of stop reinventing the wheel,
Mil-Spec OS would contain libraries of solved projects, with code, and some other goodies in the plan.
I will need help from this forum, to help build the project. I am asking your permission, because I plan to
make it in your best interest, as well as the people in the forum, and mine. If I overstep, please let
me know. I am starting on the infrastructure now, and will put the project in the project section, with
your blessing. all documentation, schematics, CAD drawings, authors, code, instruction where applicable
will be included with each project. When you download the operating system , Mil-Spec OS, you get this
automatically, plus Mil-Spec Forth, and more; Free.(also avaliable for Raspberry Pi & BeagleBone systems)
:cool: If it's Mil-Spec, you know it works! :cool:
May "The code" be with us!
Comments
I'm not certain what you're proposing, but I'm also not sure that you need much in the way of approval, either. If you want to distribute code from Parallax, go ahead. Just give your users a way to get any updated versions. If you're headed for some kind of high-profile introduction on KickStarter or somewhere else we'd be happy to provide more input to make sure this could be a success.
In general I think you're proposing some sort of super battle- and user-hardened Propeller board. That sounds like a first for us.
If you feel the need for any specific feedback please contact me as you desire by e-mail or posting here on the forums.
Sincerely,
Ken Gracey
OK, I finally found the thread you mentioned and followed you over here. Having read your proposal here I still have no idea what it is you want to create.
Sounds like an OS, no wait a language, no maybe a library/object packaging system.
Can you elaborate?
BOTH. My brother is compiling a whole operating system, just like the operating system you are using (undoubtly) on your laptop. That
operating system, like Windows, only Linux. Unbutu, minix, and other linux operating systems for the PC. Windows does not come with
a Parallax IDE, or propeller library on it. You must download it. Mil-Spec linux OS has Parallax propeller and product libraries on it.
Mil-Spec Forth will be the regular PropForth, with added libraries to use in the linux operating system.
Why do all this at all? Is this a waste of time? I could be eating a pizza or something........
Hobbiests', like yourself, want to make advanced projects, like new inventions for medical, robotic, industrial, etc. You need new
libraries and tools to move forward, wherever that may be.
Linux offers software tools to make your own device drivers. (CD-ROM, etc)
example;
you develop a robot that could walk but requires 2 props to control each leg,
and you have not even addressed the upper body.
How do you put it all together, with brains, communication, and control?
Use a Beaglebone (1 GHz processor) with Mil-Spec OS linux on it.
Treat the Propeller as a device, and write a device driver for it, as a module
in the linux KERNEL OS.
Your legs now run in real time, by a central control, by an operating system
which is super fast, with central control. The Props in the legs are
written in Mil-Spec Forth, in which there will be no conflict with the operating
system. Timing, handshaking, interrupts, are handled by the system seamlessly.
This is the theory, anyway. Devices are written in Linux very similar.
I appreciate the questions. This helps me clarify and focus.
higher functions required, need a C Program, to arrange the control. I have toyed with this
idea; In the older days, computers used to have a "virtual" coprocessor, which physically
did not exist(in the software). In that spirit, there could be a "virtual" propeller program that you could use
to coordinate the props in the legs, from the PC point of view, if that makes you feel more confortable.
Either way, I feel it would be a direction that is promising, and no one else has use this approach yet.
Thanks for the input.
Why not put a "virtual" propeller on the operating system? Like SPICE, it could
take virtual devices(switches, motors, sensors, etc) and integrate them
on the propeller program you wrote. For the beginner, it helps them identify
parts and purposes; for the advanced, a diagnostic and systems tester.
Either way, time is saved, ideas created, and hearts swell with gladness!
If you want to construct a tera propeller, or a 100 propeller project, do it!
(If you have the memory in the operating system to do so!)
comments, questions?
Mil-Spec Forth through Mil-Spec Linux should, in theory, be the fastest forth ever created,
or ever will be. The code does not make the application faster, the system does. You will
run with the power of your PC or Raspberry PI/BeagleBone. Comments?
To my knowledge, there is not a mil-spec standard for this. I used the name, because of the results I expect from the project. No reflection on the DoD at all. When I
think of mil-spec items, I think of reliability and durability. To this philosophy, is what I wanted to follow. It is not a name owned by anyone, I think. I appreciate your
insight. If the name were not Mil-Spec, what name would you suggest?
OK, I start to get the picture:
You want:
1) An OS installation that comes complete with all the tools needed to develop for the Propeller. I presume based on Linux.
2) This will run on a Beagle as the "brains" of some system that uses one or more Propellers as controllers of peripheral parts of the system. The real-time, real world, interfaces with sensors and actuators.
3) Some kind of software that will run on the Propellers and the Beagle that makes all this work. Taking care of at least communication to the Propellers.
Did I miss anything?
I can make the following comments, mostly in the nature of personal preferences, some perhaps factual:)
1) This is, of course, not a new idea, in outline at least. Many of us here have been toying with the idea of marrying the real-time capabilities of the Propeller and the capabilities of tiny ARM boards running Linux. The latter being able to run far larger application code and take care of networking, storage etc etc. And very conveniently providing a Propeller development system within the target system.
These conversations have normally involved Raspberry Pi and other ARM boards. The Beagles would be a fine option.
Do check Bill Henning's Propeller boards for the Raspberry Pi under discussion on the forum.
To that end we have already achieved running Spin and C compilers and Propeller loaders on the Raspberry Pi. Including the SimpleIDE graphical development environment. These could be easily built for Beagles and other boards.
As of yesterday we can run the command line Spin compiler and loader on wireless routers that have been loaded with Linux. Under discussion on this rather long thread: http://forums.parallax.com/showthread.php/156414-WiFi-amp-IOT-for-home-controllers-monitors-using-WR703N-20-routers-and-xx-WRT
2) A special build of a special "home-grown" linux does not appeal to me.
My PC's and all my ARM boards run Debian. Debian is not the main point here. Point is it's a system that works very well, it has tremendous support, has a packaging and upgrade system that works very well. It's available, with out recompiling everything, for a huge range of devices. Including the Beagles I believe.
A one off home grown Linux system by contrast will have none of that support and universality. Do you want to provide that? For years into the future? I think not.
A better idea, would be just to create Debian and other packages of whatever software you come up with. If your software is good and gets a user base perhaps one day it will end up in the repositories of the Linux distributions, readily available to all.
As far as I am concerned typing "apt-get install mil-spec-whatever" is a lot easier than messing with a whole different Linux OS.
Similarly we are getting Propeller tools running on cheap wireless routers by building the code for OpenWRT. OpenWRT is a small Linux OS developed especially for routers. OpenWRT runs on a huge variety of hardware, has a lot of support and will be around for some time. A home grown OS is of no use there.
3) Forth does not work for me. Forth does not work for most people.
By the way, why rename PropForth to Mil-Spec Forth? That is rather disrespectful to the PropForth author.
4) You do not need to write Linux device drivers to communicate with Propellers. You are most likely to be using serial links. So normal Linux serial port drivers will do fine.
5) "Higher level functions", I presume you mean the code on the Linux machine, need not be written in C. With the processing power available in these devices today people will want to use Python or JavaScript or whatever. Certainly if you have generally useful functionality to provide then creating it in C and providing libraries is the way to go.
6) What is the "mil-spec" part all about? I see no military specifications here.
7) If you cannot clearly articulate what you are proposing there is little chance of attracting developers or users. Unless, perhaps, you have a pile of really useful code. Which I guess is not the case at the moment.
Still, don't let me discourage you from exploring options. We spend a lot of time discussing such things around and around here. Some of it even makes it into reality:)
Oh, and full credits for building a linux system by compiling everything from the boot loader up yourself. I had a lot of fun doing that back in the late 1990's. It provides some very useful Linux experience but is not something I would be wanting to use day to day.
Your assumptions are mainly correct.
In respect to Forth, there are other authors, Tachyon. Did that the author of Tachyon write all the assembler and
support without any ghost of support from PropForth? IF so, how do you get support from this forum when no one has any
idea of how the base of your Forth works. This is why Linux has a core that is the basis for all linux operating systems.
Everyone builds on software that was made before, building specialized software. I can not improve upon PropForth, and would
not presume otherwise. The Forth that I must make is altered to work with the operating system libraries, to avoid
communication problems, any other compatibility problems. Anyone who creates a system like this, would run into this
unavoidable problem, no disrespect intended at all; just another problem to solve.
I would invite support from the forum, in the same respect that was given to the author of Tachyon.
The only way to present a more precise explanation, is to present the software for download. So, I
guess I will proceed to that. Parallax seems to be happy with the concept, for now. Any new
endeavor has a chance for failure; I will give it the best shot I can.
There are in fact no operating systems called Linux. "Linux" is a kernel on which operating systems can be based. Debian, RedHat, Ubuntu, whatever. You will notice that such operating systems do not rename the Linux kernel they use, they call it "Linux". If they happen to make their own patches and additions to it that is reflected in the version numbering scheme. This is the opposite of your proposal to take a Forth and rename it.
Yes, as they say "Show me the code".
However in this case the code will be in Forth so please don't show it to me. I get terrible problems with my balance and headaches when I try to use Forth. This not so much a problem with Forth, it's just a language right, but rather my brain reeling with confusion when trying to figure out why people want to do things the hard way when there are so much easier ways to do it
I don't understand why you are so concerned about getting permission or approval from Parallax to write whatever code you like for the Propeller. That is what it is for!
Also why is this in the "suggestions to Parallax" forum section? I see no suggestion to Parallax here. It's just another Propeller project idea.
In relation to people doing things the hard way, you are exactly right. I do not want to corrupt the perfect PropForth that Parallax has created,
but adapt it to the linux Operating System.
another example; (from experience)
An industrial electronic technician works with a machine that uses a DC drive. The
DC drive is programmed generically, as the manufacturer saw fit. The tech
working on the machine, with the operators, devined a way to make the machine
work better, but a new DC drive would have to be made. The tech tried to
design a way, but time and lack of resources ensured failure.
With Mil-Spec, he would have had the software tools to complete
the venture, for improvement, and profit.(propeller as a driver to the DC drive)
I appreciate your insight; you have shown me a new way to look at
what I am doing.
If you are running your "Mil-Spec" Linux OS on some other processor why are you writing it when it would be much easier to port the Linux OS?
Will your "Mil-Spec" Forth run on the development machine or on the Prop?
How will your "Mil-Spec" Forth differ from PropForth?
What features will your "Mil-Spec" Forth provide?
You should not use the term "Mil-Spec" since this implies that your system adheres to mil-spec standards that were developed by the Department of Defense.
Well Mil-Spec is a very interesting name and bound to attract a lot of attention. But you might be a bit more concerned about DoD permissions than Parallax permissions.
There is a US registery of trade-marks and brand names. You should look at and also consider their guide lines of what is acceptible. Mil-Spec may actually be too generic to qualify for either.
But the real bottom line is what you have in terms of Linux and Forth to deliver. We have several versions of Forth that are highly optimized for the Propeller and I suspect that none of them is going accept being bumped to a lower position by a new contender without some very healthy and agressive competition.
And then, the whole concept of Linux on a Propeller implies that you are going to establish the whole of a Linux distribution.. including depositories and an update cycle.
Both projects seem very ambitions... certainly more that I could ever take on myself. I have no idea of your background and resources, but the whole scheme sounds like a full-time job for a long time to come. It should reward you accordingly or why bother?
Great Questions. This will help me focus. As for Dave's questions, I will have to define in exacting the
infrastructure. Insofaras my credientials, I am not a professional writing code all day. I do rely on a small
group of hackers near me, to pass thorough ideas. I am not affiliated with Parallax in any professional way,
as to entertain kickbacks from them. I do work around some ARM processors, and their dedicated software.
(don't we all?) This is, for me, a journey of putting together a large system. comparision - if you have never
changed out your window, but want to, when will you learn, and how? If I do not push myself for excellence,
I tend to fall back.(meanwhile, back at the Ranch) I have found that results & experience define the professional,
more so than credentials, but are needed. (credentials DO get you in the door!) Thanks.
- If you always do, what you have always done, you always be, what you have always been. - author unknown
Where did you get that idea?
Parallax did not create PropForth.
I stand corrected. PropForth was started by authors in the forum. Parallax does provide propeller C, Pasm, and simple IDE. There was alot of talk in the forum
about PropForth, which seems to be a standard that most use. But, I alway think of this saying when I am humbled;
If you don't enter the pool, you will never beat Mark Spitz like Michael Phelps did.
Learning opportunities abound for everyone! I strive learn something new every day.
:frown: I had ONE last dream, and you stepped on it. But, that's okay.
1> I have not created the forth language yet. 2> Have created the linux platform, but have not introduced the Parallax info into it.
Your questions in thread# 15 and 16 have helped me focus on the infrastructure that I am planning to build.
The OS platform runs on your computer, which will replace the use of Windows, as linux systems go.
This particular Linux distribution, however, will be user-friendly to the Propeller and parallax products, in the
sense that it will be easier to run applications that program the propeller on that system, plus other goodies.
Had a talk with Beau Schwabe, and explained what it was I planning to do. He seemed happy to have
an OS that would be a development system for the propeller. He wrote a Prop to Prop program, and has hosted
up to 10 props. I plan to use that program as a Propeller "emulator" that comes with the Linux OS. That,
plus other programs that I have had in mind. Beau has tried to run some programs written for programming the
propeller, but did not work on his system. This is what I am trying to avoid. If someone can not run a program,
they will get fustrated, and probably let their project die. With a Parallax friendly OS, and some tools and toys
to help in their building quest, maybe their experience will be a good one.
People are not going to give up their Windows, Mac or Linux based operating system to run your one off unsupported creation. I am certainly not going to give up my Debian to do so. Currently the best way to help make a Linux operating systems friendly to the Propeller is to create installable packages of propgcc, openspin, spinsim, SimpleIDE and PropellerIDE for all the common Linux distributions, Debian, Ubuntu, RedHat, Mint etc.
The developers of these applications are in desperate need of help from people skilled in creating such packages.
Perhaps your energies would be better spent in that direction if you are keen to help out.
I still don't understand the Forth part. There may be a lot of chatter about Forth on the forum, but there's less than a dozen people that actually do any real Forth programming on the Prop. Also, I would suggest looking into Tachyon Forth. It is much faster than PropForth and it produces more compact code. It also seems have more features than PropForth.
smart observation. You are right in the installable packages of those OS. We attempted that, and found the problem, for us, to be beyond our reach. We had to focus
on one distribution that we could control and debug, respond to users, and modify and/or add libraries needed for software to function. In this direction,
we could document and maintain modifications, to ensure stability.
Great suggestion and insight from you and Dave, I appreciate it.
http://www.linuxcnc.org/
So something like this but with all the latest propeller tools built in. As a bootable image users would just boot this for doing prop work, no need to make it your primary OS install.
I would suggest focusing on the PropGCC tools instead of FORTH, that isn't to slight FORTH, it's just that you'll have a much larger audience using C/C++.
C.W.
I am goint to contact Ken Gracy to see if there is any software like this, and/or emulators (and other toys)
that he would like to see in the operating system. Thanks for your insight!
In reference to this question;
Whatever tools I use, I will have to (obcioulsly) test them in the operations system, to make sure they run
flawlwssly. If I have to alter them, to make them compatible to the system, then I must do so. All the features
of the original software MUST work like the author intented. If the alter process has to be extreme, (I will know when I
get there), Then I may have to make a clone of that software, and Lable it Mil-Spec ______(name of original software).
Have you compiled a complete version of a distribution of linux before? May need your advice on some of the aggrevating
internals, if you could ofer insight. Thanks!
Unfortunately no, I haven't done that.
Reading through this thread the LinuxCNC being similar came to mind. I've used it for testing on my 3D Router and it was really nice to be able to just boot it on my machine instead of committing to a full install.
What you want to do, or at least what I think you want to do, is not going to be a simple task. If you do some searching for "Gold OBEX" I think you will find a few threads discussing trying to come up with "Gold Quality" standard objects. There is still no "Gold OBEX", "Industrial Strength OBEX", etc. review the threads and you will see why.
I think an achievable first step would be a bootable Linux similar to the LinuxCNC, but with all the open source propeller tools, a few nice serial terminals, etc. It could also include resources for the various FORTH implementations if the creators agree to having them included.
I would look at this as a "So you want to explore the Propeller." bootable CD. I would suggest using a common Linux distribution that has "Long Term Support" or some other very stable supported version.
C.W.
Edit: "Gold Standard" is what you can search for, not "Gold OBEX".
Ooops... more loopy than me. Parallax did not create any of the versions of Forth on the Propeller. We may share a lot, but give credit where credit is due.
PropForth Sal Sanci
pfth Dave Hein
Tachyon Peter Jakacki
And there are others than paved the way, but are no longer active.
I'm not sure if linuxcnc is at all a comparable situation. I imagine that those setting up CNC machines would dedicate a PC to the CNC machine not uses it as a primary work station. There may well be other reasons for wanting a special distro for CNC. Does it use a funky real-time kernel or real-time layer under the kernel for example?
I cannot imagine people wanting to boot some weird OS just to do some Propeller work and have to be switching back and forth all the time. That is just not going to happen in the same way I did not dual boot to Windows to run the Prop Tool back in the day.
mklrobo,
By baulking on the problem of creating packages, even for one distro, you have passed a whole pile of problems on to anyone who may want to use your code. They would now have to deal with a weird, one off, Linux system.
I have compiled complete Linux systems a few times, from the boot loaders up and for different machine architectures. It's not something you want to be doing if your goal is to distribute tools for the Propeller.
However I would suggest anyone curious about it should have a go. If you want to do it the easy way there are step by step instructions available: http://www.linuxfromscratch.org/. That should answer your Linux building questions mklrobo.
Lastly, how do you intend to keep your Linux distro up to date and secure into the future? To manage that properly you are going to need a package manager....Would it not be better to master one that already exists and works very well?