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.

Bootloader AM335x EVM IDK SYSBIOS vs. "Starterware 2.00.00.07" GCC

Other Parts Discussed in Thread: SYSBIOS

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.

  • Hi,

    Sorry to hear the issues you have been having ... StarterWare v 2.00.00.07 supports the EVMs as listed clearly in the Release Notes document:

    http://processors.wiki.ti.com/index.php/StarterWare_02.00.00.07_Release_Notes#Device_Support

    Device Support

    SOCs Supported:

    • AM335X

    EVMs Supported:

    • TI AM335x EVM Rev 1.1A and above
    • TI AM335x EVM-SK Rev 1.2B and above
    • Beagle Bone Rev A3

    As you can see, we do not claim to support the IDK EVM. To use the IDK EVM, you need to download the SysBIOS based IDK (as you did in your Attempt #3), and refer to the IDK documentation.

    I hope this clarifies your question.

    Regards,
    Mugdha