Part Number: TMS320C6746
Other Parts Discussed in Thread: OMAP-L138
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Part Number: TMS320C6746
Other Parts Discussed in Thread: OMAP-L138
Hello
These devices are now on limited support and we will not be able to provide much in depth support. Here is the AI assited response, with some helper guidance and link to download the utilities etc. No linux support AFAIK.
Here's a complete walkthrough covering source acquisition, DDR2 parameter modification, and building/running on both platforms.
The sfh_OMAP-L138.exe source code is included in the OMAP-L138 Flash and Boot Utilities package. Download it from TI's website [1]. The pre-built executables are configured for EVMs only — since you're on a custom board with a memory change, you must rebuild from source [1].
The key file to modify is:
Modify the parameters passed to the DEVICE_ExternalMemInit function to match your DDR2 timing requirements [1].
Four memory-mapped registers must be programmed to match your DDR2 device's datasheet [2]:
|
Register
|
Purpose
|
|---|---|
|
SDCR (SDRAM Configuration Register)
|
Bus width, CAS latency, bank count, page size, memory type
|
|
SDTIMR1 (SDRAM Timing Register 1)
|
Primary timing parameters (tRCD, tRP, tRAS, etc.)
|
|
SDTIMR2 (SDRAM Timing Register 2)
|
Secondary timing parameters
|
|
SDRCR (SDRAM Refresh Control Register)
|
Refresh rate
|
|
DRPYC1R (DDR PHY Control Register)
|
Board-layout dependent, not DDR2-spec dependent
|
Since you're switching from mDDR to DDR2, these SDCR bit fields are essential [2]:
|
Field
|
mDDR Value
|
DDR2 Value
|
Notes
|
|---|---|---|---|
|
MSDRAMEN (bit 25)
|
1
|
0
|
Disable mobile SDRAM mode
|
|
DDR2EN (bit 20)
|
0
|
1
|
Enable DDR2 mode
|
|
DDREN (bit 17)
|
1
|
1
|
Keep enabled
|
|
SDRAMEN (bit 16)
|
1
|
1
|
Keep enabled
|
|
DDR2TERM[1:0] (bits 27, 21)
|
—
|
00
|
ODT not supported, must be cleared
|
|
CL (bits 11–9)
|
Per mDDR spec
|
Per DDR2 spec
|
e.g., 3h for CAS latency 3
|
|
IBANK (bits 6–4)
|
Per mDDR spec
|
Per DDR2 spec
|
e.g., 3h for 8 banks
|
|
PAGESIZE (bits 2–0)
|
Per mDDR spec
|
Per DDR2 spec
|
e.g., 2h for 1024-word page
|
|
NM (bit 14)
|
Per board
|
Per board
|
1h = 16-bit bus width
|
Important: To write to MSDRAMEN, DDR2EN, DDREN, SDRAMEN, and drive/termination fields, you must first set BOOTUNLOCK (bit 23) to 1, write your values, then clear BOOTUNLOCK back to 0 [2].
Note: Since you're moving away from mDDR, you no longer need to program the SDCR2 register, which is only required for mDDR interfaces [2].
For a reference DDR2 configuration (16-bit bus, CAS latency 3, 8 banks, 1024-word page), see Table 15-15 in the TRM [2]. Different DDR2 parts require different timing values — for example, the LCDK board used Samsung K4T1G164QF-BCF8 on one revision and Winbond W971GG6KB-25 on another, each with distinct timing parameters [3].
Prerequisites — ensure these are in your PATH [4]:
arm-arago-linux-gnueabi-gcc, etc.)Build steps:
Run:
[4]
Requires .NET Framework 2.0+. Run directly from a command prompt:
Set boot pins to UART2 boot mode, connect the serial cable, run the command, then power on the board [1].
Depending on your custom board, you may also need to update [1]:
device.c (if your input clock ≠ 24 MHz)device_uart.h (if not using UART2)To help refine the DDR2 register values, it would be helpful to know:
device.c (useful as a starting reference)