查看: 55|回复: 0

懒兔子ZedBoard学习手记(一) First Step——建立Xilinx交叉编译环境

[复制链接]

主题

好友

3932

积分

版主

  • TA的每日心情
    无聊
    2015-8-17 09:38
  • 签到天数: 361 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2013-12-4 16:58:28 |显示全部楼层
    经过这段时间借由美信DIY大赛对ZedBoard的学习,略有所得,对这个新平台也有了一定的理解。在此称之为手记,算是边学边记了。既然还在学习,就自然会有一些谬误或不足,还望童鞋们指正啊。
    要开发ZedBoard最重要的是Xilinx ISE工具集,在这个IDE里能够完成大部分的逻辑及底层软件开发工作。如果做裸奔开发,一个IDE足矣,但是若不想一辈子不穿衣服,需要涉及Linux下的软件设计,就得在Linux中进行编译。Xilinx的IDE里貌似也集成了开发Linux软件的相关环境,但兔子还不太会用,而且Linux下需要进行编译的东西太多了,很多地方SDK也无能为力,因此还是走传统路线——在Linux下建立Xilinx编译环境。
    兔子的操作系统是Win7 Ultimate,多系统用起来着实麻烦,因此安装了VMware虚拟机,并在虚拟机下安装了Ubuntu,版本为11.10 64-bit。建立编译环境是老生常谈的话题,网上讲的很多,但为了保持手记完整性,这里请再耐心的来过一遍吧。
    在Xilinx Wiki网站(https://wiki.xilinx.com/zynq-tools)下载Sourcery CodeBench,由于这个环境是为32-bit系统设计的,64-bit系统的用户需要先安装部分32-bit库,在Ubuntu终端中进入root权限(兔子喜欢一进终端就sudo su,省得后面麻烦),输入下面命令:
    apt-get install ia32-libs ia32-libs-gtk
    Mentor网站上的一篇文章说,还需要32-bit版本的xulrunner,我这里没装过,但也能用,不放心的可以按照这里的步骤安装:https://sourcery.mentor.com/GNUToolchain/kbentry62
    之后在终端中输入:
    dpkg-reconfigure dash
    在弹出的对话框中选否,将dash改为bash,这样才能顺利执行Sourcery CodeBench安装程序。下载好的安装文件为:xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin,在该文件路径下输入./xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin打开安装程序,兔子选择默认路径(Do not modify PATH),装好后的执行文件路径为/root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin/,以后每次编译软件的时候都需要通过export指令将编译环境的路径加入PATH环境变量,后面编译一些内容的时候还会用需要修改ARCH,其指令如下:
    export ARCH=arm

    export CROSS_COMPILE=arm-xilinx-linux-gnueabi-

    export PATH=/root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin/:$PATH
    如果不想每次都输入,就在通过gedit /etc/bash.bashrc指令打开bash.bashrc文件,在里面加入上述指令,这样开机就会自动执行了,同样可以运行source /etc/bash.bashrc指令使设置立即生效,通过echo $PATH指令可以看到我们刚才设置的路径。
    下面让我们来编译点东西试试,首先是HelloWorld。找个地方新建一个hello.c文件,用gedit编辑,代码如下:
    #include
    int main(void)
    {
    printf("Hello ZedBoard!");
    return 0;
    }
    在C文件所在目录中输入下面指令进行:
    arm-xilinx-linux-gnueabi-gcc hello.c
    在兔子电脑上生成了a.out文件,可能是以前设置的原因,不确定在你那里会叫什么呵呵。如图:

    将生成的文件拷贝到U盘,连接到ZedBoard的USB OTG上,先挂载U盘,然后运行软件测试一下:
    mount /dev/sda1 /mnt/

    /mnt/a.out
    至此交叉环境就搞定了,效果如下:

    下面再编译个U-Boot试试,Xilinx在Wiki上也做了介绍:https://wiki.xilinx.com/zynq-uboot
    首先为自己选一个用于开发的目录,兔子的目录位于/arm/zed,这个依喜好自定啦。通过Git下载Xilinx U-Boot代码(注意,这里已经换名称了):
    git clone git://git.xilinx.com/

    u-boot-xlnx
    .git

    cd u-boot-xlnx
    用我们之前安装的交叉编译环境进行编译,由于我们已经设置了环境变量,这里直接执行编译即可,先进行配置:
    make zynq_zed_config
    配置完成后编译:
    make
    编译结束后,会生成一个u-boot文件(没有后缀名),这是一个elf文件,将其另存为u-boot.elf。这个文件很重要,在我们以后生成Boot Loader时会用到,用到时再解释吧。
    之后我们就将开始设计自己的自定义AXI总线外设了,下次会为大家呈现一个通过GPIO读取Switch值并控制LED的IP,最终目的是在Linux下通过自己的软件控制这个硬件IP。
    好了,今天就到这里吧。晚安啦~~~
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

    站长推荐上一条 /4 下一条

    手机版|电路城

    GMT+8, 2019-7-20 01:32 , Processed in 0.155110 second(s), 13 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz!

    返回顶部