* [Qemu-devel] Re: Accessing the serial port from proll
@ 2005-11-20 9:25 Blue Swirl
2005-11-20 10:11 ` Doug Gray
0 siblings, 1 reply; 3+ messages in thread
From: Blue Swirl @ 2005-11-20 9:25 UTC (permalink / raw)
To: dgray, qemu-devel
Hi,
I guess you are not using Qemu's -nographic option. The flag is passed on to
Proll, which then initialises either serial port or frame buffer
accordingly.
For example, the following code echoes serial port data back:
diff -ru proll-patch-16/qemu/main.c proll-patch-16b/qemu/main.c
--- proll-patch-16/qemu/main.c 2005-08-14 10:07:48.000000000 +0000
+++ proll-patch-16b/qemu/main.c 2005-11-20 08:50:57.000000000 +0000
@@ -79,6 +79,13 @@
ram_size = ld_bypass(PHYS_JJ_EEPROM + 0x30);
printk("%d MB total\n", ram_size/(1024*1024));
+ for (;;) {
+ int ch;
+
+ ch = vcon_zs_getch(&dp0);
+ vcon_zs_putch(&dp0, ch);
+ }
+
bb.nbanks = 1;
bb.bankv[0].start = 0;
bb.bankv[0].length = ram_size;
I think serial loader would be nice addition, though there is already CD/HD
(no FD) and network boot options. If you don't care about Sun OBP
compatibility, I'd suggest reusing GDB remote debugging code.
Or are you trying to use Proll on Sparc64? In that case the serial port is
not Zilog one, but PC-compatible (vcons_su).
_________________________________________________________________
Don't just search. Find. Check out the new MSN Search!
http://search.msn.click-url.com/go/onm00200636ave/direct/01/
^ permalink raw reply [flat|nested] 3+ messages in thread* [Qemu-devel] Re: Accessing the serial port from proll
2005-11-20 9:25 [Qemu-devel] Re: Accessing the serial port from proll Blue Swirl
@ 2005-11-20 10:11 ` Doug Gray
2005-11-20 12:50 ` Blue Swirl
0 siblings, 1 reply; 3+ messages in thread
From: Doug Gray @ 2005-11-20 10:11 UTC (permalink / raw)
To: Blue Swirl, qemu-devel
Hi,
Thanks for the help. I've actually tried using the function you
suggest, but gotten the following error:
sparc-elf-gcc -O1 -W -Wall -DPROLBASE=0xffd00000 -DPROLDATA=0xffd0b000
-DPROLRODATA=0xffd08000 -D__ANSI__=1 -I../src -mcpu=hypersparc
-Wa,-xarch=v8 -g -DQEMU -m32 -fno-builtin -c main.c
sparc-elf-ld -N -Ttext 0xffd00000 --section-start .rodata=0xffd08000
-Tdata 0xffd0b000 -Tbss 0xffd0b000 -o proll.elf head.o wuf.o wof.o
main.o printf.o le.o system_qemu.o iommu.o arp.o netinit.o bootp.o
packet.o tftp.o udp.o sched_4m.o openprom.o vconsole.o hconsole.o
rconsole.o vcons_zs.o esp.o
sparc-elf-ld: section .rodata [00000000ffd08000 -> 00000000ffd0a129]
overlaps section .text [00000000ffd00000 -> 00000000ffd08077]
sparc-elf-ld: proll.elf: section .rodata lma 0xffd08000 overlaps
previous sections
make: *** [proll.elf] Error 1
However when I tried your code snippet it works fine. It seems that it
only works if I call that function from an infinite loop (big loop or
loops with a break statement don't compile either), which is driving me
nuts. Do you know why this is?
Also, some additional background info. I am actually using the
-nographic option. This project is for a grad class on computer
architecture. The prof. says he has a sparc processor implemented on an
fpga and wants to load linux on it, but it doesn't have a hard drive or
network connection, so that is why I'm writing a serial loader.
-Doug
^ permalink raw reply [flat|nested] 3+ messages in thread
* [Qemu-devel] Re: Accessing the serial port from proll
2005-11-20 10:11 ` Doug Gray
@ 2005-11-20 12:50 ` Blue Swirl
0 siblings, 0 replies; 3+ messages in thread
From: Blue Swirl @ 2005-11-20 12:50 UTC (permalink / raw)
To: dgray, qemu-devel
>sparc-elf-ld: section .rodata [00000000ffd08000 -> 00000000ffd0a129]
>overlaps section .text [00000000ffd00000 -> 00000000ffd08077]
This means that the space reserved for code is full. You can adjust it like
this:
diff -ru proll-patch-16/qemu/Makefile proll-patch-16b/qemu/Makefile
--- proll-patch-16/qemu/Makefile 2005-08-14 10:25:06.000000000 +0000
+++ proll-patch-16b/qemu/Makefile 2005-11-20 12:23:46.000000000 +0000
@@ -27,8 +27,8 @@
# want to shift it to form a PGD entry. A relocatable label will not work.
# Linux kernel expects us to be at LINUX_OPPROM_BEGVM
<asm-sparc/openprom.h>.
PROLBASE = 0xffd00000
-PROLRODATA = 0xffd08000
-PROLDATA = 0xffd0b000
+PROLRODATA = 0xffd09000
+PROLDATA = 0xffd0c000
PROLSIZE = 240*1024
# Linux
>Also, some additional background info. I am actually using the -nographic
>option. This project is for a grad class on computer architecture. The
>prof. says he has a sparc processor implemented on an fpga and wants to
>load linux on it, but it doesn't have a hard drive or network connection,
>so that is why I'm writing a serial loader.
Real serial port hardware needs a bit more initialising than Qemu, for
example programming the baud rate. In the original JavaStation case where
Proll was first used, the real OBP did this before Proll booted, so Proll
didn't have to do everything.
There are probably other similar gaps elsewhere, like setting up DRAM
controllers, clearing special boot modes, initialising bridge devices,
loading firmware etc. If you have complete specs for the hardware, these
should not be too difficult to add if even necessary.
_________________________________________________________________
Don't just search. Find. Check out the new MSN Search!
http://search.msn.com/
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2005-11-20 12:50 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-11-20 9:25 [Qemu-devel] Re: Accessing the serial port from proll Blue Swirl
2005-11-20 10:11 ` Doug Gray
2005-11-20 12:50 ` Blue Swirl
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.