<feed xmlns='http://www.w3.org/2005/Atom'>
<title>freedom-e-sdk/software/dhrystone/Makefile, branch useTimerIRQ</title>
<subtitle>my bad beginner RISC-V assembly LED blinking code.</subtitle>
<link rel='alternate' type='text/html' href='https://sillymon.ch/cgit/freedom-e-sdk/'/>
<entry>
<title>Update examples to pickup licenses</title>
<updated>2019-05-30T02:19:33+00:00</updated>
<author>
<name>Bunnaroath Sou</name>
<email>bsou@sifive.com</email>
</author>
<published>2019-05-30T02:19:33+00:00</published>
<link rel='alternate' type='text/html' href='https://sillymon.ch/cgit/freedom-e-sdk/commit/?id=6b5388d3950b2d2293c44ce35cf2772919b8af90'/>
<id>6b5388d3950b2d2293c44ce35cf2772919b8af90</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Setup default options for dhrystone release.</title>
<updated>2019-05-23T02:58:17+00:00</updated>
<author>
<name>Hsiang-Chia.Huang</name>
<email>hsiangchiah@sifive.com</email>
</author>
<published>2019-05-22T07:37:14+00:00</published>
<link rel='alternate' type='text/html' href='https://sillymon.ch/cgit/freedom-e-sdk/commit/?id=7817c5e85cb6f9f6d5b98f6702fa4b7d1fb99e02'/>
<id>7817c5e85cb6f9f6d5b98f6702fa4b7d1fb99e02</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Update Dhrystone and metal to remove nano &amp; pick memory.h</title>
<updated>2019-04-30T17:20:23+00:00</updated>
<author>
<name>Bunnaroath Sou</name>
<email>bsou@sifive.com</email>
</author>
<published>2019-04-29T18:02:31+00:00</published>
<link rel='alternate' type='text/html' href='https://sillymon.ch/cgit/freedom-e-sdk/commit/?id=1741292e512bc0659f7c7434ff056c7426758a4c'/>
<id>1741292e512bc0659f7c7434ff056c7426758a4c</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Making dhrystone public</title>
<updated>2019-03-26T22:13:59+00:00</updated>
<author>
<name>Bunnaroath Sou</name>
<email>bsou@sifive.com</email>
</author>
<published>2019-03-26T19:07:46+00:00</published>
<link rel='alternate' type='text/html' href='https://sillymon.ch/cgit/freedom-e-sdk/commit/?id=96f7c530cc7ec894ed8c326a47dc496fb7b9c35f'/>
<id>96f7c530cc7ec894ed8c326a47dc496fb7b9c35f</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove legacy examples</title>
<updated>2019-03-07T17:29:05+00:00</updated>
<author>
<name>Nathaniel Graff</name>
<email>nathaniel.graff@sifive.com</email>
</author>
<published>2019-03-07T17:29:05+00:00</published>
<link rel='alternate' type='text/html' href='https://sillymon.ch/cgit/freedom-e-sdk/commit/?id=d9c3fba928162e7a89349f8b160eb479ad41cbea'/>
<id>d9c3fba928162e7a89349f8b160eb479ad41cbea</id>
<content type='text'>
Signed-off-by: Nathaniel Graff &lt;nathaniel.graff@sifive.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signed-off-by: Nathaniel Graff &lt;nathaniel.graff@sifive.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Speed up Dhrystone on the HiFive1</title>
<updated>2017-11-17T23:24:01+00:00</updated>
<author>
<name>Palmer Dabbelt</name>
<email>palmer@dabbelt.com</email>
</author>
<published>2017-11-17T20:14:52+00:00</published>
<link rel='alternate' type='text/html' href='https://sillymon.ch/cgit/freedom-e-sdk/commit/?id=401b704e73599a36bfdc8c778dab85f94d74ed1d'/>
<id>401b704e73599a36bfdc8c778dab85f94d74ed1d</id>
<content type='text'>
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-&gt;
  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-&gt;
  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.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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-&gt;
  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-&gt;
  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.
</pre>
</div>
</content>
</entry>
<entry>
<title>Update SDK For E31/E51 Coreplex IP Evaluation</title>
<updated>2017-05-04T12:46:05+00:00</updated>
<author>
<name>Megan Wachs</name>
<email>megan@sifive.com</email>
</author>
<published>2017-05-04T12:46:05+00:00</published>
<link rel='alternate' type='text/html' href='https://sillymon.ch/cgit/freedom-e-sdk/commit/?id=4d5cbec9118cbedf2d4ae5b54acaa22862245a4c'/>
<id>4d5cbec9118cbedf2d4ae5b54acaa22862245a4c</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Compile Dhrystone without RVC</title>
<updated>2017-01-04T02:53:37+00:00</updated>
<author>
<name>Andrew Waterman</name>
<email>andrew@sifive.com</email>
</author>
<published>2017-01-04T01:58:18+00:00</published>
<link rel='alternate' type='text/html' href='https://sillymon.ch/cgit/freedom-e-sdk/commit/?id=628d2b3559be5e9e651801d289a075d68df820e8'/>
<id>628d2b3559be5e9e651801d289a075d68df820e8</id>
<content type='text'>
Branch target misalignment reduces performance by about 10%.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Branch target misalignment reduces performance by about 10%.
</pre>
</div>
</content>
</entry>
<entry>
<title>Refactor libc stubs into libwrap</title>
<updated>2016-12-14T20:23:40+00:00</updated>
<author>
<name>Albert Ou</name>
<email>albert@sifive.com</email>
</author>
<published>2016-12-13T23:05:19+00:00</published>
<link rel='alternate' type='text/html' href='https://sillymon.ch/cgit/freedom-e-sdk/commit/?id=3dbaad0a1f27b96462541e1189efe37ffa913e9a'/>
<id>3dbaad0a1f27b96462541e1189efe37ffa913e9a</id>
<content type='text'>
The --wrap feature of GNU ld supports a cleaner framework for linking in
alternative implementations of libc functions without cpp hacks.
Place wrappers in separate object files to reduce static code size.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The --wrap feature of GNU ld supports a cleaner framework for linking in
alternative implementations of libc functions without cpp hacks.
Place wrappers in separate object files to reduce static code size.
</pre>
</div>
</content>
</entry>
<entry>
<title>Bump Everything to Match new Freedom Repo (#8)</title>
<updated>2016-11-30T18:55:18+00:00</updated>
<author>
<name>Megan Wachs</name>
<email>megan@sifive.com</email>
</author>
<published>2016-11-30T18:55:18+00:00</published>
<link rel='alternate' type='text/html' href='https://sillymon.ch/cgit/freedom-e-sdk/commit/?id=ae5f878d6acadabaa671a7a30b87e16eb1d718a7'/>
<id>ae5f878d6acadabaa671a7a30b87e16eb1d718a7</id>
<content type='text'>
* Bump tool versions

* Use version of OpenOCD which can load programs into flash

* Bump OpenOCD to Handle ISSI Flash Programming

* Update Header files

* add initial support for hifive1

* add dhrystone

* add clock helper functions

* add openocd cfg file

* Demo_GPIO checkpoint -- compiles and runs but no blinky LEDs

* Remove riscv-tests submodule

* Remove FPGA files, as they are no longer relevant to this Repository

* Add openocd_upload script

* Add Pinmux Mappings

Adding the pinmux mappings to the Platform Header

* Add IOF Mappings to platform header

* Re-order the IOF Mapping declarations

* Add more useful things to platform headers

* Get GPIO Demo working again (except interrupts aren't working)

* Update README with more OS packages needed

A bare ubuntu-16.04.1-server installation could not run `make tools`
without these packages.

* bump openocd to get SCKDIV fix

* Remove duplicated help text for run_debug target

* Add package to README that is needed for openocd build

Without this package I was seeing two different failures like below
when running `make tools`.

/home/scottj/freedom-e-sdk/openocd/configure: line 4533: syntax error near unexpected token `0.23'
/home/scottj/freedom-e-sdk/openocd/configure: line 4533: `PKG_PROG_PKG_CONFIG(0.23)'
Makefile:70: recipe for target '/home/scottj/freedom-e-sdk/toolchain/bin/openocd' failed
make: *** [/home/scottj/freedom-e-sdk/toolchain/bin/openocd] Error 2

... or ...

+ autoconf
configure.ac:12: error: possibly undefined macro: AC_MSG_WARN
      If this token and others are legitimate, please use m4_pattern_allow.
      See the Autoconf documentation.
configure.ac:240: error: possibly undefined macro: AC_MSG_NOTICE
configure.ac:342: error: possibly undefined macro: AC_DEFINE
Makefile:70: recipe for target '/home/scottj/freedom-e-sdk/toolchain/bin/openocd' failed
make: *** [/home/scottj/freedom-e-sdk/toolchain/bin/openocd] Error 1

* Bump OpenOCD to not overwrite SCKDIV when flashing

* Roll back CoreMark
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Bump tool versions

* Use version of OpenOCD which can load programs into flash

* Bump OpenOCD to Handle ISSI Flash Programming

* Update Header files

* add initial support for hifive1

* add dhrystone

* add clock helper functions

* add openocd cfg file

* Demo_GPIO checkpoint -- compiles and runs but no blinky LEDs

* Remove riscv-tests submodule

* Remove FPGA files, as they are no longer relevant to this Repository

* Add openocd_upload script

* Add Pinmux Mappings

Adding the pinmux mappings to the Platform Header

* Add IOF Mappings to platform header

* Re-order the IOF Mapping declarations

* Add more useful things to platform headers

* Get GPIO Demo working again (except interrupts aren't working)

* Update README with more OS packages needed

A bare ubuntu-16.04.1-server installation could not run `make tools`
without these packages.

* bump openocd to get SCKDIV fix

* Remove duplicated help text for run_debug target

* Add package to README that is needed for openocd build

Without this package I was seeing two different failures like below
when running `make tools`.

/home/scottj/freedom-e-sdk/openocd/configure: line 4533: syntax error near unexpected token `0.23'
/home/scottj/freedom-e-sdk/openocd/configure: line 4533: `PKG_PROG_PKG_CONFIG(0.23)'
Makefile:70: recipe for target '/home/scottj/freedom-e-sdk/toolchain/bin/openocd' failed
make: *** [/home/scottj/freedom-e-sdk/toolchain/bin/openocd] Error 2

... or ...

+ autoconf
configure.ac:12: error: possibly undefined macro: AC_MSG_WARN
      If this token and others are legitimate, please use m4_pattern_allow.
      See the Autoconf documentation.
configure.ac:240: error: possibly undefined macro: AC_MSG_NOTICE
configure.ac:342: error: possibly undefined macro: AC_DEFINE
Makefile:70: recipe for target '/home/scottj/freedom-e-sdk/toolchain/bin/openocd' failed
make: *** [/home/scottj/freedom-e-sdk/toolchain/bin/openocd] Error 1

* Bump OpenOCD to not overwrite SCKDIV when flashing

* Roll back CoreMark
</pre>
</div>
</content>
</entry>
</feed>
