bringing up a custom iMX6D board - unable load image from MFGtool.

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

bringing up a custom iMX6D board - unable load image from MFGtool.

3,838 Views
abraham_v
Contributor IV

Hello,

We built a custom iMXD-based board. After applying power, we checked the voltages on the different rails and they all seem good. Setting the chip in "serial download mode" (described in page 452 of ref. manual), plugging in a usb cable and running "lsusb" utility shows a 'Freescale' device popping up. The problem we have is with u-boot. Using the MFG tool on the main site, we are unable to load our "u-boot.bin" (or related) images to the board. Does anyone know I could debug this issue?

The MFGtool appears stuck with a message that says "Loading U-boot". (Before that it spends a very long time on "Jumping to OS Image")

I suspect that we've not configured our DDR3 RAM properly - is there any way to verify if its been done correctly or not?

I have the iMX6Q sabresd board with me for reference - the MFGtool works without issues on it. Our custom board is of a similar memory configuration; 4GB eMMC and 512MB DDR3 RAM (sabresd has 1GB RAM).

Stumped,

Abraham

Labels (2)
Tags (2)
0 Kudos
10 Replies

1,332 Views
abraham_v
Contributor IV

After a lot of searching, I finally located the documentation for the MFG tool - located in a folder right next to the executable itself! (makes me feel rather incompetent at the moment) In it, Freescale clearly mentions that to use MFG tool for a custom board, I'll need a customized version of u-boot & linux kernel firmware.

So the new problem I have is this - HOW do I load the u-boot (or linux) binaries onto my custom board? It has been built with NO MMC slots (only a 4GB eMMC chip soldered on the board).

The only way I have to load images onto the board is the USB OTG connection. There is provision for JTAG, but I'm unfamiliar with it. Any help would be appreciated.

-Abraham

0 Kudos

1,332 Views
RandyKrakora
NXP Employee
NXP Employee

You could load your custom uboot with the mfg. tool too. You could also load to iRAM instead of DDR, but the mfg. tool ( via bootROM ) should handle the DDR config via the DCD table in uboot - assuming you have the proper DDR configs.

But we've loaded tiny uboot into iRAM to verify small parts of custom boards before.

Once you get your DDR config proper, load uboot with the mfg. tool and use it to program the eMMC with your images, or you jtag, etc.

Regards,

Randy

0 Kudos

1,332 Views
abraham_v
Contributor IV

Randall - Thanks for your reply, but after reading the MFGtool documentation, I do not think it possible to use it to load uboot on a custom board without customizing the firmware uboot & kernel that the MFGtool uses - something I cannot do without verifying it independent of the MFG tool! (a catch-22 situation).  The iRAM idea is interesting - can you suggest some pointers (or documentation?) for me to investigate. I don't think I've considered that angle before. But how would I load the image into the iRAM?

As for DDR configs - frankly, I have no idea if they are correct or not. We've tried a few different configs, but nothing's worked so far. :smileysad: Do you think it's possible to use JTAG and tell if the DDR has been configured correctly or not?

-Abraham

0 Kudos

1,332 Views
RandyKrakora
NXP Employee
NXP Employee

There's no catch-22, you can use the mfg. tool to load anything you want. We've used it to load and run a simple program to toggle an LED. You can load your customized uboot with it, you just need to figure out the DDR settings. I know there's a spreadsheet to help with that, some people use the DDR spreadsheet and have modified it to auto-generate flash_header.S for uboot ( DCD table ). It's just easier to use a jtag tool to do the initial bring up, but we've done many boards with only the mfg. tool initially.

You don't need a kernel to load and run uboot on a custom board.

For DDR configs, you need to go through the documentation for the memory you are using and make sure the settings look proper in uboot, you should be able to get it to be able to load and run uboot at least with a first pass. Then tweak it later when you start doing video playback and graphics ( if you plan this ), etc. Just plan on spending a day going through all the DDR settings. There may be something else too, it may be loading and running, but maybe there's a HW conflict resetting the board? That's where you need to check IOMUX settings, but the first bet is DDR. :smileyhappy:

Regards,

Randy

0 Kudos

1,332 Views
abraham_v
Contributor IV

I think I'm not using the MFG tool properly then. There is a guide called "Android_Quick_Start.pdf" (or similar name) available for the sabresd. Following its instructions, I was able to load the prebuilt images on the reference board. Based on another Freescale document, I was able to download the source for android ( + linux & uboot), compile it all and load those images as well. In fact, for the past 2 weeks I've been tweaking the source for my own needs and haven't had any issues loading images on the sabresd reference board using the MFGtool.

Until I got my own custom board. I used the "Mx6DQSDL DDR3 Script Aid V0.06.xlsx" file to calculate the DCD table entries for my custom board and configured the "flash_header.S" file in u-boot for it. With these changes, I compiled a uboot image and tried loading it on my custom board - nothing comes up on the serial console. It just stays blank (the serial cable itself was tested in loopback mode and is confirmed to be working). I'm stumped on what to try next.

Then I started looking around in the MFGtool documentation and in the file "Manufacturing Tool V2 Quick Start Guide.docx" its mentioned -

The processes above are limited to the reference design boards provided by Freescale. All the U-Boot images and kernel images are used to support Freescale reference design boards. If you want to utilize the tool to burn your own image on your own board, all you need to do is the following:

  • Generate a special U-Boot image and kernel image for MFG tool

And this is why I call it a catch-22 situation (PLEASE correct me if I'm wrong!). I have no idea how to verify this "special U-Boot image/kernel image" for my custom board. It does not have provision for SD or wired ethernet. :smileysad:

I'm beginning to wonder if I should resort to JTAG? I do not have any JTAG equipment that's compatible with the iMX6 with me, so what hardware+software tool would you suggest I use? As much as I would like to get the latest and greatest debugger, cost is a concern in my office.

My custom board is based around the iMX6D (dual core) processor.

-Abraham

0 Kudos

1,332 Views
RandyKrakora
NXP Employee
NXP Employee

Ok, you're a step ahead, the custom kernel and uboot would mainly be to program your onboard memory for your custom board.

What we normally do is get uboot working, then use that to program itself or the kernel to memory.

But you really should be able to make your uboot changes and download and execute it with the mfg. tool, if you don't see console output, it could be a number of things. Look on the Freescale site for the PLATLIB. You can use the Codesourcery arm tools to build it. You could make a tiny program to toggle an output or LED and download that to iRAM to try.

Or you could add code to your custom uboot you download to toggle outputs as it moves through the code, just to see how far it gets. Of course, using jtag would be quickest.

-Randy

1,332 Views
abraham_v
Contributor IV

Randall - your replies are like a ray of light shining in the darkness for me. :smileyhappy: You have NO idea how thankful I am for these replies!

Checking over the MFGtool again, I realized that I could just swap the existing u-boot that MFGtool uses for setting up the environment with my own to see if it would work or not. Unfortunately, my custom uboot is still having issues with my custom board, but I have verified the procedure with the sabresd reference board - at the very least, it proves that I can keep using MFGtool for download images to my custom board.

I did a search for PLATLIB with google on the Freescale site. I found a community forum that talked about the "i.MX 6Series Platform SDK" - is this what you are talking about?

-Abraham

0 Kudos

1,332 Views
RandyKrakora
NXP Employee
NXP Employee

Yes, that’s it.

Regards,

Randy Krakora

Freescale i.MX Automotive FAE

Freescale Semiconductor

2733 South Albright Road

469023996 KOKOMO, IN

United States

Phone: (765)860-6622

randy.krakora@freescale.com

0 Kudos

1,332 Views
abraham_v
Contributor IV

From the Freescale website, I found a download link for "i.MX 6Series Platform SDK". It's a file called "imx6_platform_sdk_v1.1.0.tgz". Extracting it, I see the top-level README.pdf. It tells me that I need the 'Mentor Sourcery CodeBench Lite' toolchain. A version known to work is the 2012.09-63 release. I've just registered on mentor.com and am download the sdk right now. A little further into the README.pdf it explains how to build the sdk - seems straightforward enough. The list of boards supported for the mx6dq are listed as "evb" , "sabre_ai" and "smart_device".

Can I assume that building for "evb" would work on both the sabresd reference board as well as my custom board? Also, I'm thinking of building an image supporting only the UART test with the following command,

build_sdk -t mx6dq -board evb -test uart -clean

My hope is that the generated image will run off the iRAM on the iMX6 and send some UART messages (which can be easily checked) without initializing the DDR. Do you think it will work this way? If not, is there any other way I can accomplish the same?

NOTE: I'm planning to use the MFGtool to load the generated image via USB-OTG.

-Abraham

0 Kudos

1,332 Views
sinanakman
Senior Contributor III

Abraham, if JTAG pins are provided, having a JTAG debugger would make things easier. You would then be able to load a binary to memory to execute. I am more familiar with BDI3000 JTAG probe but Freescale has several solutions that you might want to check.

0 Kudos