Pi1MHz Software
- BeebMaster
- Posts: 7433
- Joined: Sun Aug 02, 2009 5:59 pm
- Location: Lost in the BeebVault!
- Contact:
Re: Pi1MHz Software
I went back to version 1.02 of the source code I had stored and did a simple ./release.sh on it and it compiled it all without any errors, and it works. So whatever I downloaded earlier from https://github.com/dp111/Pi1MHz/archive ... master.zip is significantly different that it doesn't work with these tools I have installed.
- BeebMaster
- Posts: 7433
- Joined: Sun Aug 02, 2009 5:59 pm
- Location: Lost in the BeebVault!
- Contact:
Re: Pi1MHz Software
Same with 1.03 but when I tried 1.04 which is the latest I have (originally downloaded 10/6/2020) this happens:
Completely baffled by the whole thing.
Code: Select all
ian@BMDesktop2020:/luks3/BMNFS/BBC/Pi1MHz/Pi1MHz-master1.04/src/scripts$ ./release.sh
-- The C compiler identification is GNU 9.2.1
-- The ASM compiler identification is GNU
-- Found assembler: /usr/bin/arm-none-eabi-gcc
-- Configuring done
-- Generating done
-- Build files have been written to: /luks3/BMNFS/BBC/Pi1MHz/Pi1MHz-master1.04/src/scripts
Scanning dependencies of target gitversion
Running version.sh script
fatal: not a git repository (or any parent up to mount point /)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
fatal: not a git repository (or any parent up to mount point /)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
version:
gitversion.h:
#define GITVERSION ""
[ 0%] Built target gitversion
Scanning dependencies of target Pi1MHz
[ 3%] Building C object CMakeFiles/Pi1MHz.dir/ram_emulator.c.obj
[ 7%] Building C object CMakeFiles/Pi1MHz.dir/rpi/armc-cstubs.c.obj
[ 15%] Building ASM object CMakeFiles/Pi1MHz.dir/rpi/arm-start.S.obj
[ 15%] Building C object CMakeFiles/Pi1MHz.dir/Pi1MHz.c.obj
[ 19%] Building C object CMakeFiles/Pi1MHz.dir/rpi/audio.c.obj
[ 23%] Building C object CMakeFiles/Pi1MHz.dir/rpi/auxuart.c.obj
[ 26%] Building C object CMakeFiles/Pi1MHz.dir/rpi/cache.c.obj
[ 30%] Building C object CMakeFiles/Pi1MHz.dir/rpi/exception.c.obj
[ 34%] Building C object CMakeFiles/Pi1MHz.dir/rpi/gpio.c.obj
/luks3/BMNFS/BBC/Pi1MHz/Pi1MHz-master1.04/src/rpi/cache.c: In function 'enable_MMU_and_IDCaches':
/luks3/BMNFS/BBC/Pi1MHz/Pi1MHz-master1.04/src/rpi/cache.c:326:51: error: 'shareable' undeclared (first use in this function)
326 | unsigned int attr = ((aa6) << 6) | (bb << 3) | (shareable << 1) | ((aa0 ));
| ^~~~~~~~~
/luks3/BMNFS/BBC/Pi1MHz/Pi1MHz-master1.04/src/rpi/cache.c:326:51: note: each undeclared identifier is reported only once for each function it appears in
[ 38%] Building C object CMakeFiles/Pi1MHz.dir/rpi/info.c.obj
make[2]: *** [CMakeFiles/Pi1MHz.dir/build.make:133: CMakeFiles/Pi1MHz.dir/rpi/cache.c.obj] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [CMakeFiles/Makefile2:105: CMakeFiles/Pi1MHz.dir/all] Error 2
make: *** [Makefile:84: all] Error 2
- BeebMaster
- Posts: 7433
- Joined: Sun Aug 02, 2009 5:59 pm
- Location: Lost in the BeebVault!
- Contact:
Re: Pi1MHz Software
Commit ID 71abd8d 16/7/2021 works for me with ./release.sh but the next commit, 192ce0d 6/5/2022 is where it starts to go wrong, I have to comment out the fanalyser line and then still all this happens:
Code: Select all
ian@BMDesktop2020:/luks3/BMNFS/BBC/Pi1MHz/Pi1MHz-192ce0df9c30816f971d904e270b3606051acea2/src/scripts$ ./release.sh
-- The C compiler identification is GNU 9.2.1
-- The ASM compiler identification is GNU
-- Found assembler: /usr/bin/arm-none-eabi-gcc
-- Configuring done
-- Generating done
-- Build files have been written to: /luks3/BMNFS/BBC/Pi1MHz/Pi1MHz-192ce0df9c30816f971d904e270b3606051acea2/src/scripts
Scanning dependencies of target gitversion
Running version.sh script
fatal: not a git repository (or any parent up to mount point /)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
fatal: not a git repository (or any parent up to mount point /)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
version:
gitversion.h:
#define GITVERSION ""
[ 0%] Built target gitversion
Scanning dependencies of target Pi1MHz
[ 8%] Building C object CMakeFiles/Pi1MHz.dir/rpi/performance.c.obj
[ 8%] Building C object CMakeFiles/Pi1MHz.dir/rpi/gpio.c.obj
[ 16%] Building C object CMakeFiles/Pi1MHz.dir/rpi/info.c.obj
[ 16%] Building C object CMakeFiles/Pi1MHz.dir/ram_emulator.c.obj
[ 20%] Building C object CMakeFiles/Pi1MHz.dir/rpi/exception.c.obj
arm-none-eabi-gcc: error: unrecognized command line option '-fanalyzer'
[ 28%] Building C object CMakeFiles/Pi1MHz.dir/rpi/auxuart.c.obj
[ 28%] Building ASM object CMakeFiles/Pi1MHz.dir/rpi/arm-start.S.obj
[ 32%] Building C object CMakeFiles/Pi1MHz.dir/rpi/mailbox.c.obj
make[2]: *** [CMakeFiles/Pi1MHz.dir/build.make:159: CMakeFiles/Pi1MHz.dir/rpi/gpio.c.obj] Error 1
make[2]: *** Waiting for unfinished jobs....
arm-none-eabi-gcc: error: unrecognized command line option '-fanalyzer'
make[2]: *** [CMakeFiles/Pi1MHz.dir/build.make:198: CMakeFiles/Pi1MHz.dir/rpi/performance.c.obj] Error 1
[ 36%] Building C object CMakeFiles/Pi1MHz.dir/Pi1MHz.c.obj
[ 40%] Building C object CMakeFiles/Pi1MHz.dir/rpi/armc-cstubs.c.obj
[ 44%] Building C object CMakeFiles/Pi1MHz.dir/rpi/cache.c.obj
arm-none-eabi-gcc: error: unrecognized command line option '-fanalyzer'
[ 48%] Building C object CMakeFiles/Pi1MHz.dir/rpi/audio.c.obj
make[2]: *** [CMakeFiles/Pi1MHz.dir/build.make:76: CMakeFiles/Pi1MHz.dir/ram_emulator.c.obj] Error 1
arm-none-eabi-gcc: error: unrecognized command line option '-fanalyzer'
arm-none-eabi-gcc: error: unrecognized command line option '-fanalyzer'
make[2]: *** [CMakeFiles/Pi1MHz.dir/build.make:146: CMakeFiles/Pi1MHz.dir/rpi/exception.c.obj] Error 1
make[2]: *** [CMakeFiles/Pi1MHz.dir/build.make:172: CMakeFiles/Pi1MHz.dir/rpi/info.c.obj] Error 1
arm-none-eabi-gcc: error: unrecognized command line option '-fanalyzer'
make[2]: *** [CMakeFiles/Pi1MHz.dir/build.make:185: CMakeFiles/Pi1MHz.dir/rpi/mailbox.c.obj] Error 1
arm-none-eabi-gcc: error: unrecognized command line option '-fanalyzer'
make[2]: *** [CMakeFiles/Pi1MHz.dir/build.make:120: CMakeFiles/Pi1MHz.dir/rpi/auxuart.c.obj] Error 1
arm-none-eabi-gcc: error: unrecognized command line option '-fanalyzer'
arm-none-eabi-gcc: error: unrecognized command line option '-fanalyzer'
make[2]: *** [CMakeFiles/Pi1MHz.dir/build.make:63: CMakeFiles/Pi1MHz.dir/Pi1MHz.c.obj] Error 1
make[2]: *** [CMakeFiles/Pi1MHz.dir/build.make:94: CMakeFiles/Pi1MHz.dir/rpi/armc-cstubs.c.obj] Error 1
arm-none-eabi-gcc: error: unrecognized command line option '-fanalyzer'
arm-none-eabi-gcc: error: unrecognized command line option '-fanalyzer'
make[2]: *** [CMakeFiles/Pi1MHz.dir/build.make:107: CMakeFiles/Pi1MHz.dir/rpi/audio.c.obj] Error 1
make[2]: *** [CMakeFiles/Pi1MHz.dir/build.make:133: CMakeFiles/Pi1MHz.dir/rpi/cache.c.obj] Error 1
make[1]: *** [CMakeFiles/Makefile2:105: CMakeFiles/Pi1MHz.dir/all] Error 2
make: *** [Makefile:84: all] Error 2
ian@BMDesktop2020:/luks3/BMNFS/BBC/Pi1MHz/Pi1MHz-192ce0df9c30816f971d904e270b3606051acea2/src/scripts$ ./release.sh
-- The C compiler identification is GNU 9.2.1
-- The ASM compiler identification is GNU
-- Found assembler: /usr/bin/arm-none-eabi-gcc
-- Configuring done
-- Generating done
-- Build files have been written to: /luks3/BMNFS/BBC/Pi1MHz/Pi1MHz-192ce0df9c30816f971d904e270b3606051acea2/src/scripts
Scanning dependencies of target gitversion
Running version.sh script
fatal: not a git repository (or any parent up to mount point /)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
fatal: not a git repository (or any parent up to mount point /)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
version:
gitversion.h:
#define GITVERSION ""
[ 0%] Built target gitversion
Scanning dependencies of target Pi1MHz
[ 8%] Building C object CMakeFiles/Pi1MHz.dir/rpi/info.c.obj
[ 8%] Building C object CMakeFiles/Pi1MHz.dir/rpi/auxuart.c.obj
[ 16%] Building C object CMakeFiles/Pi1MHz.dir/rpi/armc-cstubs.c.obj
[ 16%] Building ASM object CMakeFiles/Pi1MHz.dir/rpi/arm-start.S.obj
[ 20%] Building C object CMakeFiles/Pi1MHz.dir/Pi1MHz.c.obj
[ 24%] Building C object CMakeFiles/Pi1MHz.dir/ram_emulator.c.obj
[ 32%] Building C object CMakeFiles/Pi1MHz.dir/rpi/cache.c.obj
[ 32%] Building C object CMakeFiles/Pi1MHz.dir/rpi/audio.c.obj
[ 36%] Building C object CMakeFiles/Pi1MHz.dir/rpi/exception.c.obj
[ 40%] Building C object CMakeFiles/Pi1MHz.dir/rpi/gpio.c.obj
[ 48%] Building C object CMakeFiles/Pi1MHz.dir/rpi/mailbox.c.obj
[ 48%] Building C object CMakeFiles/Pi1MHz.dir/rpi/performance.c.obj
/luks3/BMNFS/BBC/Pi1MHz/Pi1MHz-192ce0df9c30816f971d904e270b3606051acea2/src/rpi/exception.c: In function 'dump_digit':
/luks3/BMNFS/BBC/Pi1MHz/Pi1MHz-192ce0df9c30816f971d904e270b3606051acea2/src/rpi/exception.c:21:11: warning: conversion from 'int' to 'unsigned char' may change value [-Wconversion]
21 | c = '0' + c;
| ^~~
/luks3/BMNFS/BBC/Pi1MHz/Pi1MHz-192ce0df9c30816f971d904e270b3606051acea2/src/rpi/exception.c:23:11: warning: conversion from 'int' to 'unsigned char' may change value [-Wconversion]
23 | c = 'A' + c - 10;
| ^~~
/luks3/BMNFS/BBC/Pi1MHz/Pi1MHz-192ce0df9c30816f971d904e270b3606051acea2/src/rpi/gpio.c: In function 'RPI_SetGpioPinFunction':
/luks3/BMNFS/BBC/Pi1MHz/Pi1MHz-192ce0df9c30816f971d904e270b3606051acea2/src/rpi/gpio.c:11:13: warning: conversion to 'long unsigned int' from 'int' may change the sign of the result [-Wsign-conversion]
11 | fsel_copy |= (func << ((gpio % 10) * 3));
| ^~
/luks3/BMNFS/BBC/Pi1MHz/Pi1MHz-192ce0df9c30816f971d904e270b3606051acea2/src/rpi/exception.c: In function 'dump_info':
/luks3/BMNFS/BBC/Pi1MHz/Pi1MHz-192ce0df9c30816f971d904e270b3606051acea2/src/rpi/exception.c:67:14: warning: conversion from 'int' to 'unsigned char' may change value [-Wconversion]
67 | dump_digit(_get_core());
| ^~~~~~~~~~~
/luks3/BMNFS/BBC/Pi1MHz/Pi1MHz-192ce0df9c30816f971d904e270b3606051acea2/src/rpi/gpio.c: In function 'RPI_SetGpioHi':
/luks3/BMNFS/BBC/Pi1MHz/Pi1MHz-192ce0df9c30816f971d904e270b3606051acea2/src/rpi/gpio.c:70:30: warning: conversion to 'rpi_reg_wo_t' {aka 'volatile long unsigned int'} from 'int' may change the sign of the result [-Wsign-conversion]
70 | RPI_GpioBase->GPSET0 = (1 << gpio);
| ^
/luks3/BMNFS/BBC/Pi1MHz/Pi1MHz-192ce0df9c30816f971d904e270b3606051acea2/src/rpi/gpio.c:74:30: warning: conversion to 'rpi_reg_wo_t' {aka 'volatile long unsigned int'} from 'int' may change the sign of the result [-Wsign-conversion]
74 | RPI_GpioBase->GPSET1 = (1 << (gpio - 32));
| ^
/luks3/BMNFS/BBC/Pi1MHz/Pi1MHz-192ce0df9c30816f971d904e270b3606051acea2/src/rpi/audio.c: In function 'init_dma_buffer':
/luks3/BMNFS/BBC/Pi1MHz/Pi1MHz-192ce0df9c30816f971d904e270b3606051acea2/src/rpi/audio.c:85:17: warning: conversion to 'long unsigned int' from 'int' may change the sign of the result [-Wsign-conversion]
85 | buffer_state |= 1<<buf;
| ^~
/luks3/BMNFS/BBC/Pi1MHz/Pi1MHz-192ce0df9c30816f971d904e270b3606051acea2/src/rpi/gpio.c: In function 'RPI_SetGpioLo':
/luks3/BMNFS/BBC/Pi1MHz/Pi1MHz-192ce0df9c30816f971d904e270b3606051acea2/src/rpi/gpio.c:87:30: warning: conversion to 'rpi_reg_wo_t' {aka 'volatile long unsigned int'} from 'int' may change the sign of the result [-Wsign-conversion]
87 | RPI_GpioBase->GPCLR0 = (1 << gpio);
| ^
/luks3/BMNFS/BBC/Pi1MHz/Pi1MHz-192ce0df9c30816f971d904e270b3606051acea2/src/rpi/gpio.c:91:30: warning: conversion to 'rpi_reg_wo_t' {aka 'volatile long unsigned int'} from 'int' may change the sign of the result [-Wsign-conversion]
91 | RPI_GpioBase->GPCLR1 = (1 << (gpio - 32));
| ^
/luks3/BMNFS/BBC/Pi1MHz/Pi1MHz-192ce0df9c30816f971d904e270b3606051acea2/src/ram_emulator.c: In function 'ram_emulator_byte_addr':
/luks3/BMNFS/BBC/Pi1MHz/Pi1MHz-192ce0df9c30816f971d904e270b3606051acea2/src/ram_emulator.c:44:61: warning: conversion to 'size_t' {aka 'unsigned int'} from 'int' may change the sign of the result [-Wsign-conversion]
44 | case 1: byte_ram_addr = (byte_ram_addr & 0xFFFF00FF) | data<<8; break;
| ^
/luks3/BMNFS/BBC/Pi1MHz/Pi1MHz-192ce0df9c30816f971d904e270b3606051acea2/src/ram_emulator.c:45:61: warning: conversion to 'size_t' {aka 'unsigned int'} from 'int' may change the sign of the result [-Wsign-conversion]
45 | default: byte_ram_addr = (byte_ram_addr & 0xFF00FFFF) | data<<16; break;
| ^
/luks3/BMNFS/BBC/Pi1MHz/Pi1MHz-192ce0df9c30816f971d904e270b3606051acea2/src/ram_emulator.c: In function 'ram_emulator_page_addr':
/luks3/BMNFS/BBC/Pi1MHz/Pi1MHz-192ce0df9c30816f971d904e270b3606051acea2/src/ram_emulator.c:67:52: warning: conversion to 'size_t' {aka 'unsigned int'} from 'int' may change the sign of the result [-Wsign-conversion]
67 | page_ram_addr = (page_ram_addr & 0x00FFFFFF) | data<<24;
| ^
/luks3/BMNFS/BBC/Pi1MHz/Pi1MHz-192ce0df9c30816f971d904e270b3606051acea2/src/ram_emulator.c:70:52: warning: conversion to 'size_t' {aka 'unsigned int'} from 'int' may change the sign of the result [-Wsign-conversion]
70 | page_ram_addr = (page_ram_addr & 0xFF00FFFF) | data<<16;
| ^
/luks3/BMNFS/BBC/Pi1MHz/Pi1MHz-192ce0df9c30816f971d904e270b3606051acea2/src/ram_emulator.c:72:52: warning: conversion to 'size_t' {aka 'unsigned int'} from 'int' may change the sign of the result [-Wsign-conversion]
72 | page_ram_addr = (page_ram_addr & 0xFFFF00FF) | data<<8;
| ^
/luks3/BMNFS/BBC/Pi1MHz/Pi1MHz-192ce0df9c30816f971d904e270b3606051acea2/src/rpi/cache.c: In function '_clean_cache_area':
/luks3/BMNFS/BBC/Pi1MHz/Pi1MHz-192ce0df9c30816f971d904e270b3606051acea2/src/rpi/cache.c:123:20: warning: conversion to 'uint32_t' {aka 'long unsigned int'} from 'int' may change the sign of the result [-Wsign-conversion]
123 | cachelinesize = 4<<cachelinesize;
| ^
[ 52%] Building C object CMakeFiles/Pi1MHz.dir/rpi/rpi.c.obj
/luks3/BMNFS/BBC/Pi1MHz/Pi1MHz-192ce0df9c30816f971d904e270b3606051acea2/src/rpi/cache.c: In function 'map_4k_page':
/luks3/BMNFS/BBC/Pi1MHz/Pi1MHz-192ce0df9c30816f971d904e270b3606051acea2/src/rpi/cache.c:200:64: error: 'cachable' undeclared (first use in this function); did you mean 'cacheable'?
200 | PageTable2[logical] = (physical<<12) | 0x132u | (bb << 6) | (cachable<<3) | (bufferable << 2);
| ^~~~~~~~
| cacheable
/luks3/BMNFS/BBC/Pi1MHz/Pi1MHz-192ce0df9c30816f971d904e270b3606051acea2/src/rpi/cache.c:200:64: note: each undeclared identifier is reported only once for each function it appears in
/luks3/BMNFS/BBC/Pi1MHz/Pi1MHz-192ce0df9c30816f971d904e270b3606051acea2/src/rpi/performance.c: In function 'reset_performance_counters':
/luks3/BMNFS/BBC/Pi1MHz/Pi1MHz-192ce0df9c30816f971d904e270b3606051acea2/src/rpi/performance.c:186:19: warning: conversion to 'unsigned int' from 'int' may change the sign of the result [-Wsign-conversion]
186 | cntenset |= (1 << i);
| ^~
At top level:
/luks3/BMNFS/BBC/Pi1MHz/Pi1MHz-192ce0df9c30816f971d904e270b3606051acea2/src/rpi/cache.c:27:27: warning: 'cacheable' defined but not used [-Wunused-const-variable=]
27 | static const unsigned int cacheable = 1;
| ^~~~~~~~~
make[2]: *** [CMakeFiles/Pi1MHz.dir/build.make:133: CMakeFiles/Pi1MHz.dir/rpi/cache.c.obj] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [CMakeFiles/Makefile2:105: CMakeFiles/Pi1MHz.dir/all] Error 2
make: *** [Makefile:84: all] Error 2
Re: Pi1MHz Software
so does head not build now ?
- BeebMaster
- Posts: 7433
- Joined: Sun Aug 02, 2009 5:59 pm
- Location: Lost in the BeebVault!
- Contact:
Re: Pi1MHz Software
No, I get those hundreds of warnings and code that doesn't work in the Pi.
Maybe I need newer versions of the gcc and gcc-arm-none-eabi packages but I have the latest for Ubuntu 20.04.
Maybe I need newer versions of the gcc and gcc-arm-none-eabi packages but I have the latest for Ubuntu 20.04.
Re: Pi1MHz Software
Are you still getting nosys.specs errors on head ?
Re: Pi1MHz Software
The warnings are expected I think, because CMakeFile.txt has almost everything possible enabled.BeebMaster wrote: ↑Sat Jul 16, 2022 6:37 pm No, I get those hundreds of warnings and code that doesn't work in the Pi.
I also see them all with GCC 11.2
Dominic, do you think it's worthing tuning these down a bit?
Dave
- BeebMaster
- Posts: 7433
- Joined: Sun Aug 02, 2009 5:59 pm
- Location: Lost in the BeebVault!
- Contact:
Re: Pi1MHz Software
That's good to know, but doesn't explain why the firmware doesn't work when copied to the Pi SD card, I just get stuck in a reboot loop.
Re: Pi1MHz Software
if you have any warnings /errors for any files bar framebuffer.c can you post them ?
Re: Pi1MHz Software
I see one error in the log from upthread:
Code: Select all
/luks3/BMNFS/BBC/Pi1MHz/Pi1MHz-192ce0df9c30816f971d904e270b3606051acea2/src/rpi/cache.c: In function 'map_4k_page':
/luks3/BMNFS/BBC/Pi1MHz/Pi1MHz-192ce0df9c30816f971d904e270b3606051acea2/src/rpi/cache.c:200:64: error: 'cachable' undeclared (first use in this function); did you mean 'cacheable'?
200 | PageTable2[logical] = (physical<<12) | 0x132u | (bb << 6) | (cachable<<3) | (bufferable << 2);
Re: Pi1MHz Software
That suggests this isn't head and with that error there wouldn't be an output file.
- BeebMaster
- Posts: 7433
- Joined: Sun Aug 02, 2009 5:59 pm
- Location: Lost in the BeebVault!
- Contact:
Re: Pi1MHz Software
Here's the full thing:
- Attachments
-
- debugPi1MHz.txt
- (174.33 KiB) Downloaded 20 times
Re: Pi1MHz Software
With the debug build what comes out of the UART?
- BeebMaster
- Posts: 7433
- Joined: Sun Aug 02, 2009 5:59 pm
- Location: Lost in the BeebVault!
- Contact:
Re: Pi1MHz Software
Using this:
https://linuxize.com/post/how-to-instal ... ntu-20-04/
I did this:
then this:
so now I get this:
but still this:
However, when I do this:
it starts with this:
but still gives me all the warnings and the firmware won't work in the Pi Zero.
Can anybody actually compile it successfully so it works in Pi1MHz from the zip I downloaded:
Or even make the firmware I compiled work?
Don't remotely understand where I am going wrong.
https://linuxize.com/post/how-to-instal ... ntu-20-04/
I did this:
Code: Select all
sudo apt install gcc-8 g++-8 gcc-9 g++-9 gcc-10 g++-10
Code: Select all
sudo update-alternatives --config gcc
Code: Select all
gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/10/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa:hsa
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 10.3.0-1ubuntu1~20.04' --with-bugurl=file:///usr/share/doc/gcc-10/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-10 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-10-S4I5Pr/gcc-10-10.3.0/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-10-S4I5Pr/gcc-10-10.3.0/debian/tmp-gcn/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-mutex
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 10.3.0 (Ubuntu 10.3.0-1ubuntu1~20.04)
Code: Select all
arm-none-eabi-gcc -v
Using built-in specs.
COLLECT_GCC=arm-none-eabi-gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-none-eabi/9.2.1/lto-wrapper
Target: arm-none-eabi
Configured with: ../configure --build=x86_64-linux-gnu --prefix=/usr --includedir='/usr/lib/include' --mandir='/usr/lib/share/man' --infodir='/usr/lib/share/info' --sysconfdir=/etc --localstatedir=/var --disable-silent-rules --libdir='/usr/lib/lib/x86_64-linux-gnu' --libexecdir='/usr/lib/lib/x86_64-linux-gnu' --disable-maintainer-mode --disable-dependency-tracking --mandir=/usr/share/man --enable-languages=c,c++,lto --enable-multilib --disable-decimal-float --disable-libffi --disable-libgomp --disable-libmudflap --disable-libquadmath --disable-libssp --disable-libstdcxx-pch --disable-nls --disable-shared --disable-threads --enable-tls --build=x86_64-linux-gnu --target=arm-none-eabi --with-system-zlib --with-gnu-as --with-gnu-ld --with-pkgversion=15:9-2019-q4-0ubuntu1 --without-included-gettext --prefix=/usr/lib --infodir=/usr/share/doc/gcc-arm-none-eabi/info --htmldir=/usr/share/doc/gcc-arm-none-eabi/html --pdfdir=/usr/share/doc/gcc-arm-none-eabi/pdf --bindir=/usr/bin --libexecdir=/usr/lib --libdir=/usr/lib --disable-libstdc++-v3 --host=x86_64-linux-gnu --with-headers=no --without-newlib --with-multilib-list=rmprofile CFLAGS='-g -O2 -fdebug-prefix-map=/build/gcc-arm-none-eabi-Gl9kT9/gcc-arm-none-eabi-9-2019-q4=. -fstack-protector-strong' CPPFLAGS='-Wdate-time -D_FORTIFY_SOURCE=2' CXXFLAGS='-g -O2 -fdebug-prefix-map=/build/gcc-arm-none-eabi-Gl9kT9/gcc-arm-none-eabi-9-2019-q4=. -fstack-protector-strong' FCFLAGS='-g -O2 -fdebug-prefix-map=/build/gcc-arm-none-eabi-Gl9kT9/gcc-arm-none-eabi-9-2019-q4=. -fstack-protector-strong' FFLAGS='-g -O2 -fdebug-prefix-map=/build/gcc-arm-none-eabi-Gl9kT9/gcc-arm-none-eabi-9-2019-q4=. -fstack-protector-strong' GCJFLAGS='-g -O2 -fdebug-prefix-map=/build/gcc-arm-none-eabi-Gl9kT9/gcc-arm-none-eabi-9-2019-q4=. -fstack-protector-strong' LDFLAGS='-Wl,-Bsymbolic-functions -Wl,-z,relro' OBJCFLAGS='-g -O2 -fdebug-prefix-map=/build/gcc-arm-none-eabi-Gl9kT9/gcc-arm-none-eabi-9-2019-q4=. -fstack-protector-strong' OBJCXXFLAGS='-g -O2 -fdebug-prefix-map=/build/gcc-arm-none-eabi-Gl9kT9/gcc-arm-none-eabi-9-2019-q4=. -fstack-protector-strong' INHIBIT_LIBC_CFLAGS=-DUSE_TM_CLONE_REGISTRY=0 AR_FOR_TARGET=arm-none-eabi-ar AS_FOR_TARGET=arm-none-eabi-as LD_FOR_TARGET=arm-none-eabi-ld NM_FOR_TARGET=arm-none-eabi-nm OBJDUMP_FOR_TARGET=arm-none-eabi-objdump RANLIB_FOR_TARGET=arm-none-eabi-ranlib READELF_FOR_TARGET=arm-none-eabi-readelf STRIP_FOR_TARGET=arm-none-eabi-strip
Thread model: single
gcc version 9.2.1 20191025 (release) [ARM/arm-9-branch revision 277599] (15:9-2019-q4-0ubuntu1)
Code: Select all
env PATH=/luks3/BMNFS/Ubuntu/ARMDevTools/gcc-arm-11.2-2022.02-x86_64-arm-none-eabi/bin/:$PATH ./release.sh
Code: Select all
-- The C compiler identification is GNU 11.2.1
-- The ASM compiler identification is GNU
-- Found assembler: /luks3/BMNFS/Ubuntu/ARMDevTools/gcc-arm-11.2-2022.02-x86_64-arm-none-eabi/bin/arm-none-eabi-gcc
-- Configuring done
-- Generating done
-- Build files have been written to: /luks3/BMNFS/BBC/Pi1MHz/Pi1MHz-master/src/scripts
Can anybody actually compile it successfully so it works in Pi1MHz from the zip I downloaded:
Or even make the firmware I compiled work?
Don't remotely understand where I am going wrong.
Re: Pi1MHz Software
I've just turn the warnings down so head should make clean with gcc 12.1.
Attached is my latest build ( I haven't yet tested it )
Attached is my latest build ( I haven't yet tested it )
- Attachments
-
- Pi1MHz_20220716_2056_root.zip
- (1.19 MiB) Downloaded 17 times
- BeebMaster
- Posts: 7433
- Joined: Sun Aug 02, 2009 5:59 pm
- Location: Lost in the BeebVault!
- Contact:
Re: Pi1MHz Software
That doesn't work either, same reboot loop. Something must be wrong with the master.
Built my own again, from a new master download and all the warnings have gone away, but also still doesn't work.
Is it not supporting the Pi Zero any more maybe?
Built my own again, from a new master download and all the warnings have gone away, but also still doesn't work.
Is it not supporting the Pi Zero any more maybe?
Re: Pi1MHz Software
okay let me have a look and see where I've made a mistake
Re: Pi1MHz Software
Just to stop you going down the confusing paths and wasting time
The arm-none-eabi-gcc is from a completely different package and is the cross-compiler to generate ARM binaries
The version you install in /luks3/... is yet a newer version of the cross-compiler, not installed from packages.
These are all pretty independent of each other. The gcc version has no relation to the arm-none-eabi-gcc version which has no relation to the /luks3/... version.
The gcc version isn't' really relevant. That's the "native" compiler (on your machine that'll compile to i386 or x86_64).BeebMaster wrote: ↑Sat Jul 16, 2022 8:28 pmCode: Select all
gcc -v ... gcc version 10.3.0 (Ubuntu 10.3.0-1ubuntu1~20.04)
The arm-none-eabi-gcc is from a completely different package and is the cross-compiler to generate ARM binaries
The version you install in /luks3/... is yet a newer version of the cross-compiler, not installed from packages.
These are all pretty independent of each other. The gcc version has no relation to the arm-none-eabi-gcc version which has no relation to the /luks3/... version.
Rgds
Stephen
Stephen
- BeebMaster
- Posts: 7433
- Joined: Sun Aug 02, 2009 5:59 pm
- Location: Lost in the BeebVault!
- Contact:
Re: Pi1MHz Software
OK, but if I compile it just using ./release.sh it doesn't even finish compiling, whereas if I compile it as you suggested earlier with env PATH=/luks3/BMNFS/Ubuntu/ARMDevTools/gcc-arm-11.2-2022.02-x86_64-arm-none-eabi/bin/:$PATH ./release.sh then it does compile it, so the actual version of arm-non-eabi-gcc must be important, and Ubuntu 20.04 won't let me install that version as a normal package, so I have to extract it somewhere else and force release.sh to use it.
Re: Pi1MHz Software
Dominic,
Master is currently building cleanly for me with GCC 11.2.1, but not booting properly (on a Pi Zero).
I've done some bisection, and the breaking change is the addition of the wait parameter to RPI_PropertyProcess() in a89cfedd (and the two preceeding commits on 2022/06/03)
Rolling forward to master, if you comment out lines 134 and 135 in src/rpi/mailbox.c then everything works OK:
(I only briefly tested PRINT $&FD00, Music 5000 and BeebSCSI emulation)
I think it's not sufficient to just ignore the response, because that causes the next mailbox call that needs a response to complete early, matched to the wrong reponse. In such calls you need to purge any outstanding responses. And even then there are possibly race conditions. We had some difficulty in RGBtoHDMI getting this pattern to work, and ended up with a global variable that tracked whether there was a pending response.
Dave
Master is currently building cleanly for me with GCC 11.2.1, but not booting properly (on a Pi Zero).
I've done some bisection, and the breaking change is the addition of the wait parameter to RPI_PropertyProcess() in a89cfedd (and the two preceeding commits on 2022/06/03)
Rolling forward to master, if you comment out lines 134 and 135 in src/rpi/mailbox.c then everything works OK:
Code: Select all
// if (wait == false)
// return 0;
I think it's not sufficient to just ignore the response, because that causes the next mailbox call that needs a response to complete early, matched to the wrong reponse. In such calls you need to purge any outstanding responses. And even then there are possibly race conditions. We had some difficulty in RGBtoHDMI getting this pattern to work, and ended up with a global variable that tracked whether there was a pending response.
Dave
Re: Pi1MHz Software
Thanks hoglet. I'll fix it properly soon for now beebmaster can you comment out those two lines and see if it builds for you
- BeebMaster
- Posts: 7433
- Joined: Sun Aug 02, 2009 5:59 pm
- Location: Lost in the BeebVault!
- Contact:
Re: Pi1MHz Software
Thanks Dave, that fixes it, although the first time I put the card in the Pi, it was still doing a loop with the LED flashing. I took the card out, put it back in the PC, didn't do anything, and just decided to try the card again first in the Pi, and it worked. I guess that was just a freak weirdness, I seem to get a lot of freak weirdness going on round here.
Re: Pi1MHz Software
The issue I think appears to be the buffer being shared can get over written by the next packet before the VPU has completed the previous access.hoglet wrote: ↑Sun Jul 17, 2022 9:46 am Dominic,
Master is currently building cleanly for me with GCC 11.2.1, but not booting properly (on a Pi Zero).
I've done some bisection, and the breaking change is the addition of the wait parameter to RPI_PropertyProcess() in a89cfedd (and the two preceeding commits on 2022/06/03)
Rolling forward to master, if you comment out lines 134 and 135 in src/rpi/mailbox.c then everything works OK:Code: Select all
// if (wait == false) // return 0;
- BeebMaster
- Posts: 7433
- Joined: Sun Aug 02, 2009 5:59 pm
- Location: Lost in the BeebVault!
- Contact:
Re: Pi1MHz Software
I'm not getting very far with what I wanted to do, mainly owing to my ineptitude in C, which is even more pronounced than my ineptitude in everything else. One particular thing is really baffling me. I'm trying to introduce a variable for sectors per track to replace the hard-coded value of 33 everywhere but I am getting a warning using the variable in one part of the scsi.c code, even though I use it in other functions without any problems:
Here's a snippet, and even deliberately assigning a value to that variable directly after declaring it doesn't clear the warning:
Just as I'm about to post, I'm thinking if the warning means that although I declare the variable and give it a value, I don't then read it back again so it isn't "used" in that sense.
(That's because I haven't finished this bit yet because I think after the format command, it needs to update the information in the .dsc file so that verify doesn't carry on forever, and I am planning to store sectors per track in the dsc file but I haven't worked out how to write a new dsc file following the format yet.)
Code: Select all
/luks3/BMNFS/BBC/Pi1MHz/Pi1MHz-masterISWDev17-7-22/src/BeebSCSI/scsi.c: In function 'scsiCommandFormat':
/luks3/BMNFS/BBC/Pi1MHz/Pi1MHz-masterISWDev17-7-22/src/BeebSCSI/scsi.c:754:13: warning: variable 'sectorspertrack' set but not used [-Wunused-but-set-variable]
754 | uint32_t sectorspertrack; // ISW 17/7/22
|
Code: Select all
static uint8_t scsiCommandFormat(void)
{
// Format unit command parameters:
uint8_t formatOptions;
uint8_t dataPattern;
uint8_t interleave; // New variable ISW 17/7/22
uint32_t sectorspertrack; // ISW 17/7/22
sectorspertrack = 32;
if (debugFlag_scsiCommands) {
debugString_P(PSTR("SCSI Commands: FORMAT command (0x04) received\r\n"));
debugStringInt16_P(PSTR("SCSI Commands: Target LUN = "), commandDataBlock.targetLUN, true);
}
// Make sure the target LUN is started
if (!filesystemReadLunStatus(commandDataBlock.targetLUN)) {
// If the LUN is unavailable we need to create the LUN image on the file system
// before formatting it.
if (!filesystemCreateLunImage(commandDataBlock.targetLUN)) {
// Could not create LUN image... return with error status
if (debugFlag_scsiCommands) debugStringInt16_P(PSTR("SCSI Commands: ERROR: Could not create new LUN image for LUN #"), commandDataBlock.targetLUN, true);
commandDataBlock.status = (uint8_t)(commandDataBlock.targetLUN << 5) | 0x02; // 0x02 = Bad
// Set request sense error globals
requestSenseData[commandDataBlock.targetLUN] = BAD_FORMAT; // Unformatted or Bad format
// The LUN is in an unknown state... Stop the LUN
filesystemSetLunStatus(commandDataBlock.targetLUN, false);
return SCSI_STATUS;
}
}
// Interpret command parameters
formatOptions = (commandDataBlock.data[1] & 0x1F);
dataPattern = commandDataBlock.data[2]; // Default fill pattern is 0x6C (108)
interleave = (commandDataBlock.data[3] << 8) + commandDataBlock.data[4]; // Restore interleave variable ISW 17/7/22
if (interleave == 1) sectorspertrack = 32 ; // ISW 17/7/22
if (interleave !=1) sectorspertrack = 33 ; // ISW 17/7/22
if (debugFlag_scsiCommands) debugStringInt16_P(PSTR("SCSI Commands: Format option = "), formatOptions, true);
// Interleave cannot be greater than the number of sectors per track minus one, or we
// should send a 1A error code (Interleave Error)
// We don't really care about the interleave... you could uncomment this for a more
// exact emulation...
if (interleave > 32) // Restore interleave checking ISW 17/7/22
{ // Restore interleave checking ISW 17/7/22
// Indicate unsuccessful command in status and message
commandDataBlock.status = (commandDataBlock.targetLUN << 5) | 0x02; // 0x02 = Bad // Restore interleave checking ISW 17/7/22
// Set request sense error globals
requestSenseData[commandDataBlock.targetLUN] = INTERLEAVE_ERROR; // Interleave Error // Restore interleave checking ISW 17/7/22
return SCSI_STATUS; // Restore interleave checking ISW 17/7/22
} // Restore interleave checking ISW 17/7/22
// Note: The defect list is ignored by the emulation since it does not apply
// to the emulated file system; this code is included for debug completion.
// If specified (by the options) read the defect list (ACB-4000 figure 5-6)
if (formatOptions == 28 || formatOptions == 30) {
uint8_t Buffer[8];
// Read the defect list
if (debugFlag_scsiCommands) debugString_P(PSTR("SCSI Commands: Reading the defect list:\r\n"));
// Set up the control signals ready for the data out phase
scsiInformationTransferPhase(ITPHASE_DATAOUT);
// Read the defect list header
if (debugFlag_scsiCommands) debugString_P(PSTR("SCSI Commands: Defect list header:\r\n"));
for (size_t byteCounter = 0; byteCounter < 4; byteCounter++)
Buffer[byteCounter] = hostadapterReadByte();
uint16_t defectListLength = (uint16_t) ((Buffer[2] << 8) + (Buffer[3]) / 8);
if (debugFlag_scsiCommands) debugStringInt16_P(PSTR("SCSI Commands: Length = "), defectListLength, true);
// Read the defect records
for (uint16_t defectListRecords = 0; defectListRecords < defectListLength; defectListRecords++) {
// Read the defect data
for (size_t byteCounter = 0; byteCounter < 8; byteCounter++)
Buffer[byteCounter] = hostadapterReadByte();
// Output defect to debug
if (debugFlag_scsiCommands) {
debugStringInt16_P(PSTR("SCSI Commands: Defect #"), defectListRecords, true);
debugStringInt32_P(PSTR("SCSI Commands: Cylinder = "),
((uint32_t)Buffer[0] << 16) + ((uint32_t)Buffer[1] << 8) + (uint32_t)Buffer[2],
true);
debugStringInt16_P(PSTR("SCSI Commands: Head = "), Buffer[3], true);
debugStringInt32_P(PSTR("SCSI Commands: Bytes = "),
((uint32_t)Buffer[4] << 24) + ((uint32_t)Buffer[5] << 16) +
((uint32_t)Buffer[6] << 8) + (uint32_t)Buffer[7],
true);
}
}
}
// Create/recreate the LUN data file according to the drive descriptor and fill
// with the required data pattern byte:
if (!filesystemFormatLun(commandDataBlock.targetLUN, dataPattern)) {
// Formatting failed...
if (debugFlag_scsiCommands) debugString_P(PSTR("SCSI Commands: Format failed\r\n"));
commandDataBlock.status = (uint8_t)(commandDataBlock.targetLUN << 5) | 0x02; // 0x02 = Bad
// Set request sense error globals
requestSenseData[commandDataBlock.targetLUN] = BAD_FORMAT; // 1C Bad format
// The LUN is in an unknown state... Flag the LUN as unavailable
filesystemSetLunStatus(commandDataBlock.targetLUN, false);
return SCSI_STATUS;
}
// Tell the file system to start the new LUN
// filesystemSetLunStatus(commandDataBlock.targetLUN, true);
// Indicate successful command in status and message
commandDataBlock.status = 0x00; // 0x00 = Good
return SCSI_STATUS;
}
(That's because I haven't finished this bit yet because I think after the format command, it needs to update the information in the .dsc file so that verify doesn't carry on forever, and I am planning to store sectors per track in the dsc file but I haven't worked out how to write a new dsc file following the format yet.)
- BeebMaster
- Posts: 7433
- Joined: Sun Aug 02, 2009 5:59 pm
- Location: Lost in the BeebVault!
- Contact:
Re: Pi1MHz Software
Seems I was right, if I add:BeebMaster wrote: ↑Sun Jul 17, 2022 7:21 pm Just as I'm about to post, I'm thinking if the warning means that although I declare the variable and give it a value, I don't then read it back again so it isn't "used" in that sense.
Code: Select all
if (sectorspertrack == 32) sectorspertrack = 32 ;
- BeebMaster
- Posts: 7433
- Joined: Sun Aug 02, 2009 5:59 pm
- Location: Lost in the BeebVault!
- Contact:
Re: Pi1MHz Software
Right. I've abandoned everything up to this point as I put in too many changes and all sorts of things were going wrong. Softly softly approach from now on.
One thing I have fixed is the "verify forever" problem - I noticed in my earlier post that this line at the end of the format routine in scsi.c is commented out:
That needs to be restored and then it will only verify up to the size of the LUN.
One thing I have fixed is the "verify forever" problem - I noticed in my earlier post that this line at the end of the format routine in scsi.c is commented out:
Code: Select all
// Tell the file system to start the new LUN
// filesystemSetLunStatus(commandDataBlock.targetLUN, true);
- BeebMaster
- Posts: 7433
- Joined: Sun Aug 02, 2009 5:59 pm
- Location: Lost in the BeebVault!
- Contact:
Re: Pi1MHz Software
I'm doing much better now. One little change at at time, test and then carry on with the next thing.
So far I have fixed Read Capacity, which was returning the disc size in bytes instead of sectors as the data block being returned was mangled, and I've got it supporting 24 byte mode sense and mode select which in the case of mode select then writes a 24 byte .dsc file. This itself fixes a bug - or a bit more charitably, a divergence between the manual and actual behaviour - as the Adapter controller always allows 24 byte mode sense & select, it's just that the manual says 24 bytes is only for hard sectored or removable drives.
A side effect of this is that the extra 2 bytes are left in the Pi buffer block when moving from a LUN with a 24 byte .dsc file to a 22 byte one, so I will need to clear the whole buffer every time the mode sense or mode select functions are called.
I've replaced "33" with a sectorspertrack variable throughout, so this will make it easier to implement user-selectable spt of 32 or 33 based on interleave when I figure out the best way to do that. It will also make it easier to support the RLL ACB4070 controller as well if we decide to that; the only difference is the spt density of the discs.
I thought I should do a push or pull request in the Git Hub for these changes but when I read up on it, it suggested starting a new branch which can be pushed or pulled or merged later. However I don't seem to be important enough to start my own branches. Probably eminently sensible.
Another thing I am pondering is whether to replace all instances of "256" for the sector size with a variable, read from the .dsc file, in case anyone ever bodges ADFS to support 512-byte or greater sectors.
So far I have fixed Read Capacity, which was returning the disc size in bytes instead of sectors as the data block being returned was mangled, and I've got it supporting 24 byte mode sense and mode select which in the case of mode select then writes a 24 byte .dsc file. This itself fixes a bug - or a bit more charitably, a divergence between the manual and actual behaviour - as the Adapter controller always allows 24 byte mode sense & select, it's just that the manual says 24 bytes is only for hard sectored or removable drives.
A side effect of this is that the extra 2 bytes are left in the Pi buffer block when moving from a LUN with a 24 byte .dsc file to a 22 byte one, so I will need to clear the whole buffer every time the mode sense or mode select functions are called.
I've replaced "33" with a sectorspertrack variable throughout, so this will make it easier to implement user-selectable spt of 32 or 33 based on interleave when I figure out the best way to do that. It will also make it easier to support the RLL ACB4070 controller as well if we decide to that; the only difference is the spt density of the discs.
I thought I should do a push or pull request in the Git Hub for these changes but when I read up on it, it suggested starting a new branch which can be pushed or pulled or merged later. However I don't seem to be important enough to start my own branches. Probably eminently sensible.
Another thing I am pondering is whether to replace all instances of "256" for the sector size with a variable, read from the .dsc file, in case anyone ever bodges ADFS to support 512-byte or greater sectors.
Re: Pi1MHz Software
The usual thing is to fork the project, then work in your fork, and then issue a pull request from your fork to the upstream one. There's a github button to create your fork.BeebMaster wrote: ↑Mon Jul 18, 2022 12:09 am I thought I should do a push or pull request in the Git Hub for these changes but when I read up on it, it suggested starting a new branch which can be pushed or pulled or merged later. However I don't seem to be important enough to start my own branches. Probably eminently sensible.
Re: Pi1MHz Software
I'm very bad at this , but it helps if you can do one feature change/ bug fix per pull request. 10 small pull requests are better than one big one.
Re: Pi1MHz Software
Unless you have write access to the upstream repo, you would need to create your own fork on github then clone that to your machine and that's your working copy. You can that push changes back to your fork, and then create a pull request against the upstream repo.BeebMaster wrote: ↑Mon Jul 18, 2022 12:09 am I thought I should do a push or pull request in the Git Hub for these changes but when I read up on it, it suggested starting a new branch which can be pushed or pulled or merged later. However I don't seem to be important enough to start my own branches. Probably eminently sensible.
If you plan on making multiple changes then you should create a branch on your own fork and that's what you use in the pull request. Even a 5 line change is worth a branch. It won't show up in the upstream because you'd make the pull request against upstream main/master. Once the PR is complete you could delete your branch.
This is better than making all changes against main/master because it allows you to do further development work against yet another different branch without impacting the existing PR.
If you do have upstream repo write access then you should definitely make a branch for your changes and push your changes to that.
Branches are effectively "free" (they're just a tag) and don't take up any real disk space and are a great way of segregating your work.
Rgds
Stephen
Stephen