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启动之后,通过终端来控制应用程序的启动。

猜你喜欢

转载自blog.csdn.net/timeless_2014/article/details/80881949