1. 安装工具链

如网页上所说,安装包xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin提示系统是dash,而安装包需要bash。按照提示运行命令

sudo dpkg-reconfigure -plow dash

选择No。然后重新运行安装包。

缺省情况下安装后的工具链位于

~/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin

bash> export CROSS_COMPILE=arm-xilinx-linux-gnueabi-

bash> export PATH=

/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin:$PATH

一般是/home/

bash> export ARCH=arm

可以把配置命令都放到一个文件setup里面,然后用以下命令使之生效:

. ./setup

2. 编译U-Boot

bash> git clone git://git.xilinx.com/u-boot-xarm.git

bash> cd u-boot-xarm

bash> make zynq_zc70x_config

bash> make

缺省情况下下载的是master分支,如果需要在特定分支上工作可以:

git checkout -b xilinx-14.3-build2

可以用以下命令确认本地源码是哪个分支:

git branch -l

对U-Boot来说,当前的master和xilinx-14.3-build1/xilinx-14.3-build2 /xilinx-14.3-build2-trd是一回事。

对Linux kernel来说,标签xilinx-14.3-build2/xilinx-14.3-build2-trd的时间是2012-10-23,master的最近更新时间是2012-10-26,在标签xilinx-14.3-build2后又有7次更新。

当前的时间:2012/11/15

3. 编译Linux

bash> git clone git://git.xilinx.com/linux-xlnx.git

bash> cd linux-xlnx

bash> make xilinx_zynq_defconfig

bash> make uImage

到最后一步生成uImage的时候,提示没有找到mkimage,这时可以把u-boot/tools下面的mkimage拷贝到/usr/bin重新make即可uImage。

4. 使用U-BOOT和zImage

Zynq的ROM会在SD卡上寻找一个叫做BOOT.BIN的文件。用SDK生成ZC702的fsbl,以及编译生成的u-boot(需要改名为u-boot.elf)可以生成这个文件。尽管最新的wiki要求用SDK 14.3,实际上我用的SDK 14.2也没有什么问题。

打开SDK->XilinxTools->Create Boot Image窗口,Bif file下拉框选择”Create a new bif file…”,FSBL file选中SDK生成的fsbl,点击Add增加u-boot.elf,设置好output folder,点击Create Image即可生成3个文件:

bootimage.bif

u-boot.bin

u-boot.mcs

将u-boot.bin改名为BOOT.BIN就可以使用了。

注意:

1. 底层调用的bootgen只能识别.elf和.bit的文件,如果编译生成的u-boot(尽管已经是ELF格式了)不添加扩展名,无法Create Image。如果扩展名是这两个以外的,例如.fle,生成的文件不正确,size明显要大很多。

2. 之前有过一次Create Image失败,怀疑是因为路径里面有特殊字符(-或者.),后来测试发现不是。估计原因有可能是路径名太长,有待验证。

用生成的BOOT.BIN和uImage替换SD卡上的同名文件,启动正常。

5. Board Support Package (BSP)

一部分代码在arch/arm/mach-zynq

Hardware BlockDriver NameNotesDetailed Page

GICgic.cin arch/arm/common

PL330pl330.ca different driver now exists in kernel.org

PS2ps2.csupport for keyboard and mouse in QEMU

SCU Global Timerscu_gtimer.cprovides primitive abilities only

System Level Control Registersslcr.cSLCR

Triple Timer Countertimer.cOnly supports 1 TTC currently

其他的外设和驱动源文件的的对应关系如下:

Hardware BlockDriver NameNotesDetailed Page

CANnot supported

GEMxilinx_emacps.c

GPIOxilinx_gpiops.c

I2Ci2c-xilinx_ps.c

NANDxilinx_nandpss.c

QSPIxilinx_qspipc.c

SCU WDTxilinx_scuwdt.c

SPIxilinx_spips.c

System WDTxilinx_wdtps.c

UARTxilinx_uartps.c

USB Hostehci-xilinx-usbps.c

USB Devicexilinx_usbps_udc.c

USB OTGxilinx_usbps_otg.c

6. Device Tree

Device Tree实际上是一种硬件描述方法。通过data和code分离的方式,达到一个kernel image可以支持多种硬件平台的目的。具体表现形式有两种:

device tree source (.dts): 描述硬件平台的文本文件

device tree blob (.dtb): 通过.dts编译生成,在Linux启动前加载到内存,然后Linux kernel根据这个文件初始化自己

Xilinx ARM kernel使用device tree。 在Linux kernel 3.0之前, 大多数ARM Linux kernels使用platform data,并不支持。对ARM平台,dts一般放在./arch/arm/boot/dts/

Device Tree的使用方式有两种:

任意内存地址方式:U-Boot将devicetree.dtb的内存地址作为bootm的第三个参数,kernel通过寄存器R2找到device tree。从14.3开始,这个方法开始作为Linux kernel的缺省配置。

固定内存地址方式:devicetree.dtb被硬编码在16Mb的位置,这主要是为了在u-boot下使用go 命令 (这个命令不会配置R2寄存器)。Kernel里面有一个”System Type->Xilinx Specific Options->Device Tree At Fixed Address”配置项,需要使能device tree后才可见。

从Linux kernel 3.3开始,device tree可以支持中断号。不过要注意这个中断号需要在Zynq-7000 EPP TRM Table 7-3 查表得到的值上减去32。例如:查表得到UART 1的IRQID为82,所以device tree 中UART1的中断号要填写为50。

7. Kernel Command Line获取方式:

缺省情况下,从device tree获取。

通过配置kernel (Boot Options->Always use the default kernel command string),使用硬编码的command line。

8. 编译Device Tree

bash> scripts/dtc/dtc -I dts -O dtb -o

注意:device tree compiler (dtc) binary需要在kernel configuration里面打开device tree后才会出现在scripts/dtc/目录。

Linux源码里面的dts和pre-built dts略有区别。修改zynq-zc702.dtc的Linux command line中ip部分:

原始的:ip=:::::eth0:dhcp

修改后的:ip=192.168.1.10:::255.255.255.0:ZC702:eth0

编译后生成了dtb,经过比较,确认和pre-built package里面的devicetree.dtb完全一致。

9. SMP

通过boot log和以下命令可以看到在ZC702上两个Cortex-A9都在运行中

zynq> cat /proc/cpuinfo

如果需要只运行一个核,需要在device tree里面的kernel command line里面加上"maxcpus=1"

如果需要指定某个应用运行在特定的CPU core上,可以用taskset命令。BusyBox支持该命令。

The following command will display the help information for the taskset command.

zynq> taskset 2 top

需要注意的是,taskset的CPU core编号是从1开始的,而不是从0开始。

linux xilinx,Xilinx-在ZC702上运行Linux(4)-编译和使用U-Boot Linux相关推荐

  1. linux代码windows能跑吗,能不能帮忙改一下下面这些代码,原来是在windows系统上运行的,要让它能在linux上终端跑。该如何处理...

    当前位置:我的异常网» C语言 » 能不能帮忙改一下下面这些代码,原来是在windows系 能不能帮忙改一下下面这些代码,原来是在windows系统上运行的,要让它能在linux上终端跑.该如何处理 ...

  2. 在ZC702上运行Linux(4)-编译和使用U-Boot Linux

    1. 安装工具链 参考http://wiki.xilinx.com/zynq-tools 下载并安装cross compiler.cross compiler位于http://www.xilinx.c ...

  3. 在linux中配置编译u-boot方法,在ZC702上运行Linux(4)-编译和使用U-Boot Linux

    1. 安装工具链 如网页上所说,安装包xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin提示系统是dash,而安装包需要bash.按照提示运行命令 sudo ...

  4. linux xen 管理,ARM平台上运行Xen 可同时管理linux和VxWorks

    Xen项目管理程序从上个世纪90年代就已经在剑桥大学里开始进行,到了2002年项目开源.如今它是最流行的开源管理程序之一,可以在云计算上使用,Xilinx和DornerWorks将这种虚拟化平台应用在 ...

  5. 运行linux在de1soc,在DE1-SOC上运行Linux

    1,设定串口终端 安装驱动 :使用mini-USB线将计算机与DE1-SoC的UART转USB接口.drivers\USB2UART_driver文件夹内放置有驱动程序 设定串口终端规格 : 设定串口 ...

  6. 安卓 qemu 运行linux,在Qemu的beagleboard上运行Android

    如之前的文章提到的,现在我们已经可以在Ubuntun上通过qemu模拟beagleboard了,进一步可以测试的是在这个qemu的beagleboard上运行Android. 相关阅读: 主要工作是制 ...

  7. linux下如何在终端上运行和安装可执行文件

    linux下可执行文件,如果是在/bin./sbin./usr/bin或者/usr/sbin 里头,就直接敲文件名就可以运行.(注意环境变量PATH是否包含了路径) 如果是在其他文件夹里,比如说运行/ ...

  8. wordcount linux java_linux下在eclipse上运行hadoop自带例子wordcount

    启动eclipse:打开windows->open perspective->other->map/reduce 可以看到map/reduce开发视图.设置Hadoop locati ...

  9. python脚本在linux上运行的两种方式_python脚本当作Linux中的服务启动实现方法

    脚本服务化目的: python 在 文本处理中有着广泛的应用,为了满足文本数据的获取,会每天运行一些爬虫抓取数据.但是网上买的服务器会不定时进行维护,服务器会被重启.这样我们的爬虫服务就无法运行.这个 ...

  10. linux让程序在gpu上运行,在Linux上,使RX 480与AMDGPU一起运行

    AMD的RX 480上市已经有一个多星期了,那一周Linux游戏玩家一直在大声疾呼或询问该卡是否以及如何在他们喜欢的发行版上工作.当然,Ubuntu 16.04已获得AMD专有的Pro驱动程序的正式支 ...

最新文章

  1. Surf Gym - 100819S
  2. 运营,如何用数据说话?(以电商活动复盘为例)
  3. 【iBoard电子学堂】【iCore双核心板】资料光盘A盘更新,版本号为A6
  4. 深度探索I/O完成端口
  5. spring学习笔记02-spring-bean创建的细节问题
  6. 福建高职计算机知识点,2013福建高职单招 计算机类专业 知识试题
  7. ae2021最新遮罩路径图形扭曲插件:BAO Boa for Mac
  8. linux系列之-—01 shell编程笔记
  9. Maven settings.xml
  10. flacs 安装教程_文章详细信息
  11. RHEL 6.5 静默安装 oracle 11.2.4
  12. window使用fliqlo 教程
  13. UC浏览器去广告、联网、升级(支持新版8.1)
  14. 华住集团股权曝光:季琦持股30.5% 雅高不再是股东
  15. JAVA常用数据结构
  16. 【信息安全】屁股决定脑袋的COSO内控框架,一篇对COSO的趣评 [转贴]
  17. 【网络模拟】网络环境模拟搭建
  18. Stanford CS 144 Note 17 - TCP Setup and teardown
  19. Ubuntu 安装及基本配置(显示、镜像源、网络配置)
  20. MAC上写Verilog并编译仿真

热门文章

  1. JK触发器计算机符号,JK触发器
  2. TCP/IP协议栈之LwIP(六)---网络传输管理之TCP协议
  3. 修改Cisco交换机ntp服务器,如何配置Brocade和Cisco光纤交换机的NTP服务器
  4. 攻防世界 web高级 leaking
  5. matlab emi滤波器设计,基于Matlab-GUI的EMI滤波器设计
  6. 127.0.0.1:3000端口已被占用
  7. 手机时钟电路中晶振的工作原理简介
  8. diary_mna_2016
  9. Spirng中Mongodb中write-concern的解释
  10. EDM电子邮件营销策划常用创意