Message ID | 201903061321.58890.randrianasulu@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | PMON2000 compilation and kernel question | expand |
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.
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
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
============== # $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