BM3823的操作系统移植和驱动开发

发布时间:2021-06-27 16:29
  随着航天事业的不断发展,对航天器中操作系统的可靠性和功能多样性的要求越来越高。但开发专用的航天操作系统价格十分昂贵,而Linux操作系统源码开放,将Linux移植到航天器件中开发成本较低。同时Linux性能优异、运行可靠、可扩张性强非常有利于开发,支持多种架构类型,可以根据不同硬件结构进行按需裁剪,逐渐被应用在航天领域,所以研究移植Linux操作系统到航天器件中具有重要意义。本文基于BM3823开发板,研究和实现移植Linux操作系统。为了正确加载Linux,在分析SPARC V8架构基础上,先实现移植U-Boot。在U-Boot中建立对应硬件的设备树结构,完成向Linux传递启动参数和设备树结构的功能,将U-Boot作为Bootloader引导Linux启动。分析Linux操作系统结构和机制后,在Linux中实现基于SPARC V8架构的启动过程,完成Linux解析传入的启动参数和设备树结构,初始化MMU,挂载根文件系统后运行应用程序等功能。在BM3823开发板上,用U-Boot引导Linux镜像文件正确运行,并对Linux操作系统进行测试。为了完善Linux操作系统的功能,在成功移... 

【文章来源】:哈尔滨工业大学黑龙江省 211工程院校 985工程院校

【文章页数】:75 页

【学位级别】:硕士

【部分图文】:

BM3823的操作系统移植和驱动开发


BM3823硬件实物图

代码,设备,文件


哈尔滨工业大学工学硕士学位论文-15-……console_setfile(stdout,outputdev);(3)定义leon_prom_info结构体类型变量pspi,用于U-Boot向Linux传递参数,代码如下:kernel_arg_promvec=&pspi->romvec;pspi->dtb_offset=(((unsignedint)(gd->fdt_blob))&0x0fffffff)|PAGE_OFFSET;最后调用main.c文件中的main_loop函数,进入命令循环。至此,U-Boot会一直等待用户从串口输入命令。如果外设能正常运行且有对应的驱动程序,用户输入控制外设的命令后,U-Boot程序对输入命令中的参数进行保存,根据指令参数执行相关的代码,最后调用驱动程序,对外设进行操作。2.2.4设备树结构分析及设计设备树文件是一种描述硬件的数据结构,它通过Bootloader将硬件相关信息传给内核。设备树可以描述的信息包括CPU的数量和类型、总线相关属性、中断控制器、外设相关控制器的基地址和以及外设的一些属性。设备树的主要优点是,对于同一SoC的不同主板,只需更换设备树文件即可实现不同主板的无差异支持,而无需更换内核文件。此外,如果需要对外设中一些参数进行设置,只需要修改设备树文件中相应的参数值,便于代码的维护和开发。本课题中的DTS文件选择使用嵌入式配置方式,U-Boot会将设备树二进制文件嵌入到U-Boot镜像中,设备树文件应该是.dts格式,通过设备树编译工具编译后生成.dtb二进制文件,该文件会在board_init_f()函数中通过全局数据结构gd->blob进行调用。DTS文件路径是../arch/sparc/dts/bmti3823a.dts,该文件描述了硬件相关信息,包括CPU、AHB总线以及各种外设等。在每个硬件信息中,详细描述了起始地址、地址长度,中断号、时钟频率、以及挂载的子设备相关信息。以timer外设为例,设备树代码如图2-6所示。图2-6timer外设设备树代码

加载,信息,电平


哈尔滨工业大学工学硕士学位论文-24-对于以上命令中的各个参数解释如表2-6所示。表中参数可以根据BM3823开发板不同配置进行更改。例如,可以设置其它COM口进行连接,可以降低波特率提高连接稳定性等。成功连接后,CMD窗口会显示连接成功相关信息。表2-6Grmon连接指令各个参数含义指令中参数参数含义Grmon使用grmon相关指令-leon2为LEON2系统配置Grmon-uartcom6连接DSU接口对应的COM口-ni检测所有系统设备,但不进行初始化-baud921600设置波特率为921600BM3823启动时有两种模式,分别是调试模式和运行模式,通过配置DSUBRE和DSUEN信号选择其中一种模式。如果上电时DSUBRE和DSUEN信号同时为高电平,则进入调试模式,等待接收来自DSU的调试命令,此时可以下载程序进行调试。如果上电时DSUBRE和DSUEN信号同时为低电平,则进入运行模式,自动从0x0地址开始执行。为了使BM3823启动时既能从0x0地址直接执行,也能接受来自DSU的调试命令,将DSUEN信号设置为高电平,DSUBRE信号设置为低电平。U-Boot启动方式有两种:(1)在BM3823开发板上电后,将U-Boot镜像加载到SDRAM中运行。因为SDRAM起始地址是0x20000000,所以修改源码中的.config文件,将镜像起始运行地址设置为0x20000000并编译;将PC和BM3823开发板串口1连接后,使用串口终端,连接BM3823开发板串口1;使用Grmon工具连接BM3823开发板后,加载u-boot文件到SDRAM中并运行的命令如下:loadu-boot加载完成后如图2-13所示。图2-13加载完u-boot的打印信息

【参考文献】:
期刊论文
[1]RTEMS的基本架构与移植技术的研究[J]. 陈金忠,耿锐.  单片机与嵌入式系统应用. 2020(03)
[2]U-Boot启动过程和代码分析[J]. 葛耿育,秦中.  遵义师范学院学报. 2019(06)
[3]浅谈面向航天系统的嵌入式操作系统实时性评测[J]. 李苗伟,冯东.  科技创新导报. 2019(23)
[4]U-boot引导linux操作系统的过程分析[J]. 徐玄斐.  淮北职业技术学院学报. 2019(03)
[5]Linux与VxWorks的任务调度研究及应用[J]. 查荣明.  信息与电脑(理论版). 2018(11)
[6]基于Zynq-7000的嵌入式Linux移植[J]. 张朝元,邵高平,汪洋.  电子科技. 2018(01)
[7]基于SPARC多核SOC的Linux操作系统研究[J]. 王海峰,蒋晓华.  航天控制. 2017(03)
[8]U-Boot移植过程中两种代码重定位技术研究[J]. 郭国法,董辉,张开生.  单片机与嵌入式系统应用. 2017(06)
[9]扁平设备树FDT在ARM Linux中的应用研究[J]. 罗名驹,陈益民,贾志文.  单片机与嵌入式系统应用. 2017(03)
[10]一种面向航天的可靠实时操作系统设计[J]. 詹盼盼,郭坚,何熊文,张红军.  空间控制技术与应用. 2016(05)

硕士论文
[1]基于龙芯1E的实时Linux系统移植与裁剪[D]. 王朴.中国科学院大学(中国科学院国家空间科学中心) 2019
[2]基于AHB总线协议的DMA控制器设计[D]. 卞学愚.西安电子科技大学 2018
[3]基于ARM Cortex-A9的嵌入式Linux内核移植研究与实现[D]. 罗名驹.广东工业大学 2017



本文编号:3253200

资料下载
论文发表

本文链接:https://www.wllwen.com/kejilunwen/shengwushengchang/3253200.html


Copyright(c)文论论文网All Rights Reserved | 网站地图 |

版权申明:资料由用户07453***提供,本站仅收录摘要或目录,作者需要删除请E-mail邮箱bigeng88@qq.com