之前都是裸跑,不用操作系统的。
1 先提一个没有操作系统时遇到的问题。
核0乒乓接收(srio)外部的数据,核1~6并行处理数据:
(1)由于数据块大,需要把数据分割成小块,每次EDMA从DDR读数处理1块,处理结果再用EDMA放回DDR,我现在是把需要处理的数据放在了MSM,但MSM 与 L1D之间需要维护cache一致性,导致处理时间不理想,问题来了,处理数据应该放在L2吗?L2与MSM在使用上有没有什么建议?
(2)由于核0接收数据需要访问DDR3,核1~6存取数也需要访问DDR3,都是用EDMA进行突发访问,DDR总线会不会有冲突,我现在为避免总线冲突,用semphore把DDR总线管理起来了,有这种必要吗?
2 sysybios使用
(1)因为用的是自己的板卡,先修改了RTSC->platform下的ti.platform.evm6678中的存储区配置
(2)把PLL和DDR的初始化函数放在了board_ionit()函数中,然后使用Startup.firstFxns[Startup.firstFxn.length++]='&board_init'
(3)在.c的主程序文件中创建一个时钟(Clock)
(4)脱机加载,把文件烧到SPI存储器中
问题 :
(a)经验证,程序确实加载成功了,但board_init中的DDR初始化没有正确地初始化DDR, DDR读写错误,该DDR初始化函数在不加sysbios时验证过的,帮忙分析一下是哪出错了(我在board中放了一个写及寄存器的语句,发现该语句器作用了,证明DDR初始化函数肯定是执行了)
(b)既然加载遇到问题了,那就研究一下Clock吧。可是发现在.c文件的main函数中创建的clk0无法指定Clock源,基于哪个定时器,怎么指定啊?
后来使用XDC图形配置界面生成了一个Clock,可以指定使用哪个定时器Timer产生节拍tick,但调试时,在clkFxn函数中打断点又进不去?这是什么情况啊?
感觉TI sysbios手册太粗糙了,只说了原理,但实际操作的东西没有说,自带的clock例程又太简单,没有跟硬件Timer结合起来,实际操作的时候就会有很多问题,查也查不到,有同感吗?
望 TI工程师和各位过来人解答,谢谢