NIOS软核处理器的Linux引导程序U-boot设计
e,对Linux引导有特别的支持;
⑥单软件软件运行环境(hello.c);
⑦监控(minitor)命令集有读写I/O、内存、寄存器、外设测试功能等;
⑧脚本语言支持(类似BASH脚本);
⑨支持watchDog,LCDlogo,状态指示功能等。
本文着重介绍uClinux向Nios软核处理器移植过程中,U-boot的设计和实现。
2U-boot的设计
2.1bootloader的设计思想
bootloader的设计除了依赖于CPU的体系结构外,它实际上也依赖于具体的嵌入式板级设备的配置。也就是说,对于两块不同的嵌入式板而言,即使它们是基于同一种CPU而构建的,要想让运行在一块板子上的bootloader程序也能运行在另一块板子上,通常也都需要修改bootloader的源程序。从本质上讲,它不属于操作内核,它是针对不同的CPU体系结构的,这一部分代码不具有可移植性。在移植操作系统时,这部分代码必须加以改写。
bootloader引导加载程序是系统加电后运行的第一段软件代码。通过这段小程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。在嵌入式系统开发中,bootloader还担任了与主机端通信的任务,它相当于一个“服务器”,不断监听从主机端传来的控制信息和数据信息,完成相应的操作。它担负着初始化硬件和引导操作系统的双重责任,也是在特定硬件平台上操作系统移植至关重要的一点。
2.2Nios内核的U-boot设计方案
在主机上建立开发环境的具体步骤:
①建立Nios平台内核的头文件和连接;
②建立实用程序集合;
③建立Nios平台C编译器;
④建立Nios平台的glibc库;
⑤建立Nios平台C++编译器;
⑥建立应用程序的开发和测试。
所建立的开发环境结构图如图1所示。
搭建完开发环境后,使用开发主机的并口为Nios开发板写入引导程序作为系统启动和管理Flash的bootloader,也就是U-boot。该工具能为Nios平台提供引导功能,并且能够支持网络通信,调试和简单的Flash文件系统,也是CPU开机后执行的第一个程序,它的任务是将操作系统内核(压缩的或非压缩的)装载到内核要求的地址中,然后让出控制权。
Nios处理器允许操作系统改变内核时钟,以方便内存对于时间的处理,所以U-boot的第一个任务就是配置处理器的时钟,并进行内存存取设置。一旦内存可以使用,就开始初始化相应的堆栈。内存初始化完成后,U-boot能使处理器上的串口中断处理,以允许开发板通过串口与开发环境通信。此后,U-boot还必须完成三个基本工作:
*禁用MMU(MemoryManagementUnit);
*寄存器(CPU寄存器)r0置零;
*寄存器R1置相应的Nios体系结构代码。
完成这些后,U-boot的工作就完成了,可以通过用户命令或者系统自动执行下一步,U-boot将跳至内存中内核代码开始处,开始启动内核。流程图如图2所示。
3Nios内核的U-boot实现
为了达到将U-boot移植到Nios平台上的目的,我们进行以下操作。
①在makefile文件和makeallscript里增加一项设置选择,仿照已经存在的那些例子。
②建立一个存放开发板代码的目录,增加所需要的文件。在这个目录里,至少有“makefile”,“nios.c“,"flash.c""u-boot.lds"。
③为开发板建立一个新的设置文件:include/configs/nios.h。
④如果移植U-boot到一个新的CPU,还需要建立一个放置CPU代码的目录。
⑤运行makenios_config。
⑥运行m
ake,获得一个U-boot.srec的文件并安装到目标系统。
⑦调试并解决可能产生的问题。
当然,在修 《NIOS软核处理器的Linux引导程序U-boot设计(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/166656.html
⑥单软件软件运行环境(hello.c);
⑦监控(minitor)命令集有读写I/O、内存、寄存器、外设测试功能等;
⑧脚本语言支持(类似BASH脚本);
⑨支持watchDog,LCDlogo,状态指示功能等。
本文着重介绍uClinux向Nios软核处理器移植过程中,U-boot的设计和实现。
2U-boot的设计
2.1bootloader的设计思想
bootloader的设计除了依赖于CPU的体系结构外,它实际上也依赖于具体的嵌入式板级设备的配置。也就是说,对于两块不同的嵌入式板而言,即使它们是基于同一种CPU而构建的,要想让运行在一块板子上的bootloader程序也能运行在另一块板子上,通常也都需要修改bootloader的源程序。从本质上讲,它不属于操作内核,它是针对不同的CPU体系结构的,这一部分代码不具有可移植性。在移植操作系统时,这部分代码必须加以改写。
bootloader引导加载程序是系统加电后运行的第一段软件代码。通过这段小程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。在嵌入式系统开发中,bootloader还担任了与主机端通信的任务,它相当于一个“服务器”,不断监听从主机端传来的控制信息和数据信息,完成相应的操作。它担负着初始化硬件和引导操作系统的双重责任,也是在特定硬件平台上操作系统移植至关重要的一点。
2.2Nios内核的U-boot设计方案
在主机上建立开发环境的具体步骤:
①建立Nios平台内核的头文件和连接;
②建立实用程序集合;
③建立Nios平台C编译器;
④建立Nios平台的glibc库;
⑤建立Nios平台C++编译器;
⑥建立应用程序的开发和测试。
所建立的开发环境结构图如图1所示。
搭建完开发环境后,使用开发主机的并口为Nios开发板写入引导程序作为系统启动和管理Flash的bootloader,也就是U-boot。该工具能为Nios平台提供引导功能,并且能够支持网络通信,调试和简单的Flash文件系统,也是CPU开机后执行的第一个程序,它的任务是将操作系统内核(压缩的或非压缩的)装载到内核要求的地址中,然后让出控制权。
Nios处理器允许操作系统改变内核时钟,以方便内存对于时间的处理,所以U-boot的第一个任务就是配置处理器的时钟,并进行内存存取设置。一旦内存可以使用,就开始初始化相应的堆栈。内存初始化完成后,U-boot能使处理器上的串口中断处理,以允许开发板通过串口与开发环境通信。此后,U-boot还必须完成三个基本工作:
*禁用MMU(MemoryManagementUnit);
*寄存器(CPU寄存器)r0置零;
*寄存器R1置相应的Nios体系结构代码。
完成这些后,U-boot的工作就完成了,可以通过用户命令或者系统自动执行下一步,U-boot将跳至内存中内核代码开始处,开始启动内核。流程图如图2所示。
3Nios内核的U-boot实现
为了达到将U-boot移植到Nios平台上的目的,我们进行以下操作。
①在makefile文件和makeallscript里增加一项设置选择,仿照已经存在的那些例子。
②建立一个存放开发板代码的目录,增加所需要的文件。在这个目录里,至少有“makefile”,“nios.c“,"flash.c""u-boot.lds"。
③为开发板建立一个新的设置文件:include/configs/nios.h。
④如果移植U-boot到一个新的CPU,还需要建立一个放置CPU代码的目录。
⑤运行makenios_config。
⑥运行m
ake,获得一个U-boot.srec的文件并安装到目标系统。
⑦调试并解决可能产生的问题。
当然,在修 《NIOS软核处理器的Linux引导程序U-boot设计(第2页)》