Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Hang After "Liftoff" line while loading firmware.bin #12

Open
gayathri191855 opened this issue May 21, 2022 · 11 comments · May be fixed by #18
Open

Hang After "Liftoff" line while loading firmware.bin #12

gayathri191855 opened this issue May 21, 2022 · 11 comments · May be fixed by #18

Comments

@gayathri191855
Copy link

The bit stream was loaded on to the board and it was hang at Liftoff while loading firmware to the board with the command ("litex_term /dev/ttyUSB1 --kernel=firmware.bin"). Here I'm using nexys4ddr board.

    __   _ __      _  __
   / /  (_) /____ | |/_/
  / /__/ / __/ -_)>  <
 /____/_/\__/\__/_/|_|

Build your hardware, easily!

(c) Copyright 2012-2021 Enjoy-Digital
(c) Copyright 2007-2015 M-Labs

BIOS built on May 19 2022 15:53:24
BIOS CRC passed (dbfbcbc7)

Migen git sha1: ac70301
LiteX git sha1: d36e1b60

--=============== SoC ==================--
CPU: VexRiscv @ 100MHz
BUS: WISHBONE 32-bit @ 4GiB
CSR: 32-bit data
ROM: 32KiB
SRAM: 8KiB
MAIN-RAM: 16KiB

--============== Boot ==================--
Booting from serial...
Press Q or ESC to abort boot completely.
sL5DdSMmkekro
[LXTERM] Received firmware download request from the device.
[LXTERM] Uploading firmware.bin to 0x40000000 (3580 bytes)...
[LXTERM] Upload calibration... (inter-frame: 10.00us, length: 64)
[LXTERM] Upload complete (9.8KB/s).
[LXTERM] Booting the device.
[LXTERM] Done.
Executing booted program at 0x40000000

--============= Liftoff! ===============--

what am I doing wrong?
Is nexys4ddr board supported for https://github.com/litex-hub/fpga_101/tree/master/lab004 ??

Thanks!!!

@Clay-Cui
Copy link

Could you type anything in the terminal then? Like help? And is your main.c untouched?

@gayathri191855
Copy link
Author

No, I couldn't able to type anything on the terminal

@gayathri191855
Copy link
Author

I used make tool to build the target 'all' in the makefile and source code main.c will be processed and main.d, main.o was generated.

@Clay-Cui
Copy link

I had similar issue when I first tried. I know it would be frustrating.
In the main.c, is there a function called console service in a while(1) loop or something like that? And in your base.py which you generate the bitstream, does the soc has a reset signal? If so, what would happen when you pressed the reset button?

@enjoy-digital
Copy link
Member

Hi,

can you try to apply similar changes than in https://github.com/enjoy-digital/litex/pull/1259/files? If working we'll probably just disable LTO until someone has more time to have a closer look.

@gayathri191855
Copy link
Author

When I press reset button on the board it will display as

nexys4ddr board.

__ _ __ _ __ / / () /___ | |// / /__/ / __/ -)> < ///_/_//|_|

Build your hardware, easily!

(c) Copyright 2012-2021 Enjoy-Digital
(c) Copyright 2007-2015 M-Labs

BIOS built on May 19 2022 15:53:24
BIOS CRC passed (dbfbcbc7)

Migen git sha1: ac70301
LiteX git sha1: d36e1b60

--=============== SoC ==================--
CPU: VexRiscv @ 100MHz
BUS: WISHBONE 32-bit @ 4GiB
CSR: 32-bit data
ROM: 32KiB
SRAM: 8KiB
MAIN-RAM: 16KiB

--============== Boot ==================--
Booting from serial...
Press Q or ESC to abort boot completely.
sL5DdSMmkekro
[LXTERM] Received firmware download request from the device.
[LXTERM] Uploading firmware.bin to 0x40000000 (3580 bytes)...
[LXTERM] Upload calibration... (inter-frame: 10.00us, length: 64)
[LXTERM] Upload complete (9.8KB/s).
[LXTERM] Booting the device.
[LXTERM] Done.
Executing booted program at 0x40000000

--============= Liftoff! ===============--

I was unable to type anything here

@gayathri191855
Copy link
Author

Thank you very much for your reply!

In main.c, there is main function which contains console_service function in while loop(1).

int main(void)
{
#ifdef CONFIG_CPU_HAS_INTERRUPT
irq_setmask(0);
irq_setie(1);
#endif
uart_init();
puts("\nLab004 - CPU testing software built "DATE" "TIME"\n");
help();
prompt();
while(1) {
console_service();
}
return 0;
}

and I didn't make any changes in the main.c

how should I resolve this problem?

Thanks!!!

@Clay-Cui
Copy link

Hi, do you see something like this when make the main.c?
warning: cannot find entry symbol _start; defaulting to 0000000000000000

If that's the case, you may have to change to the makefile to an older version on the git. I guess it's something to do with the crt0.S/o file. I also messed this up sometime ago.

@gayathri191855
Copy link
Author

Hi, when I do make all in the firmware directory,

CC main.o
CC firmware.elf
/usr/lib/riscv64-unknown-elf/bin/ld: warning: cannot find entry symbol _start; defaulting to 0000000040000000
chmod -x firmware.elf
OBJCOPY firmware.bin
chmod -x firmware.bin

do I need to make changes in crt.o file? what are the changes?

@Clay-Cui
Copy link

Clay-Cui commented May 24, 2022

Hi, I got the similar output before. Try to change the makefile to this
It seems that it could not find the right start instruction address. So the whole bin was not executed. However, I see yours was already default to the right address 0x40000000. I don't know what cause the error then, but you can change the makefile and eliminate the warning and then try.

@gayathri191855
Copy link
Author

Thank you so much for your reply. Lab004 is working when I made the changes in makefile.

jeremyschlatter added a commit to jeremyschlatter/fpga_101 that referenced this issue Jul 14, 2024
Fixes two separate issues that were keeping lab004 from working.

The first is a minor but important oversight from litex-hub/fpga_101@b36c77a:
It added a definition for crt0.o but then didn't refer to it anywhere,
effectively removing crt0.o from the build.

That was likely the cause of litex-hub/fpga_101#12.

The second issue I don't understand as well, but seems to be exactly the
same as enjoy-digital/litex#1007, from which I
copied the fix.
@jeremyschlatter jeremyschlatter linked a pull request Jul 14, 2024 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants