diff mbox series

PMON2000 compilation and kernel question

Message ID 201903061321.58890.randrianasulu@gmail.com (mailing list archive)
State New, archived
Headers show
Series PMON2000 compilation and kernel question | expand

Commit Message

Andrew Randrianasulu March 6, 2019, 10:21 a.m. UTC
Hello, all.

I was compiling those pmons for last two days, and I happy to say most of my hackery was
unnecessary.

Just unpack pmon_1c.tar.gz and toolchain-pmon.tar.bz2
compile tools in pmon/tools (just make), create  directory /opt/pmon2000/tools, install tools,
be sure /opt/pmon2000/tools/bin in your $PATH, put compiler in /usr/local/comp, put build.sh 
script from unpacked toolchain tree into pmon.zloader dir, reset tree (git checkout -b label) 
to some known or desired commit

few of them I tested:

9048810a267835e8efb0496fd99884bd500c43a0

17471780223332a7016959bcb9784ba249bd8660

dd26466da98371470af957993a600719466305f9

for last one you probably want to revert "move highmemcpy highset into lib.",
because it was breaking zloader.2edev compilation for me.

Now, most of my hacks were unnecessary, you can just use this Bonito file
in Targets/Bonito2edev/conf/:


otherwise pmon was not scrolling help text or any messages up.

Comments

Philippe Mathieu-Daudé March 6, 2019, 11:25 a.m. UTC | #1
On 3/6/19 11:21 AM, Andrew Randrianasulu wrote:
> Hello, all.
> 
> I was compiling those pmons for last two days, and I happy to say most of my hackery was
> unnecessary.
> 
> Just unpack pmon_1c.tar.gz and toolchain-pmon.tar.bz2
> compile tools in pmon/tools (just make), create  directory /opt/pmon2000/tools, install tools,
> be sure /opt/pmon2000/tools/bin in your $PATH, put compiler in /usr/local/comp, put build.sh 
> script from unpacked toolchain tree into pmon.zloader dir, reset tree (git checkout -b label) 
> to some known or desired commit

Excellent! Helpful notes.

> few of them I tested:
> 
> 9048810a267835e8efb0496fd99884bd500c43a0
> 
> 17471780223332a7016959bcb9784ba249bd8660
> 
> dd26466da98371470af957993a600719466305f9
> 
> for last one you probably want to revert "move highmemcpy highset into lib.",
> because it was breaking zloader.2edev compilation for me.
> 
> Now, most of my hacks were unnecessary, you can just use this Bonito file
> in Targets/Bonito2edev/conf/:
> 
> ==============
> # $Id: Bonito,v 1.1.1.1 2006/09/14 01:59:09 root Exp $ # #      GENERIC configuration for Galileo EV64240 # #  This file is supposed to be included by target file after #  endian has been defined.
> #
> machine         Bonito2edev        mips    # CPU Architecture, Platform
> config          pmon
> 
> #
> #  Define target endian
> #
> makeoptions     ENDIAN=EL               # Little endian version.
> 
> 
> #include "conf/GENERIC_ALL"
> 
> #
> # System Name and Target Name
> #
> option          SYSTYPE="\"Bonito\""
> option          TARGETNAME="\"Bonito\""
> 
> #
> # Platform options
> #
> option          BONITOEL
> option      DEVBD2E
> option          MIPS
> option          INET
> 
> select          mod_flash_amd           # AMD flash device programming
> select          mod_flash_intel         # intel flash device programming
> select          mod_flash_sst           # intel flash device programming
> select          mod_debugger            # Debugging module
> select          mod_symbols             # Symbol table handling
> select          mod_s3load              # Srecord loading
> #select         mod_fastload            # LSI Fastload
> select          mod_elfload             # ELF loading
> 
> #
> # Command selection. Selects pmon commands
> #
> select          cmd_newmt
> select          cmd_setup
> select          mod_display
> select          cmd_about               # Display info about PMON
> select          cmd_boot                # Boot wrapper
> select          cmd_mycmd
> select          cmd_xmodem
> select          ramfiles
> select          cmd_newmt
> select          cmd_cache               # Cache enabling
> #select         cmd_call                # Call a function command
> select          cmd_date                # Time of day command
> select          cmd_env                 # Full blown environment command set
> select          cmd_flash               # Flash programming cmds
> select          cmd_hist                # Command history
> select          cmd_ifaddr              # Interface address command
> select          cmd_l                   # Disassemble
> select          cmd_mem                 # Memory manipulation commands
> select          cmd_more                # More paginator
> select          cmd_mt                  # Simple memory test command
> select          cmd_misc                # Reboot & Flush etc.
> #select         cmd_stty                # TTY setings command
> select          cmd_tr                  # Host port-through command
> select          cmd_devls               # Device list
> select          cmd_set                 # As cmd_env but not req. cmd_hist
> select          cmd_testdisk
> select          cmd_test
> select          pmon_zmodem_rz
> #
> select          cmd_shell               # Shell commands, vers, help, eval
> #
> #
> # Platform options
> #
> select          mod_uart_ns16550        # Standard UART driver
> #option         CONS_BAUD=B9600
> option          CONS_BAUD=B115200
> select          ext2
> select          fatfs
> #select         mod_x86emu              # X86 emulation for VGA
> option  MY40IO
> #select         mod_x86emu_int10
> select          mod_vgacon
> select          mod_framebuffer
> option          X640x480
> option          CONFIG_VIDEO_16BPP
> option          NOPCINAMES              # Save some space for x86emu
> #option         FASTBOOT
> select      vt82c686        #via686a/b code
> 
> #
> # Functional options.
> #
> option          NOSNOOP                 # Caches are no-snooping
> 
> #
> # HAVE options. What tgt level provide
> #
> option          HAVE_TOD                # Time-Of-Day clock
> option          HAVE_NVENV              #  Platform has non-volatile env mem
> option          HAVE_LOGO               # Output splash logo
> option          USE_SUPERIO_UART
> #option         USE_LEGACY_RTC
> #option         GODSONEV2A
> #option         LINUX_PC
> #option         LONGMENG
> option          RADEON7000
> #option         DEBUG_EMU_VGA
> option          AUTOLOAD
> #option         CONFIG_PCI0_LARGE_MEM
> #option         CONFIG_PCI0_HUGE_MEM
> #option         CONFIG_PCI0_GAINT_MEM
> option          CONFIG_CACHE_64K_4WAY
> option      NVRAM_IN_FLASH
> 
> #
> #  Now the Machine specification
> #
> mainbus0        at root
> localbus0       at mainbus0
> #fd0         at mainbus0
> pcibr*          at mainbus0
> #pcibr1         at mainbus0
> pci*            at pcibr?
> #ppb*           at pci? dev ? function ?        # PCI-PCI bridges
> #pci*           at ppb? bus ?
> 
> #### USB
> #uhci*          at pci? dev ? function ?
> 
> #### SCSI support
> #siop*          at pci? dev ? function ?        # Symbios/NCR 53c...
> #scsibus*       at siop?
> #sd*            at scsibus? target ? lun ?
> #cd*            at scsibus? target ? lun ?
> 
> #### Networking Devices
> #gt0            at localbus? base 4
> #gt1            at localbus? base 5
> #gt2            at localbus? base 6
> # fxp normally only used for debugging (enable/disable both)
> fxp*            at pci? dev ? function ?        # Intel 82559 Device
> inphy*          at mii? phy ?                   # Intel 82555 PHYs
> rtl*        at pci? dev ? function ?
> uhci*            at pci? dev ? function ?
> #ohci0           at pci? dev ? function ?
> usb*             at usbbus ?
> #ohci1           at pci? dev ? function ?
> 
> select      mod_usb
> select          mod_usb_storage
> select      mod_usb_uhci
> #select                 mod_usb_ohci
> select      mod_usb_kbd
> 
> 
> #### IDE controllers
> pciide*         at pci ? dev ? function ? flags 0x0000
> atp*           at pci? dev ? function ?  #sata atp8620
> sata*       at atp?
> #### IDE hard drives
> wd*             at pciide? channel ? drive ? flags 0x0000
> 
> #### Pseudo devices
> pseudo-device   loop    1       # network loopback
> 
> ide_cd*         at pciide? channel ? drive ? flags 0x0001
> select          iso9660
> option IDECD
> #option HAVE_NB_SERIAL
> option USE_ENVMAC
> #option LOOKLIKE_PC
> #select cmd_lwdhcp
> #select cmd_bootp
> option WDC_NORESET
> option FOR_GXEMUL
> select fatfs
> option FLOATINGPT
> select gzip
> option VIA686B_POWERFIXUP
> option INPUT_FROM_BOTH
> option OUTPUT_TO_BOTH
> option PCI_IDSEL_VIA686B=17
> 
> ==========
> 
> In other words, just DISABLE both x86_emu and x86_emu_int10h, enable framebuffer, 
> set 640x480 resolution and 16 bpp bit depth.
> 
> After this, you can make it
> cd zloader.2edev
> LANG=C ./build.sh
> (otherwise in can put localized date in pmon, it will be shown wrong).
> 
> ==========
> #!/bin/bash
> export MKDEP=makedepend
> export PATH=/usr/local/comp/mips-elf/gcc-2.95.3/bin/:$PATH
> make cfg            #ёьРВЕдЦГ
> make tgt=ram
> mv gzram pmon_ram.bin
> make tgt=rom    #ІъЙъЙХЦЖОДјю gzrom.bin
> mv gzrom.bin  pmon.bin
> mkdir -d /var/lib/tftpboot
> cp pmon.bin pmon_ram.bin /var/lib/tftpboot
> =============
> 
> note, my mkdir doesn't understand 'd' option, but script finishes anyway.
> watch for errors, especially if you enabled some more options.
> 
> Newer pmon source fails to compile for me due to some mtd changes.
> 
> After this , I run resulted pmon like this 
> (using Zoltan's patch for ati-vga device on top of current qemu):

How I see this can be integrated in QEMU is creating a Dockerfile
starting with "FROM qemu:debian-mips64el-cross" then a bunch of "RUN"
lines which do the same as your script and finally generates the
pmon.bin which we'll add to repository and ship as roms/pmon_2e.bin.

> mips64el-softmmu/qemu-system-mips64el -M fulong2e  -cpu Loongson-2E -m 1G  -bios /dev/shm/pmon-my/pmon/zloader.2edev/pmon.bin -device ati-vga,model=rv100 -hda /dev/shm/LONGSOON_disk  -cdrom /dev/shm/debian-8.0.0-mipsel-xfce-CD-1.iso -display sdl,gl=on
> 
> it can see both disk and CD, but sadly I was unable to find any working kernel?!
> 
> vmlinux-2e just hangs early, and vmlinux-3.16.0-4-loongson-2e extracted from debian pkg
> hangs a litle latter in boot process. Tried without -m option, and with 2F CPU. 
> I mean even with just -kernel, no bios involved.
> 
> Also, while I was able to compile-in uhci support, adding usb-kbd device freezes pmon. And newly-added 
> EHCI support apparently limited to only some CPUs/boards :/ At least I was unable to compile pmon in 
> this config and with mod_usb_ehci.
> 
> Oh, and sadly my little "disable bitblit" patch was still needed:
> 
> diff --git a/fb/cfb_console.c b/fb/cfb_console.c
> index 6663ef7..f29c43f 100644
> --- a/fb/cfb_console.c
> +++ b/fb/cfb_console.c
> @@ -113,7 +113,7 @@ CONFIG_VIDEO_HW_CURSOR:          - Uses the hardware cursor capability of the
>  #define CONFIG_VIDEO_LOGO
>  #define        CONFIG_VIDEO_BMP_LOGO
>  //#define DEBUG_CFG_CONSOLE
> -#define VIDEO_HW_BITBLT
> +//#define VIDEO_HW_BITBLT
>  #elif defined(SMI712)
>  #define CONFIG_VIDEO_SW_CURSOR
>  //#define CONFIG_VIDEO_LOGO
> 
> otherwise pmon was not scrolling help text or any messages up.

This doesn't seem PMON related but a feature of the fulong2e that QEMU
doesn't model yet.

Regards,

Phil.
BALATON Zoltan March 6, 2019, 1:22 p.m. UTC | #2
On Wed, 6 Mar 2019, Andrew Randrianasulu wrote:
> I was compiling those pmons for last two days, and I happy to say most of my hackery was
> unnecessary.

Thanks. Just a few quick notes.

> After this , I run resulted pmon like this
> (using Zoltan's patch for ati-vga device on top of current qemu):
>
> mips64el-softmmu/qemu-system-mips64el -M fulong2e -cpu Loongson-2E -m 1G 
> -bios /dev/shm/pmon-my/pmon/zloader.2edev/pmon.bin -device 
> ati-vga,model=rv100 -hda /dev/shm/LONGSOON_disk -cdrom 
> /dev/shm/debian-8.0.0-mipsel-xfce-CD-1.iso -display sdl,gl=on

I think you don't need -cpu option as board will set that anyway and 
probably does not work with anything else. Also -m 1G is useless as memory 
is currently fixed at 256 MB (see comment in mips_fulong2e.c:298) due to 
me not knowing where to map highmem on mips in general or this board in 
particular. If that's fixed and the line with the comment is removed you 
may be able to use more than 256 MB RAM but not yet.

> it can see both disk and CD, but sadly I was unable to find any working kernel?!
>
> vmlinux-2e just hangs early, and vmlinux-3.16.0-4-loongson-2e extracted from debian pkg
> hangs a litle latter in boot process. Tried without -m option, and with 2F CPU.
> I mean even with just -kernel, no bios involved.

This could be some missing or buggy emulation. Maybe if you can get some 
debug logs from kernel that could tell what it's doing. Usually at least 
-d unimp,guest_errors options are recommended for debugging but if nothing 
is printed then it's harder to find out what's causing the hang.

> Also, while I was able to compile-in uhci support, adding usb-kbd device freezes pmon. And newly-added
> EHCI support apparently limited to only some CPUs/boards :/ At least I was unable to compile pmon in
> this config and with mod_usb_ehci.

No idea about that but the default ps2 kbd and mouse that's set up by the 
board should work so maybe it's not important and you should not need usb 
for kbd.

Regards,
BALATON Zoltan
BALATON Zoltan March 6, 2019, 1:29 p.m. UTC | #3
On Wed, 6 Mar 2019, Philippe Mathieu-Daudé wrote:
>> Oh, and sadly my little "disable bitblit" patch was still needed:
>>
>> diff --git a/fb/cfb_console.c b/fb/cfb_console.c
>> index 6663ef7..f29c43f 100644
>> --- a/fb/cfb_console.c
>> +++ b/fb/cfb_console.c
>> @@ -113,7 +113,7 @@ CONFIG_VIDEO_HW_CURSOR:          - Uses the hardware cursor capability of the
>>  #define CONFIG_VIDEO_LOGO
>>  #define        CONFIG_VIDEO_BMP_LOGO
>>  //#define DEBUG_CFG_CONSOLE
>> -#define VIDEO_HW_BITBLT
>> +//#define VIDEO_HW_BITBLT
>>  #elif defined(SMI712)
>>  #define CONFIG_VIDEO_SW_CURSOR
>>  //#define CONFIG_VIDEO_LOGO
>>
>> otherwise pmon was not scrolling help text or any messages up.
>
> This doesn't seem PMON related but a feature of the fulong2e that QEMU
> doesn't model yet.

It is ati-vga specific not fulong2e specific and it's entirely possible 
(even likely) that my minimal ati-vga emulation is not correct for 2d 
acceleration yet but I've tested it with the pmon_2e.bin binary from the 
same place and it worked with that. So if it does not work with the binary 
pmon for you then that's not the same what I see or if it works with the 
binary but not with the one compiled then either you're compiling another 
version that does something differently or there's a difference in config. 
There are several Bonito configs in pmon and the fulong2e might use 
another one or different options.

Regards,
BALATON Zoltan
diff mbox series

Patch

==============
# $Id: Bonito,v 1.1.1.1 2006/09/14 01:59:09 root Exp $ # #      GENERIC configuration for Galileo EV64240 # #  This file is supposed to be included by target file after #  endian has been defined.
#
machine         Bonito2edev        mips    # CPU Architecture, Platform
config          pmon

#
#  Define target endian
#
makeoptions     ENDIAN=EL               # Little endian version.


#include "conf/GENERIC_ALL"

#
# System Name and Target Name
#
option          SYSTYPE="\"Bonito\""
option          TARGETNAME="\"Bonito\""

#
# Platform options
#
option          BONITOEL
option      DEVBD2E
option          MIPS
option          INET

select          mod_flash_amd           # AMD flash device programming
select          mod_flash_intel         # intel flash device programming
select          mod_flash_sst           # intel flash device programming
select          mod_debugger            # Debugging module
select          mod_symbols             # Symbol table handling
select          mod_s3load              # Srecord loading
#select         mod_fastload            # LSI Fastload
select          mod_elfload             # ELF loading

#
# Command selection. Selects pmon commands
#
select          cmd_newmt
select          cmd_setup
select          mod_display
select          cmd_about               # Display info about PMON
select          cmd_boot                # Boot wrapper
select          cmd_mycmd
select          cmd_xmodem
select          ramfiles
select          cmd_newmt
select          cmd_cache               # Cache enabling
#select         cmd_call                # Call a function command
select          cmd_date                # Time of day command
select          cmd_env                 # Full blown environment command set
select          cmd_flash               # Flash programming cmds
select          cmd_hist                # Command history
select          cmd_ifaddr              # Interface address command
select          cmd_l                   # Disassemble
select          cmd_mem                 # Memory manipulation commands
select          cmd_more                # More paginator
select          cmd_mt                  # Simple memory test command
select          cmd_misc                # Reboot & Flush etc.
#select         cmd_stty                # TTY setings command
select          cmd_tr                  # Host port-through command
select          cmd_devls               # Device list
select          cmd_set                 # As cmd_env but not req. cmd_hist
select          cmd_testdisk
select          cmd_test
select          pmon_zmodem_rz
#
select          cmd_shell               # Shell commands, vers, help, eval
#
#
# Platform options
#
select          mod_uart_ns16550        # Standard UART driver
#option         CONS_BAUD=B9600
option          CONS_BAUD=B115200
select          ext2
select          fatfs
#select         mod_x86emu              # X86 emulation for VGA
option  MY40IO
#select         mod_x86emu_int10
select          mod_vgacon
select          mod_framebuffer
option          X640x480
option          CONFIG_VIDEO_16BPP
option          NOPCINAMES              # Save some space for x86emu
#option         FASTBOOT
select      vt82c686        #via686a/b code

#
# Functional options.
#
option          NOSNOOP                 # Caches are no-snooping

#
# HAVE options. What tgt level provide
#
option          HAVE_TOD                # Time-Of-Day clock
option          HAVE_NVENV              #  Platform has non-volatile env mem
option          HAVE_LOGO               # Output splash logo
option          USE_SUPERIO_UART
#option         USE_LEGACY_RTC
#option         GODSONEV2A
#option         LINUX_PC
#option         LONGMENG
option          RADEON7000
#option         DEBUG_EMU_VGA
option          AUTOLOAD
#option         CONFIG_PCI0_LARGE_MEM
#option         CONFIG_PCI0_HUGE_MEM
#option         CONFIG_PCI0_GAINT_MEM
option          CONFIG_CACHE_64K_4WAY
option      NVRAM_IN_FLASH

#
#  Now the Machine specification
#
mainbus0        at root
localbus0       at mainbus0
#fd0         at mainbus0
pcibr*          at mainbus0
#pcibr1         at mainbus0
pci*            at pcibr?
#ppb*           at pci? dev ? function ?        # PCI-PCI bridges
#pci*           at ppb? bus ?

#### USB
#uhci*          at pci? dev ? function ?

#### SCSI support
#siop*          at pci? dev ? function ?        # Symbios/NCR 53c...
#scsibus*       at siop?
#sd*            at scsibus? target ? lun ?
#cd*            at scsibus? target ? lun ?

#### Networking Devices
#gt0            at localbus? base 4
#gt1            at localbus? base 5
#gt2            at localbus? base 6
# fxp normally only used for debugging (enable/disable both)
fxp*            at pci? dev ? function ?        # Intel 82559 Device
inphy*          at mii? phy ?                   # Intel 82555 PHYs
rtl*        at pci? dev ? function ?
uhci*            at pci? dev ? function ?
#ohci0           at pci? dev ? function ?
usb*             at usbbus ?
#ohci1           at pci? dev ? function ?

select      mod_usb
select          mod_usb_storage
select      mod_usb_uhci
#select                 mod_usb_ohci
select      mod_usb_kbd


#### IDE controllers
pciide*         at pci ? dev ? function ? flags 0x0000
atp*           at pci? dev ? function ?  #sata atp8620
sata*       at atp?
#### IDE hard drives
wd*             at pciide? channel ? drive ? flags 0x0000

#### Pseudo devices
pseudo-device   loop    1       # network loopback

ide_cd*         at pciide? channel ? drive ? flags 0x0001
select          iso9660
option IDECD
#option HAVE_NB_SERIAL
option USE_ENVMAC
#option LOOKLIKE_PC
#select cmd_lwdhcp
#select cmd_bootp
option WDC_NORESET
option FOR_GXEMUL
select fatfs
option FLOATINGPT
select gzip
option VIA686B_POWERFIXUP
option INPUT_FROM_BOTH
option OUTPUT_TO_BOTH
option PCI_IDSEL_VIA686B=17

==========

In other words, just DISABLE both x86_emu and x86_emu_int10h, enable framebuffer, 
set 640x480 resolution and 16 bpp bit depth.

After this, you can make it
cd zloader.2edev
LANG=C ./build.sh
(otherwise in can put localized date in pmon, it will be shown wrong).

==========
#!/bin/bash
export MKDEP=makedepend
export PATH=/usr/local/comp/mips-elf/gcc-2.95.3/bin/:$PATH
make cfg            #ёьРВЕдЦГ
make tgt=ram
mv gzram pmon_ram.bin
make tgt=rom    #ІъЙъЙХЦЖОДјю gzrom.bin
mv gzrom.bin  pmon.bin
mkdir -d /var/lib/tftpboot
cp pmon.bin pmon_ram.bin /var/lib/tftpboot
=============

note, my mkdir doesn't understand 'd' option, but script finishes anyway.
watch for errors, especially if you enabled some more options.

Newer pmon source fails to compile for me due to some mtd changes.

After this , I run resulted pmon like this 
(using Zoltan's patch for ati-vga device on top of current qemu):

mips64el-softmmu/qemu-system-mips64el -M fulong2e  -cpu Loongson-2E -m 1G  -bios /dev/shm/pmon-my/pmon/zloader.2edev/pmon.bin -device ati-vga,model=rv100 -hda /dev/shm/LONGSOON_disk  -cdrom /dev/shm/debian-8.0.0-mipsel-xfce-CD-1.iso -display sdl,gl=on

it can see both disk and CD, but sadly I was unable to find any working kernel?!

vmlinux-2e just hangs early, and vmlinux-3.16.0-4-loongson-2e extracted from debian pkg
hangs a litle latter in boot process. Tried without -m option, and with 2F CPU. 
I mean even with just -kernel, no bios involved.

Also, while I was able to compile-in uhci support, adding usb-kbd device freezes pmon. And newly-added 
EHCI support apparently limited to only some CPUs/boards :/ At least I was unable to compile pmon in 
this config and with mod_usb_ehci.

Oh, and sadly my little "disable bitblit" patch was still needed:

diff --git a/fb/cfb_console.c b/fb/cfb_console.c
index 6663ef7..f29c43f 100644
--- a/fb/cfb_console.c
+++ b/fb/cfb_console.c
@@ -113,7 +113,7 @@  CONFIG_VIDEO_HW_CURSOR:          - Uses the hardware cursor capability of the
 #define CONFIG_VIDEO_LOGO
 #define        CONFIG_VIDEO_BMP_LOGO
 //#define DEBUG_CFG_CONSOLE
-#define VIDEO_HW_BITBLT
+//#define VIDEO_HW_BITBLT
 #elif defined(SMI712)
 #define CONFIG_VIDEO_SW_CURSOR
 //#define CONFIG_VIDEO_LOGO