Age | Commit message (Collapse) | Author |
|
|
|
Signed-off-by: Nathaniel Graff <nathaniel.graff@sifive.com>
|
|
Add an ITIM example
|
|
|
|
MacOS ls requires flags to appear before file arguments.
Signed-off-by: Nathaniel Graff <nathaniel.graff@sifive.com>
|
|
Signed-off-by: Nathaniel Graff <nathaniel.graff@sifive.com>
|
|
Signed-off-by: Nathaniel Graff <nathaniel.graff@sifive.com>
|
|
Signed-off-by: Nathaniel Graff <nathaniel.graff@sifive.com>
|
|
The serial device needs a clock in the DTS to initialize.
Signed-off-by: Nathaniel Graff <nathaniel.graff@sifive.com>
|
|
Add script for updating MEE BSPs
|
|
Signed-off-by: Nathaniel Graff <nathaniel.graff@sifive.com>
|
|
I must have been too tired last night...
Signed-off-by: Palmer Dabbelt <palmer@sifive.com>
|
|
This just calls elf2hex on the compiled elf files, producing a hex file
that can be fed into RTL simulation.
Signed-off-by: Palmer Dabbelt <palmer@sifive.com>
|
|
Signed-off-by: Nathaniel Graff <nathaniel.graff@sifive.com>
|
|
Signed-off-by: Nathaniel Graff <nathaniel.graff@sifive.com>
|
|
Signed-off-by: Nathaniel Graff <nathaniel.graff@sifive.com>
|
|
Signed-off-by: Nathaniel Graff <nathaniel.graff@sifive.com>
|
|
Signed-off-by: Nathaniel Graff <nathaniel.graff@sifive.com>
|
|
Signed-off-by: Nathaniel Graff <nathaniel.graff@sifive.com>
|
|
E300 Arty: Don't specify the expected ID
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This example is fairly simple, but it does at least demonstrate how to
use a C-based preemptable interrupt handler that's been registered in
CLIC mode on a SiFive E21.
|
|
|
|
|
|
|
|
I'm not sure what the policy actaully is here, but some newlib functions
now have an extra underscore before them. This defines a bunch of
aliases and some more wrappers to link against the correct newlib
functions for 2.5.0 but maintain compatibility with 2.4.0.
|
|
|
|
|
|
|
|
The e31's init.c calls puts intsead of printf, which oddly enough is a
lot bigger: since we wrap printf, puts pulls in a lot of newlib. This
adds a wrapped puts so it's very small.
|
|
There's a handful of things that went wrong here:
* The read-only data sections were mapped to flash, which is very slow.
I just put them in the data segment, so they end up in the scratchpad.
This is about a 10x hit, so it's really important.
* The toolchain was an old version, which didn't have a fast memcpy
implementation on 32-bit systems. This is about a 2x hit.
* Some compiler flags were incorrect, including
* -Os instead of -O3
* Missing -mexplicit-relocs
* Missing -DNOENUM
* Missing -falign-functions=4
I haven't checked how much those hurt
With this, I get
$ make software BOARD=freedom-e300-hifive1 PROGRAM=dhrystone LINK_TARGET=dhrystone
$ make upload BOARD=freedom-e300-hifive1 PROGRAM=dhrystone LINK_TARGET=dhrystone
Execution starts, 10000000 runs through Dhrystone
Execution ends
Final values of the variables used in the benchmark:
Int_Glob: 5
should be: 5
Bool_Glob: 1
should be: 1
Ch_1_Glob: A
should be: A
Ch_2_Glob: B
should be: B
Arr_1_Glob[8]: 7
should be: 7
Arr_2_Glob[8][7]: 10000010
should be: Number_Of_Runs + 10
Ptr_Glob->
Ptr_Comp: -2147470264
should be: (implementation-dependent)
Discr: 0
should be: 0
Enum_Comp: 2
should be: 2
Int_Comp: 17
should be: 17
Str_Comp: DHRYSTONE PROGRAM, SOME STRING
should be: DHRYSTONE PROGRAM, SOME STRING
Next_Ptr_Glob->
Ptr_Comp: -2147470264
should be: (implementation-dependent), same as above
Discr: 0
should be: 0
Enum_Comp: 1
should be: 1
Int_Comp: 18
should be: 18
Str_Comp: DHRYSTONE PROGRAM, SOME STRING
should be: DHRYSTONE PROGRAM, SOME STRING
Int_1_Loc: 5
should be: 5
Int_2_Loc: 13
should be: 13
Int_3_Loc: 7
should be: 7
Enum_Loc: 1
should be: 1
Str_1_Loc: DHRYSTONE PROGRAM, 1'ST STRING
should be: DHRYSTONE PROGRAM, 1'ST STRING
Str_2_Loc: DHRYSTONE PROGRAM, 2'ND STRING
should be: DHRYSTONE PROGRAM, 2'ND STRING
Microseconds for one run through Dhrystone: 1.3
Dhrystones per Second: 714285.6
which is 1.55 DMIPS/MHz at 262 MHz. It's still a bit slower than our
current stuff, but I don't remember what was actually in the HiFive1 so
I'm not sure what we should be getting. I verified the clock is
accurate with a stopwatch. I haven't bothered to go look through the
binary, but I think we're about 10 cycles off so it should be managable.
|
|
SPIFlash controller is. This allows it to work for newer versions of the E300 Arty Dev Kit as well.
|
|
|
|
|
|
|
|
registers
|
|
|
|
|
|
This just prints "hello world" on two cores. It contains an example of
how to initialize a multi-core system using IPIs, and a simple spin
lock.
|