参考gel文件中的配置,完成arm的引导和初始化
打开OMAPL138平台的Starterware目录下GPIO_LED工程,添加以下初始化代码所需的宏定义
#define PSC0_BASE 0x01C10000
#define LPSC_DSP 15
#define PSC_TIMEOUT 200
#define PSC0_MDCTL (PSC0_BASE+0xA00)
#define PSC0_MDSTAT (PSC0_BASE+0x800)
#define PSC0_PTCMD *(unsigned int*)(PSC0_BASE + 0x120)
#define PSC0_PTSTAT *(unsigned int*)(PSC0_BASE + 0x128)
找到GEL文件图中初始化的函数定义:
将图中的代码复制到工程源码中,并且屏蔽两处“ GEL_TextOut ”的打印行,如下图:
继续定义DSP的初始化wake_dsp函数,设定引导地址和调用以上初始化函数。添加以下代码:
static void wake_dsp()
{
*(volatile unsigned int *)(0x01C14044) = 0x11800000;
PSC0_LPSC_enableCore(1,LPSC_DSP);
}
在main主函数中,调用wake_dsp()
Rebuild重新编译。
修改DSP裸机工程的cmd文件入口地址
以控制核心板LED的Timer工程为例,修改cmd文件的程序入口。
注意,DSP和ARM的内存空间,不可以重叠冲突,建议一个使用DDR,另一个使用SHRAM,如图所示:
重新编译Timer工程,生成.out文件;
打开AIS生成工具AISgen_d800k008.exe
选择加载AISgen_Boot6748_on138_456M_config.cfg配置文件。
点击"+",选择步骤一,生成的arm端裸机二进制可执行文件GPIO_LED.out
选择对应的生成路径(非中文路径即可)。
点击Generate AIS生成.ais可执行文件。
连接开发板和仿真器,在arm核加载nandwrite.out文件,擦除flash后,烧写test_a.bin文件。
重新上电,拨码开关改成从nand flash启动,底板GPIO由ARM控制,核心板LED由DSP控制。
ARM裸机工程,DSP裸机工程烧写,测试成功。