I have no idea. Maybe someone in the VM mailing list can help you. Cheers 2011/5/25 Friedrich Dominicus <[hidden email]>
-- Mariano http://marianopeck.wordpress.com |
But I think there are a few problems with Pharo 1.3 and Cog. AFAIKT one yes. Cog doesn't load in Pharo 1.3 anymore. We will fix it. Now what did I have to do? yes, everything under /platform is the hand written part and known as "platform code"
yes, and that's what is known as "VM sources", the auto generated C code from SLANG that is usually placed in /src which looks like this: yep You see I'm still ignorant on how this is all supposed to work. so do I :) Nevertheless copying the files at the proper places in the src and Eliot should be interested. But you didn't comment your changes. Maybe you can push them in git ?
for this you can open a pharo issue -- Mariano http://marianopeck.wordpress.com |
In reply to this post by Mariano Martinez Peck
On 25 May 2011 17:30, Friedrich Dominicus <[hidden email]> wrote: > Mariano Martinez Peck <[hidden email]> writes: > >> I have no idea. Maybe someone in the VM mailing list can help you. >> > Ok I finally got the serialPort access under Cog VM and Linux > I concede it is currently a hackerish solution a combination out of > Squeak sources and Cog sources with a good mixture of Cog > > So whomever may be "reponsible" can get in touch with me and I'll try to > work out a stable implementation on Linux. > > But I think there are a few problems with Pharo 1.3 and Cog. AFAIKT one > needs AbstractLauncher. I shamlessly stole it from Squeak. If I do > not have it and start my generated CogVM I just get an open window with > some black rectangle in the upper left. > This problem was mentioned at: > > http://code.google.com/p/pharo/issues/detail?id=4002 > > Now what did I have to do? > I downloaded the sources from squeak-vm and Cog and there are at least > two different C files and probably a header files with the prototyps: > The two files are > sqUnixSerial.c which is in platforms/unix/plugins/SerialPlugin > SerialPlugin in src/plugins/SerialPlugin > > It seems the first is the handwritten C-code > > The first is needed to "offer" the functionality and the later is > probabl seems t be the interface to Squeak. I guess this is generated > code from some Slang code which looks like this: > > parityType dataBits: dataBits inFlowControlType: inFlowControl outFlowControlType: outFlowControl xOnByte: xOnChar xOffByte: xOffChar > > | cString | > self primitive: 'primitiveSerialPortOpenByName' > parameters: #(ByteArray SmallInteger SmallInteger SmallInteger SmallInteger SmallInteger SmallInteger SmallInteger SmallInteger ). > self var: #cString type: 'char *'. > cString := self allocateTerminatedString: deviceName. > self cCode: 'serialPortOpenByName( > cString, baudRate, stopBitsType, parityType, dataBits, > inFlowControl, outFlowControl, xOnChar, xOffChar)' > > which then write out the proper C code for that plugin. > > You see I'm still ignorant on how this is all supposed to work. > > Nevertheless copying the files at the proper places in the src and > platform tree. This codes get's compiled into the VirtualMachine. > > And I can use this "machine" for accessing the serial interfaces, (it > even works for '/dev/ttyUSBx' devices. For me this is a great thing > because I'm forced to access some periperal devices via serial lines. > > I need some extra hack in the generated file (I know this is "dirty" a > missing #define was introduced. I bet there is a better place for that > but in genrated code. But well it's just an intermediate step. > > If someone here may be interested just drop me a mail and with some help > we'll be able to modify the Cog sources cleanly to use this modified > Plugin for intefacing to serial lines in Linux. > In order to answer this question we have to see what you did. And for that, it would be good if you register on gitorious.org and then clone VM sources into your own branch and then push your changes there. Then we can analyze it and integrate into a main branch. > I'm also quite aware that the Smalltalk side of the code could need a > little attention: It looks like: > > > nextPutAll: aStringOrByteArray > "Send the given bytes out this serial port. The port must be > open. " > ^ port isString > ifTrue: [self > primWritePortByName: port > from: aStringOrByteArray > startingAt: 1 > count: aStringOrByteArray size] > ifFalse: [self > primWritePort: port > from: aStringOrByteArray > startingAt: 1 > count: aStringOrByteArray size] > > Which is kind of "unproper" IMHO.... > Please, create an issue on Cog issue tracker and place a changeset for language side changes there. You can also use that issue entry to describe your changes and point to the VM-side source code which you are changed. http://code.google.com/p/cog/issues/list Otherwise there is a risk, that your changes and comments will be buried under tons of other mails and will be lost. P.S. it is great that you were able to fix plugin & build VM with little help. If you have questions, do not hesitate to ask. We need people who are not afraid to get their hands dirty and to fix something in VM :) -- Best regards, Igor Stasenko AKA sig. |
In reply to this post by Mariano Martinez Peck
For the SerialPlugin, there are two enhancements that will be found in VMMaker and Squeak that should be added to Cog and to Pharo: 1) The named serial port updates are documented at <http://bugs.squeak.org/view.php?id=7266> 2) A separate bug fix for SerialPlugin on Unix is at <http://bugs.squeak.org/view.php?id=7610> The VMMaker updates are in class SerialPlugin. These can probably be copied directly from VMMaker trunk to the oscog branch using an MC browser. The platforms source changes can probably be copied directly from Subversion trunk to the branches/cog tree, although I have not looked at them to verify this (the platforms cog branch has changes in various places, so some merging might be required). Note that the platforms changes must be supported for all platforms, not just unix. I think that the image changes have already been copied from Squeak to Pharo. If not, just copy class SerialPort. Dave On Wed, May 25, 2011 at 10:41:33AM +0200, Mariano Martinez Peck wrote: > > I have no idea. Maybe someone in the VM mailing list can help you. > > Cheers > > 2011/5/25 Friedrich Dominicus <[hidden email]> > > > Mariano Martinez Peck <[hidden email]> writes: > > > > > https://gitorious.org/cogvm/blessed/blobs/master/platforms/unix/plugins/ > > > SerialPlugin/sqUnixSerial.c > > This code contains the old implementaton of the Serial Plugin not the > > extensions of things like openPortByName. The Serail Plugin I'm talking > > about has the following implementation on the Smalltalk Size > > > > > > > > -- > > Q-Software Solutions GmbH; Sitz: Bruchsal; Registergericht: Mannheim > > Registriernummer: HRB232138; Geschaeftsfuehrer: Friedrich Dominicus > > > > > > > -- > Mariano > http://marianopeck.wordpress.com |
"David T. Lewis" <[hidden email]> writes: > > For the SerialPlugin, there are two enhancements that will be found > in VMMaker and Squeak that should be added to Cog and to Pharo: > > 1) The named serial port updates are documented at > <http://bugs.squeak.org/view.php?id=7266> > > 2) A separate bug fix for SerialPlugin on Unix is at > <http://bugs.squeak.org/view.php?id=7610> > > The VMMaker updates are in class SerialPlugin. These can probably > be copied directly from VMMaker trunk to the oscog branch using an > MC browser. Regards Friedrich -- Q-Software Solutions GmbH; Sitz: Bruchsal; Registergericht: Mannheim Registriernummer: HRB232138; Geschaeftsfuehrer: Friedrich Dominicus |
On Fri, May 27, 2011 at 01:57:17PM +0200, Friedrich Dominicus wrote: > > "David T. Lewis" <[hidden email]> writes: > > > > > For the SerialPlugin, there are two enhancements that will be found > > in VMMaker and Squeak that should be added to Cog and to Pharo: > > > > 1) The named serial port updates are documented at > > <http://bugs.squeak.org/view.php?id=7266> > > > > 2) A separate bug fix for SerialPlugin on Unix is at > > <http://bugs.squeak.org/view.php?id=7610> > > > > The VMMaker updates are in class SerialPlugin. These can probably > > be copied directly from VMMaker trunk to the oscog branch using an > > MC browser. > Stupid question, should I look after it? MCHttpRepository location: 'http://www.squeaksource.com/VMMaker' user: '' password: '' >From your image with the oscog VMMaker loaded, open an MC browser on VMMaker-dtl.237, which would be the most recent version in the trunk branch. Look at SerialPlugin in that browser, and you should find the missing methods for named serial port primitives. Dave |
Free forum by Nabble | Edit this page |