1
0
mirror of https://github.com/livingcomputermuseum/UniBone.git synced 2026-02-26 08:44:18 +00:00
This commit is contained in:
Joerg Hoppe
2019-12-19 10:30:45 +01:00
parent 061dbac5b6
commit b2a79c5221
12 changed files with 105 additions and 101 deletions

View File

@@ -360,7 +360,7 @@ priority_request_c *unibusadapter_c::request_activate_lowest_slot(unsigned level
Is implemented on ARM as just 2 opcodes: rbit (bit reverse), clz (count number of leading zeros)
VERY FAST (without sorting list)
*/
// Must run under pthread_mutex_lock(&requests_mutex);
// Must run under pthread_mutex_lock(&);
priority_request_level_c *prl = &request_levels[level_index];
priority_request_c *rq;
@@ -591,11 +591,12 @@ void unibusadapter_c::DMA(dma_request_c& dma_request, bool blocking, uint8_t uni
// NO wait for PRU signal, instead busy waiting. CPU thread blocked.
// Reason: SPEED. CPU does high frequency single word accesses.
bool completed = false;
// ARM_DEBUG_PIN1(1); // CPU20 performace
do {
// CPU thread is now spinning
// wait until CPU access scheduled and processed on PRU
// in parallel, other device threads call DMA()
pthread_mutex_lock(&requests_mutex);//&dma_request.complete_mutex);
pthread_mutex_lock(&requests_mutex);
dma_request_c *activereq = dynamic_cast<dma_request_c *>(prl->active);
//if (activereq == &dma_request)
// printf("a\n") ;
@@ -610,6 +611,7 @@ void unibusadapter_c::DMA(dma_request_c& dma_request, bool blocking, uint8_t uni
}
pthread_mutex_unlock(&requests_mutex);//&dma_request.complete_mutex);
} while (!completed);
//ARM_DEBUG_PIN1(0); // CPU20 performace
} else if (blocking) {
pthread_mutex_lock(&dma_request.complete_mutex) ;

View File

@@ -348,6 +348,8 @@ static statemachine_state_func sm_dma_state_99() {
PRU2ARM_INTERRUPT
;
}
// PRU_DEBUG_PIN0_PULSE(50) ; // CPU20 performace
return NULL; // now stopped
}
}

View File

@@ -1,68 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
<storageModule moduleId="org.eclipse.cdt.core.settings">
<cconfiguration id="cdt.managedbuild.toolchain.gnu.cross.base.632390496">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.toolchain.gnu.cross.base.632390496" moduleId="org.eclipse.cdt.core.settings" name="Default">
<externalSettings/>
<extensions>
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration buildProperties="" description="" id="cdt.managedbuild.toolchain.gnu.cross.base.632390496" name="Default" parent="org.eclipse.cdt.build.core.emptycfg">
<folderInfo id="cdt.managedbuild.toolchain.gnu.cross.base.632390496.2116398372" name="/" resourcePath="">
<toolChain id="cdt.managedbuild.toolchain.gnu.cross.base.1266739700" name="Cross GCC" superClass="cdt.managedbuild.toolchain.gnu.cross.base">
<option id="cdt.managedbuild.option.gnu.cross.prefix.179204763" name="Prefix" superClass="cdt.managedbuild.option.gnu.cross.prefix"/>
<option id="cdt.managedbuild.option.gnu.cross.path.1176568280" name="Path" superClass="cdt.managedbuild.option.gnu.cross.path"/>
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="cdt.managedbuild.targetPlatform.gnu.cross.746346436" isAbstract="false" osList="all" superClass="cdt.managedbuild.targetPlatform.gnu.cross"/>
<builder id="cdt.managedbuild.builder.gnu.cross.1144456450" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" superClass="cdt.managedbuild.builder.gnu.cross"/>
<tool id="cdt.managedbuild.tool.gnu.cross.c.compiler.279889652" name="Cross GCC Compiler" superClass="cdt.managedbuild.tool.gnu.cross.c.compiler">
<option id="gnu.c.compiler.option.preprocessor.def.symbols.951239867" superClass="gnu.c.compiler.option.preprocessor.def.symbols" valueType="definedSymbols">
<listOptionValue builtIn="false" value="ARM=1"/>
</option>
<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1168344921" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
</tool>
<tool id="cdt.managedbuild.tool.gnu.cross.cpp.compiler.387521793" name="Cross G++ Compiler" superClass="cdt.managedbuild.tool.gnu.cross.cpp.compiler">
<option id="gnu.cpp.compiler.option.preprocessor.def.2064561285" superClass="gnu.cpp.compiler.option.preprocessor.def" valueType="definedSymbols">
<listOptionValue builtIn="false" value="ARM=1"/>
</option>
<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1939618137" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
</tool>
<tool id="cdt.managedbuild.tool.gnu.cross.c.linker.31695445" name="Cross GCC Linker" superClass="cdt.managedbuild.tool.gnu.cross.c.linker"/>
<tool id="cdt.managedbuild.tool.gnu.cross.cpp.linker.80061640" name="Cross G++ Linker" superClass="cdt.managedbuild.tool.gnu.cross.cpp.linker">
<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1337249753" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType>
</tool>
<tool id="cdt.managedbuild.tool.gnu.cross.archiver.112971794" name="Cross GCC Archiver" superClass="cdt.managedbuild.tool.gnu.cross.archiver"/>
<tool id="cdt.managedbuild.tool.gnu.cross.assembler.1233905831" name="Cross GCC Assembler" superClass="cdt.managedbuild.tool.gnu.cross.assembler">
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.1510940605" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
</tool>
</toolChain>
</folderInfo>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<project id="10.02_devices.null.40583966" name="10.02_devices"/>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.cross.base.632390496;cdt.managedbuild.toolchain.gnu.cross.base.632390496.2116398372;cdt.managedbuild.tool.gnu.cross.c.compiler.279889652;cdt.managedbuild.tool.gnu.c.compiler.input.1168344921">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.cross.base.632390496;cdt.managedbuild.toolchain.gnu.cross.base.632390496.2116398372;cdt.managedbuild.tool.gnu.cross.cpp.compiler.387521793;cdt.managedbuild.tool.gnu.cpp.compiler.input.1939618137">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
</storageModule>
</cproject>

View File

@@ -1,29 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>10.02_devices</name>
<comment></comment>
<projects>
<project>10.01_base</project>
<project>90_common</project>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
<triggers>clean,full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
<triggers>full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.cdt.core.cnature</nature>
<nature>org.eclipse.cdt.core.ccnature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
</natures>
</projectDescription>

View File

@@ -11,6 +11,9 @@
serial = 177560 ; base addr of DL11
.=0 ; incomplete
jmp @#start
.=2000
start:

View File

@@ -24,7 +24,6 @@ p powerswitch 1 # power on, now in "load" state
p image xxdp25.rl02 # mount image file
p runstopbutton 1
m lp /root/10.02_devices/3_test/dl11w/ZDLDI0.BIN
.print Now start ZDLD at address 200
.print Or boot XXDP from DL, then execute "R ZDLDI0"

View File

@@ -1,7 +1,7 @@
# full memory emulation
m
pwr
.wait 5000 # wait for PDP-11 to reset through ACLO/DCLO
.wait 2000 # wait for PDP-11 to reset through ACLO/DCLO
m # emulate full memory
.wait 1000
lp zkma.ptap # load into memory

View File

@@ -0,0 +1,41 @@
# inputfile for demo to select a rl1 device in the "device test" menu.
# Read in with command line option "demo --cmdfile ..."
dc # device menu
# en dl11 # use emulated serial console
# en kw11
pwr # reboot PDP-11
.wait 3000 # wait for PDP-11 to reset
m i # install max UNIBUS memory
# Deposit bootloader into memory
m ll dl.lst
en rl # enable RL11 controller
# mount RT11 v5.5 in RL02 #0 and start
en rl0 # enable drive #0
sd rl0 # select
p emulation_speed 10 # 10x speed. Load disk in 5 seconds
# set type to "rl02"
p runstopbutton 0 # released: "LOAD"
p powerswitch 1 # power on, now in "load" state
p image rt11v5.5_games_34.rl02 # mount image file with test pattern
p runstopbutton 1 # press RUN/STOP, will start
.print Disk drive now on track after 5 secs
.wait 6000 # wait until drive spins up
p # show all params of RL1
en cpu20
sd cpu20
.print RL drives ready.
.print RL11 boot loader installed.
.print Start 10000 to boot from drive 0, 10010 for drive 1, ...
.print Reload with "m ll"
.print Start CPU20 with "p r 1"

View File

@@ -0,0 +1,4 @@
# start RT11 5.5 with "demo" application
cd ~/10.03_app_demo/5_applications/cpu
~/10.03_app_demo/4_deploy/demo --verbose --cmdfile cpu20rt11.cmd

View File

@@ -0,0 +1,3 @@
# start xxdp with "demo" application
cd ~/10.03_app_demo/5_applications/cpu
~/10.03_app_demo/4_deploy/demo --verbose --cmdfile xxdp.cmd

View File

@@ -0,0 +1,47 @@
# inputfile for demo to select a rl1 device in the "device test" menu.
# Read in with command line option "demo --cmdfile ..."
dc # "device + cpu" test menu
# first, make a serial port. Default ist
sd dl11
# p p ttyS2 # use "UART2 connector
#en dl11
#en kw11
pwr
.wait 3000 # wait for PDP-11 to reset
m i # install max UNIBUS memory
# Deposit bootloader into memory
m ll dl.lst
en rl # enable RL11 controller
# mount XXDP disk in RL02 #0 and start
en rl0 # enable drive #0
sd rl0 # select
p emulation_speed 10 # 10x speed. Load disk in 5 seconds
# set type to "rl02"
p runstopbutton 0 # released: "LOAD"
p powerswitch 1 # power on, now in "load" state
p image xxdp25.rl02 # mount image file with test pattern
p runstopbutton 1 # press RUN/STOP, will start
.print Disk drive now on track after 5 secs
.wait 5000 # wait until drive spins up
p # show all params of RL1
en cpu20
sd cpu20
init
# start from addr 0
# p run 1
.print RL drives ready.
.print RL11 boot loader installed.
.print Start CPU20 with "p r 1"
.print Start from 0 or 10000 to boot from drive 0, 10010 for drive 1, ...
.print Reload with "m ll"

Binary file not shown.