TI中文支持网
TI专业的中文技术问题搜集分享网站

NDK工程 EMIF NOR FLASH启动异常,问题请教。

麻烦各位专家高手给点调试意见,现象如下:

使用的是C6678芯片,自己新建了一个TCP client数据发送的简单工程,采用非阻塞模式。在线仿真调试能正常连接服务器并发送数据。现在我们打算通过EMIF NOR FLASH引导启动上述工程,发现以下现象:

1 自己写了一个bootloader的小工程,映射在0x70000000位置,负责将TCP client工程进行引导搬运;而 TCP client工程的数据存放在0x70200000位置;
2 为了验证bootloader是否功能正常,我们首先将TCP client工程烧写到nor Flash的0x70200000位置,然后将bootloader工程cmd映射修改为 共享内存0x0C000000,并用仿真器在线调试,走完全部bootloader过程,程序跳转到TCP client工程的起始运行地址后,能正常连接服务器并发送 数据。
4 最后,将bootloader工程烧写到0x70000000位置,上电启动后服务端一直没有接收到数据,这时用仿真器load symbol后,观察到TCP client工程引导已经完成,客户端程序在执行connect函数时一直返回的是EHOSTDOWN,感到比较疑惑是什么导致connect返回EHOSTDOWN?

另外,上述TCP client工程通过SPI模式引导是能成功运行的。

Allen35065:

因为你的Bootloader放在SL2和EMIF地址执行的结果不一致,怀疑你的TCP client和bootloader在内存段的分配上有重叠,先查一查两者的map文件看是否有可疑的地方。

另一种可能性是Bootloader代码里有越界,放在SL2里执行时越界不会影响EMIF的数据。

countryhotel:

回复 Allen35065:

感谢答复,查看了两个工程的map文件如下,没有存储区间重叠问题,而且异常情况时变现为connect返回EHOSTDOWN,程序并没有跑飞。

TCP工程map:

OUTPUT FILE NAME: <tcp.out>ENTRY POINT SYMBOL: "_c_int00" address: 8036d5c0MEMORY CONFIGURATION name origin length used unused attr fill———————- ——– ——— ——– ——– —- ——– MSMCSRAM  0c000000   00400000   00000000    00400000 RW X L2SRAM        10804000    0007c000   0005fb6e     0001c492 RW X DDR3             80000000   10000000   003a16d4    0fc5e92c RW X

boot工程map:

OUTPUT FILE NAME: <jl_c0_bootloader.out>ENTRY POINT SYMBOL: "_c_int00" address: 70000000MEMORY CONFIGURATION name origin length used unused attr fill———————- ——– ——— ——– ——– —- ——–X VECTORS   10800000   00000200   00000000   00000200 RWIX L2                10800200    0007fe00    00002074    0007dd8c RWIX BOOT          70000000    00000100   00000080    00000080 RWIX ROM           70000100     01ffff00         00013898   01fec668 RWIX

赞(0)
未经允许不得转载:TI中文支持网 » NDK工程 EMIF NOR FLASH启动异常,问题请教。
分享到: 更多 (0)