注:必须是Linux/arm 3.0以上内核才支持RPMSG,在此使用的是.config - Linux/arm 3.0.31 Kernel Configuration。(soure code from blaze_tablet 4AJ.2.1 http://omappedia.org/wiki/4AJ.2.1_OMAP4_Jelly_Bean_Release_Notes)
1、配置Linux内核驱动使得支持RPMSG(see also:http://omappedia.org/wiki/RPMsg_Kernel_Sources)
Kernel Built-In
In menuconfig:
export ARCH=arm
make menuconfig
Make sure that the following options are set. Look in Build Customization section for customizing your build.
System Type --->
TI OMAP Common Features --->
<*> OMAP Virtio-based remote processor messaging support
[*] OMAP RPMSG Recovery
-*- Mailbox framework support
(256) Mailbox kfifo default buffer size (bytes)
-*- IOMMU support for OMAP devices
[ ] Export OMAP IOMMU internals in DebugFS
(0x0) Physical carveout memory pool size (Byte)
Device Drivers --->
<*> Multimedia support --->
<*> TI TILER support --->
Device Drivers --->
<*> Generic Hardware Spinlock framework
<*> OMAP Hardware Spinlock device
[*] Autosuspend support for remoteproc
[*] OMAP remoteproc support
<*> Remote Processor Resources
[*] OMAP remoteproc watchdog timer
<*> Virtio-based remote processor messaging bus
<*> rpmsg OMX driver
<*> rpmsg resource manager
<M> An rpmsg client sample
<M> An rpmsg server sample
2、配置Linux内核驱动使得支持RPMSG Tesla(see also:http://omappedia.org/wiki/RPMsg_Tesla)
In order to enable Tesla support, select the OMAP remoteproc support for DSP option in the Device Drivers section in menuconfig
export ARCH=arm
make menuconfig
Device Drivers --->
[*] Autosuspend support for remoteproc
[*] OMAP remoteproc support
[*] OMAP remoteproc support for IPU
[*] OMAP remoteproc support for DSP
3、编译内核,重启blaze_tablet板,串口出现如下打印则说明内核已经支持DSP。
[ 0.250335] omap_rproc_get_pool: dsp - static memory is unavailable: 0x0, 0x0
[ 0.251373] omap_rproc_get_pool: ipu - carveout memory is unavailable: 0x0, 0x0
[ 0.251373] omap_rproc_get_pool: ipu - carveout memory is unavailable: 0x0, 0x0
[ 0.275665] omap-rproc omap-rproc.0: dsp is available
[ 0.276275] omap-rproc omap-rproc.1: ipu is available
[ 0.276275] omap-rproc omap-rproc.1: ipu is available
[ 1.450378] omap-iommu omap-iommu.0: ducati registered
[ 1.450378] omap-iommu omap-iommu.1: tesla registered
[ 1.450378] omap-iommu omap-iommu.1: tesla registered
[ 1.632354] omap-rproc omap-rproc.1: powering up ipu
[ 1.632843] virtio_rpmsg_bus virtio0: rpmsg backend virtproc probed successfully
[ 1.632843] virtio_rpmsg_bus virtio1: rpmsg backend virtproc probed successfully
[ 1.632843] omap-rproc omap-rproc.0: powering up dsp
[ 1.634368] virtio_rpmsg_bus virtio2: rpmsg backend virtproc probed successfully
[ 1.632843] virtio_rpmsg_bus virtio0: rpmsg backend virtproc probed successfully
[ 1.632843] virtio_rpmsg_bus virtio1: rpmsg backend virtproc probed successfully
[ 1.632843] omap-rproc omap-rproc.0: powering up dsp
[ 1.634368] virtio_rpmsg_bus virtio2: rpmsg backend virtproc probed successfully
[ 8.551696] omap-rproc omap-rproc.0: rproc_loader_cont: failed to load tesla-dsp.bin
下一步则增加tesla-dsp.bin映像并使之加载启动OK,待续。。。