Embedded hardware from software developer point of view
The Zynq 7000 is a complex chip, but presumably you're part of a team that includes one or more hardware designers who are doing the PCB and FPGA fabric parts of the design.

For your purposes, you need a document that I usually call the "Hardware-Software Interface Specification". This document provides all of the details that the software developer needs in order to communicate with the hardware &mdash; the layout of the address space, and a complete description of how all of the hardware registers are laid out and what they do.

This document is mostly prepared by the hardware engineers, but you will have some input into the process, too &mdash; you will describe to them the kinds of information the software will need from the hardware and the kinds of things that the software will need to be able to do to the hardware. All of this will derive, of course, from the system functional specification, which all of you have already worked out with the marketing team.

In the meantime, you need to be reading up on the Xilinx SoC software development and debugging tools &mdash; there is plenty of documentation on these topics on their website.



In parallel with all of that, you'll also be developing the "Software Functional Specification" &mdash; a document that defines which parts of the system functionality are implemented in software and goes into greater detail about each of the tasks that must be performed. This will include things like power system status, motor control and the user interface. Based on this, you will make decisions about what kind of operating system to use &mdash; high-level (e.g., Linux), RTOS, or maybe even "bare metal". You will negotiate with the hardware developers about any tasks that need FPGA fabric support (hardware acceleration) in order to meet their requirements.