Coder Social home page Coder Social logo

xupsh / amp-zynq Goto Github PK

View Code? Open in Web Editor NEW
19.0 3.0 14.0 5.11 MB

Simple AMP Running Linux and Bare-Metal System on Both Zynq SoC Processors

Tcl 2.27% Verilog 0.08% Makefile 0.59% C 77.13% Batchfile 0.01% CartoCSS 0.01% HTML 9.64% CSS 0.26% C++ 3.15% Assembly 6.87%

amp-zynq's Introduction

Zynq AMP Mode

Note : This design refers to xapp1078 and xapp1079.

Summery###

Simple AMP

Running Linux and Bare-Metal System on Both Zynq SoC Processors

CPU0 runs linux ; CPU1 runs standalone code to blink a led.

And every CPU can communicate with the other through shared memory.

Lab info

  • Vivado : 2015.2

  • Linux kernel : 2014.4

  • Rootfs : linaro

  • U-boot : 2015.01

  • Board : ZYBO

Work flow##

###Build hardware project###

  • Download the zip and extract it
  • Open vivado 2015.2 tcl console ,then go into <your path>/hardware_prj
  • Run source ./system_pro.tcl
  • Waitting for bitstream ... then it's ok !

###SDK work###

  • Open the implemented design (necessary to export bitfile to SDK)
  • Export the design and bitstream to SDK and launch SDK. Once SDK opens, a hardware platform project will have been created automatically
  • Select Xilinx_Tools->Repositories.Beside the Local Repositories, select NewBrowse to and select <your path>/src/sdk_repo, select OK
  • Create the FSBL project
    • Select File->New->Application_Project
    • Enter the project name amp_fsbl and select Next
    • Select the template Zynq FSBL then select Finish
    • Verify the FSBL BSP is using standalone from thelocal repository: After FSBL builds, right click on the fsbl_bsp project and select Board Support Package SettingsIn the Overview window, verify the OS Version is 5.19.
  • Create the BSP for CPU1
    • Select File->New->Board_Support_Package
    • Enter the project name app_cpu1_bsp, change CPU to ps7_cortexa9_1.
    • Select Finish
    • In the Board Support Package Settings Select Overview->drivers->ps7_cortexa9_1 and change the extra_compiler_flags value to contain -g -DUSE_AMP=1
    • Select OK
    • Open app_cpu1_bsp/ps7_cortexa9_1/libsrc/standalone_v5_19/src/xil-crt0.s delete this command bl XTime_SetTime
  • Create the Application that will run on CPU1
    • Select File->New->Application_Project
    • Enter the project name app_cpu1
    • Change Processor to ps7_cortexa9_1
    • Change Board Support Package to Use existing app_cpu1_bsp and select Next
    • Select the template Empty Application then select Finish.
    • Import the C and linkerscript file for app_cpu1. Right click on app_cpu1/src and select Import,Select General->File_System then select From directory, browse to and select <your path>/src/cpu1_app/src,select both app_cpu1.c and lscript.ld then select Finish. Answer Yes to overwrite lscript.ld
  • Create BOOT.BIN
    • From SDK, open a command window by selecting Xilinx_Tools->Launch_Shell
    • In the shell, cd to <your path>/src/bootgen
    • After all files added (amp_fsbl.elf,*.bit,u-boot.elf,app_cpu1.elf) Run bootgen by executing the batch file createBoot.bat
    • Note: You can use Creat Zynq Bootimage GUI to achieve that ,too.

###Linux work###

ZYBO has 512MB of Ram so 384MB was chosen to be used by CPU0 to run Linux and the remaining 128MB was left for CPU1. This means we need to modify the device tree source and u-boot file.

  • Devicetree
    • Add mem=384M maxcpus=1 in the bootargs
    • Modify the memory reg to reg = <0x0 0x18000000>
    • Compile the devicetree
  • u-boot
    • Modify the source of u-boot. Open u-boot/include/configs/zynq_zybo.h, modify CONFIG_SYS_SDRAM_SIZE to (384 * 1024 * 1024)
    • Compile the u-boot

###Working with the design###

  • Copy BOOT.bin,uImage,devicetree.dtb and <your path>/src/tool/devmem to SD card.
  • Power up the board
    • Run mount /dev/mmcblk0p1 /mnt/when linux is up.
    • Run cd /mnt/devmem
    • Run ./devmem 0xfffffff0 w 0x18000000 after this command ,you can see the led is blinking
    • Run ./devmem 0xFFFF8000 w repeatedly, you can see the counter is bigger

Congratulations!

If you get some problems,please contact [email protected]

Best Regards!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.