EmbeddedRelated.com
Forums

Embedded Basic interpreter recommendations?

Started by John Speth March 9, 2009
On Mar 10, 12:56=A0pm, Jon Kirwan <j...@infinitefactors.org> wrote:
> Well, you are talking to programmers then. =A0I have considered the idea > of a nicely partitioned system -- an execution unit that resides on > the target or may reside on a host, an interpreter that _may_ also > reside on the target OR it may also reside on a host system connected > to it, and a compiler as well that may generate final target code in > machine language, as well. =A0I was considering how to modify BASIC to > support constant, initialized arrays that might be placed into flash, > etc. =A0It's nice to have choices.
Debug becomes pivotal here. The Line-number/edlin model can really only get you so far, then you need to step thru the code, and watch variables. Once you do that, the Host/Emulation/Simulation (includes Emulation via Simulation - umbilical solns) becomes much nicer, then you can force DOWN the resource in the target, and use the Host more. umbilical emulation allows a minimal monitor core, and the host runs a more local simulator. Also suited to flash/ram splits seen in typical uC. Of course that places more caveats on the host. Still, this pathway allows you to share a lot more of others work, and also chose a mature language/debug system for the host, that you clone on the target, OR you decide to implement a TurboPASCAL model entirely in the target, with a compact editor/debug/Compiler - Chips ARE now big enough to make this viable. A USB terminal could almost be a defacto, as most candidate devices for this, would includes USB for free. Next step would be a Flash-Drive stub, where you included a Better PC- USB-Terminal in a SPI flash, and the target becomes the whole system...Mobile-Compute-Debug model :) -jg
On Mon, 9 Mar 2009 18:43:21 -0700 (PDT), -jg <Jim.Granville@gmail.com>
wrote:

>On Mar 10, 12:56&#4294967295;pm, Jon Kirwan <j...@infinitefactors.org> wrote: >> Well, you are talking to programmers then. &#4294967295;I have considered the idea >> of a nicely partitioned system -- an execution unit that resides on >> the target or may reside on a host, an interpreter that _may_ also >> reside on the target OR it may also reside on a host system connected >> to it, and a compiler as well that may generate final target code in >> machine language, as well. &#4294967295;I was considering how to modify BASIC to >> support constant, initialized arrays that might be placed into flash, >> etc. &#4294967295;It's nice to have choices. > >Debug becomes pivotal here. The Line-number/edlin model can really >only get you so far, then you need to step thru the code, and watch >variables.
Non-programmers? Their level of approach is printing out variable values by inserting lines. Basically. The whole idea of watching variables would be a bit much -- not so much because they can't get the idea in general but because of the learning curve for the menu options of adding, deleting and modifying the added watches. It's really, really easy to use what they have already learned (adding statements.) It's just more unnecessary "stuff" to laden them down with another user interface. Of course, I really don't know what the OP is intending. (Wish we'd get some responses.) "It's meant to be a tool for interactive experimentation of embedded concepts by non-programmer types," seems to be the guide, though. I imagine this as "turn on a light" by a single statement that keeps a TRIAC fired and where the actual detailed code that may monitor zero-crossings, handle phase angle decisions, etc., is hidden inside the BASIC interpreter. Stuff at that kind of level, really. Or maybe not. Hard to tell. So maybe more is better than less. But the OP did clearly say something about line numbers as the approach -- and I have to count that for something here.
>Once you do that, the Host/Emulation/Simulation (includes Emulation >via Simulation - umbilical solns) becomes much nicer, then you can >force DOWN the resource in the target, and use the Host more. >umbilical emulation allows a minimal monitor core, and the host runs >a more local simulator. Also suited to flash/ram splits seen in typical >uC. > >Of course that places more caveats on the host. > >Still, this pathway allows you to share a lot more of others work, and >also chose a mature language/debug system for the host, that you clone on the >target, OR you decide to implement a TurboPASCAL model entirely in the target, >with a compact editor/debug/Compiler - Chips ARE now big enough to >make this viable. > A USB terminal could almost be a defacto, as most candidate devices >for this, would includes USB for free. > > Next step would be a Flash-Drive stub, where you included a Better PC- >USB-Terminal in a SPI flash, and the target becomes the whole >system...Mobile-Compute-Debug model :)
Okay. Well, it's about time for the OP to jump in. We are proceeding far beyond the original comment. I feel you may be taking this over the top a bit, but then you might be right on target for all I know. (I agree about the USB interface -- RS232 is getting hard to find these days and USB ports are everywhere, almost. So that would seem to be the preferred hardware connection. I would expect it to "look like RS-232," though and be able to use Hyperterm, for example, or whatever serves the same under Linux.) I suspect many folks have thought about BASIC as a segue for non-programmers to do useful things they want to achieve for themselves. BASIC is probably the closest thing to making that possible, but what is the right hardware widget and BASIC combination that appeals to a wide array of non-programmers' interests? My own focus would be on reaching high school education, allowing a path for non-programmer students to have some fun while learning and gathering and processing data and controlling things that move, make fire, smoke, and flash lights. For example, learning trigonometry in the context of moving a drill press around and drilling holes is a great way to provide tactile and sensory information about why sine and cosine mean something practical and real that can be seen right in front of them. If they make mistakes, it becomes immediately apparent and they can laugh a little at it and in the process deepen what those things mean to them. But I'm going way afield of the OP, here. Jon
On Mar 10, 5:36=A0pm, Jon Kirwan <j...@infinitefactors.org> wrote:
> > Okay. =A0Well, it's about time for the OP to jump in. =A0We are proceedin=
g
> far beyond the original comment. =A0I feel you may be taking this over > the top a bit, but then you might be right on target for all I know.
Yes, but I was also partially answering Frank's posts here too... :) -' what is possible at low cost' has rather moved in the last few years, with large flash uC and USB almost 'there by default'. (certainly is on the STM32 the OP mentioned) -jg
On Mar 10, 8:10=A0am, -jg <Jim.Granvi...@gmail.com> wrote:
> On Mar 10, 9:47=A0am, Frank Buss <f...@frank-buss.de> wrote: > > > BTW: I'm planning to develop such a system, too. What do you think of > > Modula-2? It is supposed to be more safe than Basic or C, but I don't k=
now
> > if it is easy for new programmers and if C or Basic programmers would l=
ike
> > to use it. > > Modula-2 is fussier in types than BASIC, and less string-friendly. > Since this needs to be simple, an early Pascal variant could also > do (along the lines of Turbo-Pascal) and a 32 bit target, can relax > some > of the Type-Soup, for a simpler implementation. >
It doesn't have to be an early Pascal variant - Oberon-07 satisfies the above: http://www.inf.ethz.ch/personal/wirth/Articles/Oberon.html
> Newer BASICs are somewhat more structured, so move closer to Modula-2 > and there is also IEC 61131 > > Perhaps a base such as Wirth's earlier PL/0, which DOES mention source > code, > could create a medium-typed compiled language ? > > Simpler is better, for the smaller targets :) > > http://en.wikipedia.org/wiki/PL/0 >
I did a fair bit of work extending PL/0 to make it into something usable - added REPEAT loops, SIZE, ORD and CHR, record and string assignments etc. etc. However, that all that went into cold storage when I changed direction and started the Armaide project with the Oberon-07 compiler: http://www.cfbsoftware.com/armaide The Oberon-07 compiler in Armaide runs on Windows but I have used it to compile itself to ARM code. The object files occupy about 80k bytes - plenty small enough to fit in the Flash ROM of many ARM MCUs. On a related track I've also been experimenting recently with an interpreter based on Wirth's Lilith M-Code Interpreter. The source code of the M-Code Modula-2 compiler and related documentation (including a listing of the interpreter) are at: http://www.cfbsoftware.com/modula2 -- Chris Burrows CFB Software Armaide: ARM Oberon-07 Development System for Windows http://www.cfbsoftware.com/armaide
On Mar 10, 2:36=A0pm, Jon Kirwan <j...@infinitefactors.org> wrote:

> > (I agree about the USB interface -- RS232 is getting hard to find > these days and USB ports are everywhere, almost. =A0So that would seem > to be the preferred hardware connection. =A0I would expect it to "look > like RS-232," though and be able to use Hyperterm, for example, or > whatever serves the same under Linux.) >
RS232 communication is so much easier to implement and is not a major problem even if you only have USB sockets on your computer. You can get cables with an RS232 plug at one end and a USB plug at the other with the converter built into the plug that work well and cost less than $20. -- Chris Burrows CFB Software Armaide: ARM Oberon-07 Development System for Windows http://www.cfbsoftware.com/armaide
Jon Kirwan wrote:

> It is VERY easy to teach. Not only from my own experience working > with literally hundreds and hundreds of users (as a tutor, then as a > teacher of classes, and as support staff with a timesharing system.) > People from all walks, a large portion without any prior experience. > At that time, computer expertise (heck, even typing skills) was a bit > short in supply. But it was very easy, by comparison with other > languages I had similar experiences trying to convey to others.
Maybe you are right for people with no prior computer experience. Timesharing systems sounds a bit old. I think it is difficult today to find someone who has never used a computer before. And then it is the same in all programs: It doesn't matter, if you write in a textarea in a HTML form in an internet cafe, or a letter with a word processor on your PC or Mac: You can see all lines at once, move cursors and edit like you want, insert lines etc. I think many pepole would get angry, if you try to replace this with a C64 line edit interface or something like Edlin. Why should this change, if someone writes programs? But to support your opinion a bit: I've seen inexperienced computer users trying to write letters and it really hurts to see how they insert empty or text lines by pressing spaces until the rest of the text is moved one line down. But most people learn the meaning of "Enter" and the ideas of the usual editing programs with cursor keys, insert etc., very fast. But maybe a good idea to give a short tutorial for absolute computer beginners how to use the editor in my IDE. -- Frank Buss, fb@frank-buss.de http://www.frank-buss.de, http://www.it4-systems.de
On Tue, 10 Mar 2009 04:33:32 -0700 (PDT), cfb
<cfbsoftware@hotmail.com> wrote:

>On Mar 10, 2:36&#4294967295;pm, Jon Kirwan <j...@infinitefactors.org> wrote: > >> (I agree about the USB interface -- RS232 is getting hard to find >> these days and USB ports are everywhere, almost. &#4294967295;So that would seem >> to be the preferred hardware connection. &#4294967295;I would expect it to "look >> like RS-232," though and be able to use Hyperterm, for example, or >> whatever serves the same under Linux.) > >RS232 communication is so much easier to implement
No question.
>and is not a major >problem even if you only have USB sockets on your computer. You can >get cables with an RS232 plug at one end and a USB plug at the other >with the converter built into the plug that work well and cost less >than $20.
Well, there is that I grant you. I guess we don't disagree. Jon
On Tue, 10 Mar 2009 20:15:49 +0100, Frank Buss <fb@frank-buss.de>
wrote:

>Jon Kirwan wrote: > >> It is VERY easy to teach. Not only from my own experience working >> with literally hundreds and hundreds of users (as a tutor, then as a >> teacher of classes, and as support staff with a timesharing system.) >> People from all walks, a large portion without any prior experience. >> At that time, computer expertise (heck, even typing skills) was a bit >> short in supply. But it was very easy, by comparison with other >> languages I had similar experiences trying to convey to others. > >Maybe you are right for people with no prior computer experience. >Timesharing systems sounds a bit old.
I'm older.
>I think it is difficult today to find >someone who has never used a computer before.
Even if people have had more opportunities for _contact_, it may not mean much more than that. Mass produced books have been around a very long time, now -- centuries -- and most everyone has had more opportunity to _see_ them around. But I still know a lot of families with no more than 5 or 6 books in their home; less than that which they may have read. Computers have been in the atmosphere for far less time, too. My lifetime is very short and the transition has been taking place during it. I'm just being argumentative above, though. You made a point. On that, I'm not sure what to make of it. So I'd just repeat that although you might be suggesting (I can't tell, yet) something to the contrary of my earlier experiences, I have actually taught computer courses in a 4-yr university as recently as 10 years back. I didn't find anything in that experience to suggest I should change my mind. What I did find different is the distribution of people interested in becoming programmers as a professional choice. The computer field did (then, at least) attract people from a much wider spread of talents and interests than when I was getting involved. And the advance of available software has meant that people with far less breadth of training and scientific inclinations were enabled to actually do things that produced useful results for others. So the base of the pyramid widened out a lot. That's both good and bad. But non-programmers are still human beings and must take first steps like most anyone, even in my day. A toddler today is little different than a toddler 50 centuries ago -- they both struggle to learn how to walk mostly in similar ways.
>And then it is the same in >all programs: It doesn't matter, if you write in a textarea in a HTML form >in an internet cafe, or a letter with a word processor on your PC or Mac: >You can see all lines at once, move cursors and edit like you want, insert >lines etc. I think many pepole would get angry, if you try to replace this >with a C64 line edit interface or something like Edlin. Why should this >change, if someone writes programs?
I'm not sure what the OP is targeting, so it's difficult to get going on this. Just to be difficult, though, there is a huge advantage in being able to type in "PIN5 = 1" and see an LED light up. Without having to go into an editor. This is one of the reasons why I said someone would bring up Forth. It's like that, too. Except that it really isn't right for beginners, in my opinion. Look, I'm no teaching expert. I have some years of experience teaching a few languages to high school students with little or no experience; and in teaching assembly language, computer architecture, concurrent programming and operating systems as part of a 4 yr course at the 2nd and 3rd year arena. This does not mean I'm right, it just means that I am not completely without some experience. I've found BASIC easier at getting non-programmers excited about what they were doing. And I've tried other approaches. I don't mean to say other ways can't be made to work well, too. Just that for who I am and what skills I bring to the teaching table and those I've been exposed to, it's been easier this way. Maybe it's just me or the groups I've had the luck of knowing.
>But to support your opinion a bit: I've seen inexperienced computer users >trying to write letters and it really hurts to see how they insert empty or >text lines by pressing spaces until the rest of the text is moved one line >down. But most people learn the meaning of "Enter" and the ideas of the >usual editing programs with cursor keys, insert etc., very fast. But maybe >a good idea to give a short tutorial for absolute computer beginners how to >use the editor in my IDE.
Well, let's just leave it here. Really, the OP is dead silent about all this and I think it's not our turn, anymore. As I said earlier, I like the idea of using microcontrollers together with tangible things that smoke, spark, move, explode, etc., because that is how you motivate young students into doing the hard work it takes to get past some of the learning involved. We humans are like many other animals -- we like shiny objects. "It's pretty!" At a young age, before one has had time to develop the intrinsic motivations to get one through tough, abstract problems and reasoning, there is a need for external stimulation as payback for the work ahead. Why did I bang my head against the wall, reading the same book on optics 5 times over, before enough of it gelled to be useful? Because I wanted to build my own telescope to look at the stars and we lived hand-to-mouth at the time and there was no other possible way for me. Why did I spend so much time in the University library (as a high school student at the time) reading about chemistry? Because I wanted to make fireworks and firecrackers on my own. I got paid for my effort. I don't need those things now. I've crossed some of the harder barriers and matured a bit and once you do that, pieces in the larger picture of life on earth and the universe begin to show you a picture all of its own and you begin to crave seeing more of that, so you don't need the smoke and flames anymore. But before that intrinsic motivation precipitates, it's action, fire, smoke, etc.... That's the part that interests me. Passing on an abiding interest in using microcontrollers as a segue (not an end of itself, or even just an occupation) to learning about the world. Like learning to use a keyboard isn't about learning keyboards as an occupation -- its about facilitating writing for other purposes. At first, all you do is watch your fingers. Eventually, you get past that and stop thinking about where your fingers are at and you then can be fully engaged in what you write, not how you write it. Programming and microcontrollers are, largely now for me, a means to access the world around me -- an inexpensive tool to try some idea in optics, or chemistry, or physics -- maybe also to explore something in mathematics. It pays the bills at times, yes. But that is only something in my peripheral vision -- it's not my focus. It's like moving fingers to hit keys. I don't look at my fingers anymore and I don't look at the programming lines so much anymore, either. I already have learned the techniques for most things I care about and I don't find focusing on those details holding my interest that much, now. I'm focused on the application and what that application can teach me about the world around me. Or so I sometimes like to imagine I do. Jon
John Speth schrieb:
> Hi everybody- > > This question comes up from time to time from various posters but it never > gets an answer that fits my specific needs. Here goes: > > Would anyone be able to recommend a free embedded basic interpreter with C > source code?
It's not Basic, but... http://ficl.sourceforge.net/ -- Mit freundlichen Gr&#4294967295;&#4294967295;en Dipl.-Ing. Frank-Christian Kr&#4294967295;gel
Jon Kirwan wrote:

> Just to be difficult, though, there is a huge advantage in being able > to type in "PIN5 = 1" and see an LED light up. Without having to go > into an editor. This is one of the reasons why I said someone would > bring up Forth. It's like that, too. Except that it really isn't > right for beginners, in my opinion. >
Or in Forth you type in "PIN3 PORTB ON" and see the led light up. If the OP can live with 16 or 8 bit processors, there are some ready working alternatives. PIC18F and dsPIC30F : User Guide : http://flashforth.sourceforge.net/ Download : http://sourceforge.net/projects/flashforth/ megaAVR: http://amforth.sourceforge.net/ These are self contained Forth systems that only need a serial line for communication. You can interpret commands and compile code directly into Flash. Very good for exploring those particular micrcontrollers. The teacher can build up special easy to use words for controlling whatever stuff you want to control. The code editing is done in files on the PC. When you want to compile just send the file as ASCII text over the serial line. Mikael