问答

汇集网友智慧,解决技术难题

hanyidadada

TA的家园币:39  

  • C6678局部复位,对指定核替换bin并执行的问题

    目前希望完成功能如下,C6678有8个核,希望能够通过核0来控制其他核加载指定的程序执行。核0通过网络接收上位机发送的参数数据以及程序镜像,然后对核1或者其他核设置局部复位,根据参数(即c_int00地址)写BOOT_MAGIC,发送ipc中断。问题如下:当将程序bin放在LS2RAM时,可以正常启动,多次控制同一个核以及不同的核都可以成功。但是当将bin放在DDR3时,第一次发送了参数以及镜像bin后,无法启动,第二次发送相同的bin和参数又可以启动。每次新的镜像都会出现这个问题。部分代码如下memset(pBuf,0,13);bytes=(int)recv(connfd,(void*)pBuf,9,0);//接收bin程序入口_c_int00地址if(bytes!=8){uart_printf("FileHeadError1!bytes:%d!\n",bytes);gotoleave;}Entry_Address=strtohex(pBuf,8);memset(pBuf,0,13);bytes=(int)recv(connfd,(void*)pBuf,9,0);//接收存放bin文件起始地址if(bytes!=8){uart_printf("FileHeadError2!bytes:%d!\n",bytes);gotoleave;}WriteAddr=(unsignedint*)strtohex(pBuf,8);memset(pBuf,0,13);bytes=(int)recv(connfd,(void*)pBuf,2,0);//ignorestandardheaderif(bytes!=1){uart_printf("FileHeadError3!bytes:%d!%s\n",bytes,pBuf);gotoleave;}corenum=pBuf[0]-0x30;//接收需要替换代码的核号uart_printf("%x%x%d\n",Entry_Address,(unsignedint)WriteAddr,corenum);while(1){//循环接收bin文件memset(pBuf,0,13);bytes=recv(connfd,pBuf,4,0);if(bytes

    DSP 嵌入式 技术交流 TE AD ar

    2022-03-18 0