Zybo GPIO Demo Run Embedded Linux

1.Environment

Ubuntu 12.04 x86_64

Vivado 2013.4

SDK 2013.4

 

2.Pre-requisites

2.1 CodeSourcery arm-gcc toolchain lite 32-bit compatible

git clone https://github.com/xupsh/CodeSourcery.git

echo “export PATH=~/CodeSourcery/bin:$PATH” >> ~/.bashrc

echo “export CROSS_COMPILE=arm-xilinx-linux-gnueabi-“ >> ~/.bashrc

arm-xilinx-linux-gnueabi-gcc –v

2.2 fsbl Download

http://pan.baidu.com/s/1jGj1yLK

LinaroDemo-> boot_image

2.3 u-boot Download

http://pan.baidu.com/s/1dD6D2pz

git clone https://github.com/Xilinx/u-boot-xlnx.git

Click Download ZIP right hand

2.4 devicetree Download

http://pan.baidu.com/s/1pJyR4pl

2.5 Kernel Download

http://pan.baidu.com/s/1pJqec35

https://github.com/Xilinx/linux-xlnx

branch->tags->Xilinx-v2013.4

2.6Randisk Download

wget http://www.wiki.xilinx.com/file/view/arm_ramdisk.image.gz/419243558/arm_ramdisk.image.gz

 

3.Hardware

Open vivado,Create a new project named zybo_gpio_demo,Click next。

Zybo GPIO Demo Run Embedded Linux

In the device selection pannel,we choose xc7z010clg400-1 destdevice。

Zybo GPIO Demo Run Embedded Linux

Add a new block design,named design_1。

Zybo GPIO Demo Run Embedded Linux

Zybo GPIO Demo Run Embedded Linux

Click Add Ip button in the view window,and add ZYNQ IP Core.

Zybo GPIO Demo Run Embedded Linux

Double Click IP Core to configure it。

Zybo GPIO Demo Run Embedded Linux

Choose Import XPS Settings,Add ZYBO_zynq_def.xml,click OK。

Zybo GPIO Demo Run Embedded Linux

Download Link:

http://www.digilentinc.com/Data/Products/ZYBO/ZYBO_def.zip

Zybo GPIO Demo Run Embedded Linux

Now ZYNQ has been configured and fit for zybo。

Zybo GPIO Demo Run Embedded Linux

Click OK,go back to block design,click Add Ip button again,Insert GPIO IP core。

Zybo GPIO Demo Run Embedded Linux

Double click GPIO core to config it:

Zybo GPIO Demo Run Embedded Linux

The configuration is as follows:open Dual Channel,Set the bit width of each channel to 4bit。

Zybo GPIO Demo Run Embedded Linux

Click Run Block Automation in the, and Run Connection Automation tips column, and Vivado will auto connection and configure。Click ok in all the pop-up dialogs。

Zybo GPIO Demo Run Embedded Linux

Zybo GPIO Demo Run Embedded Linux

Click refresh button at bottom left,the result is as follows。

Zybo GPIO Demo Run Embedded Linux

Zybo GPIO Demo Run Embedded Linux

In Source window, choose Sources tab,right click design_1, choose Generate Output Products…

Zybo GPIO Demo Run Embedded Linux

Zybo GPIO Demo Run Embedded Linux

Right click zynq_system_1choose Create HDL Wrapper,Keep default,click OK, Vivado will generate a top file for IP subsystem。

Zybo GPIO Demo Run Embedded Linux

Zybo GPIO Demo Run Embedded Linux

Right click Constraints->constrs_1 and choose Add Source。

Zybo GPIO Demo Run Embedded Linux

In the pop-up dialog,choose Create File…,rename it to system.xdc。

Zybo GPIO Demo Run Embedded Linux

http://www.digilentinc.com/Data/Products/ZYBO/ZYBO_Master_xdc.zip

reference ZYBO_Master.xdc, add LED and SW constraints altogether 8 lines。

Zybo GPIO Demo Run Embedded Linux

Finally,In Flow Navigator,expand Program and Debug,click Generate Bitstream.

Zybo GPIO Demo Run Embedded Linux

When bitstream generated,Bitstream Generation successful completed dialog will be open, Choose Open Implementation Design,Click OK to finish.

Zybo GPIO Demo Run Embedded Linux

In IP Integrator Item, click Open Block Design,choose zynq_system_1.bd,reopen the Block Design we built.

Zybo GPIO Demo Run Embedded Linux

Choose File > Export > Export Hardware for SDK….,Export Hardware for SDK dialogue will be open,make sure Include bitstream and Launch SDK has been choosed.

Zybo GPIO Demo Run Embedded Linux

Zybo GPIO Demo Run Embedded Linux

 

4.Linux

4.1Compile u-boot

Enter u-boot source code folder and modify the boot file:

vi ./include/configs/zynq_zed.h

Modify line 39, insert code:

#define CONFIG_ZYNQ_PS_CLK_FREQ 50000000UL

Run the following command in u-boot source code folder.

make zynq_zed config

make

cp u-boot u-boot.elf

 

4.2Compile Kernel

Enter kernel source code folder, and run the following command.

cd linux-xlnx-xilinx-v2013.4

make ARCH=arm xilinx_zynq_defconfig

make ARCH=arm UIMAGE_LOADADDR=0x8000 uImage

cp arch/arm/boot/uImage .

 

4.3 Change Randisk

Run the following command and do the modify:

cp arm_ramdisk.image.gz ramdisk.image.gz

gunzip ramdisk.image.gz

mkdir file_tmp

mount ramdisk.image –o loop ./file_tmp/

Run the following command to repack to uramdisk:

sudo umount file_tmp/

gzip ramdisk.image

sudo apt-get install u-boot-tools

mkimage –A arm –T ramdisk –C gzip –d ramdisk.image.gz uramdisk.image.gz

 

5.References

5.1 My source references

http://pan.baidu.com/s/1bnq23UZ

5.2 Zybo Demo

http://www.digilentchina.com/product-more.asp?ClassId=1&Unid=367

5.3 Zybo Design Engineer Source

http://www.digilentinc.com/Products/Detail.cfm?Prod=ZYBO

 

6.Tips

6.1 If there are no mmcblk0p2 in the /dev/ folder?

You can connect the sdio(mmc) part to the arm processer in the ZYNQ  IP configuration window

Zybo GPIO Demo Run Embedded Linux

6.2 How to boot arm ubuntu  with auto login?

solution: modify /etc/init/ttyPS0.conf, insert a line in the end,

exec /bin/login -f root < /dev/ttyPS0 > /dev/ttyPS0 2>&1

上一篇:Tarjan算法求有向图的强连通分量


下一篇:LeetCode 热题 HOT 100(05,正则表达式匹配)