Hi Neil,
Apart from inlined answers below, job configuration and full log is attached.
On 04/12/2018 11:02, Neil Williams wrote:
On Tue, 4 Dec 2018 at 09:37, Andrejs Cainikovs Andrejs.Cainikovs@netmodule.com wrote:
Hi,
TWIMC: I got it working. However, I have noticed that last command in command sequence (at least for U-Boot) never waits for command prompt, so I had to update base-uboot.jinja2 to get past this issue.
Compare with : https://staging.validation.linaro.org/scheduler/job/245806
The last command issued to U-Boot should be boot and that is not expected to ever get to a U-Boot prompt. Yet LAVA does check for a U-Boot prompt occurring after that command, along with other failure indicators like Must RESET board to recover
You are, of course, right. I was not clear enough, and by last command I meant something else, which we can skip now. Obviously, my aim is to boot the DUT past the U-Boot into Linux, and then run some tests.
Please do more investigation on your end to work out if the problem is correctly fixed.
Now, when I'm looking at this patch which I prepared yesterday - I'm not sure whether it was indeed issue with last command in a sequence, or with `dhcp` command processing (there must be a reason why I moved `setenv serverip` to top, but I'm lazy to check. Just giving it back to community as it is in case someone will face something similar.
Please take the time to check. When vcu.jinja2 is properly debugged, a contribution to upstream (with supporting unit test) would be very welcome.
I have put some extra effort into debugging, and got working scenario without changing base-uboot.jinja2. I did this by setting `uboot_ipaddr_cmd` in device type template:
{% set uboot_ipaddr_cmd = 'sleep 5; setenv serverip {SERVER_IP}; dhcp' %}
However, I still realize this is a hack, and looking into the log I might be catching something:
- {"dt": "2018-12-04T12:47:23.731495", "lvl": "debug", "msg": "bootloader-commands: Wait for prompt ['=>', 'Resetting CPU', 'Must RESET board to recover', 'TIMEOUT', 'Retry count exceeded', 'ERROR: The remote end did not respond in time.', 'Retry time exceeded'] (timeout 00:04:56)"} - {"dt": "2018-12-04T12:47:23.746562", "lvl": "input", "msg": "sleep 5; setenv serverip 172.17.1.189; dhcp\n"} - {"dt": "2018-12-04T12:47:23.852418", "lvl": "target", "msg": "sleep 5; setenv serverip 172.17.1.189; dhcp"} - {"dt": "2018-12-04T12:47:23.857183", "lvl": "debug", "msg": "bootloader-commands: Wait for prompt ['=>', 'Resetting CPU', 'Must RESET board to recover', 'TIMEOUT', 'Retry count exceeded', 'ERROR: The remote end did not respond in time.', 'Retry time exceeded'] (timeout 00:04:56)"} - {"dt": "2018-12-04T12:47:23.862239", "lvl": "target", "msg": "setenv autoload no"} - {"dt": "2018-12-04T12:47:23.866570", "lvl": "input", "msg": "setenv serverip 172.17.1.189\n"}
It looks like prompt waiting is skipped in this particular block! Why?
https://master.lavasoftware.org/static/docs/v2/contribution-intro.html
Also, attaching updated device type config.
$ diff base-uboot.jinja2 base-uboot.jinja2.backup
19,21c19,20 < " - setenv serverip {SERVER_IP} < - " + uboot_ipaddr_cmd|default('dhcp') + "
< - sleep 1" ) -%}
" - " + uboot_ipaddr_cmd|default('dhcp') + " - setenv serverip {SERVER_IP}" ) -%}
This doesn't need a change to base-uboot.jinja2 - this can be done in the device-type which extends base-uboot.jinja2, supported by a unit test.
No, that's not true. `base_uboot_dhcp_command` variable from base-uboot.jinja2 is not overrideable by device type templates. Or did I missed something?
Best regards, Andrejs Cainikovs.
On 29/11/2018 16:38, Andrejs Cainikovs wrote:
Hi Neil,
On 29/11/2018 15:58, Neil Williams wrote:
On Thu, 29 Nov 2018 at 14:42, Andrejs Cainikovs Andrejs.Cainikovs@netmodule.com wrote:
Hi everyone,
I’m facing an issue when U-Boot commands are sent one after another
without waiting for a prompt. Obviously, device is not able to boot.
Excerpt from logs:
(Much better to attach the complete log as downloaded from the menu on the job detail page, it includes timestamps and other useful content.) I'm afraid the content you've pasted into your original doesn't help. Please attach the complete test job log file, don't paste it into the body of the email where it will be mangled.
Complete log attached.
What version of lava-server and lava-dispatcher are you running?
Latest from stretch-backports: 2018.11-1~bpo9+1
One thing would be to obtain a U-Boot device which is already available on staging.validation.linaro.org or another instance and known to be working, then borrow the config from that. If you have something like that available already, it'll make things easier.
Thanks for a hint, I'll have a look into this.
As you see, all commands that were sent between `dhcp` command and
until it was able to complete or fail are simply dropped.
Device type config:
{% extends 'base-uboot.jinja2' %}
{% set device_type = "vcu" %}
This line isn't required and a couple of other lines are the defaults.
{% set console_device = 'ttyS2' %}
{% set baud_rate = 115200 %}
{% set interrupt_prompt = 'Press s to abort autoboot' %}
{% set interrupt_char = 's' %}
{% set bootloader_prompt = '=>' %}
{% set uboot_mkimage_arch = 'arm' %}
{% set bootz_kernel_addr = '0x80000000' %}
{% set bootz_ramdisk_addr = '0x83000000' %}
{% set bootz_dtb_addr = '0x82000000' %}
{% set extra_kernel_args = 'ti_cpsw.rx_packet_max=1526' %}
{% set kernel_start_message = 'Welcome to' %}
Device config:
{% extends 'vcu.jinja2' %}
{% set connection_command = 'telnet lava-disp-1.local 7000' %}
{% set power_on_command = 'relay-ctrl --relay 1 --state on' %}
{% set power_off_command = 'relay-ctrl --relay 1 --state off' %}
{% set hard_reset_command = 'relay-ctrl --relay 1 --toggle' %}
Boot action block from job definition:
boot:
timeout:
minutes: 5
method: u-boot
commands: ramdisk
auto_login:
login_prompt: 'am335x-nmhw21 login: ' username: root
prompts:
- 'fct@am335x-nmhw21:~# '
Have I misconfigured something? What I’m missing? Thanks!