OK, this is getting very frustrating. I have yet to get the sample bootloader to actually boot the board.
HARDWARE
AM335x Industrial EVM Rev 1.2
AM335x EVM Motor Control Board P/N 4P0014
Jlink Ultra+
SOFTWARE
Starterware 2.00.00.07
SYSBIOS 1.0.0.8
gcc arm-none-eabi V4.7.3 (newest)
Dev Host: Ubuntu 12.04
Dev Host: Windows Virus #7 64-bit
IAR 6.40
OK. Here comes the long sordid tale.
The board boot from the included SD card and output on the terminal reads as follows:
*** StarterWare AM335x Boot Loader. Build - 1.0.0 ***
Copying application image from MMCSD to RAM
Copying to RAM completed successfully
Image Copy Successful, Executing Application..
ECAT Limited Demo - 1.0.14
So this tells us the boot switches are all correct, the card is formatted properly, and everything after this is software only.
Attempt #1
On Windows Dev Host with IAR. Just load the supplied bootloader and try to make it load.
Starterware 2.00.00.007 Bootloader app compiled with IAR. Compiler preprocessor options are defined: MMCSD, am335x, evmAM335x. These are defined by selecting the configuration MMCSD_Debug. Get build error as follows:
Fatal Error[Li001]: could not open file "C:\ti\AM335X_StarterWare_02_00_00_07\binary\armv7a\ewarm\nandlib\nandlib.a"
Really? Fail on nandlib link? Thought I said MMCSD?
Anyways added nandlib and it compiles. Take the generated boot_ti.bin and copy to supplied SD card. NOTHING!! Console is dead and I get the FAULT LED lit.
Attempt #2
Did the same think in my Linux dev host GCC arm-none-eabi 4.7.3 suite.
Go to /home/ehiebert/Starterware/build/armv7a/gcc/am335x/evmAM335x/bootloader check makefile for build options.
#
# Device and EVM definitions
#
DEVICE=am335x
EVM=evmAM335x
Check the makedefs for more setup stuff which I have:
#
# Toolchain/library path. LIB_PATH is an exported environmental variable which
# shall point to the installation of toolchain
#
LIB_GCC=/usr/lib/gcc/arm-none-eabi/4.7.3/
LIB_C=/usr/arm-none-eabi/lib/
#
# Target and Compiler definitions (Device and EVM specified by makefile)
#
TARGET=armv7a
COMPILER=gcc
BOOT=MMCSD
And do a make all. Bunch of ugly looking path output and it makes a binary for me.I copy the boot_ti.bin to the SD card as MLO.
NOTHING! No terminal output, FAULT LED lit again.
Attempt #3
Read somewhere that Starterware 2.00.00.00.00.00.00.00.00.00.07 does not support the IDK EVM or the ICE. OK, so which EVM is the Starterware 07 version referring to?
Download the SYSBIOS IDK V1.0.0.8. Install that to my WindowsVirus dev host, and then copy the whole kit to my Linux dev host.
Set the am335x_sysbios_ind_sdk_1.0.0.8/sdk/starterware/build/armv7a/gcc/makedefs as follows:
#
# Toolchain/library path. LIB_PATH is an exported environmental variable which
# shall point to the installation of toolchain
#
LIB_GCC=/usr/lib/gcc/arm-none-eabi/4.7.3/
LIB_C=/usr/arm-none-eabi/lib/
#
# Target and Compiler definitions (Device and EVM specified by makefile)
#
TARGET=armv7a
COMPILER=gcc
BOOT=MMCSD
Check the EVM settings in the bootloader project... which are:
#
# Device and EVM definitions
#
DEVICE=am335x
EVM=evmAM335x
And that seems good. Drop to command line and make all.... and BALK!! Compile errors.
ehiebert@ubuntu:bootloader$ make all
make TARGET_MODE=debug lib
make[1]: Entering directory `/home/ehiebert/am335x_sysbios_ind_sdk_1.0.0.8/sdk/starterware/build/armv7a/gcc/am335x/evmAM335x/bootloader'
make[2]: Entering directory `/home/ehiebert/am335x_sysbios_ind_sdk_1.0.0.8/sdk/starterware/build/armv7a/gcc/am335x/drivers'
mkdir -p Debug
arm-none-eabi-gcc -mcpu=cortex-a8 -c -mlong-calls -fdata-sections -funsigned-char -ffunction-sections -Wall -I../../../../..//include -I../../../../..//include/hw -I../../../../..//include/armv7a -I../../../../..//include/armv7a/am335x -I../../../../..//grlib/include -I../../../../..//usblib/include -I../../../../..//ipclite/include -I../../../../..//nandlib/include -I../../../../..//mmcsdlib/include -I../../../../..//bootloader/include -I../../../../../third_party/fatfs/src -I../../../../..//norlib/include -I"/include" -Dgcc -Dam335x -D SUPPORT_UNALIGNED -D MMCSD -g ../../../../..//drivers/dmtimer.c ../../../../..//drivers/uart_irda_cir.c ../../../../..//drivers/ecap.c ../../../../..//drivers/ehrpwm.c ../../../../..//drivers/mcspi.c ../../../../..//drivers/mcasp.c ../../../../..//drivers/mdio.c ../../../../..//drivers/phy.c ../../../../..//drivers/cpsw.c ../../../../..//drivers/hsi2c.c ../../../../..//drivers/gpio_v2.c ../../../../..//drivers/watchdog.c ../../../../..//drivers/edma.c ../../../../..//drivers/rtc.c ../../../../..//drivers/raster.c ../../../../..//drivers/gpmc.c ../../../../..//drivers/elm.c ../../../../..//drivers/tsc_adc.c ../../../../..//drivers/hs_mmcsd.c ../../../../..//drivers/mailbox.c ../../../../..//drivers/usb.c ../../../../..//drivers/cppi41dma.c ../../../../..//drivers/dcan.c ../../../../..//drivers/usbphyGS70.c
arm-none-eabi-ar -c -r Debug/libdrivers.a *.o*
make[2]: Leaving directory `/home/ehiebert/am335x_sysbios_ind_sdk_1.0.0.8/sdk/starterware/build/armv7a/gcc/am335x/drivers'
make[2]: Entering directory `/home/ehiebert/am335x_sysbios_ind_sdk_1.0.0.8/sdk/starterware/build/armv7a/gcc/am335x/evmAM335x/platform'
mkdir -p Debug
arm-none-eabi-gcc -mcpu=cortex-a8 -c -mlong-calls -fdata-sections -funsigned-char -ffunction-sections -Wall -I../../../../../..//include -I../../../../../..//include/hw -I../../../../../..//include/armv7a -I../../../../../..//include/armv7a/am335x -I../../../../../..//grlib/include -I../../../../../..//usblib/include -I../../../../../..//ipclite/include -I../../../../../..//nandlib/include -I../../../../../..//mmcsdlib/include -I../../../../../..//bootloader/include -I../../../../../../third_party/fatfs/src -I../../../../../..//norlib/include -I"/include" -Dgcc -Dam335x -DevmAM335x -D SUPPORT_UNALIGNED -D MMCSD -g ../../../../../..//platform/evmAM335x/uart.c ../../../../../..//platform/evmAM335x/hsi2c.c ../../../../../..//platform/evmAM335x/gpio.c ../../../../../..//platform/evmAM335x/mcasp.c ../../../../../..//platform/evmAM335x/rtc.c ../../../../../..//platform/evmAM335x/lcd.c ../../../../../..//platform/evmAM335x/uartConsole.c ../../../../../..//platform/evmAM335x/edma.c ../../../../../..//platform/evmAM335x/sysdelay.c ../../../../../..//platform/evmAM335x/sysperf.c ../../../../../..//platform/evmAM335x/timertick.c ../../../../../..//platform/evmAM335x/usb.c ../../../../../..//platform/evmAM335x/cpld.c ../../../../../..//platform/evmAM335x/hs_mmcsd.c ../../../../../..//platform/evmAM335x/pwmss.c ../../../../../..//platform/evmAM335x/eeprom.c ../../../../../..//platform/evmAM335x/dcan.c ../../../../../..//platform/evmAM335x/tscAdc.c ../../../../../..//platform/evmAM335x/mcspi.c ../../../../../..//platform/evmAM335x/dmtimer.c ../../../../../..//platform/evmAM335x/nand.c ../../../../../..//platform/evmAM335x/cpsw.c ../../../../../..//platform/evmAM335x/ctlregcontext.c ../../../../../..//platform/evmAM335x/watchdog.c
arm-none-eabi-ar -c -r Debug/libplatform.a *.o*
make[2]: Leaving directory `/home/ehiebert/am335x_sysbios_ind_sdk_1.0.0.8/sdk/starterware/build/armv7a/gcc/am335x/evmAM335x/platform'
make[2]: Entering directory `/home/ehiebert/am335x_sysbios_ind_sdk_1.0.0.8/sdk/starterware/build/armv7a/gcc/utils'
mkdir -p Debug
arm-none-eabi-gcc -mcpu=cortex-a8 -c -mlong-calls -fdata-sections -funsigned-char -ffunction-sections -Wall -I../../../..//include -I../../../..//include/hw -I../../../..//include/armv7a -I../../../..//include/armv7a/ -I../../../..//grlib/include -I../../../..//usblib/include -I../../../..//ipclite/include -I../../../..//nandlib/include -I../../../..//mmcsdlib/include -I../../../..//bootloader/include -I../../../../third_party/fatfs/src -I../../../..//norlib/include -I"/include" -Dgcc -D SUPPORT_UNALIGNED -D MMCSD -g ../../../..//utils/cmdline.c ../../../..//utils/delay.c ../../../..//utils/perf.c ../../../..//utils/systick.c ../../../..//utils/uartStdio.c
arm-none-eabi-ar -c -r Debug/libutils.a *.o*
make[2]: Leaving directory `/home/ehiebert/am335x_sysbios_ind_sdk_1.0.0.8/sdk/starterware/build/armv7a/gcc/utils'
make[2]: Entering directory `/home/ehiebert/am335x_sysbios_ind_sdk_1.0.0.8/sdk/starterware/build/armv7a/gcc/mmcsdlib'
mkdir -p Debug
arm-none-eabi-gcc -mcpu=cortex-a8 -c -mlong-calls -fdata-sections -funsigned-char -ffunction-sections -Wall -I../../../..//include -I../../../..//include/hw -I../../../..//include/armv7a -I../../../..//include/armv7a/ -I../../../..//grlib/include -I../../../..//usblib/include -I../../../..//ipclite/include -I../../../..//nandlib/include -I../../../..//mmcsdlib/include -I../../../..//bootloader/include -I../../../../third_party/fatfs/src -I../../../..//norlib/include -I"/include" -Dgcc -D SUPPORT_UNALIGNED -D MMCSD -g ../../../..//mmcsdlib/*.c
arm-none-eabi-ar -c -r Debug/libmmcsd.a *.o*
make[2]: Leaving directory `/home/ehiebert/am335x_sysbios_ind_sdk_1.0.0.8/sdk/starterware/build/armv7a/gcc/mmcsdlib'
make[1]: Leaving directory `/home/ehiebert/am335x_sysbios_ind_sdk_1.0.0.8/sdk/starterware/build/armv7a/gcc/am335x/evmAM335x/bootloader'
make TARGET_MODE=Debug bin
make[1]: Entering directory `/home/ehiebert/am335x_sysbios_ind_sdk_1.0.0.8/sdk/starterware/build/armv7a/gcc/am335x/evmAM335x/bootloader'
arm-none-eabi-gcc -mcpu=cortex-a8 -c -g -mlong-calls -fdata-sections -funsigned-char -ffunction-sections -Wall -I../../../../../..//include -I../../../../../..//include/hw -I../../../../../..//include/armv7a -I../../../../../..//include/armv7a/am335x -I../../../../../..//grlib/include -I../../../../../..//usblib/include -I../../../../../..//ipclite/include -I../../../../../..//nandlib/include -I../../../../../..//mmcsdlib/include -I../../../../../..//bootloader/include -I../../../../../../third_party/fatfs/src -I../../../../../..//norlib/include -I"/include" -Dgcc -Dam335x -DevmAM335x -D SUPPORT_UNALIGNED -D MMCSD -D MMCSD -D am335x -I../../../../../../bootloader/include -I../../../../../../bootloader//include/armv7a/am335x ../../../../../../bootloader//src/bl_hsmmcsd.c ../../../../../..//third_party/fatfs/src/ff.c ../../../../../..//third_party/fatfs/port/fat_mmcsd.c ../../../../../../bootloader/src/bl_main.c ../../../../../../bootloader//src/bl_copy.c ../../../../../../bootloader//src/bl_uartDebug.c ../../../../../../bootloader/src/armv7a/gcc/*.S ../../../../../..//system_config/armv7a/cache.c ../../../../../..//system_config/armv7a/mmu.c ../../../../../..//system_config/armv7a/gcc/cp15.S ../../../../../../bootloader/src/armv7a/am335x/bl_platform.c
In file included from ../../../../../../bootloader//src/bl_hsmmcsd.c:44:0:
../../../../../../bootloader//include/armv7a/am335x/bl_platform.h:129:10: error: #error Unsupported board !!
../../../../../../bootloader//src/bl_hsmmcsd.c: In function 'HSMMCSDXferStatusGet':
../../../../../../bootloader//src/bl_hsmmcsd.c:280:28: error: 'MMCSD_BASE' undeclared (first use in this function)
../../../../../../bootloader//src/bl_hsmmcsd.c:280:28: note: each undeclared identifier is reported only once for each function it appears in
../../../../../../bootloader//src/bl_hsmmcsd.c: In function 'HSMMCSDControllerSetup':
../../../../../../bootloader//src/bl_hsmmcsd.c:410:24: error: 'MMCSD_BASE' undeclared (first use in this function)
In file included from ../../../../../../bootloader/src/bl_main.c:42:0:
../../../../../../bootloader//include/armv7a/am335x/bl_platform.h:129:10: error: #error Unsupported board !!
../../../../../../bootloader/src/bl_main.c: In function 'main':
../../../../../../bootloader/src/bl_main.c:168:1: warning: control reaches end of non-void function [-Wreturn-type]
In file included from ../../../../../../bootloader//src/bl_copy.c:43:0:
../../../../../../bootloader//include/armv7a/am335x/bl_platform.h:129:10: error: #error Unsupported board !!
In file included from ../../../../../../bootloader/src/armv7a/am335x/bl_platform.c:54:0:
../../../../../../bootloader//include/armv7a/am335x/bl_platform.h:129:10: error: #error Unsupported board !!
../../../../../../bootloader/src/armv7a/am335x/bl_platform.c: In function 'UARTSetup':
../../../../../../bootloader/src/armv7a/am335x/bl_platform.c:1759:5: warning: implicit declaration of function 'UARTStdioInit' [-Wimplicit-function-declaration]
make[1]: *** [bin] Error 1
make[1]: Leaving directory `/home/ehiebert/am335x_sysbios_ind_sdk_1.0.0.8/sdk/starterware/build/armv7a/gcc/am335x/evmAM335x/bootloader'
make: *** [debug] Error 2
ehiebert@ubuntu:bootloader$
Well that clearly won't fly as I don't have a binary to try. Add the following option to the makefile
#
# Device and EVM definitions
#
DEVICE=am335x
EVM=evmAM335x
BOARD=HW_IDK
And to the makedefs add:
#
# C compilation options
#
Debug_FLAG=-g
Release_FLAG=-g -O2
ifdef DEVICE
DEVICE_D=-D${DEVICE}
endif
ifdef EVM
EVM_D=-D${EVM}
endif
ifdef BOARD
BOARD_D=-D${BOARD}
endif
CFLAGS=-mcpu=cortex-a8
CFLAGS+=-c ${${TARGET_MODE}_FLAG} -mlong-calls -fdata-sections -funsigned-char -ffunction-sections -Wall ${IPATH} -Dgcc ${DEVICE_D} ${EVM_D} ${BOARD_D} -D SUPPORT_UNALIGNED -D ${BOOT}
Now drop the console and make clean. The do a make all. This gives a boot_ti.bin in the binary directory and what do you know. It finally boots.
*** StarterWare Boot Loader. Build - 1.0.4
Copying application image from MMCSD to RAM
So I finally have a working bootloader. But my question is:
WHAT EVM IS SUPPORTED IN THE STARTERWARE 2.00.00.07 release???? And why can I make that work?
TIA for any responses.
And TI, you're welcome for me fixing your problems.