主题中讨论的其他器件:OMAPL138、 OMAP3530
我想在 U-boot 中加载并执行 DSP .out (elf)文件。
它使用 u-boot 的 load_elf_image_shdr()函数进行加载。
但是、DSP 不运行、因为 DSP 入口点设置和复位代码不正确。
请输入用于 DSP 应用起点设置和复位的 U-boot 代码。
谢谢你。
int do_bootdsp (cmd_tbl_t * cmdtp、int 标志、int argc、char * const argv[])
{
unsigned long addr;/* ELF 映像的地址*/
char *sload,*saddr;
unsigned long num=0;
sload = saddr = NULL;
如果(argc == 3){
sload = argv[1];
saddr = argv[2];
}否则、如果(argc == 2){
如果(argv[1][0]='-')
sload = argv[1];
其他
saddr = argv[1];
}
如果(saddr)
Addr = simple_strtoul (saddr、NULL、16);
其他
Addr = load_addr;
如果(!valid_elf_image (addr))
{
printf ("无效的 elf 图像.\r\n");//JSG
返回1;
}
/*保持复位*/
DSP_RESET_ASSERT ();
if (sload && sload[1]='p'){
Addr = load_elf_image_addr (addr);
}
否则{
Addr = load_elf_image_shdr (addr);
}
printf ("##正在以0x%08lX...\n"、addr 启动 DSP 的应用);
/*设置 DSP 复位矢量*/
DSP_entry_point (addr);
/*释放复位*/
DSP_RESET_deassert();
返回0;
}
void DSP_entry_point (无符号长 addr)
{
uint8_t 内核= 0;
/*写入引导地址*/
*(uint32_t *)(dsp_magic_address |(1<<28)|(内核<<<24))= addr;
}
空 DSP_RESET_ASSERT (空)
{
}
空 DSP_RESET_DEASSERT (空)
{
}