Commit Graph

7192 Commits

Author SHA1 Message Date
Geert Uytterhoeven 19e7b53762 software: Use "l" length modifier to format long values
To fix compiler warnings of the following type:

    warning: format '%x' expects argument of type 'unsigned int', but argument has type 'long unsigned int' [-Wformat=]

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
2021-01-19 15:03:48 +01:00
Geert Uytterhoeven a2389c71ea software: Fix cast from pointer to integer of different size warnings
litex/soc/software/liblitesdcard/sdcard.c: In function 'sdcard_read':
    litex/soc/software/liblitesdcard/sdcard.c:476:29: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
      sdblock2mem_dma_base_write((uint64_t) buf);
				 ^
    litex/soc/software/liblitesdcard/sdcard.c: In function 'sdcard_write':
    litex/soc/software/liblitesdcard/sdcard.c:507:30: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
       sdmem2block_dma_base_write((uint64_t) buf);
				  ^

When casting a pointer (32-bit or 64-bit, depending on the platform) to
a 64-bit integer, an intermediate cast to "uintptr_t" should be used to
avoid warnings like the above.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
2021-01-19 15:03:48 +01:00
Geert Uytterhoeven 5474f563c8 software/bios/readline: Use unsigned int for small numbers
There is no need to use "unsigned long" for small numbers related to the
number of characters in a line.  Use "unsigned int" instead.

This allows us to drop the casts when calling putnstr(), and fixes compiler
warnings on 64-bit for callsites where the casts were missing:

    warning: field precision specifier '.*' expects argument of type 'int', but argument 2 has type 'long unsigned int'

Reported-by: Gabriel Somlo <gsomlo@gmail.com>
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
2021-01-19 15:03:48 +01:00
Geert Uytterhoeven ab8cee1b5e software/bios/cmds/cmd_i2c: Use "%zu" to format size_t
The sizeof operator returns "size_t", which is defined to be "unsigned
int" on 32-bit, and "unsigned long" on 64-bit.

Format it using "%zu", to fix compiler warnings of the following type on
64-bit:

    warning: format '%d' expects argument of type 'int', but argument has type 'long unsigned int' [-Wformat=]

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
2021-01-19 15:03:48 +01:00
Geert Uytterhoeven cbd54e7b5c software/bios/cmds/cmd_bios: Make crc command 64-bit clean
On 64-bit:

    litex/soc/software/bios/cmds/cmd_bios.c: In function 'crc_handler':
    litex/soc/software/bios/cmds/cmd_bios.c:110:30: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
      printf("CRC32: %08x", crc32((unsigned char *)addr, length));
				  ^

Fix this by using the appropriate types (uintptr_t and size_t) for
memory addresses and sizes, which are defined to 32-bit or 64-bit,
depending on the platform.

Note that the specified length must still be smaller than 4 GiB on
64-bit, or it will be truncated, as the crc32() function is currently
limited to a 32-bit size anyway.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
2021-01-19 15:03:48 +01:00
Geert Uytterhoeven 857ef69b3f software/bios/boot: Fix cast to pointer from integer of different size warnings
On 64-bit:

    litex/soc/software/bios/boot.c: In function 'serialboot':
    litex/soc/software/bios/boot.c:216:20: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
	 writepointer = (char *) get_uint32(&frame.payload[0]);
			^

When casting from a 32-bit integer to a pointer (32-bit or 64-bit,
depending on the platform), an intermediate cast to "uintptr_t" should
be used to avoid warnings like the above.

Note that using a 32-bit integer is OK, even on 64-bit, as this is
specified by the boot protocol.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
2021-01-19 15:03:48 +01:00
Geert Uytterhoeven 84e3a77724 software/liblitedram: Use "%u" to format uint32_t values
To fix compiler warnings of the following type:

    warning: format '%lu' expects argument of type 'long unsigned int', but argument has type 'unsigned int' [-Wformat=]

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
2021-01-19 15:03:48 +01:00
Geert Uytterhoeven b979e69934 software/libbase: Remove empty printf statements
To fix compiler warnings of the following type:

    warning: zero-length gnu_printf format string [-Wformat-zero-length]

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
2021-01-19 15:03:48 +01:00
Geert Uytterhoeven bff23b8f73 software/libbase/vsnprintf: Prefix pointers by "0x"
Set the PRINTF_SPECIAL flag when printing pointers, so they are prefixed
by "0x", to match glibc behavior.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
2021-01-19 15:03:48 +01:00
Geert Uytterhoeven 91c9192626 software/include/base: Fix size_t, ptrdiff_t, and (u)intptr_t
As per convention, the types of size_t, ptrdiff_t, intptr_t, and
uintptr_t should be based on "long" or "int" depending on the platform
(32-bit or 64-bit).

This fixes compiler warnings of the following type:

    litex/soc/software/liblitesdcard/sdcard.c: In function 'sdcard_read':
    litex/soc/software/liblitesdcard/sdcard.c:476:39: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
      sdblock2mem_dma_base_write((uint64_t)(uintptr_t) buf);
					  ^

Reported-by: Gabriel Somlo <gsomlo@gmail.com>
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
2021-01-19 15:03:48 +01:00
Geert Uytterhoeven 1710c5f1ef software/include/base/limits: Fix ULONG_MAX on 64-bit
The value of ULONG_MAX should depend on the size of "long".

While at it:
  - Add missing "UL" and "U" suffixes to large unsigned values,
  - Make INT_MIN and SHRT_MIN explicitly negative,
  - Use decimal instead of hexadecimal values, for easier comparison
    with /usr/include/limits.h.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
2021-01-19 15:03:48 +01:00
Geert Uytterhoeven e0786c3f94 software/include/base: Check __LP64__ instead of __WORDSIZE
__WORDSIZE is defined by glibc, not by the compiler.  Hence it is never
defined for us, and checking __WORDSIZE to determine the size of "long"
thus causes subtle misbehavings.
Fix this by checking for the presence of __LP64__ instead.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
2021-01-19 14:59:49 +01:00
Florent Kermarrec 41964f945c litex_term/SFL: remove flashing capability.
It's probably better not mixing uploading/flashing utilities. Flashing should be
done with the proper bootloader (as we are doing on Fomu/OrangeCrab for example).
2021-01-18 16:47:47 +01:00
Florent Kermarrec a0bcbeb68b tools/litex_term: fully deprecate --no-crc argument. 2021-01-18 16:34:34 +01:00
Florent Kermarrec 2f5ad47f7a tools/litex_term: fix get_args typo. 2021-01-18 16:30:27 +01:00
Florent Kermarrec 81f4ffafdb build/tools/language_by_filename: add svo to system-verilog extensions. 2021-01-18 16:29:52 +01:00
enjoy-digital 2cb4f513f1
Merge pull request #775 from geertu/i2c-scan-fixes
I2c scan fixes and cleanups
2021-01-15 17:50:20 +01:00
enjoy-digital bf0f0176b3
Merge pull request #774 from antmicro/vex-debug
CPU: Vex: add debug slave for dbg cpu variant
2021-01-15 17:49:33 +01:00
Geert Uytterhoeven dc3306731c software/bios/cmds/cmd_i2c: Simplify upper nibble calculation
Use masking instead of division and multiplication.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
2021-01-15 12:01:08 +01:00
Geert Uytterhoeven 28ed06f1c5 software/bios/cmds/cmd_i2c: Fix i2c_scan output
"i2c_scan" prints random data instead of the intended slave address:

    0x70: 10001ebc -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

instead of:

    0x70: 70 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

Fix this by adding the missing printf() parameter.

Fixes: ee1ea9baab ("bios/cmd/cmd_i2c: make results similar to Linux's i2cdetect.")
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
2021-01-15 12:01:08 +01:00
Karol Gugala 5d0c5d7088 CPU: Vex: add debug slave for dbg cpu variant
Signed-off-by: Karol Gugala <kgugala@antmicro.com>
2021-01-15 09:28:03 +01:00
Florent Kermarrec b1cad93e62 tools/litex_json2dts: add clock_frequency property to VexRiscv-SMP cpus.
Required by some Linux drivers (SDCard for example).
2021-01-14 14:25:53 +01:00
Florent Kermarrec 50939fdd33 software/liblitedram/sdram_write_leveling: allow external configuration of cdly_range_start and cdly_range_end. 2021-01-14 13:18:10 +01:00
Florent Kermarrec 35a8b498a0 tools/litex_json2dts/sdcard: use sdphy base as csr base.
To be similar with csr base defined used in linux-on-litex-rocket.
2021-01-14 09:28:06 +01:00
Florent Kermarrec 83fb79fb0c tools/litex_term: review/simplify a bit PR #772. 2021-01-13 19:33:29 +01:00
enjoy-digital 9a9f7984ef
Merge pull request #772 from cr1901/lxterm-winfix
Windows fixes for `litex_term`
2021-01-13 19:24:05 +01:00
Florent Kermarrec 737ed9d658 setup: remove litex_simple setup from entry points.
Now provided by LiteX-Boards: https://github.com/litex-hub/litex-boards/blob/master/litex_boards/targets/simple.py
2021-01-12 17:21:26 +01:00
William D. Jones ce243820fe tools/litex_term: Convert some common scan codes into ANSI codes on Windows. 2021-01-11 21:02:37 -05:00
William D. Jones 5babcadbed tools/litex_term: Set ENABLE_VIRTUAL_TERMINAL_PROCESSING flag on Windows. 2021-01-11 19:54:21 -05:00
William D. Jones bfc624f23e tools/litex_term: Avoid importing termios and pty on Windows. 2021-01-11 14:51:55 -05:00
Florent Kermarrec 460fada3ac tools/litex_term: revert LiteXTerm to threading (multiprocessing breaks Windows/OS-X).
Ideally we should switch to AsyncIO as some point.
2021-01-11 19:29:15 +01:00
Florent Kermarrec 1ce194007b software: allow BIOS compilation with UART disabled. 2021-01-08 19:18:44 +01:00
Florent Kermarrec 19fda3364a tools/litex_term: fix 100% cpu load after refactoring (thanks sergpolkin). 2021-01-08 13:57:33 +01:00
Florent Kermarrec 5f9c4a4ab4 soc/cores/gpio: remove intermediate _pads signal. 2021-01-06 21:39:02 +01:00
Florent Kermarrec 0984308318 cores/gpio: add assertion on pads (has to be a Signal).
Due to the bi-directional nature of tristate, Cat is not supported (so also
not platform.request_all).
2021-01-06 09:56:56 +01:00
enjoy-digital 8109806609
Merge pull request #768 from davidlattimore/nx-320kb-ram
Lattice NX: Allow up to 320KB of RAM
2021-01-06 08:55:27 +01:00
David Lattimore 875f34f8e2 Lattice NX: Allow up to 320KB of RAM 2021-01-06 09:45:08 +11:00
Florent Kermarrec 16008d3f3a cpu/vexriscv/cpu-count: fix type and add comment (thanks dayjaby). 2021-01-04 14:43:08 +01:00
Florent Kermarrec f31f9a20f0 boards: remove and switch to litex_boards.
Keeping board definition files directly in LiteX is no longer useful since we are already relying on board
definitions files from LiteX-Boards (https://github.com/litex-hub/litex-boards) in various benches/projects
and having definitions files directly in LiteX creates confusion/additional work.

For projects using board definition files from LiteX, the litex.boards import can just be replaced with litex_boards:

from litex.boards.platforms import kc705

from litex_boards.platforms import kc705
2021-01-04 14:09:35 +01:00
enjoy-digital afbac26e80
Merge pull request #754 from cr1901/picorv32-riscv32
Use riscv32 gcc triples for picorv32- superset of riscv64 triples.
2020-12-31 09:32:31 +01:00
William D. Jones f65491c809 Use riscv32 gcc triples for picorv32- superset of riscv64 triples. 2020-12-31 03:22:56 -05:00
Florent Kermarrec 737952577b Changes: update/release. 2020-12-30 16:49:15 +01:00
Florent Kermarrec b9e0c95c18 cpu/microwatt: use 0xf9807b6 and fix compilation, working with IRQs :)
Tested with:
/arty.py --cpu-type=microwatt --cpu-variant=standard+irq --integrated-rom-size=0x10000 --build --load

        __   _ __      _  __
       / /  (_) /____ | |/_/
      / /__/ / __/ -_)>  <
     /____/_/\__/\__/_/|_|
   Build your hardware, easily!

 (c) Copyright 2012-2020 Enjoy-Digital
 (c) Copyright 2007-2015 M-Labs

 BIOS built on Dec 30 2020 15:59:16
 BIOS CRC passed (fb76e85d)

 Migen git sha1: d42aa6f
 LiteX git sha1: 74844db3

--=============== SoC ==================--
CPU:		Microwatt @ 100MHz
BUS:		WISHBONE 32-bit @ 4GiB
CSR:		32-bit data
ROM:		64KiB
SRAM:		8KiB
L2:		8KiB
SDRAM:		262144KiB 16-bit @ 800MT/s (CL-6 CWL-5)

--========== Initialization ============--
Initializing SDRAM @0x40000000...
Switching SDRAM to software control.
Write latency calibration:
m0:0 m1:0
Read leveling:
  m0, b0: |00000000000000000000000000000000| delays: -
  m0, b1: |00000000000011111111111111100000| delays: 19+-07
  m0, b2: |00000000000000000000000000001111| delays: 30+-02
  m0, b3: |00000000000000000000000000000000| delays: -
  m0, b4: |00000000000000000000000000000000| delays: -
  m0, b5: |00000000000000000000000000000000| delays: -
  m0, b6: |00000000000000000000000000000000| delays: -
  m0, b7: |00000000000000000000000000000000| delays: -
  best: m0, b01 delays: 19+-07
  m1, b0: |00000000000000000000000000000000| delays: -
  m1, b1: |00000000000011111111111111000000| delays: 19+-07
  m1, b2: |00000000000000000000000000001111| delays: 30+-01
  m1, b3: |00000000000000000000000000000000| delays: -
  m1, b4: |00000000000000000000000000000000| delays: -
  m1, b5: |00000000000000000000000000000000| delays: -
  m1, b6: |00000000000000000000000000000000| delays: -
  m1, b7: |00000000000000000000000000000000| delays: -
  best: m1, b01 delays: 19+-06
Switching SDRAM to hardware control.
Memtest at 0x0000000040000000 (2MiB)...
  Write: 0x40000000-0x40200000 2MiB
   Read: 0x40000000-0x40200000 2MiB
Memtest OK
Memspeed at 0x0000000040000000 (2MiB)...
  Write speed: 32MiB/s
   Read speed: 54MiB/s

--============== Boot ==================--
Booting from serial...
Press Q or ESC to abort boot completely.
sL5DdSMmkekro
Timeout
No boot medium found

--============= Console ================--

litex>
2020-12-30 16:20:20 +01:00
Florent Kermarrec 74844db3b9 cores/cpu: add optional add_soc_components method and use it to add VexRiscv-SMP's PLIC/CLINT and Microwatt's XCIS.
Also shorten XCIS name on Microwatt from HOSTXICS to XCIS.
2020-12-30 15:35:27 +01:00
Florent Kermarrec 49217ec6ea cores/cpu/vexriscv_smp: minor cleanups. 2020-12-30 14:45:33 +01:00
Florent Kermarrec a8ddbb190a cores/cpu/vexriscv_smp: add standard variant (similar to Linux, avoid passing cpu-variant=linux when selection vexriscv_smp). 2020-12-30 14:41:54 +01:00
Florent Kermarrec 7bcebf4cdd cpu/microwatt: improve/fix XICS controller integration for variants with irq. 2020-12-30 12:25:01 +01:00
Florent Kermarrec 0cba91022e cpu/vexriscv_smp: move smp_slave to crt0. Fixes bare metal demo compilation with VexRiscv-SMP. 2020-12-30 11:56:11 +01:00
Florent Kermarrec 4f6bc32a5a software/demo: make leds optional.
Allow running demo directly with litex_sim:
litex_sim (then exit with ctrl-c on BIOS prompt)
litex_bare_metal_demo --build-path=build/sim/
litex_sim --ram-init=demo.bin
2020-12-30 11:25:32 +01:00
Florent Kermarrec 052a76f253 README: update example projects built with the tools, remove 2020.04 note. 2020-12-30 11:06:55 +01:00