imx6: memory controller initialization in uboot?

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

imx6: memory controller initialization in uboot?

Jump to solution
13,892 Views
jfsimon
Contributor III

Hi,

On the i.MX6 cpu, I am curious where the memory controller (MMDC -- see reference manual chapter 45) is initialized in uboot.

It seems uboot code is loaded directly into main RAM as explained here:

http://lists.denx.de/pipermail/u-boot/2012-February/117134.html

Does that mean that the MMDC memory contrller is init before uboot is loaded into RAM?

Thanks a lot

-jfs

1 Solution
3,033 Views
justindefields
Contributor I

I had the exact same question as you.  I think I've tracked it down.  In the U-boot source directory, there is a file called boards.cfg.  This file lists hundreds of boards.  If you search for your specific mx6 board, you should see at the rightmost entry in this table, a file directory for the specific .cgf that the specific board is using.

sample from boards.cfg:

mx6qarm2 ...mx6qarm2:IMX_CONFIG=board/freescale/mx6qarm2/imximage.cfg
mx6qsabreauto ...mx6qsabreauto:IMX_CONFIG=board/freescale/mx6qsabreauto/imximage.cfg
mx6qsabrelite ...mx6qsabrelite:IMX_CONFIG=board/freescale/imx/ddr/mx6q_4x_mt41j128.cfg
mx6qsabresd ...mx6qsabresd:IMX_CONFIG=board/freescale/imx/ddr/mx6q_4x_mt41j128.cfg

My board is a mx6qsabrelite, and in this file you will see that it references "/board/freescale/imx/ddr/mx6q_4x_mt41j128.cfg"

In this file there are a series of DCD writes to various addresses.  I would recommend creating a new imximage.cfg file in /board/freescale/mxq6_<yourboard>/.  You can use the file listed above as a starting point.

Hope this helps!

- Justin

View solution in original post

0 Kudos
Reply
6 Replies
3,033 Views
AnsonHuang
NXP Employee
NXP Employee

All the MMDC controller's initialization is done in uboot-imx/board/freescale/<board name>/flash_header.S, either using DCD mode or plug in mode.

DCD mode is a table where contain the address and value, then ROM code will get this table to do the configure, then after all these tables' item are executed, ROM will copy the image to DDR and jump to DDR.

Plugin mode is another mode which allow ROM code to call this plugin function, after this plugin code return, ROM code continue to do the rest of work.

Hope I have made it clear for you!

3,033 Views
Yuri
NXP Employee
NXP Employee

It is possible to provide register initialization via so called DCD table

in flash_header file

board/freescale/mx6q_<custom board name>/flash_header.S

  For details please use Chapter 8 (System Boot), section 8.6.2 [Device
Configuration Data (DCD)] of i.MX6 Reference Manual (IMX6DQRM).

3,033 Views
jfsimon
Contributor III

Hi Yuri,

Thanks so much for pointing me to the DCD table feature. But I don't find this implemented in i.MX6 boards. Maybe I am looking at the wrong u-boot source code?

Best regards

-jfs

0 Kudos
Reply
3,034 Views
justindefields
Contributor I

I had the exact same question as you.  I think I've tracked it down.  In the U-boot source directory, there is a file called boards.cfg.  This file lists hundreds of boards.  If you search for your specific mx6 board, you should see at the rightmost entry in this table, a file directory for the specific .cgf that the specific board is using.

sample from boards.cfg:

mx6qarm2 ...mx6qarm2:IMX_CONFIG=board/freescale/mx6qarm2/imximage.cfg
mx6qsabreauto ...mx6qsabreauto:IMX_CONFIG=board/freescale/mx6qsabreauto/imximage.cfg
mx6qsabrelite ...mx6qsabrelite:IMX_CONFIG=board/freescale/imx/ddr/mx6q_4x_mt41j128.cfg
mx6qsabresd ...mx6qsabresd:IMX_CONFIG=board/freescale/imx/ddr/mx6q_4x_mt41j128.cfg

My board is a mx6qsabrelite, and in this file you will see that it references "/board/freescale/imx/ddr/mx6q_4x_mt41j128.cfg"

In this file there are a series of DCD writes to various addresses.  I would recommend creating a new imximage.cfg file in /board/freescale/mxq6_<yourboard>/.  You can use the file listed above as a starting point.

Hope this helps!

- Justin

0 Kudos
Reply
3,033 Views
Yuri
NXP Employee
NXP Employee
0 Kudos
Reply
3,033 Views
lily_zhang
NXP Employee
NXP Employee

It's done by ROM to load DCD table and initialize RAM.

You can get more information from MX6DQ RM: 8.3.3 Device Configuration Data

0 Kudos
Reply