7 ms·
Author here - happy to answer your questions... Beware, there's a bug on ARM11-based Raspberry Pis (BCM2835 on Pi 1/Zero/Zero W and CM1) that crashes the VM wh
by johndoe0815 6y ago
Author here - happy to answer your questions...
Beware, there's a bug on ARM11-based Raspberry Pis (BCM2835 on Pi 1/Zero/Zero W and CM1) that crashes the VM when executing drawing functions. I'm currently investigating the problem.
- kabdib 6y agoThis is very cool, thank you. Smalltalk is my favorite language that I will never ship a product in. :-/
- johndoe0815 6y agoBtw., you can read a bit about the background of Smalltalk and the Raspberry port in my article: https://www.linkedin.com/pulse/relive-part-xerox-parcs-history-smalltalk-80-raspberry-michael-engel/ https://www.linkedin.com/pulse/relive-part-xerox-parcs-histo...
- wslh 6y agoI wonder why it doesn't work in Raspberry Pi 4 with 8 GB. What (you think) does it make the difference with the 4 GB?
- johndoe0815 6y agoIt seems to be a problem with the USB controller driver in circle. Startup hangs with the message "XHCI: HW reset failed". I was under the impression that the hardware of the 8GB Raspberry Pi 4 was identical to the versions with less memory except for (obviously) the memory chip and some fixes for USB-C power delivery. Maybe it's a subtle timing problem - another item on my to-do list...
- del_operator 6y agoI just started a small 8GB RPi 4 cluster and had similar assumptions. Did you happen to try out the beta 64 bit os?
- johndoe0815 6y agoNot yet, sorry - I'm still running 32 bit Raspbian.
- Uhuhreally 6y agoto what extent is this Smalltalk all the way down ? Can I replace the drivers with Smalltalk code ?
- johndoe0815 6y agoNot in the current version, here the drivers are implemented in C/C++ in the circle bare-metal library [1]. In general, I think Smalltalk is not that well suited as a systems programming language since garbage collection might mess with your timing and you would also need to find a way to handle asynchronous events (such as interrupts). Nevertheless, Smalltalk has been used for low-level control of robots, e.g. in NXTalk [2] for the Mindstorms NXT ARM7 platform. However, the VM also relied on C code (the LegOS project) for driver code. [1] https://github.com/organix/pijFORTHos https://github.com/organix/pijFORTHos [2] https://www.hpi.uni-potsdam.de/hirschfeld/projects/nxtalk/index.html https://www.hpi.uni-potsdam.de/hirschfeld/projects/nxtalk/in...
- jonjacky 6y agoThere is an almost all-Smalltalk bare metal system for X86, CogNOS. It runs on top of NopSys, about 3500 lines of C and 600 lines of assembler for booting, accessing device registers, and responding to interrupts. But the file system etc. are in Smalltalk. https://github.com/nopsys/CogNOS https://github.com/nopsys/CogNOS https://charig.github.io/assets/papers/SCDE-DLS.pdf https://charig.github.io/assets/papers/SCDE-DLS.pdf
- aarchi 6y agoI'll have to give this a try on my Raspberry Pi 4 4GB. I've setup Ubuntu, Arch, Kali, Raspbian, and Raspberry Pi OS on my Pis, but this'll certainly be the most exotic, given that it's not Linux. Do you know of any bare metal Forth- or Lisp-based systems for RPi?
- johndoe0815 6y agoThere's the Interim OS project [1] (already discussed in another comment here) as a bare-metal Lisp and it might be interesting to port Movitz [2], a bare-metal Lisp project for x86 that seems to be abandoned for quite some time now. There also seems to be a bare metal Forth implementation, pijFORTHos [3], but I haven't played around with that one so far. [1] http://interim-os.com/ http://interim-os.com/ [2] https://en.wikipedia.org/wiki/Movitz https://en.wikipedia.org/wiki/Movitz [3] https://github.com/organix/pijFORTHos https://github.com/organix/pijFORTHos
- p_l 6y agoInstead of Movitz, go for Mezzano [1], which is much more complete [1] https://github.com/froggey/Mezzano https://github.com/froggey/Mezzano
- johndoe0815 6y agoThanks for the link, didn't know about this project. That looks quite impressive and it seems there is already some support for Aarch64. A modern Lisp machine certainly would be nice...
- aarchi 6y agoFYI, your commits are signed with "Your Name <you@example.com>". You'll want to fix your git config. For these existing commits, you can use git-filter-repo [0] to rewrite the author name and email. git filter-repo --force --name-callback 'return b"Name to use"' --email-callback 'return b"emailtouse@example.com"' [0]: https://github.com/newren/git-filter-repo https://github.com/newren/git-filter-repo
- johndoe0815 6y agoOops, good catch - thanks!
- mrweasel 6y agoIt’s interesting that the 8GB Pi4 won’t work, but the 4GB version will. Any clues as to why? I would assume that they are the same, just with more memory. Edit: Oh, someone else asked that question