ZedBoard上的点灯签名实验(三)linux内核引导

FPGA/ASIC技术

201人已加入

描述

经过实验一和实验二我们完成了硬件部分的工作,并且将设计导出到SDK, 现在我们希望Linux可以到我们的硬件上运行,为此我们需要给Linux一个提示并且告诉它入口在哪里,这些工作就有u-boot 和FSBL来完成,他们就相当于PC机的Bios. u-boot 可以用digilent提供的, 在ZedBoard_linux_Design/boot_image/里边,当然也可以自己编译。现在我们编辑一下FSBL,在SDK中,-->File-->New-->Project-->Xilinx-->Application Project-->next, 然后为我们的工程起个名字,叫FSBL, 其他的默认即可。然后next进入Templates选项卡,在这儿选择Zynq FSBL,然后点Finish。然后在Project Explorer找到-->FSBL-->src-->main.c, 会发现这里边有很多的错误,原因是因为缺少一个库文件造成的,添加#include "xdevcfg.h",所有错误消失。然后找个位置加入下面的代码,

/* Reset the USB */
{
fsbl_printf(DEBUG_GENERAL, "Reset USB...\r\n");

/* Set data dir */
*(unsigned int *)0xe000a284 = 0x00000001;

/* Set OEN */
*(unsigned int *)0xe000a288 = 0x00000001;
Xil_DCacheFlush();
/* For REVB Set data value low for reset, then back high */
#ifdef ZED_REV_A
*(unsigned int *)0xe000a048 = 0x00000001;
Xil_DCacheFlush();
*(unsigned int *)0xe000a048 = 0x00000000;
Xil_DCacheFlush();
#else
*(unsigned int *)0xe000a048 = 0x00000000;
Xil_DCacheFlush();
*(unsigned int *)0xe000a048 = 0x00000001;
Xil_DCacheFlush();
#endif
}

Linux

保存后,SDK自动编译,到ZedBoard_Linux_Design/hw/xps_proj/SDK/SDK_Export/FSBL/Debug/找到FSBL.elf.

当然,FSBL也可以用digilent提供的,因为我们的工程对FSBL和u-boot没有任何的改变,我们的硬件改动在比特流文件system.bit里边。这样我们就凑齐了u-boot.bin, system.bit和FSBL.elf, 用这3个文件就可以编译一个完整的BOOT.bin. 在SDK中, -->Xinix Tools-->Create Zynq Boot Image-->添加FSBL.elf路径,然后如图依次添加system.bit 和 u-boot.bin, 最后点Create Image。得到一个新的u-boot.bin, 将其改名为BOOT.bin.这个BOOT.bin就可以替代ZedBoard 自带SD卡上的BOOT.bin,不过这里包含了我们自定义IP。

Linux

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分