基于ZYNQ芯片的外设驱动技术方案.doc

基于ZYNQ芯片的外设驱动技术方案.doc

ID:55571614

大小:697.00 KB

页数:21页

时间:2020-05-18

基于ZYNQ芯片的外设驱动技术方案.doc_第1页
基于ZYNQ芯片的外设驱动技术方案.doc_第2页
基于ZYNQ芯片的外设驱动技术方案.doc_第3页
基于ZYNQ芯片的外设驱动技术方案.doc_第4页
基于ZYNQ芯片的外设驱动技术方案.doc_第5页
资源描述:

《基于ZYNQ芯片的外设驱动技术方案.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、一、BootLoader的移植制作21、生成uboot.elf文件32、system.bit生成53、创建fsbl84、生成BOOT.BIN9二、配置并编译linux内核101、修改设备树内容102、配置编译linux内核12三、Linux设备驱动移植131、Linux设备驱动模型142、Linux设备驱动移植15在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。在嵌入式系统中,通常并没有像

2、BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。在一个基于zynq的嵌入式Linux系统中,系统在上电或复位时通常都从地址0x处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。想要在zynq芯片上顺利启动Linux并且驱动相关模块正常工作,首先需要正确移植BootLoader。作为初始化硬件平台的一段BareMetal代码,Bootloader的移植也并入了我们的工作。所以综合起来说,我们的工作主要分为了三个部分:Bootl

3、oader的移植以及Linux内核和设备驱动的移植。在进行移植工作之前,首先要做的是要在宿主机上面搭建好我们目标板的开发平台,以及下载好uboot源代码,Linux内核源代码以及相关驱动源代码。(有的模块的驱动源代码在Linux内核源代码中已经包含进去了,那么就不用单独下载。需要下载的驱动源代码只是针对标准Linux内核中不支持的部件而言。)一、BootLoader的移植制作每一种操作系统都需要有自己的引导程序,最为人们所知的就是Windows的BIOS。缺失了这一部分,系统将无法正常启动。对比与Windows的BIOS,andro

4、id系统拥有自己的专属的BootLoader,它主要负责初始化系统平台的硬件设备,建立内存空间的映射关系。在它完成初始化工作之后,继续负责把内核镜像和yaffs2格式的文件系统从SD卡载入到RAM中,完成Linux内核和文件系统的加载并设置内核的启动参数,紧接着启动内核。等到内核真正启动了之后,BootLoader就杀死自己,把CPU让出给内核使用。之后内核根据硬件环境做出系统初始化设置,并将CPU转让给yaffs2文件系统运行管理。至此,Linux系统成功的启动起来。下图1为bootloader的启动过程。图1BootLoader

5、启动流程在我们移植的BootLoader中,由于XC7Z020-CLG484-1包含了可编程逻辑(PL)和处理系统(PS)两个部分,所以它的启动过程与一般的BootLoader稍有不同。BootLoader在它的启动过程中需要负责配置可编程逻辑(PL)和处理系统(PS)这两个部分。使用Xilinx官方提供的SDK生成的BOOT.BIN文件包含了fsbl(firststagebootloader)文件、system.bit文件和uboot.elf文件,其中fsbl文件主要用来加载system.bit并且配置处理系统(PS),而syst

6、em.bit文件起到了配置可编程逻辑(PL)的作用,注意该文件其实并不是必要的,如果在生成BOOT.BIN的过程中缺少该文件,那么PL部分得不到配置,那么我们只是相当于把XC7Z020-CLG484-1当成ARM来使用。之后系统开始加载ssbl(secondstagebootloader)到RAM中,即uboot.elf文件,它主要作用是加载内核镜像到RAM中。如下图所示。1、生成uboot.elf文件Uboot源码的主要目录及其描述cpu与处理器相关的文件。每个子目录中都包括cpu.c和interrupt.c、start.S、u-

7、boot.lds。cpu.c:初始化CPU、设置指令Cache和数据Cache等interrupt.c:设置系统的各种中断和异常start.S:是U-boot启动时执行的第一个文件,它主要做最早期的系统初始化,代码重定向和设置系统堆栈,为进入U-boot第二阶段的C程序奠定基础。u-boot.lds:链接脚本文件,对于代码的最后组装非常重要。board已经支持的所有开发板相关文件,其中包含SDRAM初始化代码、Flash底层驱动、板级初始化文件。其中的config.mk文件定义了TEXT_BASE,也就是代码在内存的实际地址,非常重

8、要。common与处理器体系结构无关的通用代码,U-boot的命令解析代码/common/command.c、所有命令的上层代码cmd_*.c、U-boot环境变量处理代码env_*.c等都位于该目录下drivers包含几乎所有外围芯

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。