Board logo

标题: NiosII处理器软件代码优化方法 [打印本页]

作者: caopengly    时间: 2007-8-6 11:59     标题: NiosII处理器软件代码优化方法

  Altera公司的NiosII软核处理器具有完全可定制特性、高性能、较低的产品和实施成本、易用性、适应性以及不会过时等优势。使用NiosII处理器,将不会局限于预先制造的处理器技术,而是根据用户的标准定制处理器,按照需要选择合适的外设、存储器和接口。此外,还可以轻松集成用户专有的功能,使设计具有独特的竞争优势。

  NiosII处理器的软件开发是建立在ANSI C基础上的。NiosII IDENiosII系列嵌入式处理器的主要软件开发工具。用户可以在NiosII IDE中完成所有的软件开发任务,如编辑、编译、下载、调试和闪存编程。NiosII嵌入式系统的一个重要问题就是软件代码量的大小,这关系到存放代码的存储器件容量大小,因此控制和减小程序代码量是降低系统成本的重要方法,必须首先从处理器的启动顺序开始研究。

1  NiosII处理器启动顺序和程序入口地址

  NiosII处理器的启动可采用两种方式:自动初始化和用户自定义初始化。ANSI C标准定义应用程序可以通过调用main()来开始执行。在调用main()之前,应用程序假定运行环境和所有的服务系统都被初始化并准备运行。初始化可以被硬件抽象层(HAL)系统库自动执行。程序员不需要考虑系统的输出设备以及如何初始化每一个外设,HAL会自动初始化整个系统。

  另外,ANSI C标准也提供了一个可变的入口点程序,以避免自动初始化。ANSI C标准还定义程序员能手动初始化任何所用的硬件。alt_main()函数提供了一个独立式的编程环境,能够完全控制系统的初始化。独立式编程环境可以使程序员手动编写初始化系统的代码。
HAL
提供的系统初始化代码按以下启动顺序运行:

① 启动指令和数据高速缓冲存储器;
② 
配置堆栈;
③ 
配置全局指针;
④ 
通过链接器提供的_bss_start_bss_end来零初始化BSS层,_bss_start_bss_end是开始和结束BSS的命令;
⑤ 
如果当前系统没有启动下载器,就复制.rwdata.rodata,或者剩下的部分到RAM
⑥ 
调用alt_main()

[attach]2275[/attach]

[此贴子已经被作者于2007-8-6 12:00:00编辑过]


作者: Jerome    时间: 2007-8-21 17:02

谢谢


作者: hero_word    时间: 2007-8-26 01:55

谢谢了。






欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0