Zynq在Linux下的开发

Zynq在Linux下的开发

转载 2017-03-28 20:26:45

转自:http://blog.sina.com.cn/s/blog_b35897360102x5lu.html


注:在此介绍Zynq Linux开发所步骤,不涉及具体操作,只针对一些基本概念

1.设置交叉编译工具

         交叉编译通俗地讲就是在一种平台上编译出能运行在体系结构不同的另一种平台上,比如在 PC 平台(X86 CPU)上编译出能运行在 ARM 为内核 CPU 平台上的程序,编译得到的程序在 X86 CPU平台上是不能运行的,必须放到 ARM CPU 平台上才能运行,当然两个平台用的都是 Linux系统。这种方法在异平台移植和嵌入式开发时非常普遍。相对与交叉编译,平常做的编译叫本地编译,也就是在当前平台编译,编译得到的程序也是在本地执行。用来编译这种跨平台程序的编译器就叫交叉编译器,相对来说,用来做本地编译的工具就叫本地编译器。所以要生成在目标板上运行的程序,必须要用交叉编译工具链来完成。

    ​     zynq中的交叉编译工具链为arm-xilinx-linux-gnueabi- 

​2.编译 Bootloader

       解压并且编译U-boot源码,此环节的目标文件为 u-boot.elf​

       Bootloader,引导加载程序,是系统加电后运行的第一段代码。在zynq实现Linux启动所需要boot.bin中文件为(FSBL.elf + PL部分的.bit + uboot.elf)

​3.编译Linux内核

        解压内核源码,进行编译;​此环节目标文件为在zImage(压缩的Image)和DTB文件(Device Tree Blob,是U-Boot用来传递参数给Linux内核参数的一种文件形式);​

4.制作文件系统

       在Linux操作系统中,​一切都是文件,我们可以通过统一的接口来访问包括文件在内的所有数据。Linux启动时,第一个必须挂载的是根文件系统,之后可以自动或手动挂载其他的文件系统。因此,一个系统中可以同时存在不同的文件系统。

       在现代 Linux 操作系统中,内核代码映像文件保存在根文件系统中。系统引导启动程序会从这个根文件系统设备上把内核执行代码加载到内存中去运行。​

5.启动Linux系统

        对于SD卡启动,若文件系统为Linaro,需要将linaro相关文件放到SD卡的EXT分区中,若文件系统为ramdisk,则将ramdisk相关文件放到SD卡的FAT格式分区;至于上文中提到的boot.bin ,内核映像zImage,设备树这三个文件放置于FAT格式分区。

6.运行应用程序​

        在这里提到的应用程序指的是存放在文件系统中的,运行在嵌入式Linux上的应用程序。对于Zynq平台而言,所有的U-boot,Linux内核等都是运行在ARM上的应用程序。对于运行在嵌入式Linux上的应用程序,我们可以通过修改文件系统当中的启动脚本来实现开机自启动,也可以通过在嵌入式Linux启动之后,通过终端来控制应用程序的启动。

文档共60页。主要向初学者提供了Zynq开发的技术方向,针对不同应用给出了基本的参考文档;同时对Zynq双核AMP加载方式做了详细描述,对Zynq的fsbl启动流程做了简单介绍。章节如下: Zynq User Guide 1 介绍 4 2 快速上手指南 4 3 多核开发教程 4 3.1 AMP开发说明 6 3.1.1 快速生成amp工程 6 3.1.2 Generating Boot File 8 3.1.3 烧写程序 9 3.1.4 启动 10 3.1.5 调试 10 3.1.6 总结 11 3.2 SMP开发说明 11 4 ZC706启动代码分析 11 4.1 启动代码 12 4.2 FSBL流程(FOR AMP) 13 4.3 CPU0启动CPU1流程 14 5 程序在线烧写方案及流程 14 5.1 程序烧写需求 14 5.2 提出该需求的原因 14 5.3 程序烧写方案 14 5.3.1 BOOT.BIN组成 14 5.3.2 BOOT.BIN生成方法 15 5.4 FSBL.BIN和APP.BIN等的生成 15 5.5 制作*BIN及烧写的具体步骤 15 5.5.1 制作*bin流程 15 5.5.2 BOOT.bin制作过程 15 5.5.3 FSBL.bin和APP.bin等的生成过程 22 5.6 烧写BOOT.BIN步骤 26 5.6.1 通过SDK工具烧写步骤 26 5.6.2 通过上位机烧写软件的烧写步骤 29 5.6.3 通过串口调试助手烧写步骤 29 6 Zynq Qspi控制器 30 6.1 基本特性 30 6.2 I/O接口 31 6.3 QSPI控制器模式 33 6.3.1 I/O模式 33 6.3.2 线性地址(linear address)模式 33 6.3.3 传统(legacy)SPI模式 34 6.4 QSPI 例程 34 6.5 QSPI控制器支持访问32MB方法 35 6.5.1 Bank地址寄存器(Bank address register) 35 6.5.2 扩展地址模式(Extended address mode) 35 6.5.3 使用新写命令(New commands) 35 6.6 QSPI FLASH选择 35 6.7 作为BOOT器件考虑 35 7 µC/OS系统启动指南 36 7.1 INTRODUCTION 36 7.1.1 Software Requirements 36 7.1.2 Hardware Requirements 36 7.2 HARDWARE DESIGN 37 7.2.1 Step 1. Invoke the Vivado IDE and Create a project 37 7.2.2 Step 2. Create an IP Integrator Design 39 7.2.3 Step 3. Add and setup the Zynq processor system IP block 39 7.2.4 Step 4. Customize the Zynq block for our design 41 7.2.5 Step 5. Add the soft peripherals 45 7.2.6 Step 6. Generate HDL Design Files 47 7.2.7 Step 7. Synthesis, Implement and Generate Bitstream 48 7.3 SOFTWARE DESIGN 49 7.3.1 Step 1. Installation of the µC/OS Repository 49 7.3.2 Step 2. Generate the µC/OS BSP 50 7.3.3 Step 3. Build and Debug the Demonstration Project 54 7.3.4 Step 4. Program the AXI Timer 0 with the ucos_axitimer Driver 55 7.3.5 Step 5. Program the AXI Timer 1 with the Xilinx tmrctr Driver 58 7.4 CONCLUSION 59 8 Linux系统启动指南 59
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值