页面加载中,请稍候
来源:现代电子技术发布时间:2010-09-30357浏览
询问 AIO 引言
Altera公司的FPGA作为全定制芯片的一个代表正在得到日益广泛的应用。为了用户使用方便,Altera公司推出嵌入式软核NiosⅡ可以便利地使用工具生成并放人FPGA芯片中。NiosⅡ软核可以在用户的系统中处理一些诸如人机接口界面、内部时序逻辑控制、外部设备初始化等工作。通用异步收发器(UART),是嵌入式系统上很常用的一个串行接口,由于其方便、简单、易用等特性,在嵌入式系统中依然扮演着十分重要的角色。所以Altera才把UART作为一个连接Nios/NiosⅡ与其相关外设的IP放在SoPC Builder里面供用户使用。Nios一代调试甚至直接用串口。
NiosⅡ处理器是Intel公司为Altera公司推出的一个32位精简指令处理器软核。在Altera公司推出的软件SoPC中加载NiosⅡ软核和相应的外围接口以及与定义相应的自定义指令,然后对设计进行综合,下载到FPGA中就可以方便地实现一个具有高速DSP功能的嵌入式处理器。
NiosⅡ处理器的软件开发是建立在ANSI C基础上的。NiosⅡIDE是NiosⅡ系列嵌入式处理器的主要软件开发工具。用户可以在NiosⅡIDE中完成所有的软件开发任务,如编辑、编译、下载、调试和闪存编程。NiosⅡ嵌入式系统的一个重要问题就是软件代码量的大小,这关系到存放代码的存储器件容量大小,因此控制和减小程序代码量是降低系统成本的重要方法,必须首先从处理器的启动顺序开始研究。
1 串口C语言方式编程
使用该方法要加上下面语句:
[!--empirenews.page--]
2 串口直接读写寄存器方式编程
2.1 串口初始化
NiosⅡ的串口编程有多种方式,比较多的是采用标准C语言写法,占用程序空间比较大。NiosⅡ处理器的启动可采用2种方式:自动初始化和用户自定义初始化。ANSI C标准定义应用程序可以通过调用main()来开始执行。在调用main()之前,应用程序假定运行环境和所有的服务系统都被初始化并准备运行。初始化可以被硬件抽象层(HAL)系统库自动执行。程序员不需要考虑系统的输出设备以及如何初始化每一个外设,HAL会自动初始化整个系统。
另外,ANSI C标准也提供了一个可变的入口点程序,以避免自动初始化。ANSI C标准还定义程序员能手动初始化任何所用的硬件。alt_ main()函数提供了一个独立式的编程环境,能够完全控制系统的初始化。独立式编程环境可以使程序员手动编写初始化系统的代码。
HAL提供的系统初始化代码按以下启动顺序运行:
(1)启动指令和数据高速缓冲存储器;
(2)配置堆栈;
(3)配置全局指针;
(4)通过链接器提供的_bss_start和_bss_end来零初始化BSS层,_bss_start和_bss_end是开始和结束BSS的命令;
(5)如果当前系统没有启动下载器,就复制.rwdata,.rodata或者剩下的部分到RAM;
(6)调用alt_main()。
在NiosⅡIDE工程中,只需简单定义alt_main()就可以实现用户的启动顺序,而且能够选择HAL的服务程序。如果应用程序需要一个alt_ main()入口点程序,可以复制默认的执行作为开始点,根据要求来定制它。
经实验证明,该方法简单可靠,可以生成比较小的代码。
4 结语
本文讨论了嵌入式软核NiosⅡ中串口模块的编程方法,给出了串口模块编程的示例代码,经实际运用,效果良好,具有一定的参考意义。
新闻来源:现代电子技术,文中所述为作者独立观点,不代表icspec立场。更多精彩资讯请下载icspec App。如对本稿件有异议,请联系微信客服specltkj。
暂无评论哦,快来评论一下吧!
2026-06-14