From e42bdb7cde35e108c46c0f88cf24c0ce52f47632 Mon Sep 17 00:00:00 2001 From: Dolu1990 Date: Fri, 17 May 2024 10:13:15 +0200 Subject: [PATCH] sync --- ext/NaxSoftware | 2 +- ext/rvls | 2 +- .../lib/misc/pipeline/NodeLaneApi.scala | 55 +++++++++++++++++++ .../lib/misc/test/MultithreadedFunSuite.scala | 2 +- src/main/scala/vexiiriscv/Param.scala | 2 +- src/main/scala/vexiiriscv/soc/litex/Soc.scala | 24 ++++++++ src/main/tcl/openocd/dev_rv64gc.tcl | 42 +++++++++++++- 7 files changed, 122 insertions(+), 7 deletions(-) create mode 100644 src/main/scala/spinal/lib/misc/pipeline/NodeLaneApi.scala diff --git a/ext/NaxSoftware b/ext/NaxSoftware index 4c3f0a2b..bd48a1a4 160000 --- a/ext/NaxSoftware +++ b/ext/NaxSoftware @@ -1 +1 @@ -Subproject commit 4c3f0a2b4c64c43a9801fcfb4dbd7d23bbbfb816 +Subproject commit bd48a1a41b9fd34c96691f60c1af0e7f8572188f diff --git a/ext/rvls b/ext/rvls index e9e2a79d..3883045a 160000 --- a/ext/rvls +++ b/ext/rvls @@ -1 +1 @@ -Subproject commit e9e2a79da182e9775d282cdbe8a54c37248de618 +Subproject commit 3883045adb2e3727315c3815c4ebe22db610f3fc diff --git a/src/main/scala/spinal/lib/misc/pipeline/NodeLaneApi.scala b/src/main/scala/spinal/lib/misc/pipeline/NodeLaneApi.scala new file mode 100644 index 00000000..b5dcff40 --- /dev/null +++ b/src/main/scala/spinal/lib/misc/pipeline/NodeLaneApi.scala @@ -0,0 +1,55 @@ +package spinal.lib.misc.pipeline + +import spinal.core._ + +trait NodeLaneApi{ + def nodeLink: Node + def laneName: String + def LANE_SEL: Payload[Bool] = CtrlLaneApi.LANE_SEL + + private val _c = nodeLink + + def isValid: Bool = _c.isValid + def isReady : Bool = _c.isReady + def isCancel : Bool = _c.isCancel + + def apply[T <: Data](that: Payload[T]): T = _c.apply(that, laneName) + def apply[T <: Data](that: Payload[T], subKey : Any): T = _c.apply(that, laneName + "_" + subKey.toString) + def insert[T <: Data](that: T): Payload[T] = { + val p = Payload(that) + apply(p) := that + p + } + + + abstract class NodeMirror(node : Node) extends NodeBaseApi { + override def valid = node(LANE_SEL, laneName) + override def ready = node.ready + override def cancel = node.cancel + override def isValid: Bool = node(LANE_SEL, laneName) + override def isReady: Bool = node.isReady + override def isFiring = valid && isReady && !isCancel + override def isMoving = valid && (isReady || isCancel) +// override def isCancel: Bool = node.isCancel + override def isCanceling = valid && isCancel + override def apply(key: NamedTypeKey) = ??? + override def apply[T <: Data](key: Payload[T]) = node(key, laneName) + override def apply(subKey: Seq[Any]) = ??? + def transactionSpawn = valid && !RegNext(valid, False).clearWhen(isReady || isCancel) + } + + + implicit def stageablePiped2[T <: Data](stageable: Payload[T]): T = this (stageable) + implicit def bundlePimper[T <: Bundle](stageable: Payload[T]): BundlePimper[T] = new BundlePimper[T](this (stageable)) + class BundlePimper[T <: Bundle](pimped: T) { + def :=(that: T): Unit = pimped := that + } + + class Area(from : NodeLaneApi = this) extends NodeLaneMirror(from) +} + +class NodeLaneMirror(from : NodeLaneApi) extends spinal.core.Area with NodeLaneApi { + override def nodeLink: Node = from.nodeLink + override def laneName: String = from.laneName + override def LANE_SEL: Payload[Bool] = from.LANE_SEL +} \ No newline at end of file diff --git a/src/main/scala/spinal/lib/misc/test/MultithreadedFunSuite.scala b/src/main/scala/spinal/lib/misc/test/MultithreadedFunSuite.scala index 48cf85ca..1b736e54 100644 --- a/src/main/scala/spinal/lib/misc/test/MultithreadedFunSuite.scala +++ b/src/main/scala/spinal/lib/misc/test/MultithreadedFunSuite.scala @@ -13,7 +13,7 @@ object HeavyLock class MultithreadedFunSuite(threadCount : Int) extends AnyFunSuite { val finalThreadCount = if(threadCount > 0) threadCount else { - new oshi.SystemInfo().getHardware.getProcessor.getLogicalProcessorCount + new oshi.SystemInfo().getHardware.getProcessor.getLogicalProcessorCount*4 } implicit val ec = ExecutionContext.fromExecutorService( new ForkJoinPool(finalThreadCount, ForkJoinPool.defaultForkJoinWorkerThreadFactory, null, true) diff --git a/src/main/scala/vexiiriscv/Param.scala b/src/main/scala/vexiiriscv/Param.scala index da366f67..7e2fcb35 100644 --- a/src/main/scala/vexiiriscv/Param.scala +++ b/src/main/scala/vexiiriscv/Param.scala @@ -167,7 +167,7 @@ class ParamSimple(){ withMmu = true privParam.withSupervisor = true privParam.withUser = true - xlen = 32 + xlen = 64 privParam.withDebug = true diff --git a/src/main/scala/vexiiriscv/soc/litex/Soc.scala b/src/main/scala/vexiiriscv/soc/litex/Soc.scala index d6ae17eb..c1f61b55 100644 --- a/src/main/scala/vexiiriscv/soc/litex/Soc.scala +++ b/src/main/scala/vexiiriscv/soc/litex/Soc.scala @@ -585,6 +585,30 @@ node-prefetches OR cpu/node-prefetches/ node-prefetch-misses OR cpu/node-prefetch-misses/ + +Bluetooth : +killall bluealsa +bluealsa -p a2dp-source -p a2dp-sink --a2dp-force-audio-cd +bluetoothctl +connect 88:C9:E8:E6:2A:69 +pulseaudio --start +systemctl status bluetooth +speaker-test -t wav -c 6 +speaker-test -t wav -c 6 -D btheadset +pacmd list-sinks +aplay -D bluealsa piano2.wave + +https://agl-gsod-2020-demo-mkdocs.readthedocs.io/en/latest/icefish/apis_services/reference/audio/audio/bluez-alsa/ + + +systemctl restart bluetooth + +pulseaudio-module-bluetooth naaaaa + +mpg123 -a bluealsa mp3/01-long_distance_calling-metulsky_curse_revisited.mp3 +--sbc-quality=low + + perf stat -e branch-misses -e branches -e cache-misses -e cache-references -e L1-icache-loads -e L1-icache-load-misses -e cycles -e instructions ls ~/c/libsdl2/libsdl2-2.30.2+dfsg/debian/build-tests# make -j1 check "TESTSUITEFLAGS=-j1 --verbose" VERBOSE=1 V=1 &> testlog.txt diff --git a/src/main/tcl/openocd/dev_rv64gc.tcl b/src/main/tcl/openocd/dev_rv64gc.tcl index 0571475b..fd314fd1 100644 --- a/src/main/tcl/openocd/dev_rv64gc.tcl +++ b/src/main/tcl/openocd/dev_rv64gc.tcl @@ -9,15 +9,51 @@ if [info exists env(HART_COUNT)] { #load_image /media/data2/proj/vexii/litex/buildroot/buildroot/build/rv64gc/images/rootfs.cpio 0x41000000 #load_image /media/data2/proj/vexii/litex/buildroot/opensbi/build/platform/litex/vexriscv/firmware/fw_jump.bin 0x40f00000 -load_image /media/data2/proj/vexii/litex/debian/ -load_image /media/data2/proj/vexii/litex/debian/Image 0x41000000 +reset halt + +targets $_TARGETNAME.0 +resume +after 1300 + +halt + +#load_image /media/data2/proj/vexii/litex/debian/Image 0x41000000 load_image /media/data2/proj/vexii/litex/debian/linux.dtb 0x46000000 -load_image /media/data2/proj/vexii/litex/debian/opensbi.bin 0x40f00000 +load_image /media/data2/proj/vexii/litex/buildroot/rv32ima/opensbi/build/platform/litex/vexriscv/firmware/fw_jump.bin 0x40f00000 +#load_image /media/data2/proj/vexii/litex/debian/opensbi.bin 0x40f00000 for {set i 0} {$i < $cpu_count} {incr i} { targets $_TARGETNAME.$i + reg pc 0x40f00000 + reg a0 0 + reg a1 0 + reg a2 0 + reg a3 0 resume } +exit 0 + +reset halt + +targets $_TARGETNAME.0 +resume +after 2000 + +halt + +load_image /media/data2/proj/vexii/litex/debian/linux.dtb 0x46000000 +load_image /media/data2/proj/vexii/litex/buildroot/rv32ima/opensbi/build/platform/litex/vexriscv/firmware/fw_jump.bin 0x40f00000 + +reg pc 0x40f00000 +reg a0 0 +reg a1 0 +reg a2 0 +reg a3 0 +resume + + + +