imx6solo based custom board u-boot bringup issue ?

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

imx6solo based custom board u-boot bringup issue ?

Jump to solution
1,671 Views
robinsingh
Contributor III

Hi all,

 

I am trying to bring up the u-boot on our custom board based on imx6solo, but no luck , below are the steps(questions too)

which i have done till now. please give me some feedback/suggestion for debugging or possible change i might have missed.

 

1) Completed Stress test with v2.20  successfully  and generated DDR setting, attached  are updated *.inc, and .cfg  file with calibration result.

does it look fine or i missed something ?   

 

2) I referenced this  "board/freescale/mx6sabresd/" directory for porting to my board

   a) created   "board/freescale/mx6smyboard/"  - a copy of "board/freescale/mx6sabresd/"

   b) created a new config file for my DDR - "mx6s_h5tc4g63cfr_pba.cfg" with new calibration tool result. - attached.

   c) modified code in mx6sabresd.c for my board e.g UART1 and SDHC3 for 4 bit support.

         UART1:

                  MX6_PAD_SD3_DAT6__UART1_RX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL),

                 MX6_PAD_SD3_DAT7__UART1_TX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL), };

       USDHC3:

           usdhc3_pads[] = {

                MX6_PAD_SD3_CLK__SD3_CLK   | MUX_PAD_CTRL(USDHC_PAD_CTRL),

                MX6_PAD_SD3_CMD__SD3_CMD   | MUX_PAD_CTRL(USDHC_PAD_CTRL),

                MX6_PAD_SD3_DAT0__SD3_DATA0 | MUX_PAD_CTRL(USDHC_PAD_CTRL),

                MX6_PAD_SD3_DAT1__SD3_DATA1 | MUX_PAD_CTRL(USDHC_PAD_CTRL),

                MX6_PAD_SD3_DAT2__SD3_DATA2 | MUX_PAD_CTRL(USDHC_PAD_CTRL),

                MX6_PAD_SD3_DAT3__SD3_DATA3 | MUX_PAD_CTRL(USDHC_PAD_CTRL),

                MX6_PAD_SD3_DAT4__GPIO7_IO01    | MUX_PAD_CTRL(NO_PAD_CTRL), /* CD */

               };

      for card detection pin changed :

                 #define USDHC3_CD_GPIO IMX_GPIO_NR(7, 1)

    d)  In  "board_mmc_init" added  below line for 4 bit support.

                usdhc_cfg[0].max_bus_width = 4;

                usdhc_cfg[1].max_bus_width = 4;

                usdhc_cfg[2].max_bus_width = 4;

   e) created config referenced from

          include/configs/mx6sabre_common.h

          include/configs/mx6sabresd.h

                disabled  #undef CONFIG_EXTRA_ENV_SETTINGS  - just to avoid compilation error and

               

    f) created u-boot.imx image and flashed on the SD card by using :

       dd if=u-boot.imx of=/dev/sde bs=1k seek=1 conv=fsync

        is it correct  command ?

 

  am i still missing any possible changed required in u-boot ?

 

3) How  can i verify whether my CPU is reading the image from SD card or not ?

 

4) what kind of debugging method i can try to trace my code running location on this platform ?

 

5) is the below files are getting used in u-boot for initialization ?

           a ) arch/arm/cpu/armv7/start.S

           b) arch/arm/cpu/armv7/lowlevel_init.S

       I tried to put a debug loop in "arch/arm/cpu/armv7/start.S "

        for making GPIO16 status changed but nothing seems to work , is it the right file to put such kind of debugging code ?   

code snippet :  

                    bl cpu_init_crit

                    bl  cpu_init_loop

 

               ENTRY(cpu_init_loop)    

                       ldr r0, =IOMUXC_BASE_ADDR

                       ldr r1, =0x00000000

                       str r1, [r0, #0x5e4]

                       b       cpu_init_jmd_loop         

               ENDPROC(cpu_init_loop)

      

please give me some feedback ?

 

Thanks in advance.

 

- Robin

 

 

===============================================================================

Memory  specification :

Manufacturer: Hynix             

Device Part Number: H5TC4G63CFR-PBA  (2 chip we are using 512MB+512MB)

Clock Freq.: 400MHz

Density per CS in Gb: 8

Chip Selects used: 1

Number of Banks: 8

Row address: 15

Column address: 10

Data bus width 32 

=============================================================================

these are the result of calibration              

DDR Stress Test Iteration 1

Current Tempareture: 54

 

DDR Freq: 396 MHz

t0.1: data is addr test

t0: memcpy11 SSN test

t1: memcpy8 SSN test

t2: byte-wise SSN test

t3: memcpy11 random pattern test

t4: IRAM_to_DDRv2 test

t5: IRAM_to_DDRv1 test

t6: read noise walking ones and zeros test

Success: DDR Stress test completed!!!

Original Attachment has been moved to: mx6s_h5tc4g63cfr_pba.cfg.zip

Original Attachment has been moved to: mx6smyboard.c.zip

Original Attachment has been moved to: 40ohm_myboard_MX6s_DDR3_4Gb_32bit_v1.5-800mz.inc.zip

1 Solution
1,191 Views
robinsingh
Contributor III

Hi igor,

We fixed it , it was a POR issue , PMIC was not generating POR with proper timing , a extended (more then 1 sec long ) POR is required for Imx6 to boot. it might be a issue from Free scale side , Igor have you seen this issue for other customer ? what was the final solution ?

thanks

Robin Singh

View solution in original post

0 Kudos
7 Replies
1,191 Views
gbiradar
Contributor IV

robinsingh​ i'm also working on imx6solo custom board with LPDDR2, i'm also making changes to uboot using bsp pdf. i have downloaded script to generate cfg file values. manually also i have seen all register and their values. i'm using uart3 and sd card but at console window i'm seeing any thing no log no error. if you can help me can you just tell what are the necessary changes you made in which file. what consideration you took while changing uboot source code.

regards

ganesh

0 Kudos
1,191 Views
robinsingh
Contributor III

Ganesh , check my post above and also fix to the problem. my all the changed explained above, hope these will help you.

0 Kudos
1,191 Views
gbiradar
Contributor IV

robinsingh​ i have solved the issue was the command to copy uboot on sd card. i was trying .bin file which i have used in prvious version of uboot but i believe latest uboot uses .imx. thanks for your reply once again.

1,190 Views
igorpadykov
NXP Employee
NXP Employee

Hi robin

for i.MX6 Solo also one can check that uboot has :

CONFIG_MX6SOLO

Recommended to check SD signals by oscilloscope, then

connect jtag, check sampled boot configuration in SRC_SBMR1,2.

If boot fails processor jumps to Serial Downloader mode, one can check that

attaching usb cable and running mfg tool.

Best regards

igor

-----------------------------------------------------------------------------------------------------------------------

Note: If this post answers your question, please click the Correct Answer button. Thank you!

-----------------------------------------------------------------------------------------------------------------------

0 Kudos
1,191 Views
robinsingh
Contributor III

Hi Igor,

Thanks for your reply. I checked my uboot config and CONFIG_MX6SOLO is enable.

I also checked SD signals by oscilloscope but there is no activity on SD card signals

does it mean IMX6solo's on chip code is not reading the u-boot from SD card ?

As you mentioned "if boot fails processor jumps to serial download  mode"  i checked by USB cable and mfgtool on a window PC but i do not see the board enumerated in device manager(means not going to serial download mode) so i am not able to make a conclusion what is happing on board, any suggestion based on these input? .

JTAG is not yet up for me , tomorrow i will continue debugging.

For jtag i will need a init script , can you point me which init script i will be using?

any reference link or post ?

Thanks

Robin Singh

0 Kudos
1,191 Views
igorpadykov
NXP Employee
NXP Employee

HI Robin

attached jtag scripts from SDK.

Best regards

igor

0 Kudos
1,192 Views
robinsingh
Contributor III

Hi igor,

We fixed it , it was a POR issue , PMIC was not generating POR with proper timing , a extended (more then 1 sec long ) POR is required for Imx6 to boot. it might be a issue from Free scale side , Igor have you seen this issue for other customer ? what was the final solution ?

thanks

Robin Singh

0 Kudos