如何在TI的AM335x上面使用SGX加速的有OpenGL支持的QT
简单的梳理下:
前提是U-boot、内核、文件系统都搞利索了,板子能启动了
TI的Wiki提供了U-boot和内核的说明,地址点这里。
TI的SDK里提供了制作好的文件系统,但是太庞大了,可以下载Buildroot自己做一个。
下载我做的Buildroot补丁,和TI图形SDK
补丁的地址在这里。
这个补丁是我给Buildroot 2013.05做的,与之相配的TI图形SDK在这里,下“Graphics_SDK_setuplinux_4_10_00_01_BinOnly.bin”就可以。
应该2013.05之后一段时间Buildroot版本都可以使用这个补丁。
用SDK编译内核模块
可以参照TI的指南,地址点这里。也可以直接看本文。
用Buildroot制作根文件系统!
如何在AM335x上调试u-boot
AM335x上u-boot启动的过程是先加载spl,spl初始化DDR之后加载u-boot。AM335x内部SRAM能加载大概100kB的spl,但是为避免调试时候乱跑,u-boot需要用-O0编译,这样spl的大小会超过内部SRAM的大小,所以需要修改代码根目录的config.mk,把spl和u-boot区别对待,找到
OPTFLAGS= -Os #-fomit-frame-pointer
改成
ifeq ($(CONFIG_SPL_BUILD),y)
OPTFLAGS= -Os #-fomit-frame-pointer
else
OPTFLAGS= -O0 -fPIC #Debug
endif
然后就可以编译了(我的u-boot在/home/lxz/am335x_bsp/u-boot-2013.01/)
cd /home/lxz/am335x_bsp/u-boot-2013.01/
make CROSS_COMPILE=arm-none-eabi- ARCH=arm distclean
make CROSS_COMPILE=arm-none-eabi- ARCH=arm am335x_evm_config
make CROSS_COMPILE=arm-none-eabi- ARCH=arm
编译完以后,spl在代码根目录下spl/u-boot-spl.bin,再修改ZylinCDT的Initialize Command脚本(J-Link GDBServer在192.168.9.225这台机器上运行)
target remote 192.168.9.225:2331
file /home/lxz/am335x_bsp/u-boot-2013.01/spl/u-boot-spl
load
monitor go
monitor sleep 2000
monitor halt
file /home/lxz/am335x_bsp/u-boot-2013.01/u-boot
load
add-symbol-file /home/lxz/am335x_bsp/u-boot-2013.01/u-boot 0x87af5000
基本的思路是,先加载spl,运行,让spl去初始化DDR,然后加载u-boot,然后把符号文件位置加到u-boot重定位之后的地址上。这个地址可以从u-boot根目录下arch/arm/lib/board.c的board_init_f函数最后几行“gd->relocaddr = addr;”这句得到,可以先调试一遍,看到这个地址值之后再加上上述脚本的最后一句话。
其他处理器可以用初始化脚本来初始化DDR,但是AM335x初始化的过程比较复杂,不适合写脚本,不如就直接借用已经编译好的spl。
edma3与edma的区别
增强型直接内存访问EDMA 是DSP 中一种高效的数据传输模块,能够不依赖CPU 进行数据的搬移,是在高速接口的使用中,十分重要的设备。与之前的EDMA 模块相比,EDMA3在传输的同步方式、地址跳变、触发方式上都变得更为灵活。在TI 的新型DSP 中,外设根据数据传输是否依赖EDMA3 而分成了2 种。AIF 是一种高速接口模块,用于基带模块与射频模块间数据的传输。该接口需要EDMA3 为其提供待传输的数据及搬移已接收的数据。
EDMA3模块及其在AIF接口中的应用
http://blog.csdn.net/zzsfqiuyigui/article/details/6767205