summaryrefslogtreecommitdiff
path: root/software
AgeCommit message (Collapse)Author
2018-07-05preemption support, csipid from button 2Drew Barbier
2018-07-05use new cspid instead of msipDrew Barbier
2018-07-05fix level calculationDrew Barbier
2018-07-04clic driver level and priority functionsDrew Barbier
2018-07-02short msi handlerDrew Barbier
2018-07-02update descriptionDrew Barbier
2018-07-02add busy wait and extra buttons/irqDrew Barbier
2018-07-02Delete clic_vectoredDrew Barbier
2018-07-02dont use pre-empt with buttonsDrew Barbier
2018-07-02e2 and clic startDrew Barbier
2018-06-29Add a CLIC interrupt examplePalmer Dabbelt
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.
2018-01-26asm only programDrew Barbier
2017-11-17Speed up Dhrystone on the HiFive1Palmer Dabbelt
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.
2017-08-15blacklisted watchdog program for coreplexip-e51-arty boardGleb Gagarin
2017-08-10added ecall to vectored irq exampleDrew Barbier
2017-08-07HiFive1 AON Watchdog exampleDrew Barbier
2017-07-26changed synch trap entry to match other vectorsDrew Barbier
2017-07-26removed bin file commited by accidentDrew Barbier
2017-07-26fixed commentsDrew Barbier
2017-07-25added vectored interrupt exampleDrew Barbier
2017-06-14led_fade doesn't build on the e300-artyPalmer Dabbelt
2017-06-14Add a SMP examplePalmer Dabbelt
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.
2017-06-14Call puts instead of printf when printing constantsPalmer Dabbelt
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.
2017-06-14New Freedom Studio Examples (#66)Megan Wachs
* examples ported to ilg build plugin * project cleanup * CoreplexIP-E31 ilg projects * E51FPGA ilg projects * Tested Debug * debug launch files * E31 Debug Launch Files * removed typo project * E51 launch files. Forgotten E31 File * Missing coreplexip files * examples ported to ilg build plugin * project cleanup * CoreplexIP-E31 ilg projects * E51FPGA ilg projects * Tested Debug * debug launch files * E31 Debug Launch Files * removed typo project * E51 launch files. Forgotten E31 File * Missing coreplexip files * starting fresh * HiFive1 demo_gpio and libwrap * hifive1 hello * debug launchers for hello and demo_gpio * hifive1 led_fade * led_fade: Since E300 Arty Dev Kit doesn't have a PRCI, the led_fade demo doesn't really work on it. * update include paths to ease generating stand-alone zips * Adding E51 Examples * E51 demo launch files * E31 Demos * E31 demo launch files
2017-06-13led_fade: make sure the HFROSC is running before you try to use it.mwachs5
2017-06-10We no longer define __riscv64, we define __riscv_xlen=64Palmer Dabbelt
2017-06-09Support the performance counters example on 32-bitPalmer Dabbelt
2017-06-09Mark more boards as unsupportedPalmer Dabbelt
2017-06-08Add a simple regression scriptPalmer Dabbelt
2017-05-05local_interrupts: fix typo in the instructionsMegan Wachs
2017-05-04Update SDK For E31/E51 Coreplex IP EvaluationMegan Wachs
2017-03-01led_fade: Add NO_INIT flag to keep default clock frequency and UART ↵Megan Wachs
configurations.
2017-03-01Add a 'performance counters' demo.Megan Wachs
2017-01-31Move plic_driver code to a common location.Megan Wachs
2017-01-24use relaxed memory model for bitbang demo to avoid unncessary fences in the ↵Megan Wachs
output
2017-01-24Add atomic bit-banging to the demoMegan Wachs
2017-01-24Use register macros instead of volatile addressesMegan Wachs
2017-01-11double_tap_dontboot: Clean up indentationmwachs5
2017-01-11Spaces, not tabs.mwachs5
2017-01-11Add the 'bootloader' which ships on HiFive1 Boards.mwachs5
2017-01-10Add the led_fade demo which ships on HiFive1 boardsmwachs5
2017-01-03Add CoreMark build skeletonAndrew Waterman
2017-01-03Compile Dhrystone without RVCAndrew Waterman
Branch target misalignment reduces performance by about 10%.
2017-01-03Regularize timing codeAndrew Waterman
Provide get_timer_value() and get_timer_freq() and use them. On Arty, they use mcycle and the known-fixed core frequency, whereas on HiFive1 they use mtime and the known-fixed mtime frequency.
2016-12-14Refactor libc stubs into libwrapAlbert Ou
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.
2016-12-13Correct ifdef guards for HiFive1 demo_gpioMegan Wachs
2016-12-09demo_gpio: Make the demo more interesting with interrupts that actually do ↵Megan Wachs
things.
2016-12-01Add missing file (#12)Megan Wachs
2016-11-30Bump Everything to Match new Freedom Repo (#8)Megan Wachs
* 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
2016-08-01Bump Tool versionsMegan Wachs
- Remove duplicate GDB - Update target name to freedom-e300