RP2040/Pico beeb emulator
RP2040/Pico beeb emulator
Figured i should split this off the Pi version thread.
Code is here https://github.com/kilograham/b-em
just updated with support for 1080p 50hz VGA output which some monitors may like better than 1280x1024 50hz
Code is here https://github.com/kilograham/b-em
just updated with support for 1080p 50hz VGA output which some monitors may like better than 1280x1024 50hz
Re: RP2040/Pico beeb emulator
I've just also realised that 297Mhz might be pushing the flash a bit hard, so let me know if it works for you (it did for me)... slowing the flash down by a factor of 2 may make things too slow, i'll have to take a look.
-
- Posts: 215
- Joined: Tue Jul 03, 2007 10:40 am
- Location: italy
- Contact:
Re: RP2040/Pico beeb emulator
Excuse me but what makes you think you are pushing too much the flash? Have you find any abnormal behaviour that could be caused by flash stressing? I am interested in finding the overdriving limits of the Pico.
Re: RP2040/Pico beeb emulator
It is a question of what external flash chip you have.
The flash chip on the Pico is rated at max 133Mhz; the default flash clock divider is 2, so that means anything over 266Mhz system clock is over spec for the flash chip unless you sub-divide it further. I need to try it out on some of my boards to see; on the one i was using it works fine, but i've heard some people have had issues above about 280Mhz with the default clock divider.
The flash chip on the Pico is rated at max 133Mhz; the default flash clock divider is 2, so that means anything over 266Mhz system clock is over spec for the flash chip unless you sub-divide it further. I need to try it out on some of my boards to see; on the one i was using it works fine, but i've heard some people have had issues above about 280Mhz with the default clock divider.
Re: RP2040/Pico beeb emulator
Just trying to build on the RP2040 version on my Pi (Stretch) but CMake seems to be an old one:
So I guess there is a later version from somewhere?
Update...
Currently looking in https://cmake.org/files/v3.13/
Getting closer...
Just need to work out which gcc to install now?
Update ...
Looking at https://developer.arm.com/tools-and-sof ... /downloads
Downloaded gcc-arm-none-eabi-10-2020-q4-major-src.tar.bz2
Needed ...
sudo apt-get install p7zip-full
./install-sources.sh
sudo apt-get install m4
./build-prerequisites.sh
... Close but not yet
... Looking for aarch32 pre-built package instead
https://github.com/xpack-dev-tools/arm- ... arm.tar.gz
cmake now seems to do it's thing
However make -j4 doesn't work
Is it picking up the wrong tools?
Code: Select all
pi@raspberrypi:~/PiPico/pico_build $ sudo apt install cmake
Reading package lists... Done
Building dependency tree
Reading state information... Done
cmake is already the newest version (3.7.2-1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
pi@raspberrypi:~/PiPico/pico_build $
Code: Select all
pi@raspberrypi:~/PiPico/pico_build $ cmake -DPICO_SDK_PATH=/home/pi/PiPico/pico-sdk -DPICO_BOARD=vgaboard ../b-em
CMake Error at CMakeLists.txt:1 (cmake_minimum_required):
CMake 3.13 or higher is required. You are running version 3.7.2
-- Configuring incomplete, errors occurred!
Update...
Currently looking in https://cmake.org/files/v3.13/
Getting closer...
Code: Select all
pi@raspberrypi:~/PiPico/pico_build $ cmake -DPICO_SDK_PATH=/home/pi/PiPico/pico-sdk -DPICO_BOARD=vgaboard ../b-em
Building b-em for generic host mode using the Pico SDK
PICO_SDK_PATH is /home/pi/PiPico/pico-sdk
Defaulting PICO_PLATFORM to rp2040 since not specified.
Defaulting PICO platform compiler to pico_arm_gcc since not specified.
-- Defaulting build type to 'Release' since not specified.
PICO compiler is pico_arm_gcc
Defaulting PICO_EXTRAS_PATH as sibling of PICO_SDK_PATH: /home/pi/PiPico/pico-sdk/../pico-extras
PICO_GCC_TRIPLE defaulted to arm-none-eabi
CMake Error at /home/pi/PiPico/pico-sdk/cmake/preload/toolchains/find_compiler.cmake:28 (message):
Compiler 'arm-none-eabi-gcc' not found, you can specify search path with
"PICO_TOOLCHAIN_PATH".
Call Stack (most recent call first):
/home/pi/PiPico/pico-sdk/cmake/preload/toolchains/pico_arm_gcc.cmake:20 (pico_find_compiler)
/usr/local/share/cmake-3.13/Modules/CMakeDetermineSystem.cmake:94 (include)
/home/pi/PiPico/pico-extras/CMakeLists.txt:9 (project)
CMake Error: CMake was unable to find a build program corresponding to "Unix Makefiles". CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool.
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
-- Configuring incomplete, errors occurred!
Update ...
Looking at https://developer.arm.com/tools-and-sof ... /downloads
Downloaded gcc-arm-none-eabi-10-2020-q4-major-src.tar.bz2
Needed ...
sudo apt-get install p7zip-full
./install-sources.sh
sudo apt-get install m4
./build-prerequisites.sh
... Close but not yet
Code: Select all
+2021-03-09:21:02:19 (/home/pi/arm-gcc/gcc-arm-none-eabi-10-2020-q4-major/build-common.sh:56): copy_dir_clean(): tar xf -
+2021-03-09:21:02:19 (/home/pi/arm-gcc/gcc-arm-none-eabi-10-2020-q4-major/build-common.sh:57): copy_dir_clean(): set -u
+2021-03-09:21:02:19 (./build-prerequisites.sh:265): main(): pushd /home/pi/arm-gcc/gcc-arm-none-eabi-10-2020-q4-major/build-mingw/zlib
~/arm-gcc/gcc-arm-none-eabi-10-2020-q4-major/build-mingw/zlib ~/arm-gcc/gcc-arm-none-eabi-10-2020-q4-major/src
+2021-03-09:21:02:19 (./build-prerequisites.sh:267): main(): ./configure --static --prefix=/home/pi/arm-gcc/gcc-arm-none-eabi-10-2020-q4-major/build-mingw/host-libs/zlib
Compiler error reporting is too harsh for ./configure (perhaps remove -Werror).
** ./configure aborting.
... Looking for aarch32 pre-built package instead
https://github.com/xpack-dev-tools/arm- ... arm.tar.gz
cmake now seems to do it's thing
Code: Select all
pi@raspberrypi:~/PiPico/pico_build $ cmake -DPICO_SDK_PATH=/home/pi/PiPico/pico-sdk -DPICO_TOOLCHAIN_PATH=/home/pi/arm-gcc/arm-none-eabi -DPICO_BOARD=vgaboard -DUSE_USB_KEYBOARD=TRUE ../b-em
Building b-em for RP2040 using the Pico SDK
PICO_SDK_PATH is /home/pi/PiPico/pico-sdk
PICO platform is rp2040.
PICO compiler is
PICO_GCC_TRIPLE defaulted to arm-none-eabi
PICO target board is vgaboard.
Using board configuration from /home/pi/PiPico/pico-sdk/src/boards/include/boards/vgaboard.h
TinyUSB available at /home/pi/PiPico/pico-sdk/lib/tinyusb/src/portable/raspberrypi/rp2040; adding USB support.
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)
PIOASM will need to be built
lwIP available at /home/pi/PiPico/pico-extras/lib/lwip/src/core/tcp.c; TCP/IP support is available.
PICO_GCC_TRIPLE defaulted to arm-none-eabi
Skipping b-em for Pico SDK build
Skipping b-em-reduced for Pico SDK build
Skipping b-em-reduced-thumb-cpu for Pico SDK build
{$NAME} DISCS=discs/beeb_discs.txt ROMS=roms/beeb_roms.txt
Configured beeb TUBE=0 DEBUGGER=0 SID= PICO_CPU=1 GUI= SAVE= VDFS=0 FDI= UEF= CSW= IDE= SCSI= ADC= MOUSE= MUSIC5000= I8271=
ELF2UF2 will need to be built
EmbedTool will need to be built
{$NAME} DISCS=discs/master_discs.txt ROMS=roms/master_roms.txt
Configured master TUBE=0 DEBUGGER=0 SID= PICO_CPU=1 GUI= SAVE= VDFS=0 FDI= UEF= CSW= IDE= SCSI= ADC= MOUSE= MUSIC5000= I8271=
{$NAME} DISCS=discs/beeb_discs.txt ROMS=roms/beeb_roms.txt
Configured beeb_1080p TUBE=0 DEBUGGER=0 SID= PICO_CPU=1 GUI= SAVE= VDFS=0 FDI= UEF= CSW= IDE= SCSI= ADC= MOUSE= MUSIC5000= I8271=
WEEVAL beeb_1080p
{$NAME} DISCS=discs/master_discs.txt ROMS=roms/master_roms.txt
Configured master_1080p TUBE=0 DEBUGGER=0 SID= PICO_CPU=1 GUI= SAVE= VDFS=0 FDI= UEF= CSW= IDE= SCSI= ADC= MOUSE= MUSIC5000= I8271=
WEEVAL master_1080p
{$NAME} DISCS=discs/beeb_discs.txt ROMS=roms/beeb_roms.txt
Configured beeb_360 TUBE=0 DEBUGGER=0 SID= PICO_CPU=1 GUI= SAVE= VDFS=0 FDI= UEF= CSW= IDE= SCSI= ADC= MOUSE= MUSIC5000= I8271=
{$NAME} DISCS=discs/master_discs.txt ROMS=roms/master_roms.txt
Configured master_360 TUBE=0 DEBUGGER=0 SID= PICO_CPU=1 GUI= SAVE= VDFS=0 FDI= UEF= CSW= IDE= SCSI= ADC= MOUSE= MUSIC5000= I8271=
-- Configuring done
-- Generating done
-- Build files have been written to: /home/pi/PiPico/pico_build
Code: Select all
pi@raspberrypi:~/PiPico/pico_build $ make -j4
[ 1%] Performing build step for 'PioasmBuild'
[ 2%] Performing build step for 'EmbedToolBuild'
[ 2%] Built target slower_boot2
[ 2%] Built target bs2_default
[ 3%] Performing build step for 'ELF2UF2Build'
[ 3%] Built target asmstuff
[100%] Built target pioasm
[ 4%] Built target slower_boot2_padded_checksummed_asm
[ 33%] Building CXX object CMakeFiles/embed_tool.dir/main.cpp.o
[ 4%] No install step for 'PioasmBuild'
[ 5%] Built target bs2_default_padded_checksummed_asm
[ 50%] Building CXX object CMakeFiles/elf2uf2.dir/main.cpp.o
[ 5%] Completed 'PioasmBuild'
[ 5%] Built target PioasmBuild
[ 5%] Built target pico_audio_i2s_audio_i2s_pio_h
[ 5%] Built target pico_scanvideo_scanvideo_pio_h
/home/pi/PiPico/b-em/src/pico/embed_tool/main.cpp:11:22: fatal error: filesystem: No such file or directory
#include <filesystem>
^
compilation terminated.
[ 5%] Built target pico_gui_menu_pio_h
[ 6%] Built target pico_scanvideo_dpi_timing_pio_h
CMakeFiles/embed_tool.dir/build.make:62: recipe for target 'CMakeFiles/embed_tool.dir/main.cpp.o' failed
make[5]: *** [CMakeFiles/embed_tool.dir/main.cpp.o] Error 1
CMakeFiles/Makefile2:72: recipe for target 'CMakeFiles/embed_tool.dir/all' failed
make[4]: *** [CMakeFiles/embed_tool.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make[3]: *** [all] Error 2
src/pico/CMakeFiles/EmbedToolBuild.dir/build.make:110: recipe for target 'src/pico/embed_tool/src/EmbedToolBuild-stamp/EmbedToolBuild-build' failed
make[2]: *** [src/pico/embed_tool/src/EmbedToolBuild-stamp/EmbedToolBuild-build] Error 2
CMakeFiles/Makefile2:2440: recipe for target 'src/pico/CMakeFiles/EmbedToolBuild.dir/all' failed
make[1]: *** [src/pico/CMakeFiles/EmbedToolBuild.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
/home/pi/PiPico/pico-sdk/tools/elf2uf2/main.cpp:55:10: error: invalid use of non-static data member ‘address_range::type’
type type;
^
/home/pi/PiPico/pico-sdk/tools/elf2uf2/main.cpp:70:58: error: from this location
address_range(FLASH_START, FLASH_END, address_range::type::CONTENTS),
^
/home/pi/PiPico/pico-sdk/tools/elf2uf2/main.cpp:55:10: error: invalid use of non-static data member ‘address_range::type’
type type;
^
/home/pi/PiPico/pico-sdk/tools/elf2uf2/main.cpp:71:64: error: from this location
address_range(MAIN_RAM_START, MAIN_RAM_END, address_range::type::NO_CONTENTS)
^
/home/pi/PiPico/pico-sdk/tools/elf2uf2/main.cpp:72:1: error: no matching function for call to ‘std::vector<address_range>::vector(<brace-enclosed initializer list>)’
};
^
/home/pi/PiPico/pico-sdk/tools/elf2uf2/main.cpp:72:1: note: candidates are:
In file included from /usr/include/c++/4.9/vector:64:0,
from /home/pi/PiPico/pico-sdk/tools/elf2uf2/main.cpp:9:
/usr/include/c++/4.9/bits/stl_vector.h:401:9: note: template<class _InputIterator, class> std::vector<_Tp, _Alloc>::vector(_InputIterator, _InputIterator, const allocator_type&)
vector(_InputIterator __first, _InputIterator __last,
^
/usr/include/c++/4.9/bits/stl_vector.h:401:9: note: template argument deduction/substitution failed:
/usr/include/c++/4.9/bits/stl_vector.h:373:7: note: std::vector<_Tp, _Alloc>::vector(std::initializer_list<_Tp>, const allocator_type&) [with _Tp = address_range; _Alloc = std::allocator<address_range>; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<address_range>]
vector(initializer_list<value_type> __l,
^
/usr/include/c++/4.9/bits/stl_vector.h:373:7: note: no known conversion for argument 1 from ‘<type error>’ to ‘std::initializer_list<address_range>’
/usr/include/c++/4.9/bits/stl_vector.h:348:7: note: std::vector<_Tp, _Alloc>::vector(std::vector<_Tp, _Alloc>&&, const allocator_type&) [with _Tp = address_range; _Alloc = std::allocator<address_range>; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<address_range>]
vector(vector&& __rv, const allocator_type& __m)
^
/usr/include/c++/4.9/bits/stl_vector.h:348:7: note: no known conversion for argument 1 from ‘<type error>’ to ‘std::vector<address_range>&&’
/usr/include/c++/4.9/bits/stl_vector.h:339:7: note: std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&, const allocator_type&) [with _Tp = address_range; _Alloc = std::allocator<address_range>; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<address_range>]
vector(const vector& __x, const allocator_type& __a)
^
/usr/include/c++/4.9/bits/stl_vector.h:339:7: note: no known conversion for argument 1 from ‘<type error>’ to ‘const std::vector<address_range>&’
/usr/include/c++/4.9/bits/stl_vector.h:335:7: note: std::vector<_Tp, _Alloc>::vector(std::vector<_Tp, _Alloc>&&) [with _Tp = address_range; _Alloc = std::allocator<address_range>]
vector(vector&& __x) noexcept
^
/usr/include/c++/4.9/bits/stl_vector.h:335:7: note: candidate expects 1 argument, 2 provided
/usr/include/c++/4.9/bits/stl_vector.h:318:7: note: std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&) [with _Tp = address_range; _Alloc = std::allocator<address_range>]
vector(const vector& __x)
^
/usr/include/c++/4.9/bits/stl_vector.h:318:7: note: candidate expects 1 argument, 2 provided
/usr/include/c++/4.9/bits/stl_vector.h:289:7: note: std::vector<_Tp, _Alloc>::vector(std::vector<_Tp, _Alloc>::size_type, const value_type&, const allocator_type&) [with _Tp = address_range; _Alloc = std::allocator<address_range>; std::vector<_Tp, _Alloc>::size_type = unsigned int; std::vector<_Tp, _Alloc>::value_type = address_range; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<address_range>]
vector(size_type __n, const value_type& __value,
^
/usr/include/c++/4.9/bits/stl_vector.h:289:7: note: no known conversion for argument 1 from ‘<type error>’ to ‘std::vector<address_range>::size_type {aka unsigned int}’
/usr/include/c++/4.9/bits/stl_vector.h:277:7: note: std::vector<_Tp, _Alloc>::vector(std::vector<_Tp, _Alloc>::size_type, const allocator_type&) [with _Tp = address_range; _Alloc = std::allocator<address_range>; std::vector<_Tp, _Alloc>::size_type = unsigned int; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<address_range>]
vector(size_type __n, const allocator_type& __a = allocator_type())
^
/usr/include/c++/4.9/bits/stl_vector.h:277:7: note: no known conversion for argument 1 from ‘<type error>’ to ‘std::vector<address_range>::size_type {aka unsigned int}’
/usr/include/c++/4.9/bits/stl_vector.h:264:7: note: std::vector<_Tp, _Alloc>::vector(const allocator_type&) [with _Tp = address_range; _Alloc = std::allocator<address_range>; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<address_range>]
vector(const allocator_type& __a) _GLIBCXX_NOEXCEPT
^
/usr/include/c++/4.9/bits/stl_vector.h:264:7: note: candidate expects 1 argument, 2 provided
/usr/include/c++/4.9/bits/stl_vector.h:253:7: note: std::vector<_Tp, _Alloc>::vector() [with _Tp = address_range; _Alloc = std::allocator<address_range>]
vector()
^
/usr/include/c++/4.9/bits/stl_vector.h:253:7: note: candidate expects 0 arguments, 2 provided
/home/pi/PiPico/pico-sdk/tools/elf2uf2/main.cpp:55:10: error: invalid use of non-static data member ‘address_range::type’
type type;
^
/home/pi/PiPico/pico-sdk/tools/elf2uf2/main.cpp:75:64: error: from this location
address_range(MAIN_RAM_START, MAIN_RAM_END, address_range::type::CONTENTS),
^
/home/pi/PiPico/pico-sdk/tools/elf2uf2/main.cpp:55:10: error: invalid use of non-static data member ‘address_range::type’
type type;
^
/home/pi/PiPico/pico-sdk/tools/elf2uf2/main.cpp:76:64: error: from this location
address_range(XIP_SRAM_START, XIP_SRAM_END, address_range::type::CONTENTS),
^
/home/pi/PiPico/pico-sdk/tools/elf2uf2/main.cpp:55:10: error: invalid use of non-static data member ‘address_range::type’
type type;
^
/home/pi/PiPico/pico-sdk/tools/elf2uf2/main.cpp:77:60: error: from this location
address_range(0x00000000u, 0x00004000u, address_range::type::IGNORE) // for now we ignore the bootrom if present
^
/home/pi/PiPico/pico-sdk/tools/elf2uf2/main.cpp:78:1: error: no matching function for call to ‘std::vector<address_range>::vector(<brace-enclosed initializer list>)’
};
^
/home/pi/PiPico/pico-sdk/tools/elf2uf2/main.cpp:78:1: note: candidates are:
In file included from /usr/include/c++/4.9/vector:64:0,
from /home/pi/PiPico/pico-sdk/tools/elf2uf2/main.cpp:9:
/usr/include/c++/4.9/bits/stl_vector.h:401:9: note: template<class _InputIterator, class> std::vector<_Tp, _Alloc>::vector(_InputIterator, _InputIterator, const allocator_type&)
vector(_InputIterator __first, _InputIterator __last,
^
/usr/include/c++/4.9/bits/stl_vector.h:401:9: note: template argument deduction/substitution failed:
/usr/include/c++/4.9/bits/stl_vector.h:373:7: note: std::vector<_Tp, _Alloc>::vector(std::initializer_list<_Tp>, const allocator_type&) [with _Tp = address_range; _Alloc = std::allocator<address_range>; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<address_range>]
vector(initializer_list<value_type> __l,
^
/usr/include/c++/4.9/bits/stl_vector.h:373:7: note: candidate expects 2 arguments, 3 provided
/usr/include/c++/4.9/bits/stl_vector.h:348:7: note: std::vector<_Tp, _Alloc>::vector(std::vector<_Tp, _Alloc>&&, const allocator_type&) [with _Tp = address_range; _Alloc = std::allocator<address_range>; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<address_range>]
vector(vector&& __rv, const allocator_type& __m)
^
/usr/include/c++/4.9/bits/stl_vector.h:348:7: note: candidate expects 2 arguments, 3 provided
/usr/include/c++/4.9/bits/stl_vector.h:339:7: note: std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&, const allocator_type&) [with _Tp = address_range; _Alloc = std::allocator<address_range>; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<address_range>]
vector(const vector& __x, const allocator_type& __a)
^
/usr/include/c++/4.9/bits/stl_vector.h:339:7: note: candidate expects 2 arguments, 3 provided
/usr/include/c++/4.9/bits/stl_vector.h:335:7: note: std::vector<_Tp, _Alloc>::vector(std::vector<_Tp, _Alloc>&&) [with _Tp = address_range; _Alloc = std::allocator<address_range>]
vector(vector&& __x) noexcept
^
/usr/include/c++/4.9/bits/stl_vector.h:335:7: note: candidate expects 1 argument, 3 provided
/usr/include/c++/4.9/bits/stl_vector.h:318:7: note: std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&) [with _Tp = address_range; _Alloc = std::allocator<address_range>]
vector(const vector& __x)
^
/usr/include/c++/4.9/bits/stl_vector.h:318:7: note: candidate expects 1 argument, 3 provided
/usr/include/c++/4.9/bits/stl_vector.h:289:7: note: std::vector<_Tp, _Alloc>::vector(std::vector<_Tp, _Alloc>::size_type, const value_type&, const allocator_type&) [with _Tp = address_range; _Alloc = std::allocator<address_range>; std::vector<_Tp, _Alloc>::size_type = unsigned int; std::vector<_Tp, _Alloc>::value_type = address_range; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<address_range>]
vector(size_type __n, const value_type& __value,
^
/usr/include/c++/4.9/bits/stl_vector.h:289:7: note: no known conversion for argument 1 from ‘<type error>’ to ‘std::vector<address_range>::size_type {aka unsigned int}’
/usr/include/c++/4.9/bits/stl_vector.h:277:7: note: std::vector<_Tp, _Alloc>::vector(std::vector<_Tp, _Alloc>::size_type, const allocator_type&) [with _Tp = address_range; _Alloc = std::allocator<address_range>; std::vector<_Tp, _Alloc>::size_type = unsigned int; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<address_range>]
vector(size_type __n, const allocator_type& __a = allocator_type())
^
/usr/include/c++/4.9/bits/stl_vector.h:277:7: note: candidate expects 2 arguments, 3 provided
/usr/include/c++/4.9/bits/stl_vector.h:264:7: note: std::vector<_Tp, _Alloc>::vector(const allocator_type&) [with _Tp = address_range; _Alloc = std::allocator<address_range>; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<address_range>]
vector(const allocator_type& __a) _GLIBCXX_NOEXCEPT
^
/usr/include/c++/4.9/bits/stl_vector.h:264:7: note: candidate expects 1 argument, 3 provided
/usr/include/c++/4.9/bits/stl_vector.h:253:7: note: std::vector<_Tp, _Alloc>::vector() [with _Tp = address_range; _Alloc = std::allocator<address_range>]
vector()
^
/usr/include/c++/4.9/bits/stl_vector.h:253:7: note: candidate expects 0 arguments, 3 provided
/home/pi/PiPico/pico-sdk/tools/elf2uf2/main.cpp: In function ‘int check_address_range(const address_ranges&, uint32_t, uint32_t, uint32_t, bool, address_range&)’:
/home/pi/PiPico/pico-sdk/tools/elf2uf2/main.cpp:123:46: error: ‘address_range::type’ is not a class, namespace, or enumeration
if (range.type == address_range::type::NO_CONTENTS && !uninitialized) {
^
/home/pi/PiPico/pico-sdk/tools/elf2uf2/main.cpp: In function ‘int read_and_check_elf32_ph_entries(FILE*, const elf32_header&, const address_ranges&, std::map<unsigned int, std::vector<page_fragment> >&)’:
/home/pi/PiPico/pico-sdk/tools/elf2uf2/main.cpp:156:51: error: ‘address_range::type’ is not a class, namespace, or enumeration
if (ar.type != address_range::type::CONTENTS) {
^
/home/pi/PiPico/pico-sdk/tools/elf2uf2/main.cpp: In function ‘bool is_address_initialized(const address_ranges&, uint32_t)’:
/home/pi/PiPico/pico-sdk/tools/elf2uf2/main.cpp:221:35: error: ‘address_range::type’ is not a class, namespace, or enumeration
return address_range::type::CONTENTS == range.type;
^
CMakeFiles/elf2uf2.dir/build.make:62: recipe for target 'CMakeFiles/elf2uf2.dir/main.cpp.o' failed
make[5]: *** [CMakeFiles/elf2uf2.dir/main.cpp.o] Error 1
CMakeFiles/Makefile2:72: recipe for target 'CMakeFiles/elf2uf2.dir/all' failed
make[4]: *** [CMakeFiles/elf2uf2.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make[3]: *** [all] Error 2
src/pico/CMakeFiles/ELF2UF2Build.dir/build.make:110: recipe for target 'src/pico/elf2uf2/src/ELF2UF2Build-stamp/ELF2UF2Build-build' failed
make[2]: *** [src/pico/elf2uf2/src/ELF2UF2Build-stamp/ELF2UF2Build-build] Error 2
CMakeFiles/Makefile2:2995: recipe for target 'src/pico/CMakeFiles/ELF2UF2Build.dir/all' failed
make[1]: *** [src/pico/CMakeFiles/ELF2UF2Build.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
Last edited by anightin on Wed Mar 10, 2021 2:01 pm, edited 1 time in total.
Re: RP2040/Pico beeb emulator
it looks like your gcc is not up to date - you need at least gcc 8
Re: RP2040/Pico beeb emulator
Thanks Graham, that would probably do it!
Code: Select all
pi@raspberrypi:~ $ gcc --version
gcc (Raspbian 4.9.3-14) 4.9.3
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Found https://bitbucket.org/sol_prog/raspberr ... .0.tar.bz2
sudo update-alternatives --install /usr/bin/gcc gcc /opt/gcc-8.1.0/bin/gcc-8.1.0 8
sudo update-alternatives --install /usr/bin/c++ c++ /opt/gcc-8.1.0/bin/c++-8.1.0 8
pi@raspberrypi:/usr/bin $ sudo update-alternatives --config gcc
There are 2 choices for the alternative gcc (providing /usr/bin/gcc).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/bin/gcc-4.9 60 auto mode
* 1 /opt/gcc-8.1.0/bin/gcc-8.1.0 8 manual mode
2 /usr/bin/gcc-4.9 60 manual mode
Press <enter> to keep the current choice[*], or type selection number:
Code: Select all
[ 98%] Built target master_1080p
[ 98%] Building C object src/pico/CMakeFiles/master_360.dir/home/pi/PiPico/pico-sdk/lib/tinyusb/src/class/hid/hid_host.c.obj
[ 99%] Building C object src/pico/CMakeFiles/master_360.dir/home/pi/PiPico/pico-sdk/lib/tinyusb/src/class/msc/msc_host.c.obj
[ 99%] Building C object src/pico/CMakeFiles/master_360.dir/home/pi/PiPico/pico-sdk/lib/tinyusb/src/class/vendor/vendor_host.c.obj
[ 99%] Building C object src/pico/CMakeFiles/master_360.dir/home/pi/PiPico/pico-sdk/lib/tinyusb/src/tusb.c.obj
[ 99%] Building C object src/pico/CMakeFiles/master_360.dir/home/pi/PiPico/pico-sdk/lib/tinyusb/src/common/tusb_fifo.c.obj
[ 99%] Building C object src/pico/CMakeFiles/master_360.dir/home/pi/PiPico/pico-extras/src/rp2_common/pico_scanvideo_dpi/scanvideo.c.obj
[ 99%] Building C object src/pico/CMakeFiles/master_360.dir/home/pi/PiPico/pico-sdk/src/rp2_common/hardware_dma/dma.c.obj
[ 99%] Building C object src/pico/CMakeFiles/master_360.dir/home/pi/PiPico/pico-sdk/src/rp2_common/hardware_pio/pio.c.obj
[ 99%] Building C object src/pico/CMakeFiles/master_360.dir/home/pi/PiPico/pico-extras/src/common/pico_scanvideo/vga_modes.c.obj
[100%] Building C object src/pico/CMakeFiles/master_360.dir/home/pi/PiPico/pico-extras/src/common/pico_util_buffer/buffer.c.obj
[100%] Building C object src/pico/CMakeFiles/master_360.dir/home/pi/PiPico/pico-extras/src/rp2_common/pico_audio_i2s/audio_i2s.c.obj
[100%] Building CXX object src/pico/CMakeFiles/master_360.dir/home/pi/PiPico/pico-extras/src/common/pico_audio/audio.cpp.obj
[100%] Building ASM object src/pico/CMakeFiles/master_360.dir/home/pi/PiPico/pico-extras/src/common/pico_audio/audio_utils.S.obj
[100%] Building C object src/pico/CMakeFiles/master_360.dir/home/pi/PiPico/pico-sdk/src/rp2_common/pico_multicore/multicore.c.obj
[100%] Building C object src/pico/CMakeFiles/master_360.dir/sector_read/sector_read.c.obj
[100%] Building C object src/pico/CMakeFiles/master_360.dir/sector_read/xip_stream.c.obj
[100%] Linking CXX executable master_360.elf
[100%] Built target master_360
Wow! That was an education
Code: Select all
ls src/pico/*.uf2
src/pico/beeb_1080p.uf2 src/pico/beeb.uf2 src/pico/master_360.uf2
src/pico/beeb_360.uf2 src/pico/master_1080p.uf2 src/pico/master.uf2
Re: RP2040/Pico beeb emulator
Yeah, my Pi OS is quite out of date, and is on the TODO list to migrate and update it.
The output through an OSSC looks fantastic using the 1080p uf2, very stable. The issue is that it adds a horizontal offset that I need to fix at some point.
Re: RP2040/Pico beeb emulator
interesting... i just pushed new code which has perhaps better support for 1080p (and i cut the flash speed in half so ppl shouldn't have problems with that if they were going to). I have no idea why you'd get a 1080p mode bunched up on the left. I think the problem you'd more likely hit is that now your monitor recognizes it as a widescreen mode, making to look stretched ...
... and so the new 1080p releases have a "widescreen" option in the menu to toggle between full width and 2/3 width.
... and so the new 1080p releases have a "widescreen" option in the menu to toggle between full width and 2/3 width.
Re: RP2040/Pico beeb emulator
Using my various VGA adaptors with that build, the ones that worked well previously work even better now. I get a signal reported by my HD Fury Vertex HDMI analyser that is recognised as 1080p50.anightin wrote: ↑Wed Mar 10, 2021 6:06 pmYeah, my Pi OS is quite out of date, and is on the TODO list to migrate and update it.
The output through an OSSC looks fantastic using the 1080p uf2, very stable. The issue is that it adds a horizontal offset that I need to fix at some point.
master_1080p.uf2.zip
I get what appears to be a bit-wider-than 4:3 but not as wide as 16:9. This is output as a 16:9 signal (as 1080p50 HDMI is 16:9) The BBC Micro output appears on the left-of frame - VERY tight to the top left - but with a large gap to the right of frame, and a smaller gap at the bottom of frame.
My flat panel is in no-overscan mode - but if your flat panel simulated overscan - as many do by default - you'd have some crop on the left and top as it's VERY snug top left.
Re: RP2040/Pico beeb emulator
Good to know. I've just got around to updating my Pi now to Buster, so the build runs nicely without any messing about with gcc versions etc. I was holding off as I have a number of Python pip3 installs to run heating and lights at home and didn't want to end up breaking everything.noggin wrote: ↑Tue Mar 16, 2021 9:31 amUsing my various VGA adaptors with that build, the ones that worked well previously work even better now. I get a signal reported by my HD Fury Vertex HDMI analyser that is recognised as 1080p50.anightin wrote: ↑Wed Mar 10, 2021 6:06 pmYeah, my Pi OS is quite out of date, and is on the TODO list to migrate and update it.
The output through an OSSC looks fantastic using the 1080p uf2, very stable. The issue is that it adds a horizontal offset that I need to fix at some point.
master_1080p.uf2.zip
I get what appears to be a bit-wider-than 4:3 but not as wide as 16:9. This is output as a 16:9 signal (as 1080p50 HDMI is 16:9) The BBC Micro output appears on the left-of frame - VERY tight to the top left - but with a large gap to the right of frame, and a smaller gap at the bottom of frame.
My flat panel is in no-overscan mode - but if your flat panel simulated overscan - as many do by default - you'd have some crop on the left and top as it's VERY snug top left.
Anyhow, I've ordered one one of these:
https://www.ebay.co.uk/itm/VGA-to-HDMI- ... 3144855260
... after two failed attempts at trying to order one from Amazon, and another from e-bay.
The Amazon link was:
https://www.amazon.co.uk/LEYMING-Conver ... ics&sr=1-1
The eBay link was:
https://www.ebay.co.uk/itm/LEYMING-VGA- ... 4902.l9144
In both cases they sent me one of these HDMI to VGA adapters instead!
Buyer's beware!
I noticed that they both had VGA to HDMI adapter written on the back of the packet which is where I'm guessing the issue crept in
If my latest purchase doesn't work out I'd appreciate a link to one that will deliver as specified
BR
Andy
Re: RP2040/Pico beeb emulator
Here's a screen cap from a £10 HDMI->USB adaptor that illustrates what I see with my VGA->HDMI adaptor in 1080p50 mode. The Green OSD is the HD Fury Vertex overlay.
I used EDIT as it is a nice 'fills the screen' example.
I used EDIT as it is a nice 'fills the screen' example.
Last edited by noggin on Tue Mar 16, 2021 11:26 am, edited 2 times in total.
Re: RP2040/Pico beeb emulator
Here's my links from the other thread this was split from viewtopic.php?p=311632#p311632
All of them were VGA->HDMI adaptors - but only some work well with the output from Pico at the moment.
Re: RP2040/Pico beeb emulator
That is super weird... i mean it should be a standard mode! if you use the new "widescreen" menu option does it just shrink within the same sub-part of the display?
I get what appears to be a bit-wider-than 4:3 but not as wide as 16:9. This is output as a 16:9 signal (as 1080p50 HDMI is 16:9) The BBC Micro output appears on the left-of frame - VERY tight to the top left - but with a large gap to the right of frame, and a smaller gap at the bottom of frame.
For amusement you could try replacing line 1599 src/rp2_common/pico_scanvideo_dpi/scanvideo.c in pico_extras
Code: Select all
int delay0 = 2 * mode->xscale - 2;
Code: Select all
int delay0 = 5;
Re: RP2040/Pico beeb emulator
I guess you could forgive the adapter if it doesn't know about the mode. since the "official" 1080p50 timing is the same as 1080p60 but with extra long scanlines to take up the slack
Re: RP2040/Pico beeb emulator
That's the official HDMI 1080p50 timing isn't it - not a VGA one (which I guess doesn't exist?)
Re: RP2040/Pico beeb emulator
I'm using the image from this post - I don't have a build environment set-up yet.kilog wrote: ↑Tue Mar 16, 2021 6:47 pmThat is super weird... i mean it should be a standard mode! if you use the new "widescreen" menu option does it just shrink within the same sub-part of the display?
I get what appears to be a bit-wider-than 4:3 but not as wide as 16:9. This is output as a 16:9 signal (as 1080p50 HDMI is 16:9) The BBC Micro output appears on the left-of frame - VERY tight to the top left - but with a large gap to the right of frame, and a smaller gap at the bottom of frame.
For amusement you could try replacing line 1599 src/rp2_common/pico_scanvideo_dpi/scanvideo.c in pico_extras
withCode: Select all
int delay0 = 2 * mode->xscale - 2;
Code: Select all
int delay0 = 5;
viewtopic.php?p=312362#p312362
Re: RP2040/Pico beeb emulator
Here you go...noggin wrote: ↑Wed Mar 17, 2021 9:35 amI'm using the image from this post - I don't have a build environment set-up yet.kilog wrote: ↑Tue Mar 16, 2021 6:47 pmThat is super weird... i mean it should be a standard mode! if you use the new "widescreen" menu option does it just shrink within the same sub-part of the display?
I get what appears to be a bit-wider-than 4:3 but not as wide as 16:9. This is output as a 16:9 signal (as 1080p50 HDMI is 16:9) The BBC Micro output appears on the left-of frame - VERY tight to the top left - but with a large gap to the right of frame, and a smaller gap at the bottom of frame.
For amusement you could try replacing line 1599 src/rp2_common/pico_scanvideo_dpi/scanvideo.c in pico_extras
withCode: Select all
int delay0 = 2 * mode->xscale - 2;
Code: Select all
int delay0 = 5;
viewtopic.php?p=312362#p312362
Re: RP2040/Pico beeb emulator
Re: RP2040/Pico beeb emulator
I was able to use a generic VGA->HDMI digitizer (USB powered, 'benifi' brand) and my Dell P2715Q (27" 4K) was able to sync up to 1280x1024@50hz just fine. It even has a 4:3 aspect ratio option.
Link to it on Amazon US: https://www.amazon.com/gp/product/B07K14NR8P
Link to it on Amazon US: https://www.amazon.com/gp/product/B07K14NR8P
Re: RP2040/Pico beeb emulator
Using my new Amazon generic VGA to HDMI converter as suggested by @noggin:
https://www.amazon.co.uk/gp/product/B07 ... UTF8&psc=1
I get:
Code: Select all
int delay0 = 2 * mode->xscale - 2;
with
Code: Select all
int delay0 = 5;
... so the suggested mod works better on my setup IMHO in that the image fills the screen more. There is still a slight border on the right and bottom.
Re: RP2040/Pico beeb emulator
Looks like there is one of those on UK Amazon too. Have ordered it to see how it compares to the others I have. (Thankfully I have other uses for some of these converters!)happycube wrote: ↑Wed Mar 17, 2021 5:03 pm I was able to use a generic VGA->HDMI digitizer (USB powered, 'benifi' brand) and my Dell P2715Q (27" 4K) was able to sync up to 1280x1024@50hz just fine. It even has a 4:3 aspect ratio option.
Link to it on Amazon US: https://www.amazon.com/gp/product/B07K14NR8P
Re: RP2040/Pico beeb emulator
Yup; this is just a complete hack to see what happens (it will break your menu for example as you have likely noticed)... bit busy atm, but will have a tinker with other (valid according to CVT1.2) modes in a bit.
Re: RP2040/Pico beeb emulator
Sure, happy to try anything else, as and when. The main feedback from me so far is that the image has no border left and top either way.
Re: RP2040/Pico beeb emulator
In that case I'll modify my feedback to say that there is right and bottom border on my widescreen display, with the hack reducing some of the right hand border
Re: RP2040/Pico beeb emulator
... just to add to the adapter list, this one works perfectly too:
https://www.ebay.co.uk/itm/VGA-to-HDMI- ... 2749.l2649
https://www.ebay.co.uk/itm/VGA-to-HDMI- ... 2749.l2649
Re: RP2040/Pico beeb emulator
Yeah, i think it will like another mode better with a smaller horizontal total. does it show show what it thinks the mode is resolution wise in the menu anywhere?
Re: RP2040/Pico beeb emulator
I seem to remember 1125p showing up on my OSSC but now I can feed it direct into my monitor with the VGA adapter I'll take a look when I'm next in the workshop and post back.