[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] PMON2000 compilation and kernel question
From: |
Philippe Mathieu-Daudé |
Subject: |
Re: [Qemu-devel] PMON2000 compilation and kernel question |
Date: |
Wed, 6 Mar 2019 12:25:10 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.5.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.