Discussion area for partners and alpha customers who are working to get VG graphics going on Vybrid.
The intent is for this discussion to be populated by the Freescale internal team with the latest files, instructions, tips etc. to allow others to create a known working platform with the Spinning Tiger Demo running on the Auto EVB Rev C w/ MQX 4.0.2 and the MQX VG drivers (0.4.0 now and 0.5.0 shortly) using HW acceleration on the GC355 GPU.
Solved! Go to Solution.
I added the uboot sources to the same extranet site http://freescale.com/livelink/livelink?func=ll&objid=226470266&objAction=browse&sort=name
In the tar file there is a binary if you want to skip the building process.
To get the rotating tiger first you need:
The following SW:
- MQX 4.0.2 EAR1
- vf600 OpenVG 0.4.0
- Uboot Image... I am using: U-Boot 2011.12-00548-gd2215dc-dirty (Mar 26 2013 - 16:59:44)
- CodeSourcery GCC compiler: Sourcery CodeBench Lite Edition - Mentor Graphics
- (Download the EABI release: EABI Release Sourcery CodeBench Lite 2012.03-56)
Note: at this initial state, Bill Krakar can provide access to the OpenVG release and uboot binary.
The following HW:
- Vybrid 1.1 with L2 Cache enabled
- SD Card
- AutoEVB Rev C
- serial console
- Display monitor with DVI input and DVI cable
Building the executable:
Build MQX 4.0.2 EAR1
1. edit mqx/source/bsp/vybrid_autoevb_a5/init_bsp.c, change __EXTERNAL_DDRAM_SIZE to 0x800000
2. cd build/vybrid_autoevb_a5/make
3. TOOL=gcc_cs CONFIG=debug TOOLCHAIN_ROOTDIR=$your_cs_install_path/Sourcery_CodeBench_Lite_for_ARM_EABI make build
Build OpenVG Tiger sample app:
Build demo application:
1. Apply rotation_800 makefile patch for mqx4
--- a/tests/rotation_800/build-autovf600-gnu-mqx-d/eclipse/makefile
+++ b/tests/rotation_800/build-autovf600-gnu-mqx-d/eclipse/makefile
@@ -15,10 +15,10 @@
##############################################################################################
# Start of default section
#
-PLATFORM = faraday_a5
+PLATFORM = vybrid_autoevb_a5
GC3XX_ROOT = ../../../..
-MQX_TWRVF65GS10_PATH ?= /home/wayne/vivante/extpacs/os/mqx_impresario
-MQX_LOC ?= $(MQX_TWRVF65GS10_PATH)
+MQX_TWRVF65GS10_PATH ?= $(GC3XX_ROOT)/../extpacs/os/mqx4
+MQX_LOC = $(MQX_TWRVF65GS10_PATH)/lib/$(PLATFORM).gcc_cs
GCC_DIR = $(shell export PATH='$(PATH)'; which $(CC) | sed 's|/bin/.*||; \
s|/cygdrive/\(.\)|\1:|')
GCC_VERSION = $(shell $(CC) --version | grep ^arm | sed 's/^.* //g')
@@ -41,9 +41,8 @@ DDEFS = \
-DTWRVF600 \
-D__GNU__ \
-DDISCFG_PLAT_ACR \
+ -D__STRICT_ANSI__ \
-DARM \
- -DIMPRESARIO_CPU_FARADAY \
- -DUSE_THUMB \
-DgcdENABLE_BANK_ALIGNMENT=1 \
-DgcdBANK_BIT_START=13 \
-DgcdBANK_BIT_END=15 \
@@ -66,35 +65,10 @@ DADEFS =
# List all default directories to look for include files here
DINCDIR = \
$(GC3XX_ROOT)/hal/os/$(OS_TYPE)/inc \
- $(MQX_LOC)/os/mqx/mqx/include \
- $(MQX_LOC)/os/mqx/mqx/bsp \
- $(MQX_LOC)/os/mqx/mqx/psp \
- $(MQX_LOC)/os/mqx/config \
- $(MQX_LOC)/os/mqx/pcmmgr \
- $(MQX_LOC)/os/mqx/pcmmgr/codec \
- $(MQX_LOC)/infrastructure/config/include \
- $(MQX_LOC)/os/mqx/config/common \
- $(MQX_LOC)/infrastructure/config/profiles \
- $(MQX_LOC)/os/mqx/mqx/psp/cortex-a \
- $(MQX_LOC)/os/mqx/mqx/psp/cortex-a/vybrid \
- $(MQX_LOC)/os/mqx/mqx/bsp/$(PLATFORM) \
- $(MQX_LOC)/os/mqx/mqx/io/serial \
- $(MQX_LOC)/os/mqx/mqx/io/spi \
- $(MQX_LOC)/os/mqx/mqx/io/esdhc \
- $(MQX_LOC)/os/mqx/mqx/io/sdcard \
- $(MQX_LOC)/os/mqx/mqx/io/sdcard/sdcard_esdhc \
- $(MQX_LOC)/os/mqx/mqx/io/lwgpio \
- $(MQX_LOC)/os/mqx/mqx/io/sai \
- $(MQX_LOC)/os/mqx/mqx/io/flashx \
- $(MQX_LOC)/os/mqx/mqx/io/flashx/freescale \
- $(MQX_LOC)/os/mqx/mqx/io/esai \
- $(MQX_LOC)/os/mqx/mqx/io/esai/esai_fifo \
- $(MQX_LOC)/os/mqx/mqx/io/esai/esai_fifo/mqx_dev_drv \
- $(MQX_LOC)/os/mqx/mqx/io/asrc \
- $(MQX_LOC)/os/mqx/mqx/io/i2c \
- $(MQX_LOC)/os/mqx/mqx/io/usb \
- $(MQX_LOC)/os/mqx/mqx/io/io_expander \
- $(MQX_LOC)/os/mqx/mfs/include \
+ $(MQX_LOC)/debug/bsp \
+ $(MQX_LOC)/debug/psp \
+ $(MQX_LOC)/../../config/common \
+ $(MQX_LOC)/../../config/$(PLATFORM) \
$(GC3XX_ROOT)/sdk/inc \
$(GC3XX_ROOT)/tests/libs/twrvf600 \
$(GC3XX_ROOT)/tests/libs
@@ -107,13 +81,11 @@ DLIBDIR = \
# List all default libraries here
# bsp/psp libs need to be pulled in before libc, to assure mqx malloc is used
DLIBS = \
- $(GC3XX_ROOT)/libs/vg/build-autovf600-gnu-mqx-d/libovg.a \
- $(GC3XX_ROOT)/libs/egl/build-autovf600-gnu-mqx-d/libegl.a \
- $(GC3XX_ROOT)/tests/libs/twrvf600/build-autovf600-gnu-mqx-d/libtwrvf600.a\
- $(GC3XX_ROOT)/tests/libs/guts/build-autovf600-gnu-mqx-d/libguts.a\
- $(MQX_LOC)/os/mqx/lib/libpsp.a \
- $(MQX_LOC)/os/mqx/lib/libbsp.a \
- $(MQX_LOC)/os/mqx/lib/libpcmmgr.a \
+ $(GC3XX_ROOT)/libs/vg/build-twrvf600-gnu-mqx-d/libovg.a \
+ $(GC3XX_ROOT)/libs/egl/build-twrvf600-gnu-mqx-d/libegl.a \
+ $(GC3XX_ROOT)/tests/libs/twrvf600/build-twrvf600-gnu-mqx-d/libtwrvf600.a\
+ $(MQX_LOC)/debug/psp/psp.a \
+ $(MQX_LOC)/debug/bsp/bsp.a \
-lc -lgcc -lm -lcs3hosted -lcs3 -lcs3arm
#
@@ -131,7 +103,7 @@ PROJECT = ttt
#
# Define linker script file here
#
-LDSCRIPT = $(GC3XX_ROOT)/tests/scripts/impresario_ddr.ld
+LDSCRIPT = $(GC3XX_ROOT)/tests/scripts/ddr.ld
FULL_PRJ = $(PROJECT)
# List all user C define here, like -D_DEBUG=1
@@ -182,9 +154,6 @@ OPT = \
-mfloat-abi=soft \
-fno-exceptions \
-fno-builtin-printf \
- -mfpu=neon \
- -mthumb \
- -nostdlib \
-isystem $(GCC_DIR)/lib/gcc/arm-none-eabi/$(GCC_VERSION)/include \
-isystem $(GCC_DIR)/lib/gcc/arm-none-eabi/$(GCC_VERSION)/include-fixed \
-isystem $(GCC_DIR)/arm-none-eabi/include
2. cd tests/rotation_800/build-autovf600-gnu-mqx-d/eclipse
3. export MQX_TWRVF65GS10_PATH=$your_mqx4_path
4. make
Prepare SD Card:
On a linux host:
- load uboot into sdcard
dd if=u-boot.imx of=/dev/sdX bs=512 seek=2 conv=sync && sync
where /dev/sdX is your sdcard device, for instance: /dev/sdb
- load the generated elf file:
sudo dd if=/media/shared/ttt.bin of=/dev/sdX bs=512 seek=2048 conv=sync && sync
where /dev/sdX is your sdcard device, for instance: /dev/sdb
Testing the SD Card on the AutoEVB:
- Insert the SD card on the AutoEVB sd card slot
- Set the following RCON switches: SW10: 6,7 ON, SW11 4,6 (numbers of individual switches go from 1 to 8)
- Connect the serial port to a terminal with the following settings: speed 115200, Data bits 8, Stop bits 1, Parity None, Flow control xon/xoff.
- Make sure your board has the uart serial port jumpers properly enabled: J46 1-2, J48 set, J49 1-2.
- Make sure your boot jumpers are configured to boot from RCON switches: J15 0 1 2 J18 0 1 2
- Make sure you have connected the DVI to the AutoEVB and your Display
On Uboot
- As soon as you apply power you should see uboot sending data to your terminal, stop the autoboot and write the following to configure the boot parameters
set bootcmd 'mmc read 0x80000420 0x800 0x11364;go 0x80000420'
saveenv
reset
You should see the tiger rotating in your display.
Message was edited by: Ioseph Martinez Pelayo Added: Make sure your boot jumpers are configured to boot from RCON switches: J15 0 1 2 J18 0 1 2
The 0.5.0 OVG Driver requires 4.0.2 Alpha 2 (that is my understanding).
I would like to get this same example working with those versions if possible.
Thanks!
Can you attach the uboot binary to this topic?
I added the uboot sources to the same extranet site http://freescale.com/livelink/livelink?func=ll&objid=226470266&objAction=browse&sort=name
In the tar file there is a binary if you want to skip the building process.
Is Vybrid 1.1 required or could it also run on 1.0 version?
I think it will work on 1.0 but I don't know for sure. I can give it a try later and let you know.
I can't get it running.
It seems to crash in OvgApp_Draw. I can't say exactly because I don't have a hw-debugger; only printf debugging.
Could you upload somewhere a binary that is supposed to work, please? Best with some printfs so I could see where it fails in case of error.
Thanks
Dirk
I just realized that I am using EAR1 and the site is alpha2.
I will give a try with alpha2 and let you know if I see the same problem.
I apologize... it is not working with alpha2 on my side too. There should be some differences between the two versions that make it fail. Let me look if we can get you a EAR1 installer.
The EAR1 was posted before and upated to alpha2 version of this file.
Can you please try this link? http://compass.freescale.net/livelink/livelink/228827556/MQX_4.0.2_-_Alpha2_%28Vybrid_Auto_Board_Onl...
It is supposed to retrieve a previous version of the file which is EAR1
I had to rename the file to *.exe because it was downloaded as livelink file, but is the installer for MQX 4.0.2 EAR1 which I just tested.
Sorry, but following these links never worked at my side.
I normally go to compass side and search for the file.
Try this:
go to http://compass.freescale.net/livelink/livelink?func=ll&objId=226470266&objAction=browse
Left clic on the small arrow pointing down, a menu will pop up
Go down to properties and select versions
You will be taken to the version history of the installer, select the one with EAR1 on the name.
Note: hope you can access to all this options, since this is an extranet site and I am not aware about if you have the required permissions to check previous versions. If not, let me know.
No, doesn't work. But I think I got it now.
I went to compass directly and looked for all revisions of the installer.
I am downloading it now but I cannot test it until Monday.I am already at home ;-)
It might not be a bad idea to do a quick call to confirm Dirk can see, and is downloading the correct versions.
Good news: I see a self-build vg tiger rotating on the screen :smileylaugh:
Switching to the previous MQX release does the trick
Ok, let's talk on Monday. I will try it first thing when I will be back in office.
The MQX that I loaded is different to the one I used before.
The MD5 checksum of the installer is:
db714ed24e67971c73176b78b05fa72a
Mine is not running either -- but I have 1.1 silicon. The interrupts don't fire.
A couple of updates:
- Attached makefile because seems the posted makefile cannot be used to patch
- for MQX check this post: http://compass.freescale.net/livelink/livelink/228827556/MQX_4.0.2_-_Alpha2_%28Vybrid_Auto_Board_Onl...