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.
|
|
printf doesn't fit in the scratchpad, but since there's really no reason
to call it on constant strings it can be replaced with puts. With this
change, the "hello" example fits in the scratchpad.
|