diff options
Diffstat (limited to 'src/pkg/runtime/tiny/README')
-rwxr-xr-x | src/pkg/runtime/tiny/README | 123 |
1 files changed, 0 insertions, 123 deletions
diff --git a/src/pkg/runtime/tiny/README b/src/pkg/runtime/tiny/README deleted file mode 100755 index cf001d1e6..000000000 --- a/src/pkg/runtime/tiny/README +++ /dev/null @@ -1,123 +0,0 @@ -This directory contains a simple example of how one might -start Go running on bare hardware. There is currently code -for 386 and arm. - - -386 - -It is very primitive but can run go/test/sieve.go, the concurrent -prime sieve, on a uniprocessor. - -To run, first build the tools by running all.bash with GOARCH=386 -and GOOS set to your normal GOOS (linux, darwin). Then: - - export GOOS=tiny - cd $GOROOT/src/pkg/runtime - make clean - make install - cd tiny - 8g $GOROOT/test/sieve.go - 8l sieve.8 - 8l -a sieve.8 >sieve.asm # can consult sieve.asm for debugging - dd if=/dev/zero of=disk count=10000 - cat bootblock 8.out | dd of=disk conv=notrunc - -Use the built-in print(text string) function to print to the -console. - - -BOCHS - -You may have to tweak the .bochsrc depending on your system, -and you may need to install the Bochs emulator. - - $ cp dot-bochsrc .bochsrc - $ $EDITOR .bochsrc # tweak it if required - $ bochs - - -ORACLE xVM VIRTUALBOX - -Install VirtualBox. Then: - - Build 'disk' (described above under '386'). - - $ VBoxManage convertfromraw disk go-tiny.vdi - $ VirtualBox - create a new VM; as disk use the go-tiny.vdi image. - start the vm. - - -QEMU / KVM - -This should work the same for qemu and kvm (really: qemu-kvm). - - Build 'disk' (described above under '386'). - - $ qemu -hda disk - - -ARM - -First build the toolchain using GOARCH=arm and GOOS=linux. When -you build your embedded code set GOARCH=tiny. - - export GOOS=tiny - cd $GOROOT/src/pkg/runtime - make clean - make install - -On arm the tiny runtime doesn't define a low level write function. You can either -define a stub if you don't need debug output, or more usefully, define it to -print to some debug serial port. Here is a sample function that prints to -the DBGU on an at91sam7s: - -#define DBGU_CSR ((uint32*) 0xFFFFF214) // (DBGU) Channel Status Register -#define US_TXRDY ((uint32) 0x1 << 1) // (DBGU) TXRDY Interrupt -#define DBGU_THR ((uint32*) 0xFFFFF21C) // (DBGU) Transmitter Holding Register - -int32 -write(int32 fd, void* b, int32 n) -{ - uint32 i; - uint8* s = (uint8*)b; - - for (i = 0; i < n; i++) { - while ((*DBGU_CSR & US_TXRDY) == 0) { - } - *DBGU_THR = *s; - s++; - } - return n; -} - - - -The 386 bootblock is from MIT's xv6 project and carries this notice: - - The xv6 software is: - - Copyright (c) 2006-2009 Frans Kaashoek, Robert Morris, Russ Cox, - Massachusetts Institute of Technology - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -http://pdos.csail.mit.edu/6.828/xv6/ - |