i.MX6 USB Certification Test via JTAG debugger

cancel
Showing results for 
Search instead for 
Did you mean: 

i.MX6 USB Certification Test via JTAG debugger

Jump to solution
433 Views
Kazuma_Sasaki
Senior Contributor I

Hi Community,

We are developing original board with i.MX6D.

Then, I would like to execute USB certification test via JTAG debugger to check the USB signal quality.

Can we set the USB test mode from JTAG debugger without any USB drivers?

If yes, please teach me register's settings to set the USB test mode.

I can execute the USB certification test if U-BOOT or Linux is working.

But, we are early development stage. therefore, we have not finished U-BOOT development.

Best Regards,

Kazuma Sasaki.

Labels (1)
0 Kudos
1 Solution
168 Views
Kazuma_Sasaki
Senior Contributor I

Hi Igor,

Finally, I could run the stand alone app via JTAG debugger.

Here is my conclusion.

1) Should be use sdk_unit_test_ALL.bin instead of .elf file

2) Check entry address from Image Vector Table

$ hexdump -C sdk_unit_test_ALL.bin | more
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000400  d1 00 20 40 d0 06 00 10  00 00 00 00 30 04 00 10  |.. @........0...|
00000410  20 04 00 10 00 04 00 10  00 00 40 10 00 00 00 00  | .........@.....|

Above case,

0xd1 = IVT Header Tag

0x0020 = IVT Header Length

0x40 = IVT version

0x100006d0 = Absolute address of the first instruction to execute from the image. = entry address.

3) JTAG debugger lunch, and initialize i.MX6 with DCD table.

4) Program load to DDR (0x10000000) then execute from entry address (0x100006d0)

Best Regards,

Kazuma Sasaki.

View solution in original post

0 Kudos
3 Replies
168 Views
igorpadykov
NXP TechSupport
NXP TechSupport

Hi Kazuma

some simple tests can be performed with jtag, please look on

sdk/../usb/test/usb0_host_testmodes_test

Github SDK
https://github.com/backenklee/swp-report/tree/master/iMX6_Platform_SDK

https://community.nxp.com/docs/DOC-105609 

USB Sertification Guide

http://cache.freescale.com/files/microcontrollers/doc/user_guide/IMXUSBCGUG.pdf 

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

0 Kudos
169 Views
Kazuma_Sasaki
Senior Contributor I

Hi Igor,

Finally, I could run the stand alone app via JTAG debugger.

Here is my conclusion.

1) Should be use sdk_unit_test_ALL.bin instead of .elf file

2) Check entry address from Image Vector Table

$ hexdump -C sdk_unit_test_ALL.bin | more
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000400  d1 00 20 40 d0 06 00 10  00 00 00 00 30 04 00 10  |.. @........0...|
00000410  20 04 00 10 00 04 00 10  00 00 40 10 00 00 00 00  | .........@.....|

Above case,

0xd1 = IVT Header Tag

0x0020 = IVT Header Length

0x40 = IVT version

0x100006d0 = Absolute address of the first instruction to execute from the image. = entry address.

3) JTAG debugger lunch, and initialize i.MX6 with DCD table.

4) Program load to DDR (0x10000000) then execute from entry address (0x100006d0)

Best Regards,

Kazuma Sasaki.

0 Kudos
168 Views
Kazuma_Sasaki
Senior Contributor I

Hi Igor,

Thank you for your support.

Attached file is iMX6_Platform_SDK binary which build by my environment.

I am trying that it execute on SABRE-SD board with jtag.

At first, I checked ELF header via readelf command to understand binary structure.

then, I tried sdk_unit_test_ALL.elf load&execute via jtag with several settings.

But, I could not execute this application successfully.

So, Could you teach me the right load and start address?

I failed following settings.

Load to 0x900000 (OCRAM space). binary file is bigger than OCRAM space.

Load to 0x10000420 (DRAM space) execute from 0x10000420 based on following thread.

run standalone bare-metal application on u-boot on the iMX6 

Load to 0x10000000 execute from 0x10000790 based on ELF header analysis.

Load to 0x10000000 execute from 0x100006d0 based on ELF header analysis. etc...

Best Regards,

Kazuma Sasaki.

0 Kudos