我的NIOS II学习记录
Nios Development Board Reference Manual, Stratix II Edition
在使用Nios II SDK Shell试运行./restore_my_flash时,发现restore_my_flash会区分目录名的大小写,因此使用Nios II SDKShell时最好注意大小写一致。
restore_my_flash.pl为perl脚本,可以直接修改后直接执行。
restore_my_flash不能正常取得命令行参数,但这不影响恢复出厂设置的操作,因为restore_my_flash可以不依靠命令行参数来 执行。
最好不要移动NiosII的安装目录,例如restore_my_flash就会从目录名中提取内容生成需要的文件名。
恢复出厂设置需 要.和.flash两个文件,估计.sof用于生成最小的nios系统,以便将.flash文件下载到Flash中。 (restore_my_flash提示使用J24 连接器,该连接器是用于配置StratixII器件的。)
Creating Multiprocessor NiosII Syst Tutorial
在standard设计的基础上修改了Nios II系统,又添加了两个Nios II处理器及各自的定时器、共享互斥锁、消息缓冲区。编译、运行和调试了hello_world_multi程序。
给我的感觉是:
SOPC Builder中设置的NiosII的Reset和Exception地址很重要;
QusII生成的编程文件中包含有NiosII处理器的 复位地址;
NiosII IDE的编译会生成绝对地址的代码和数据;
NiosII IDE通过NiosII处理器中的jtag_debug_module重定向程序的执行地址;
上电或复位后,NiosII处理器从复位地址(通常指 向Flash)处执行Boot Loader,将程序拷贝到Ram中并在Ram中执行;
Exception地址确定了程序拷贝到Ram中的位置,Exception地址的低位总是 0x20,NiosII处理器跳转到Ram执行时先执行低位地址为0x00的指令(用于初始化指令cache),之后执行低位地址为0x20处的系统启动代码。
Nios II多处理器设计的注意点:
不支持SMP(对称多处理),只支持不对称的(每个处理器执行不同的程序);
处理器之间可以不共享资源;
同一程序中的各处理器的代码空间不能重合(通过Reset和Exception地址实现);
共享数据存储器最好用硬件共享互斥锁 结合软件操作的方式来实现,不支持纯硬件的共享方式(如果软件不使用硬件互斥锁,仍然会有访问冲突),纯软件的共享方式有使用限制并且较复杂;
软件 共享互斥锁只适用于同一处理器的不同进程之间共享资源;
Nios II HAL library不支持共享外设(涉及中断处理、外设输入数据的处理等),Ara建议由固定的处理器管理相应的外设,其他处理器要使用该外设可以通过 消息缓冲区的方式;
不同于单处理器设计,多处理器设计一定要明确规定每个组件的总线连接点;
只要由不同的处理器访问,两个组件可以有相同的地址;
由设计人员保证各处理器使用的代码空间是足够的、不发生覆盖的;
多处理器的软件的运行、调试可以一起或分别启动、终止,NiosII 5.0暂不支持一起暂停、再继续,“一起”不是“同时”。
Nios II Flash Programmer User Guide
(
- 上一篇:使用ModelSim作前仿真与后仿真
- 下一篇:如何选择FPGA器件?