# Uploaded Code is Not Being Implemented to HiFive Rev B Controller Properly

**URL:** <https://forums.sifive.com/t/uploaded-code-is-not-being-implemented-to-hifive-rev-b-controller-properly/4627>\
**Category:** HiFive1 Rev B\
**Created:** [April 17, 2021, 7:42pm UTC](https://forums.sifive.com/t/uploaded-code-is-not-being-implemented-to-hifive-rev-b-controller-properly/4627 "2021-04-17T19:42:58Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![goodsnacks](https://avatars.discourse-cdn.com/v4/letter/g/278dde/32.png) [@goodsnacks](https://forums.sifive.com/u/goodsnacks)\
**Post date:** [April 17, 2021, 7:42pm UTC](https://forums.sifive.com/t/uploaded-code-is-not-being-implemented-to-hifive-rev-b-controller-properly/4627/1 "2021-04-17T19:42:58Z")

</div>

To whom it may concern,

I am using the HiFive Rev B Controller as a main component in a Lab Course, so I have been trying to solve this issue day in and day out. I am running projects in PlatformIO with JLink and my programs are in C. My first two projects worked nice, but while I was working on my next project, I accidentally got the board into “bootloader mode” or a specific mode by accidentally pressing a series of RESET and WAKE buttons, believing that I was resetting the board. However, I should have known that this was not a good idea. I uploaded my project code into the board during this time, and it seems that the board is reading locations wrongly and my JLink won’t even recognize the FE310. I have pasted below the readings of the upload. So far, no matter what, I cannot get my controller to recognize my GPIO assignments for this project and only remembers the last pin’s settings. I also realized that if I upload my code (which is supposed to simulate a simple red, yellow, and green LED annunciator), and then unplug my HiFive Board, it will reset for about 1-2 seconds and illuminate my LED’s, but then they turn off and the board refuses to do anything. My previous projects will not work now.

I wish to reset my HiFive Rev B Board to it’s factory default state. Is this possible and can anyone assist me with this. I would need decently detailed steps, since this is my first experience with programming and controllers. I am using Windows 10, Visual Studio Code, PlatformIO, with a HiFive Rev B (FE310) Board.

**Terminal After Upload**

Executing task in folder Lab3 Redo: C:\Users\Kyle.platformio\penv\Scripts\platformio.exe run --target upload --environment hifive1-revb

Processing hifive1-revb (platform: sifive; board: hifive1-revb; framework: freedom-e-sdk)

* * *

Verbose mode can be enabled via `-v, --verbose` option  
CONFIGURATION: [https://docs.platformio.org/page/boards/sifive/hifive1-revb.html](https://docs.platformio.org/page/boards/sifive/hifive1-revb.html)  
PLATFORM: SiFive (4.0.0) \> HiFive1 Rev B  
HARDWARE: FE310 320MHz, 16KB RAM, 16MB Flash  
DEBUG: Current (jlink) On-board (jlink, renode)  
PACKAGES:

- framework-freedom-e-sdk 2.20050003.200818 (2005.0.3)
- tool-jlink 1.68801.0 (6.88.1)
- tool-openocd-riscv 2.1000.20190927 (10.0)
- toolchain-riscv 1.80300.190927 (8.3.0)  
LDF: Library Dependency Finder → [http://bit.ly/configure-pio-ldf](http://bit.ly/configure-pio-ldf)  
LDF Modes: Finder ~ chain, Compatibility ~ soft  
Found 0 compatible libraries  
Scanning dependencies…  
No dependencies  
Building in release mode  
Checking size .pio\build\hifive1-revb\firmware.elf  
Advanced Memory Usage is available via “PlatformIO Home \> Project Inspect”  
RAM: [===] 27.2% (used 4460 bytes from 16384 bytes)  
Flash: [] 0.1% (used 11150 bytes from 16777216 bytes)  
Configuring upload protocol…  
AVAILABLE: jlink  
CURRENT: upload\_protocol = jlink  
Uploading .pio\build\hifive1-revb\firmware.hex  
SEGGER J-Link Commander V6.88b (Compiled Nov 27 2020 15:45:43)  
DLL version V6.88b, compiled Nov 27 2020 15:44:11

J-Link Command File read successfully.  
Processing script file…

J-Link connection not established yet but required for command.  
Connecting to J-Link via USB…O.K.  
Firmware: J-Link OB-K22-SiFive compiled Mar 3 2021 14:13:05  
Hardware version: V1.00  
S/N: 979014988  
VTref=3.300V  
Target connection not established yet but required for command.  
Device “FE310” selected.

Connecting to target via JTAG  
ConfigTargetSettings() start  
ConfigTargetSettings() end  
TotalIRLen = 5, IRPrint = 0x01  
JTAG chain detection found 1 devices:  
#0 Id: 0x20000913, IRLen: 05, Unknown device  
Debug architecture:  
RISC-V debug: 0.13  
AddrBits: 7  
DataBits: 32  
IdleClks: 5  
Memory access:  
Via system bus: No  
Via ProgBuf: Yes (16 ProgBuf entries)  
DataBuf: 1 entries  
autoexec[0] implemented: Yes  
Detected: RV32 core  
CSR access via abs. commands: No  
Temp. halted CPU for NumHWBP detection  
HW instruction/data BPs: 8  
Support set/clr BPs while running: No  
HW data BPs trigger before execution of inst  
RISC-V identified.  
pc = 20010D46 sp = 80000940 ra = 20010D24  
gp = 80000C88 tp = 800004D0 fp = 00000800  
t0 = 0200BFF8 t1 = 05ADFECC t2 = 05AE0849  
t3 = 00000000 t4 = 00000000 t5 = 00000000 t6 = 00000000  
a0 = 000000C8 a1 = 00000001 a2 = 20010314 a3 = FFFFFFFF  
a4 = 00200000 a5 = 00000000 a6 = 0000001F a7 = 00000000  
s1 = 02000080 s2 = 02000080 s3 = 00000000 s4 = 00000000  
s5 = 00000000 s6 = 00000000 s7 = 00000000 s8 = 00000000  
s9 = 00000000 s10 = 00000000 s11 = 00000000

Downloading file [.pio\build\hifive1-revb\firmware.hex]…  
Comparing flash [100%] Done.  
J-Link: Flash download: Bank 0 @ 0x20000000: Skipped. Contents already match  
O.K.

Reset delay: 0 ms  
Reset type Normal: Resets core & peripherals using bit in debug register.  
RISC-V: Performing reset via

Script processing completed.

==================================================================== [SUCCESS] Took 5.63 seconds ====================================================================

Terminal will be reused by tasks, press any key to close it.

---

<div class="post-metadata">

**Author:** ![RalphF](https://avatars.discourse-cdn.com/v4/letter/r/d26b3c/32.png) [@RalphF](https://forums.sifive.com/u/RalphF)\
**Post date:** [April 19, 2021, 3:26pm UTC](https://forums.sifive.com/t/uploaded-code-is-not-being-implemented-to-hifive-rev-b-controller-properly/4627/2 "2021-04-19T15:26:26Z")

</div>

Hi Kyle,

There is a recovery procedure described in Section 9.1 of the Getting Started Guide:

- [https://sifive.cdn.prismic.io/sifive/cf239fd0-ae4f-4fd8-a944-fdafb5018153\_hifive1b-getting-started-guide\_v1.2.pdf](https://sifive.cdn.prismic.io/sifive/cf239fd0-ae4f-4fd8-a944-fdafb5018153_hifive1b-getting-started-guide_v1.2.pdf)

From what you describe, we think if you program a working hex file to the board this should make your board operational again.

Please let us know if it resolves the problem.

Regards,  
Ralph

---

<div class="post-metadata">

**Author:** ![goodsnacks](https://avatars.discourse-cdn.com/v4/letter/g/278dde/32.png) [@goodsnacks](https://forums.sifive.com/u/goodsnacks)\
**Post date:** [April 19, 2021, 6:08pm UTC](https://forums.sifive.com/t/uploaded-code-is-not-being-implemented-to-hifive-rev-b-controller-properly/4627/3 "2021-04-19T18:08:34Z")

</div>

Thank you for your time and assistance! I understand everything up to when I am in boot mode. I am not really quite sure what you mean by “program a working hex file to the board”, are you able to provide some details on how I may do this or what I need to learn to be able to do this?

---

<div class="post-metadata">

**Author:** ![RalphF](https://avatars.discourse-cdn.com/v4/letter/r/d26b3c/32.png) [@RalphF](https://forums.sifive.com/u/RalphF)\
**Post date:** [April 19, 2021, 8:54pm UTC](https://forums.sifive.com/t/uploaded-code-is-not-being-implemented-to-hifive-rev-b-controller-properly/4627/4 "2021-04-19T20:54:27Z")

</div>

Hi Kyle,

Sorry - we just meant to program it with the “drag and drop” capability. With the LED blinking red, do you see the board mounted in Windows as a drive? If so, you can just copy a working hex file (a previously built program that you know works) to the drive and it will program to the board.

Unfortunately I can’t attach a hex file in the forums. I see you aren’t using FreedomStudio, but if you were, a canned example like SiFiveWelcome should work. This prints a welcome message to the serial port and will rotate colors on the LED.

Regards,  
Ralph
