mirror of
https://github.com/SpinalHDL/VexRiscv.git
synced 2025-01-03 03:43:39 -05:00
Add FreeRTOS test regression (FREERTOS=yes)
Multithreaded regression
This commit is contained in:
parent
10d282b2ef
commit
6b3e2dbe7d
100 changed files with 114040 additions and 90 deletions
|
@ -1,36 +1,56 @@
|
||||||
[*]
|
[*]
|
||||||
[*] GTKWave Analyzer v3.3.58 (w)1999-2014 BSI
|
[*] GTKWave Analyzer v3.3.58 (w)1999-2014 BSI
|
||||||
[*] Mon Jul 17 12:56:44 2017
|
[*] Tue Jul 25 21:44:42 2017
|
||||||
[*]
|
[*]
|
||||||
[dumpfile] "/home/spinalvm/Spinal/VexRiscv/src/test/cpp/regression/dhrystoneO3M.vcd"
|
[dumpfile] "/home/spinalvm/Spinal/VexRiscv/src/test/cpp/regression/debugPluginExternal.vcd"
|
||||||
[dumpfile_mtime] "Mon Jul 17 09:34:42 2017"
|
[dumpfile_mtime] "Tue Jul 25 21:44:34 2017"
|
||||||
[dumpfile_size] 711052321
|
[dumpfile_size] 961355289
|
||||||
[savefile] "/home/spinalvm/Spinal/VexRiscv/src/test/cpp/regression/fail.gtkw"
|
[savefile] "/home/spinalvm/Spinal/VexRiscv/src/test/cpp/regression/fail.gtkw"
|
||||||
[timestart] 100656
|
[timestart] 3644000
|
||||||
[size] 1776 953
|
[size] 1776 953
|
||||||
[pos] -775 -353
|
[pos] -775 -353
|
||||||
*-9.000000 101506 62802 257426 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
|
*-19.000000 4619595 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
|
||||||
[treeopen] TOP.
|
[treeopen] TOP.
|
||||||
[treeopen] TOP.VexRiscv.
|
[treeopen] TOP.VexRiscv.
|
||||||
[sst_width] 242
|
[treeopen] TOP.VexRiscv.mixedDivider_1.
|
||||||
[signals_width] 409
|
[sst_width] 201
|
||||||
|
[signals_width] 418
|
||||||
[sst_expanded] 1
|
[sst_expanded] 1
|
||||||
[sst_vpaned_height] 279
|
[sst_vpaned_height] 279
|
||||||
@22
|
|
||||||
TOP.VexRiscv.CsrPlugin_mcycle[63:0]
|
|
||||||
TOP.VexRiscv.dBus_cmd_payload_address[31:0]
|
|
||||||
@28
|
@28
|
||||||
|
TOP.VexRiscv.DebugPlugin_haltIt
|
||||||
|
@22
|
||||||
|
TOP.VexRiscv.debug_bus_cmd_payload_address[7:0]
|
||||||
|
TOP.VexRiscv.debug_bus_cmd_payload_data[31:0]
|
||||||
|
@28
|
||||||
|
TOP.VexRiscv.debug_bus_cmd_payload_wr
|
||||||
|
TOP.VexRiscv.debug_bus_cmd_ready
|
||||||
|
@29
|
||||||
|
TOP.VexRiscv.debug_bus_cmd_valid
|
||||||
|
@22
|
||||||
|
TOP.VexRiscv.debug_bus_rsp_data[31:0]
|
||||||
|
[color] 2
|
||||||
|
TOP.VexRiscv.dBus_cmd_payload_address[31:0]
|
||||||
|
[color] 2
|
||||||
|
TOP.VexRiscv.dBus_cmd_payload_data[31:0]
|
||||||
|
@28
|
||||||
|
[color] 2
|
||||||
|
TOP.VexRiscv.dBus_cmd_payload_size[1:0]
|
||||||
|
[color] 2
|
||||||
TOP.VexRiscv.dBus_cmd_payload_wr
|
TOP.VexRiscv.dBus_cmd_payload_wr
|
||||||
|
[color] 2
|
||||||
TOP.VexRiscv.dBus_cmd_ready
|
TOP.VexRiscv.dBus_cmd_ready
|
||||||
|
[color] 2
|
||||||
TOP.VexRiscv.dBus_cmd_valid
|
TOP.VexRiscv.dBus_cmd_valid
|
||||||
@22
|
@22
|
||||||
TOP.VexRiscv.CsrPlugin_minstret[63:0]
|
[color] 2
|
||||||
|
TOP.VexRiscv.dBus_rsp_data[31:0]
|
||||||
@28
|
@28
|
||||||
TOP.VexRiscv.writeBack_IS_MUL
|
[color] 2
|
||||||
TOP.VexRiscv.writeBack_arbitration_isFiring
|
TOP.VexRiscv.dBus_rsp_error
|
||||||
TOP.VexRiscv.memory_IS_DIV
|
[color] 2
|
||||||
TOP.VexRiscv.memory_arbitration_isFiring
|
TOP.VexRiscv.dBus_rsp_ready
|
||||||
@29
|
@22
|
||||||
TOP.VexRiscv.decode_arbitration_haltIt
|
TOP.VexRiscv.DebugPlugin_busReadDataReg[31:0]
|
||||||
[pattern_trace] 1
|
[pattern_trace] 1
|
||||||
[pattern_trace] 0
|
[pattern_trace] 0
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
#include <mutex>
|
||||||
#include <iomanip>
|
#include <iomanip>
|
||||||
|
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
@ -138,12 +138,8 @@ void loadHexImpl(string path,Memory* mem) {
|
||||||
|
|
||||||
class success : public std::exception { };
|
class success : public std::exception { };
|
||||||
|
|
||||||
uint32_t testsCounter = 0, successCounter = 0;
|
|
||||||
|
|
||||||
uint64_t currentTime = 22;
|
|
||||||
double sc_time_stamp(){
|
|
||||||
return currentTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
class SimElement{
|
class SimElement{
|
||||||
|
@ -160,15 +156,19 @@ public:
|
||||||
|
|
||||||
class Workspace{
|
class Workspace{
|
||||||
public:
|
public:
|
||||||
static uint32_t cycles;
|
static mutex staticMutex;
|
||||||
|
static uint32_t testsCounter, successCounter;
|
||||||
|
static uint64_t cycles;
|
||||||
|
uint64_t instanceCycles = 0;
|
||||||
vector<SimElement*> simElements;
|
vector<SimElement*> simElements;
|
||||||
Memory mem;
|
Memory mem;
|
||||||
string name;
|
string name;
|
||||||
|
uint64_t currentTime = 22;
|
||||||
uint64_t mTimeCmp = 0;
|
uint64_t mTimeCmp = 0;
|
||||||
uint64_t mTime = 0;
|
uint64_t mTime = 0;
|
||||||
VVexRiscv* top;
|
VVexRiscv* top;
|
||||||
bool resetDone = false;
|
bool resetDone = false;
|
||||||
int i;
|
uint64_t i;
|
||||||
double cyclesPerSecond = 10e6;
|
double cyclesPerSecond = 10e6;
|
||||||
double allowedCycles = 0.0;
|
double allowedCycles = 0.0;
|
||||||
uint32_t bootPc = -1;
|
uint32_t bootPc = -1;
|
||||||
|
@ -189,7 +189,9 @@ public:
|
||||||
|
|
||||||
|
|
||||||
Workspace(string name){
|
Workspace(string name){
|
||||||
|
staticMutex.lock();
|
||||||
testsCounter++;
|
testsCounter++;
|
||||||
|
staticMutex.unlock();
|
||||||
this->name = name;
|
this->name = name;
|
||||||
top = new VVexRiscv;
|
top = new VVexRiscv;
|
||||||
#ifdef TRACE_ACCESS
|
#ifdef TRACE_ACCESS
|
||||||
|
@ -266,7 +268,14 @@ public:
|
||||||
logTraces << (char)mem[0xF00FFF00u];
|
logTraces << (char)mem[0xF00FFF00u];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 0xF00FFF20u: pass(); break;
|
#ifndef DEBUG_PLUGIN_EXTERNAL
|
||||||
|
case 0xF00FFF20u:
|
||||||
|
if(*data == 0)
|
||||||
|
pass();
|
||||||
|
else
|
||||||
|
fail();
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
case 0xF00FFF48u: mTimeCmp = (mTimeCmp & 0xFFFFFFFF00000000) | *data;break;
|
case 0xF00FFF48u: mTimeCmp = (mTimeCmp & 0xFFFFFFFF00000000) | *data;break;
|
||||||
case 0xF00FFF4Cu: mTimeCmp = (mTimeCmp & 0x00000000FFFFFFFF) | (((uint64_t)*data) << 32); /*cout << "mTimeCmp <= " << mTimeCmp << endl; */break;
|
case 0xF00FFF4Cu: mTimeCmp = (mTimeCmp & 0x00000000FFFFFFFF) | (((uint64_t)*data) << 32); /*cout << "mTimeCmp <= " << mTimeCmp << endl; */break;
|
||||||
}
|
}
|
||||||
|
@ -313,7 +322,7 @@ public:
|
||||||
if(i/2 >= TRACE_START) tfp->dump(i);
|
if(i/2 >= TRACE_START) tfp->dump(i);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
Workspace* run(uint32_t timeout = 5000){
|
Workspace* run(uint64_t timeout = 5000){
|
||||||
// cout << "Start " << name << endl;
|
// cout << "Start " << name << endl;
|
||||||
|
|
||||||
currentTime = 4;
|
currentTime = 4;
|
||||||
|
@ -425,7 +434,7 @@ public:
|
||||||
top->clk = 1;
|
top->clk = 1;
|
||||||
top->eval();
|
top->eval();
|
||||||
|
|
||||||
cycles += 1;
|
instanceCycles += 1;
|
||||||
|
|
||||||
for(SimElement* simElement : simElements) simElement->postCycle();
|
for(SimElement* simElement : simElements) simElement->postCycle();
|
||||||
|
|
||||||
|
@ -437,10 +446,16 @@ public:
|
||||||
cout << "timeout" << endl;
|
cout << "timeout" << endl;
|
||||||
fail();
|
fail();
|
||||||
} catch (const success e) {
|
} catch (const success e) {
|
||||||
|
staticMutex.lock();
|
||||||
cout <<"SUCCESS " << name << endl;
|
cout <<"SUCCESS " << name << endl;
|
||||||
successCounter++;
|
successCounter++;
|
||||||
|
cycles += instanceCycles;
|
||||||
|
staticMutex.unlock();
|
||||||
} catch (const std::exception& e) {
|
} catch (const std::exception& e) {
|
||||||
|
staticMutex.lock();
|
||||||
cout << "FAIL " << name << endl;
|
cout << "FAIL " << name << endl;
|
||||||
|
cycles += instanceCycles;
|
||||||
|
staticMutex.unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -928,6 +943,7 @@ public:
|
||||||
bool taskValid = false;
|
bool taskValid = false;
|
||||||
DebugPluginTask task;
|
DebugPluginTask task;
|
||||||
|
|
||||||
|
|
||||||
DebugPlugin(Workspace* ws){
|
DebugPlugin(Workspace* ws){
|
||||||
this->ws = ws;
|
this->ws = ws;
|
||||||
this->top = ws->top;
|
this->top = ws->top;
|
||||||
|
@ -1007,23 +1023,25 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void postCycle(){
|
virtual void postCycle(){
|
||||||
if(clientHandle == -1){
|
|
||||||
clientHandle = accept(serverSocket, (struct sockaddr *) &serverStorage, &addr_size);
|
|
||||||
if(clientHandle != -1)
|
|
||||||
printf("CONNECTED\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
top->reset = top->debug_resetOut;
|
top->reset = top->debug_resetOut;
|
||||||
|
if(timeSpacer == 0){
|
||||||
|
if(clientHandle == -1){
|
||||||
|
clientHandle = accept(serverSocket, (struct sockaddr *) &serverStorage, &addr_size);
|
||||||
|
if(clientHandle != -1)
|
||||||
|
printf("CONNECTED\n");
|
||||||
|
timeSpacer = 1000;
|
||||||
|
}
|
||||||
|
|
||||||
if(clientHandle != -1 && taskValid == false){
|
|
||||||
if(timeSpacer == 0){
|
if(clientHandle != -1 && taskValid == false){
|
||||||
int requiredSize = 1 + 1 + 4 + 4;
|
int requiredSize = 1 + 1 + 4 + 4;
|
||||||
int n;
|
int n;
|
||||||
|
timeSpacer = 20;
|
||||||
if(ioctl(clientHandle,FIONREAD,&n) != 0){
|
if(ioctl(clientHandle,FIONREAD,&n) != 0){
|
||||||
connectionReset();
|
connectionReset();
|
||||||
} else if(n >= requiredSize){
|
} else if(n >= requiredSize){
|
||||||
if(requiredSize != read(clientHandle,buffer,requiredSize)){
|
if(requiredSize != read(clientHandle,buffer,requiredSize)){
|
||||||
connectionReset();
|
connectionReset();
|
||||||
} else {
|
} else {
|
||||||
bool wr = buffer[0];
|
bool wr = buffer[0];
|
||||||
uint32_t size = buffer[1];
|
uint32_t size = buffer[1];
|
||||||
|
@ -1038,27 +1056,19 @@ public:
|
||||||
task.wr = wr;
|
task.wr = wr;
|
||||||
task.address = address;
|
task.address = address;
|
||||||
task.data = data;
|
task.data = data;
|
||||||
}/* else {
|
}
|
||||||
bool dummy;
|
|
||||||
//printf("wr=%d size=%d address=%x data=%x\n",wr,size,address,data);
|
|
||||||
ws->dBusAccess(address,wr,size,0xFFFFFFFF, &data, &dummy);
|
|
||||||
if(!wr){
|
|
||||||
//cout << hex << setw(8) << address << " -> " << hex << setw(8) << data << endl;
|
|
||||||
if(-1 == send(clientHandle,&data,4,0)) connectionReset();
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
int error = 0;
|
int error = 0;
|
||||||
socklen_t len = sizeof (error);
|
socklen_t len = sizeof (error);
|
||||||
int retval = getsockopt (clientHandle, SOL_SOCKET, SO_ERROR, &error, &len);
|
int retval = getsockopt (clientHandle, SOL_SOCKET, SO_ERROR, &error, &len);
|
||||||
if (retval != 0 || error != 0) {
|
if (retval != 0 || error != 0) {
|
||||||
connectionReset();
|
connectionReset();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
timeSpacer--;
|
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
timeSpacer--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1202,8 +1212,9 @@ void Workspace::fillSimELements(){
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mutex Workspace::staticMutex;
|
||||||
uint32_t Workspace::cycles = 0;
|
uint64_t Workspace::cycles = 0;
|
||||||
|
uint32_t Workspace::testsCounter = 0, Workspace::successCounter = 0;
|
||||||
|
|
||||||
#ifndef REF
|
#ifndef REF
|
||||||
#define testA1ReagFileWriteRef {1,10},{2,20},{3,40},{4,60}
|
#define testA1ReagFileWriteRef {1,10},{2,20},{3,40},{4,60}
|
||||||
|
@ -1572,21 +1583,61 @@ string riscvTestDiv[] = {
|
||||||
"rv32um-p-remu"
|
"rv32um-p-remu"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
string freeRtosTests[] = {
|
||||||
|
"AltBlckQ", "AltPollQ", "blocktim", "countsem", "dead", "EventGroupsDemo", "flop", "integer", "QPeek",
|
||||||
|
"QueueSet", "recmutex", "semtest", "TaskNotify", "AltBlock", "AltQTest", "BlockQ", "crhook", "dynamic",
|
||||||
|
"GenQTest", "PollQ", "QueueOverwrite", "QueueSetPolling", "sp_flop", "test1"
|
||||||
|
//"flop", "sp_flop" // <- Simple test
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
struct timespec timer_start(){
|
struct timespec timer_start(){
|
||||||
struct timespec start_time;
|
struct timespec start_time;
|
||||||
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &start_time);
|
clock_gettime(CLOCK_REALTIME, &start_time); //CLOCK_PROCESS_CPUTIME_ID
|
||||||
return start_time;
|
return start_time;
|
||||||
}
|
}
|
||||||
|
|
||||||
long timer_end(struct timespec start_time){
|
long timer_end(struct timespec start_time){
|
||||||
struct timespec end_time;
|
struct timespec end_time;
|
||||||
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &end_time);
|
clock_gettime(CLOCK_REALTIME, &end_time);
|
||||||
uint64_t diffInNanos = end_time.tv_sec*1e9 + end_time.tv_nsec - start_time.tv_sec*1e9 - start_time.tv_nsec;
|
uint64_t diffInNanos = end_time.tv_sec*1e9 + end_time.tv_nsec - start_time.tv_sec*1e9 - start_time.tv_nsec;
|
||||||
return diffInNanos;
|
return diffInNanos;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define redo(count,that) for(uint32_t xxx = 0;xxx < count;xxx++) that
|
#define redo(count,that) for(uint32_t xxx = 0;xxx < count;xxx++) that
|
||||||
|
#include <pthread.h>
|
||||||
|
#include <queue>
|
||||||
|
#include <functional>
|
||||||
|
#include <thread>
|
||||||
|
|
||||||
|
|
||||||
|
static void multiThreading(queue<std::function<void()>> *lambdas, std::mutex *mutex){
|
||||||
|
while(true){
|
||||||
|
mutex->lock();
|
||||||
|
if(lambdas->empty()){
|
||||||
|
mutex->unlock();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
std::function<void()> lambda = lambdas->front();
|
||||||
|
lambdas->pop();
|
||||||
|
mutex->unlock();
|
||||||
|
|
||||||
|
lambda();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void multiThreadedExecute(queue<std::function<void()>> &lambdas){
|
||||||
|
std::mutex mutex;
|
||||||
|
std::thread * t[THREAD_COUNT];
|
||||||
|
for(int id = 0;id < THREAD_COUNT;id++){
|
||||||
|
t[id] = new thread(multiThreading,&lambdas,&mutex);
|
||||||
|
}
|
||||||
|
for(int id = 0;id < THREAD_COUNT;id++){
|
||||||
|
t[id]->join();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int main(int argc, char **argv, char **env) {
|
int main(int argc, char **argv, char **env) {
|
||||||
Verilated::randReset(2);
|
Verilated::randReset(2);
|
||||||
|
@ -1596,31 +1647,30 @@ int main(int argc, char **argv, char **env) {
|
||||||
timespec startedAt = timer_start();
|
timespec startedAt = timer_start();
|
||||||
|
|
||||||
for(int idx = 0;idx < 1;idx++){
|
for(int idx = 0;idx < 1;idx++){
|
||||||
#ifndef REF
|
|
||||||
|
|
||||||
#ifdef DEBUG_PLUGIN_EXTERNAL
|
#ifdef DEBUG_PLUGIN_EXTERNAL
|
||||||
{
|
{
|
||||||
Workspace w("debugPluginExternal");
|
Workspace w("debugPluginExternal");
|
||||||
w.loadHex("../../resources/hex/debugPluginExternal.hex");
|
w.loadHex("../../resources/hex/debugPluginExternal.hex");
|
||||||
w.noInstructionReadCheck();
|
w.noInstructionReadCheck();
|
||||||
//w.setIStall(false);
|
//w.setIStall(false);
|
||||||
//w.setDStall(false);
|
//w.setDStall(false);
|
||||||
|
|
||||||
#if defined(TRACE) || defined(TRACE_ACCESS)
|
#if defined(TRACE) || defined(TRACE_ACCESS)
|
||||||
//w.setCyclesPerSecond(5e3);
|
//w.setCyclesPerSecond(5e3);
|
||||||
//printf("Speed reduced 5Khz\n");
|
//printf("Speed reduced 5Khz\n");
|
||||||
#endif
|
|
||||||
w.run(1e9);
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
w.run(0xFFFFFFFFFFFF);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef ISA_TEST
|
||||||
|
|
||||||
redo(REDO,TestA().run();)
|
redo(REDO,TestA().run();)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
for(const string &name : riscvTestMain){
|
for(const string &name : riscvTestMain){
|
||||||
redo(REDO,RiscvTest(name).run();)
|
redo(REDO,RiscvTest(name).run();)
|
||||||
}
|
}
|
||||||
|
@ -1650,36 +1700,45 @@ int main(int argc, char **argv, char **env) {
|
||||||
13, 0xC4000000,0x33333333, 6,7};
|
13, 0xC4000000,0x33333333, 6,7};
|
||||||
redo(REDO,TestX28("mmu",mmuRef, sizeof(mmuRef)/4).noInstructionReadCheck()->run(4e3);)
|
redo(REDO,TestX28("mmu",mmuRef, sizeof(mmuRef)/4).noInstructionReadCheck()->run(4e3);)
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef DEBUG_PLUGIN
|
#ifdef DEBUG_PLUGIN
|
||||||
redo(REDO,DebugPluginTest().run(1e6););
|
redo(REDO,DebugPluginTest().run(1e6););
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef DHRYSTONE
|
#ifdef DHRYSTONE
|
||||||
Dhrystone("dhrystoneO3_Stall","dhrystoneO3",true,true).run(1.1e6);
|
Dhrystone("dhrystoneO3_Stall","dhrystoneO3",true,true).run(1.1e6);
|
||||||
#if defined(MUL) || defined(DIV)
|
#if defined(MUL) && defined(DIV)
|
||||||
Dhrystone("dhrystoneO3M_Stall","dhrystoneO3M",true,true).run(1.5e6);
|
Dhrystone("dhrystoneO3M_Stall","dhrystoneO3M",true,true).run(1.5e6);
|
||||||
#endif
|
#endif
|
||||||
Dhrystone("dhrystoneO3","dhrystoneO3",false,false).run(1.5e6);
|
Dhrystone("dhrystoneO3","dhrystoneO3",false,false).run(1.5e6);
|
||||||
#if defined(MUL) || defined(DIV)
|
#if defined(MUL) && defined(DIV)
|
||||||
Dhrystone("dhrystoneO3M","dhrystoneO3M",false,false).run(1.2e6);
|
Dhrystone("dhrystoneO3M","dhrystoneO3M",false,false).run(1.2e6);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifdef FREE_RTOS
|
#ifdef FREERTOS
|
||||||
redo(1,Workspace("freeRTOS_demo").loadHex("../../resources/hex/freeRTOS_demo.hex")->bootAt(0x80000000u)->run(100e6);)
|
//redo(1,Workspace("freeRTOS_demo").loadHex("../../resources/hex/freeRTOS_demo.hex")->bootAt(0x80000000u)->run(100e6);)
|
||||||
|
queue<std::function<void()>> tasks;
|
||||||
|
|
||||||
|
for(const string &name : freeRtosTests){
|
||||||
|
tasks.push([=]() { Workspace(name + "_rv32i").loadHex("../../resources/freertos/" + name + "_rv32i.hex")->bootAt(0x80000000u)->run(4e6*15);});
|
||||||
|
#if defined(MUL) && defined(DIV)
|
||||||
|
tasks.push([=]() { Workspace(name + "_rv32im").loadHex("../../resources/freertos/" + name + "_rv32im.hex")->bootAt(0x80000000u)->run(4e6*15);});
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
multiThreadedExecute(tasks);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t duration = timer_end(startedAt);
|
uint64_t duration = timer_end(startedAt);
|
||||||
cout << endl << "****************************************************************" << endl;
|
cout << endl << "****************************************************************" << endl;
|
||||||
cout << "Had simulate " << Workspace::cycles << " clock cycles in " << duration*1e-9 << " s (" << Workspace::cycles / (duration*1e-9) << " Khz)" << endl;
|
cout << "Had simulate " << Workspace::cycles << " clock cycles in " << duration*1e-9 << " s (" << Workspace::cycles / (duration*1e-6) << " Khz)" << endl;
|
||||||
if(successCounter == testsCounter)
|
if(Workspace::successCounter == Workspace::testsCounter)
|
||||||
cout << "SUCCESS " << successCounter << "/" << testsCounter << endl;
|
cout << "SUCCESS " << Workspace::successCounter << "/" << Workspace::testsCounter << endl;
|
||||||
else
|
else
|
||||||
cout<< "FAILURE " << testsCounter - successCounter << "/" << testsCounter << endl;
|
cout<< "FAILURE " << Workspace::testsCounter - Workspace::successCounter << "/" << Workspace::testsCounter << endl;
|
||||||
cout << "****************************************************************" << endl << endl;
|
cout << "****************************************************************" << endl << endl;
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@ DBUS?=CACHED
|
||||||
TRACE?=no
|
TRACE?=no
|
||||||
TRACE_ACCESS?=no
|
TRACE_ACCESS?=no
|
||||||
TRACE_START=0
|
TRACE_START=0
|
||||||
|
ISA_TEST?=yes
|
||||||
MUL?=yes
|
MUL?=yes
|
||||||
DIV?=yes
|
DIV?=yes
|
||||||
CSR?=yes
|
CSR?=yes
|
||||||
|
@ -10,18 +11,19 @@ MMU?=yes
|
||||||
DEBUG_PLUGIN?=STD
|
DEBUG_PLUGIN?=STD
|
||||||
DEBUG_PLUGIN_EXTERNAL?=no
|
DEBUG_PLUGIN_EXTERNAL?=no
|
||||||
DHRYSTONE=yes
|
DHRYSTONE=yes
|
||||||
FREE_RTOS=no
|
FREERTOS=no
|
||||||
REDO?=10
|
REDO?=10
|
||||||
REF=no
|
REF=no
|
||||||
TRACE_WITH_TIME=no
|
TRACE_WITH_TIME=no
|
||||||
REF_TIME=no
|
REF_TIME=no
|
||||||
|
THREAD_COUNT=4
|
||||||
|
|
||||||
ADDCFLAGS += -CFLAGS -DIBUS_${IBUS}
|
ADDCFLAGS += -CFLAGS -DIBUS_${IBUS}
|
||||||
ADDCFLAGS += -CFLAGS -DDBUS_${DBUS}
|
ADDCFLAGS += -CFLAGS -DDBUS_${DBUS}
|
||||||
ADDCFLAGS += -CFLAGS -DREDO=${REDO}
|
ADDCFLAGS += -CFLAGS -DREDO=${REDO}
|
||||||
ADDCFLAGS += -CFLAGS -pthread
|
ADDCFLAGS += -CFLAGS -pthread
|
||||||
|
|
||||||
|
ADDCFLAGS += -CFLAGS -DTHREAD_COUNT=${THREAD_COUNT}
|
||||||
ifeq ($(DHRYSTONE),yes)
|
ifeq ($(DHRYSTONE),yes)
|
||||||
ADDCFLAGS += -CFLAGS -DDHRYSTONE
|
ADDCFLAGS += -CFLAGS -DDHRYSTONE
|
||||||
endif
|
endif
|
||||||
|
@ -43,6 +45,10 @@ ifeq ($(REF_TIME),yes)
|
||||||
ADDCFLAGS += -CFLAGS -DREF_TIME
|
ADDCFLAGS += -CFLAGS -DREF_TIME
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(ISA_TEST),yes)
|
||||||
|
ADDCFLAGS += -CFLAGS -DISA_TEST
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($(MMU),yes)
|
ifeq ($(MMU),yes)
|
||||||
ADDCFLAGS += -CFLAGS -DMMU
|
ADDCFLAGS += -CFLAGS -DMMU
|
||||||
endif
|
endif
|
||||||
|
@ -73,8 +79,8 @@ ifeq ($(REF),yes)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ADDCFLAGS += -CFLAGS -DTRACE_START=${TRACE_START}
|
ADDCFLAGS += -CFLAGS -DTRACE_START=${TRACE_START}
|
||||||
ifeq ($(FREE_RTOS),yes)
|
ifeq ($(FREERTOS),yes)
|
||||||
ADDCFLAGS += -CFLAGS -DFREE_RTOS
|
ADDCFLAGS += -CFLAGS -DFREERTOS
|
||||||
endif
|
endif
|
||||||
|
|
||||||
all: clean run
|
all: clean run
|
||||||
|
|
BIN
src/test/resources/freertos/AltBlckQ_rv32i.elf
Normal file
BIN
src/test/resources/freertos/AltBlckQ_rv32i.elf
Normal file
Binary file not shown.
2296
src/test/resources/freertos/AltBlckQ_rv32i.hex
Normal file
2296
src/test/resources/freertos/AltBlckQ_rv32i.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/AltBlckQ_rv32im.elf
Normal file
BIN
src/test/resources/freertos/AltBlckQ_rv32im.elf
Normal file
Binary file not shown.
2223
src/test/resources/freertos/AltBlckQ_rv32im.hex
Normal file
2223
src/test/resources/freertos/AltBlckQ_rv32im.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/AltBlock_rv32i.elf
Normal file
BIN
src/test/resources/freertos/AltBlock_rv32i.elf
Normal file
Binary file not shown.
2349
src/test/resources/freertos/AltBlock_rv32i.hex
Normal file
2349
src/test/resources/freertos/AltBlock_rv32i.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/AltBlock_rv32im.elf
Normal file
BIN
src/test/resources/freertos/AltBlock_rv32im.elf
Normal file
Binary file not shown.
2276
src/test/resources/freertos/AltBlock_rv32im.hex
Normal file
2276
src/test/resources/freertos/AltBlock_rv32im.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/AltPollQ_rv32i.elf
Normal file
BIN
src/test/resources/freertos/AltPollQ_rv32i.elf
Normal file
Binary file not shown.
2251
src/test/resources/freertos/AltPollQ_rv32i.hex
Normal file
2251
src/test/resources/freertos/AltPollQ_rv32i.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/AltPollQ_rv32im.elf
Normal file
BIN
src/test/resources/freertos/AltPollQ_rv32im.elf
Normal file
Binary file not shown.
2177
src/test/resources/freertos/AltPollQ_rv32im.hex
Normal file
2177
src/test/resources/freertos/AltPollQ_rv32im.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/AltQTest_rv32i.elf
Normal file
BIN
src/test/resources/freertos/AltQTest_rv32i.elf
Normal file
Binary file not shown.
2369
src/test/resources/freertos/AltQTest_rv32i.hex
Normal file
2369
src/test/resources/freertos/AltQTest_rv32i.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/AltQTest_rv32im.elf
Normal file
BIN
src/test/resources/freertos/AltQTest_rv32im.elf
Normal file
Binary file not shown.
2296
src/test/resources/freertos/AltQTest_rv32im.hex
Normal file
2296
src/test/resources/freertos/AltQTest_rv32im.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/BlockQ_rv32i.elf
Normal file
BIN
src/test/resources/freertos/BlockQ_rv32i.elf
Normal file
Binary file not shown.
2241
src/test/resources/freertos/BlockQ_rv32i.hex
Normal file
2241
src/test/resources/freertos/BlockQ_rv32i.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/BlockQ_rv32im.elf
Normal file
BIN
src/test/resources/freertos/BlockQ_rv32im.elf
Normal file
Binary file not shown.
2168
src/test/resources/freertos/BlockQ_rv32im.hex
Normal file
2168
src/test/resources/freertos/BlockQ_rv32im.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/EventGroupsDemo_rv32i.elf
Normal file
BIN
src/test/resources/freertos/EventGroupsDemo_rv32i.elf
Normal file
Binary file not shown.
2480
src/test/resources/freertos/EventGroupsDemo_rv32i.hex
Normal file
2480
src/test/resources/freertos/EventGroupsDemo_rv32i.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/EventGroupsDemo_rv32im.elf
Normal file
BIN
src/test/resources/freertos/EventGroupsDemo_rv32im.elf
Normal file
Binary file not shown.
2407
src/test/resources/freertos/EventGroupsDemo_rv32im.hex
Normal file
2407
src/test/resources/freertos/EventGroupsDemo_rv32im.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/GenQTest_rv32i.elf
Normal file
BIN
src/test/resources/freertos/GenQTest_rv32i.elf
Normal file
Binary file not shown.
2369
src/test/resources/freertos/GenQTest_rv32i.hex
Normal file
2369
src/test/resources/freertos/GenQTest_rv32i.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/GenQTest_rv32im.elf
Normal file
BIN
src/test/resources/freertos/GenQTest_rv32im.elf
Normal file
Binary file not shown.
2296
src/test/resources/freertos/GenQTest_rv32im.hex
Normal file
2296
src/test/resources/freertos/GenQTest_rv32im.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/PollQ_rv32i.elf
Normal file
BIN
src/test/resources/freertos/PollQ_rv32i.elf
Normal file
Binary file not shown.
2196
src/test/resources/freertos/PollQ_rv32i.hex
Normal file
2196
src/test/resources/freertos/PollQ_rv32i.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/PollQ_rv32im.elf
Normal file
BIN
src/test/resources/freertos/PollQ_rv32im.elf
Normal file
Binary file not shown.
2123
src/test/resources/freertos/PollQ_rv32im.hex
Normal file
2123
src/test/resources/freertos/PollQ_rv32im.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/QPeek_rv32i.elf
Normal file
BIN
src/test/resources/freertos/QPeek_rv32i.elf
Normal file
Binary file not shown.
2262
src/test/resources/freertos/QPeek_rv32i.hex
Normal file
2262
src/test/resources/freertos/QPeek_rv32i.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/QPeek_rv32im.elf
Normal file
BIN
src/test/resources/freertos/QPeek_rv32im.elf
Normal file
Binary file not shown.
2189
src/test/resources/freertos/QPeek_rv32im.hex
Normal file
2189
src/test/resources/freertos/QPeek_rv32im.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/QueueOverwrite_rv32i.elf
Normal file
BIN
src/test/resources/freertos/QueueOverwrite_rv32i.elf
Normal file
Binary file not shown.
2220
src/test/resources/freertos/QueueOverwrite_rv32i.hex
Normal file
2220
src/test/resources/freertos/QueueOverwrite_rv32i.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/QueueOverwrite_rv32im.elf
Normal file
BIN
src/test/resources/freertos/QueueOverwrite_rv32im.elf
Normal file
Binary file not shown.
2146
src/test/resources/freertos/QueueOverwrite_rv32im.hex
Normal file
2146
src/test/resources/freertos/QueueOverwrite_rv32im.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/QueueSetPolling_rv32i.elf
Normal file
BIN
src/test/resources/freertos/QueueSetPolling_rv32i.elf
Normal file
Binary file not shown.
2253
src/test/resources/freertos/QueueSetPolling_rv32i.hex
Normal file
2253
src/test/resources/freertos/QueueSetPolling_rv32i.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/QueueSetPolling_rv32im.elf
Normal file
BIN
src/test/resources/freertos/QueueSetPolling_rv32im.elf
Normal file
Binary file not shown.
2180
src/test/resources/freertos/QueueSetPolling_rv32im.hex
Normal file
2180
src/test/resources/freertos/QueueSetPolling_rv32im.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/QueueSet_rv32i.elf
Normal file
BIN
src/test/resources/freertos/QueueSet_rv32i.elf
Normal file
Binary file not shown.
2404
src/test/resources/freertos/QueueSet_rv32i.hex
Normal file
2404
src/test/resources/freertos/QueueSet_rv32i.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/QueueSet_rv32im.elf
Normal file
BIN
src/test/resources/freertos/QueueSet_rv32im.elf
Normal file
Binary file not shown.
2328
src/test/resources/freertos/QueueSet_rv32im.hex
Normal file
2328
src/test/resources/freertos/QueueSet_rv32im.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/TaskNotify_rv32i.elf
Normal file
BIN
src/test/resources/freertos/TaskNotify_rv32i.elf
Normal file
Binary file not shown.
2370
src/test/resources/freertos/TaskNotify_rv32i.hex
Normal file
2370
src/test/resources/freertos/TaskNotify_rv32i.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/TaskNotify_rv32im.elf
Normal file
BIN
src/test/resources/freertos/TaskNotify_rv32im.elf
Normal file
Binary file not shown.
2295
src/test/resources/freertos/TaskNotify_rv32im.hex
Normal file
2295
src/test/resources/freertos/TaskNotify_rv32im.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/blocktim_rv32i.elf
Normal file
BIN
src/test/resources/freertos/blocktim_rv32i.elf
Normal file
Binary file not shown.
2292
src/test/resources/freertos/blocktim_rv32i.hex
Normal file
2292
src/test/resources/freertos/blocktim_rv32i.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/blocktim_rv32im.elf
Normal file
BIN
src/test/resources/freertos/blocktim_rv32im.elf
Normal file
Binary file not shown.
2219
src/test/resources/freertos/blocktim_rv32im.hex
Normal file
2219
src/test/resources/freertos/blocktim_rv32im.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/countsem_rv32i.elf
Normal file
BIN
src/test/resources/freertos/countsem_rv32i.elf
Normal file
Binary file not shown.
2226
src/test/resources/freertos/countsem_rv32i.hex
Normal file
2226
src/test/resources/freertos/countsem_rv32i.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/countsem_rv32im.elf
Normal file
BIN
src/test/resources/freertos/countsem_rv32im.elf
Normal file
Binary file not shown.
2153
src/test/resources/freertos/countsem_rv32im.hex
Normal file
2153
src/test/resources/freertos/countsem_rv32im.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/crhook_rv32i.elf
Normal file
BIN
src/test/resources/freertos/crhook_rv32i.elf
Normal file
Binary file not shown.
2404
src/test/resources/freertos/crhook_rv32i.hex
Normal file
2404
src/test/resources/freertos/crhook_rv32i.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/crhook_rv32im.elf
Normal file
BIN
src/test/resources/freertos/crhook_rv32im.elf
Normal file
Binary file not shown.
2331
src/test/resources/freertos/crhook_rv32im.hex
Normal file
2331
src/test/resources/freertos/crhook_rv32im.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/dead_rv32i.elf
Normal file
BIN
src/test/resources/freertos/dead_rv32i.elf
Normal file
Binary file not shown.
2202
src/test/resources/freertos/dead_rv32i.hex
Normal file
2202
src/test/resources/freertos/dead_rv32i.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/dead_rv32im.elf
Normal file
BIN
src/test/resources/freertos/dead_rv32im.elf
Normal file
Binary file not shown.
2128
src/test/resources/freertos/dead_rv32im.hex
Normal file
2128
src/test/resources/freertos/dead_rv32im.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/dynamic_rv32i.elf
Normal file
BIN
src/test/resources/freertos/dynamic_rv32i.elf
Normal file
Binary file not shown.
2255
src/test/resources/freertos/dynamic_rv32i.hex
Normal file
2255
src/test/resources/freertos/dynamic_rv32i.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/dynamic_rv32im.elf
Normal file
BIN
src/test/resources/freertos/dynamic_rv32im.elf
Normal file
Binary file not shown.
2181
src/test/resources/freertos/dynamic_rv32im.hex
Normal file
2181
src/test/resources/freertos/dynamic_rv32im.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/flop_rv32i.elf
Normal file
BIN
src/test/resources/freertos/flop_rv32i.elf
Normal file
Binary file not shown.
2882
src/test/resources/freertos/flop_rv32i.hex
Normal file
2882
src/test/resources/freertos/flop_rv32i.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/flop_rv32im.elf
Normal file
BIN
src/test/resources/freertos/flop_rv32im.elf
Normal file
Binary file not shown.
2773
src/test/resources/freertos/flop_rv32im.hex
Normal file
2773
src/test/resources/freertos/flop_rv32im.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/integer_rv32i.elf
Normal file
BIN
src/test/resources/freertos/integer_rv32i.elf
Normal file
Binary file not shown.
2180
src/test/resources/freertos/integer_rv32i.hex
Normal file
2180
src/test/resources/freertos/integer_rv32i.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/integer_rv32im.elf
Normal file
BIN
src/test/resources/freertos/integer_rv32im.elf
Normal file
Binary file not shown.
2106
src/test/resources/freertos/integer_rv32im.hex
Normal file
2106
src/test/resources/freertos/integer_rv32im.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/recmutex_rv32i.elf
Normal file
BIN
src/test/resources/freertos/recmutex_rv32i.elf
Normal file
Binary file not shown.
2257
src/test/resources/freertos/recmutex_rv32i.hex
Normal file
2257
src/test/resources/freertos/recmutex_rv32i.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/recmutex_rv32im.elf
Normal file
BIN
src/test/resources/freertos/recmutex_rv32im.elf
Normal file
Binary file not shown.
2184
src/test/resources/freertos/recmutex_rv32im.hex
Normal file
2184
src/test/resources/freertos/recmutex_rv32im.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/semtest_rv32i.elf
Normal file
BIN
src/test/resources/freertos/semtest_rv32i.elf
Normal file
Binary file not shown.
2233
src/test/resources/freertos/semtest_rv32i.hex
Normal file
2233
src/test/resources/freertos/semtest_rv32i.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/semtest_rv32im.elf
Normal file
BIN
src/test/resources/freertos/semtest_rv32im.elf
Normal file
Binary file not shown.
2160
src/test/resources/freertos/semtest_rv32im.hex
Normal file
2160
src/test/resources/freertos/semtest_rv32im.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/sp_flop_rv32i.elf
Normal file
BIN
src/test/resources/freertos/sp_flop_rv32i.elf
Normal file
Binary file not shown.
2609
src/test/resources/freertos/sp_flop_rv32i.hex
Normal file
2609
src/test/resources/freertos/sp_flop_rv32i.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/sp_flop_rv32im.elf
Normal file
BIN
src/test/resources/freertos/sp_flop_rv32im.elf
Normal file
Binary file not shown.
2525
src/test/resources/freertos/sp_flop_rv32im.hex
Normal file
2525
src/test/resources/freertos/sp_flop_rv32im.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/test1_rv32i.elf
Normal file
BIN
src/test/resources/freertos/test1_rv32i.elf
Normal file
Binary file not shown.
2481
src/test/resources/freertos/test1_rv32i.hex
Normal file
2481
src/test/resources/freertos/test1_rv32i.hex
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/test/resources/freertos/test1_rv32im.elf
Normal file
BIN
src/test/resources/freertos/test1_rv32im.elf
Normal file
Binary file not shown.
2408
src/test/resources/freertos/test1_rv32im.hex
Normal file
2408
src/test/resources/freertos/test1_rv32im.hex
Normal file
File diff suppressed because it is too large
Load diff
3512
src/test/resources/hex/dhrystoneO3M_old.hex
Normal file
3512
src/test/resources/hex/dhrystoneO3M_old.hex
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue