Forums - Application not loading from flash

9 posts / 0 new
Last post
Application not loading from flash
michael.burm
Join Date: 30 Oct 17
Posts: 12
Posted: Tue, 2018-02-20 10:37

We've developed a board with the QCA4010 with the Winbond 25q16jv SPI flash (follow-up of 25q16dv). Application flashing over USB seems to work, as the art2 tool anszers with "4047 INFO Programming done successfully". However, the application does not start, and does not seem to load from flash to ram. When using the rb01 with rb02 platform, everything works fine. Following questions tegarding this problem:

- Does the OTP file or application image needs to be adapted for the different SPI flash chip?

 

- ART2 reports different memory sizes for these 2 situations:

for our board:

[0] 6024 INFO Free memory for initialization and calibration is 42696512 (42702656 - 6144) bytes. 

For the rb02:

[0] 6024 INFO Free memory for initialization and calibration is 41582400 (41588544 - 6144) bytes.

What do these sizes mean? Obviously, we haven't got 42MB of flash, only 2MB.

 

- If we load our application image in RAM over JTAG, and start it, we get following crash output over UART, even before the application starts. Again, this works fine on the rb02. Do you have any information regarding this error?

reset cause:RESET_1
_WAKEMGR_Register  item:0x438360
cmnos_allocram_init: start=0x44b0a8 size=734732
NUM_DEV=2 FWMODE=5 FWSUBMODE=0 FWBR_BUF 1
Mac address is : 00:03:7f:2e:20:09
epc1=0x90293e, epc2=0xa06600, epc3=0x0, epc4=0x0
Addr err: NULL ptr deref
err_valid=0x1 AHB_err=0x0 APB_err=0x0
 
 
Thank you for answering these 3 questions.
 
Sincerely,
 

 

  • Up0
  • Down0
svegesna Moderator
Join Date: 7 Jun 17
Posts: 20
Posted: Wed, 2018-02-21 01:41

Hi,

Below was the information about build and flash procedure for QCA4010.

In order to flash the image into QCA4010, configure the board in USB mode by changing the jumper pins as explained in the user guide of QCA4010. To access the console using serial terminal(Ex: Teraterm), configure the board in UART mode as explained in the QCA4010 doc.
 

You can flash the image using ART tool or by using JTAG.
If you are trying to flash using ART, setup the baord in USB board, Inside ART tool, run art_gui.exe file, once card was loaded, go to send command and give :
xp file=<image> 

Once you see programming done successfully in art log window, you need to set the QCA4010 board to UART mode by changing the jumper pins. You can access the console using serial terminal ilke putty, teraterm etc.

Below are the answers to your questions.

1. - Does the OTP file or application image needs to be adapted for the different SPI flash chip?
A) No 

2. - ART2 reports different memory sizes for these 2 situations
A) This is the size reserved for calibration purpose of the baord. It also depends on the storage we select in the art GUI like auto,eeprom,flash,otp,file.

3.  - If we load our application image in RAM over JTAG, and start it, we get following crash output over UART, even before the application starts. Again, this works fine on the rb02. Do you have any information regarding this error?

A) This is the uart log, when the board reset. Please build the correct image and flash again to verify. Once image is loaded into board, in uart log window hit "Enter" and shell> prompt  will appear.

 

Thanks,

Santhosh


 

 

  • Up0
  • Down0
michael.burm
Join Date: 30 Oct 17
Posts: 12
Posted: Wed, 2018-02-21 08:18

Is it possible that we're prevented from running our application because the chip in question is not calibrated? It's the naked chip we're using on our board, not a certified module. Is there a way to program into it a prefabricated calibration file without actually calibrating it? We do not have the needed calibration equipment yet. 

Meanwhile we found a way to write Wifi_Application Data to the OTP via Art2 CalibrationInformation/Operations. The OD commad states the following now

[0] 7510 INFO =============================
[0] 7510 INFO STREAM #5: WLAN_APPLICATION, 68 bytes
[0] 7510 INFO =============================
[0] 7510 INFO Version 8
[0] 7510 INFO .............................
[0] 7510 INFO Section ID: 16 bytes
[0] 7510 INFO RegDomain  0x0, 0x0
[0] 7510 INFO MAC        11:22:33:44:55:66
[0] 7510 INFO BD MAC     00:03:07:12:34:56
[0] 7510 INFO .............................
[0] 7510 INFO Section CAL_2G: 14 bytes
[0] 7510 INFO FW Version    12
[0] 7510 INFO txGainOffset  0
[0] 7510 INFO Channel 2412: olpc  -47, thermal  151
[0] 7510 INFO Channel 2437: olpc  -47, thermal  143
[0] 7510 INFO Channel 2462: olpc  -47, thermal  144
[0] 7510 INFO .............................
[0] 7510 INFO Section CAL_5G: 29 bytes
[0] 7510 INFO FW Version    12
[0] 7510 INFO txGainOffset  0
[0] 7510 INFO Channel 5180: olpc  -37, thermal  148
[0] 7510 INFO Channel 5260: olpc  -36, thermal  147
[0] 7510 INFO Channel 5320: olpc  -36, thermal  147
[0] 7510 INFO Channel 5500: olpc  -40, thermal  147
[0] 7510 INFO Channel 5600: olpc  -43, thermal  150
[0] 7510 INFO Channel 5700: olpc  -47, thermal  151
[0] 7510 INFO Channel 5785: olpc  -50, thermal  150
[0] 7510 INFO Channel 5825: olpc  -53, thermal  147
[0] 7510 INFO .............................
[0] 7510 INFO CRC  0x94
[0] 7510 INFO =============================
 
But still the Wifi is not comming up and application is not loading. When we load the application directly to the RAM and debug it we get this:
 
reset cause:RESET_1
_WAKEMGR_Register  item:0x438360
cmnos_allocram_init: start=0x44b0a8 size=734732
NUM_DEV=2 FWMODE=5 FWSUBMODE=0 FWBR_BUF 1
Mac address is : 00:03:7f:2e:20:09
epc1=0x90293e, epc2=0xa06600, epc3=0x0, epc4=0x0
Addr err: NULL ptr deref
err_valid=0x1 AHB_err=0x0 APB_err=0x0
 
We noticed that the MAC Adress is still the default not the one we have written to OTP? What is missing here?

 

  • Up0
  • Down0
svegesna Moderator
Join Date: 7 Jun 17
Posts: 20
Posted: Wed, 2018-02-21 23:04

Hi,

To flash the QCA4010 hostless image, need to use SP241/242 board. If you try to flash QCA4010 image  in different vendor specific onboard Soc chip, it may not work.

OTP Programming on QCA4010
Non-volatile memory configuration can be burned to OTP from a file with the command otpProgram or op (an abbreviated version of otpProgram):
otpProgram file=nvmem.bin;(verbose=1;)(dummy=1;)
op f=nvmem.bin;(v=1;)(d=1;) 

The following command can be used to show the non-volatile memory writing result. 

command : op f=..\command\refDesigns\SP242\nvmem_ruby.bin;v=1;d=1;  
[0] 7510 INFO ..\command\refDesigns\SP242\nvmem_ruby.bin: NVRAM_CONFIG

[0] 7510 INFO =============================

[0] 7510 INFO 0x00: FD B2 00 00 00 12 13 14 

[0] 7510 INFO 0x08: 15 81 89 89 04 04 01 1E 

[0] 7510 INFO 0x10: 00 00 00 00 00 00 00 00 

[0] 7510 INFO 0x18: 00 00 00 00 00 00 00 00 

[0] 7510 INFO 0x20: 00 16 17 0A 0A 

[0] 7510 INFO =============================

[0] 7510 INFO DUMMY: Did NOT program to OTP.

The default NV memory configuration file nvmem_ruby.bin can be found at command\refDesigns\SP242. 

 

OTP contents can be dumped with the command otpDump or od 

Command: od f=..\command\refDesigns\SP242\nvmem_ruby.bin;v=1;d=1;

Below was the OTP contents of the QCA4010 board 
[0] 7510 INFO =============================
[0] 7510 INFO OTP HW SECTION (HEX):
[0] 7510 INFO =============================
[0] 7510 INFO    rbias     xtalCdacIn xtalCdacOut   options   otpDeviceID
[0] 7510 INFO    1F8          5D          5D           2           0
[0] 7510 INFO otpVendorID  iosSwFeaEn  pmuTimeSel   cpuspeed      xtal   
[0] 7510 INFO      0           0           0           0           0
[0] 7510 INFO =============================
[0] 7510 INFO STREAM #1: NVRAM_CONFIG, 23 bytes
[0] 7510 INFO =============================
[0] 7510 INFO 0x00: FD C1 00 00 00 22 23 24 
[0] 7510 INFO 0x08: 25 81 81 01 01 04 01 5E 
[0] 7510 INFO 0x10: 02 26 27 28 01 01 81 
[0] 7510 INFO =============================
[0] 7510 INFO STREAM #2: WLAN_APPLICATION, 37 bytes
[0] 7510 INFO =============================
[0] 7510 INFO Version 8
[0] 7510 INFO .............................
[0] 7510 INFO Section ID: 16 bytes
[0] 7510 INFO RegDomain  0x0, 0x0
[0] 7510 INFO MAC        00:03:7F:20:01:42
[0] 7510 INFO BD MAC     00:03:07:12:34:56
[0] 7510 INFO .............................
[0] 7510 INFO Section CAL_2G: 14 bytes
[0] 7510 INFO FW Version    26
[0] 7510 INFO txGainOffset  0
[0] 7510 INFO Channel 2412: olpc  -49, thermal  130
[0] 7510 INFO Channel 2437: olpc  -50, thermal  129
[0] 7510 INFO Channel 2462: olpc  -50, thermal  129
[0] 7510 INFO .............................
[0] 7510 INFO CRC  0xC2
[0] 7510 INFO =============================
[0] 7510 INFO STREAM #3: UNKNOWN ID 0xF2, 3 bytes
[0] 7510 INFO =============================
[0] 7510 INFO 0x00: F2 0F 00 
[0] 7510 INFO =============================
[0] 7510 INFO STREAM #4: WLAN_APPLICATION, 11 bytes
[0] 7510 INFO =============================
[0] 7510 INFO Version 8
[0] 7510 INFO .............................
[0] 7510 INFO Section MAC:
[0] 7510 INFO MAC        C8:FF:28:3C:BF:3B
[0] 7510 INFO .............................
[0] 7510 INFO CRC  0xD3

[0] 7510 INFO =============================  

Every networking device must have a unique MAC address. ART2 can be used to burn a MAC address permanently to the OTP memory. The new MAC address is used as the device MAC address for the subsequent system bring-up process.  The MAC address format is xx:xx:xx:xx:xx:xx. To program the MAC address, type the following commands at the CART command entry. set mac= xx:xx:xx:xx:xx:xx; commit section=mac;memory=otp; 

 

Thanks,
Santhosh

 

  • Up0
  • Down0
michael.burm
Join Date: 30 Oct 17
Posts: 12
Posted: Thu, 2018-02-22 09:33

We have built an own board where there is QCA4010 directly mounted (not a module nor dev board) and an external flash.
The problem is there is no OTP data inside of it.
The question is: where to find concrete bin files which can be written to OTP streams #2 #3 #4 #5 (all of them are  WLAN_APPLICATION) without using calibration hardware.

We tried using the nvmem.bin, but the calibration data does not seem to be part of it. 
 
The question can be reformulated: 
Which steps are necessary to get QCA4010 working, when it was bought as standalone part? We flashed the nvmem.bin and the application image both over USB, but this doesn't seem to be enough as the application does not start and the qca4010 does not even report its reset information over debug uart, although the application image runs fine on a rb02. What steps are we mising? 

  • Up0
  • Down0
michael.burm
Join Date: 30 Oct 17
Posts: 12
Posted: Fri, 2018-02-23 02:23
We have built an own board where there is QCA4010 directly mounted (not a module nor dev board) and an external flash.
The problem is there is no OTP data inside of it.
The question is: where to find concrete bin files which can be written to OTP streams #2 #3 #4 #5 (all of them are  WLAN_APPLICATION) without using calibration hardware, which we don't have yet.
 
We flashed both the nvmem.bin, nvram_ruby.bin, and our application bin via art2, which all sems to work, but still the application image is not loading.
 
The question can be reformulated: 
Which exact steps are necessary to get QCA4010 working, when it was bought as standalone part?
  • Up0
  • Down0
svegesna Moderator
Join Date: 7 Jun 17
Posts: 20
Posted: Fri, 2018-02-23 03:56

Hi,

The OTP bn files will be present in the ART package which you are using.

Ex:
ART2_IOE.WIN.3.2 Installer-00052.1 provides the OTP patch files in:
- Single band: ART2_IOE.WIN.3.2 Installer-00052.1\command\refDesigns\SP241\*.bin
- Dual band: ART2_IOE.WIN.3.2 Installer-00052.1\command\refDesigns\SP242\*.bin 

If the OTP area was corrupted, board may not bring up once the image was flashed. We suggest you to use latest ART tool package inorder to flash the image into QCA4010.

 

Thanks,

Santhosh

 

  • Up0
  • Down0
michael.burm
Join Date: 30 Oct 17
Posts: 12
Posted: Tue, 2018-11-20 09:08

For anyone interested, we were using the SDK for the 1.5MB chip version, while the chips on our board were the 1MB version. 

  • Up0
  • Down0
svegesna Moderator
Join Date: 7 Jun 17
Posts: 20
Posted: Tue, 2019-01-01 21:23

Hi,

For flashing image on QCA4010 board, need to select the image of SDK based on flash size of QCA board.

If you are using 1MB varient board, you need to select 1MB SDK to build and flash image on QCA board.

If you are using 1.5MB varient board, you need to select 1.5 MB SDK to build and flash image on QCA board.

Regards!!

  • Up0
  • Down0
or Register

Opinions expressed in the content posted here are the personal opinions of the original authors, and do not necessarily reflect those of Qualcomm Incorporated or its subsidiaries (“Qualcomm”). The content is provided for informational purposes only and is not meant to be an endorsement or representation by Qualcomm or any other party. This site may also provide links or references to non-Qualcomm sites and resources. Qualcomm makes no representations, warranties, or other commitments whatsoever about any non-Qualcomm sites or third-party resources that may be referenced, accessible from, or linked to this site.