转自:http://blog.csdn.net/boriscoding/article/details/24450651
加了Nios并在上面跑uCOS的时候,nios里面的onchip memory已经无法满足程序的规模了。即使是EP4CE6的,单跑一个带uCOS的nios cpu也不够放。所以必须放到板上的SDRAM(内存)里面去跑。
1. 先创建一个Nios核。
注意new_sdram_controller的最后一个Conduit的s需要双击输出端口。
2. 在设置sdram_controller的时候注意要与开发板上的sdram型号对应
我的是hy57v641620,配置如图:
3. 当然CPU(NIos Processor)里面的Reset Vector 和 Exception Vector不能再是Onchip Memory而应该是new_sdram_controller。
4. 其他什么自动分配基地址,中断等等都一样。然后生成。
5. 回到硬核添加Nios
这里注意:
(1)sdram_controller的s引出的管脚必须严格对应开发板sdram型号的分配
(2)SDRAM_controller的时钟虽然在nios内部设置的时候从clk连接到了controller上面,但是sdram本身的时钟必须与Nios系统的时钟分开。
具体操作是:在硬核中加一个PLL,input是板上的晶振,output用两个c0,c1。c0不倍频接给Nios,c1需要向右边移动63相位。
c1配置如图:
硬件连接如图:
6. 软核部分
(1)打开eclipse建立带bsp的工程blahblah。。。
建立hello microOS模板工程
(2)edit bsp
common里面有这几个地方修改:
Advanced里面设置成这样:
(3)build and run
如果build过了,run到一半出现无法下载elf的错误,多半是管脚sdram_controller的s甩出来的那一堆管脚没有分配正确导致;另外就是SDRAM本身没有分配单独的一个时钟信号。