Community
cancel
Showing results for 
Search instead for 
Did you mean: 
RAtlu1
New Contributor II
3,047 Views

Invalid DFU Suffix Signature - Custom u-boot

Dear Admin

I have git cloned from git clone -b edison-v2015.10 https://github.com/01org/edison-u-boot.git

And I have modified edison.h to include the following

# define CONFIG_EXTRA_ENV_SETTINGS\"boot_edsboot=zboot 0x100000 0 0x800000 0x800000"\"bootargs_edsboot=console=tty1 console=ttyS2,115200n8 vmlinuz modules=loop,squashfs,sd-mod,usb-storage modloop=modloop-edison"\"bootcmd=setenv bootargs ${bootargs_edsboot}; run load_edsboot; run boot_edsboot"\"load_edsboot=load mmc 0:9 0x100000 vmlinuz; load mmc 0:9 0x800000 initramfs-edison"\

However when i am trying to flash the compiled u-boot-edison.bin I get the following.

Download[======================== ] 96% 323584 bytesInvalid DFU suffix signature

Please help as to how to get it working? We are close to releasing another Operating System for Edison

12 Replies
idata
Community Manager
139 Views

Hi,

 

 

Is this the full error log you're receiving, if not, please post the complete log. In the meantime look at this link https://community.particle.io/t/problem-with-flashing-firmware-solved/3514/17 https://community.particle.io/t/problem-with-flashing-firmware-solved/3514/17 it has a suggestion who faced a similar issue to yours.

 

Additionally, you can also check https://gist.github.com/fboris/a72d5f6eae656beea5c1 https://gist.github.com/fboris/a72d5f6eae656beea5c1 and http://wiki.openmoko.org/wiki/Manuals/dfu-util http://wiki.openmoko.org/wiki/Manuals/dfu-util

 

 

Let me know your results.

 

 

Sergio

 

RAtlu1
New Contributor II
139 Views

Dear Sergio

Here is the pastebin of log

paste.ubuntu.com/16725860/

The interesting part is that it works fine with normal u-boot. I will try your suggestions.

idata
Community Manager
139 Views

We'll be waiting for your results.

 

 

Sergio

 

RAtlu1
New Contributor II
139 Views

Sergio

Finally went the yocto route and testing a u-boot. These are what I am trying....

setenv bootargs vmlinuz modules=loop,squashfs,sd-mod,usb-storage initrd=0x800000,8M initrd=initramfs-edison modloop=modloop-edison initcall_debug=0 console=ttyMFD2 earlyprintk=ttyMFD2,keep loglevel=4 g_multi.ethernet_config=rndis systemd.unit=multi-user.target hardware_id=00 g_multi.iSerialNumber=b33f335811680145fdc309c8f189130c g_multi.dev_addr=02:00:86:89:13:0c platform_mrfld_audio.audio_codec=dummy

fatload mmc 0:6 0x100000 vmlinuz

fatload mmc 0:6 0x800000 initramfs-edison

zboot 0x100000 0 0x800000

And this is my error

Starting kernel ...

[ 0.801071] pca953x 1-0020: failed reading register

[ 0.806134] pca953x 1-0021: failed reading register

[ 0.811207] pca953x 1-0022: failed reading register

[ 0.816221] pca953x 1-0023: failed reading register

[ 1.554771] snd_soc_sst_platform: Enter:sst_soc_probe

[ 2.041869] pmic_ccsm pmic_ccsm: Error reading battery profile from battid frmwrk

[ 2.050396] pmic_ccsm pmic_ccsm: Battery Over heat exception

[ 2.074591] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

[ 2.074682] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.10.98-poky-edison # 3

[ 2.074744] Hardware name: Intel Corporation Merrifield/BODEGA BAY, BIOS 542 2015.01.21:18.19.48

[ 2.074813] f6837f18 f6837f18 f6837ecc c18cf3d5 f6837eec c18caade c1acb930 c1d0c400

[ 2.074931] 00000000 f6837f18 00008001 f5865000 f6837f44 c1c5ce63 c1abd60c f6837f18

[ 2.075044] f6837f18 fffffffa 00000000 f58651a4 00000000 f76beca0 fffffffa 6e6b6e75

[ 2.075158] Call Trace:

[ 2.075214] [] dump_stack+0x16/0x18

[ 2.075269] [] panic+0x87/0x181

[ 2.075323] [] mount_block_root+0x1c6/0x230

[ 2.075385] [] ? SyS_mknod+0x2d/0x30

[ 2.075438] [] mount_root+0x5b/0x61

[ 2.075491] [] prepare_namespace+0x149/0x18d

[ 2.075550] [] ? SyS_access+0x25/0x30

[ 2.075604] [] kernel_init_freeable+0x1b0/0x1bd

[ 2.075663] [] ? do_early_param+0x78/0x78

[ 2.075720] [] kernel_init+0x10/0x140

[ 2.075776] [] ret_from_kernel_thread+0x1b/0x28

[ 2.075834] [] ? rest_init+0x80/0x80

I am closing to almost getting a working linux distro for Intel Edison. Any advise?

RAtlu1
New Contributor II
139 Views

Here is my env

audio_codec_name=audio_codec="dummy"

boot_target_cmd=run do_flash_os;run do_probe_dfu;run do_compute_target;run mmc-bootargs;run load_kernel;run load_initramfs;zboot ${loadaddr} ${loadaddr_ramfs}

bootargs_console=console=ttyMFD2 earlyprintk=ttyMFD2,keep

bootargs_debug=loglevel=4

bootargs_ethconfig=rndis

bootargs_target=multi-user

bootcmd=echo "Target:${target_name}"; run do_partition; run do_handle_bootargs_mode;

bootdelay=1

dfu_alt_info_ram=kernel ram ${loadaddr} 0x800000

dfu_alt_info_reset=reset ram 0x0 0x0

dfu_to_sec=3

do_audio_support=setenv audio_support platform_mrfld_audio.${audio_codec_name}

do_boot=run boot_target_cmd;

do_bootargs_rootfs=setenv bootargs_rootfs vmlinuz modules=loop,squashfs,sd-mod,usb-storage quiet nomodeset modloop=modloop-edison rootwait rootfstype=vfat ramdisk_size=50000

do_compute_target=if itest.b ${first_install_retry} -gt ${first_install_max_retries} || itest.b ${ota_update_retry} -gt ${ota_update_max_retries}; then echo "Switch to Rescue target"; setenv bootargs_target rescue; saveenv; fi

do_dfu_alt_info_ifwi=setenv dfu_alt_info "ifwi${hardware_id} mmc 0 8192 mmcpart 1;ifwib${hardware_id} mmc 0 8192 mmcpart 2"

do_dfu_alt_info_mmc=setenv dfu_alt_info "ifwi${hardware_id} mmc 0 8192 mmcpart 1;ifwib${hardware_id} mmc 0 8192 mmcpart 2;u-boot0 part 0 1;u-boot-env0 part 0 2;u-boot1 part 0 3;u-boot-env1 part 0 4;rootfs part 0 6;vmlinuz fat 0 6;initrd fat 0 6"

do_dnx=setenv dfu_alt_info ${dfu_alt_info_ram};dfu 0 ram 0 ram;run bootcmd

do_fallback=echo "Unknown boot mode: $bootargs_mode"; env delete -f bootargs_mode; saveenv; echo "Resetting to default boot mode and reboot..."; reset;

do_flash=run do_force_flash_os;

do_flash_ifwi=run do_dfu_alt_info_ifwi ; dfu 0 mmc 0

do_flash_os=if itest.b ${do_flash_os_done} -eq 1 ; then echo "Flashing already done..." ; else run do_force_flash_os; fi

do_flash_os_done=1

do_flashall=run do_partition;run do_flash_ifwi;run do_flash_os

do_force_flash_os=run do_dfu_alt_info_mmc ; sleep 1 ; setenv do_flash_os_done 1 ; saveenv ; dfu 0 mmc 0

do_force_partition=echo "Partitioning using GPT"; gpt write mmc 0 ${partitions} ; mmc rescan; setenv do_partition_done 1 ; saveenv

do_handle_bootargs_mode=run do_preprocess_bootargs_mode; if itest.s $bootargs_mode == "ota" ; then run do_ota; fi; if itest.s $bootargs_mode == "boot" ; then run do_boot; fi; if itest.s $bootargs_mode == "flash"; then run do_flash; fi; run do_fallback; exit;

do_load_ota_scr=if fatload mmc 0:6 $ota_script_addr ota_update.scr ; then setenv ota_status 0 ; else setenv ota_status 1 ; fi

do_ota=run do_ota_init ; run do_load_ota_scr ; run do_source_ota_scr ; run do_ota_clean

do_ota_clean=saveenv ; reset

do_ota_init=setenv ota_status 1 ; env delete -f bootargs_mode

do_partition=if itest.b ${do_partition_done} -eq 1; then echo "Partitioning already done..."; else run do_force_partition ; fi

do_partition_done=1

do_preprocess_bootargs_mode=if env exists bootargs_mode ; then ; else setenv bootargs_mode "boot" ;fi;

do_probe_dfu=run do_dfu_alt_info_mmc ; dfu 0 mmc 0 $dfu_to_sec

do_source_ota_scr=if test $ota_status -eq 0 ; then if source $ota_script_addr ; then setenv ota_status 0 ; else setenv ota_status 2 ; fi ; fi

first_install_max_retries=3

first_install_retry=0

hardware_id=00

init_dfu=run do_dfu_alt_info_mmc ; saveenv

load_initramfs=fatload mmc 0:6 ${loadaddr_ramfs} initramfs-edison

load_kernel=fatload mmc 0:6 ${loadaddr} vmlinuz

loadaddr=0x100000

loadaddr_ramfs=0x8100000

mmc-bootargs=run do_bootargs_rootfs; run do_audio_support; setenv bootargs ${bootargs_rootfs} ${bootargs_console} ${bootargs_debug} g_multi.ethernet_config=${bootargs_ethconfig} systemd.unit=${bootargs_target}.target hardware_id=${hardware_id} g_multi.iSerialNumber=${serial# } g_multi.dev_addr=${usb0addr} ${audio_support}

ota_done=0

ota_script_addr=0x100000

ota_update_max_retries=3

ota_update_retry=0

partitions=uuid_disk=${uuid_disk};name=u-boot0,start=1MiB,size=2MiB,uuid=${uuid_uboot0};name=u-boot-env0,size=1MiB,uuid=${uuid_uboot_env0};name=u-boot1,size=2MiB,uuid=${uuid_uboot1};name=u-boot-env1,size=1MiB,uuid=${uuid_uboot_env1};name=factory,size=1MiB,uuid=${uuid_factory};name=rootfs,size=-,uuid=${uuid_rootfs};

serial# =b33f335811680145fdc309c8f189130c

stderr=serial

stdin=serial

stdout=serial

target_name=blank

usb0addr=02:00:86:89:13:0c

uuid_disk=21200400-0804-0146-9dcc-a8c51255994f

uuid_factory=333a128e-d3e3-b94d-92f4-d3ebd9b3224f

uuid_rootfs=f20aa902-1c5d-294a-9177-97a513e3cae4

uuid_uboot0=d117f98e-6f2c-d04b-a5b2-331a19f91cb2

uuid_uboot1=8a4bb8b4-e304-ae48-8536-aff5c9c495b1

uuid_uboot_env0=25718777-d0ad-7443-9e60-02cb591c9737

uuid_uboot_env1=08992135-13c6-084b-9322-3391ff571e19

I am intercepting u-boot and trying to load the yocto kernel....with an initramfs file...but it seems to crash...

RAtlu1
New Contributor II
139 Views

And my mmc 0:6

boot > fatls mmc 0:6

9633513 initramfs-edison

5478784 vmlinuz

7946240 modloop-edison

apks/

3 file(s), 1 dir(s)

boot >

idata
Community Manager
139 Views

Are you following any guides to modify the u-boot, what other steps have you followed? Are you going to continue working on Yocto or are you going to use another OS? Why do you need to modify u-boot?

 

 

Sergio

 

RAtlu1
New Contributor II
139 Views

Hi Sergio, I have crossed the above hurdle.

I am trying to get Yocto Kernel + Initrd [Initramfs] working for Edison based on www.alpinelinux.org. It has gone forward a bit more however its still struck waiting for the console command prompt. Here is the pastebin

1. U-boot customization is complete and it works [Will create a seperate tutorial thread on how-to]

2. Kernel seems to boot fine but I think it still cannot find the following required files/dir present in mmc 0:6 fat partition hence no command prompt..

boot > ls mmc 0:6

9633513 initramfs-edison

5478784 vmlinuz

7946240 modloop-edison

apks/

3 file(s), 1 dir(s)

paste.ubuntu.com/16848735/

The following are the goals I set upon (unlike ubilinux or yocto):

  1. Lightweight GNU/Linux platform [10k+ read to use Packages]
  2. Read only system that enables zero data loss (protection) and enables emmc to survive for years [Must for IoT]
  3. External hot swap support for SD-cards and USB devices
  4. Can be made to automatically recover/repair external SD-card file-systems in the event of power loss during writing
  5. Remote upgradability with very less downtime including possible preventive actions against a power cut in the middle of the upgrade.
  6. Each Edison device can be configured in the field with a standard Windows laptop (fast deployment)
  7. Each Edison device can be found on the network, even if the IP-address is unknown
  8. Online cloud image test service
  9. Console login with a hot pluggable USB null modem cable for field service
  10. Use existing Watchdog + all other drivers including Wi-Fi as a hotspot
  11. Easy to Toolchain (compiler) to compile other packages
  12. X-windows Desktop support with all desktop applications

I plan to release it once its ready free of cost to community and continue supporting

idata
Community Manager
139 Views

Thank you for providing the steps you've made so far. This is very interesting work however, we don't have experience with http://www.alpinelinux.org www.alpinelinux.org. I'd suggest you to contact the AlpineLinux community as the final issue is not getting the console prompt to boot from the AlpineLinux http://www.alpinelinux.org/community/ http://www.alpinelinux.org/community/ .

 

 

-Sergio

 

RAtlu1
New Contributor II
139 Views

I understand but are there any plans to support newer kernels? Too bad Edison is such a good hardware.....

idata
Community Manager
139 Views

We're currently working on releasing a new kernel for the Edison. It is being updated publically in github here: https://github.com/01org/edison-linux/commits/wip-edison-3.19.5 https://github.com/01org/edison-linux/commits/wip-edison-3.19.5 . There's still not an estimated date of release for this new kernel.

 

 

-Sergio

 

RAtlu1
New Contributor II
139 Views

Thanks,

The invalid signature issue has been fixed by using a custom generated OSIP binary.