-
Notifications
You must be signed in to change notification settings - Fork 129
Using the Register System
As a user of the register system, one only requires to update the makefile(s) of the project and use the generated C/C++ code files in the user-space application.
To enable the register system, user must ensure that following exists:
- In the project/Makefile verify that the exporttosdk flag exists under the all target.
For example in contrib-projects/flash/Makefile:
all:
$(MAKE) -C $(HW) init_bram exporttosdk
$(MAKE) -C $(SW)
mkdir -p bitfiles
cp $(HW)/implementation/download.bit bitfiles/
or in the contrib-projects/openflowswitch/Makefile:
all:
$(MAKE) -C $(HW) exporttosdk
$(MAKE) -C $(SW)
mkdir -p bitfiles
cp $(SW)/result/download.bit bitfiles/
The exporttosdk flag is used to inform EDK tool-chain to generate software repositories for a given project.
- In the project/hw/Makefile add the following (if not already present):
exporttosdk target:
exporttosdk: $(SYSTEM_HW_HANDOFF_DEP)
appguru -hw $(SDK_EXPORT_DIR)/$(SYSTEM).xml -app empty_application $(PROJECT_SEARCHPATHOPT)../sw/ -od $(SDK_EXPORT_DIR)/../empty_application
@mkdir -p $(SDK_EXPORT_DIR)/../libs
libgen -mhs $(MHSFILE) -p $(DEVICE) $(PROJECT_SEARCHPATHOPT) $(PROJECT_SEARCHPATHOPT)../sw/ -lib -od $(SDK_EXPORT_DIR)/../libs $(SDK_EXPORT_DIR)/../empty_application/$(SYSTEM).mss
@mkdir -p $(SDK_EXPORT_DIR)/../../../host/include/
@cp -rf $(SDK_EXPORT_DIR)/../libs/microblaze_0/include/* $(SDK_EXPORT_DIR)/../../../host/include/
@cp -rf $(SDK_EXPORT_DIR)/../libs/microblaze_0/libsrc $(SDK_EXPORT_DIR)/../../../host/include/
@rm -rf $(SDK_EXPORT_DIR)/../empty_application
@rm -rf $(SDK_EXPORT_DIR)/../libs
regsclean target:
regsclean:
rm -rf $(SDK_EXPORT_DIR)/../../../host/include/
Make sure that regsclean is listed in the clean target.
clean: hwclean regsclean simclean
...
After updating the makefiles, start the build process by running make under the project's top level directory.
Upon successful build, following code structure will be created under the project/sw/host/include directory:
|-- include
| |-- libsrc
| | |-- emc_v4_00_a
| | | |-- src
| | | | `-- emc_flash_lib.h
| | | | `-- emc_flash_lib.c
| ...
| `-- xparameters.h
This is an example taken from the Contributed Flash project. The xparameters.h is the global defines file containing project specific definitions like base addresses and some other core specific parameter definitions. The emc_v4_00_a driver, in the above example, operates with the axi_emc_v1_01_a core. It provides register offset definitions and functions for flash read(s)/write(s) and programming operations. The nf10_configure utility provided with the Contributed Flash project, utilises these header/code files and provides a user-space flash application for configuring and programming on-board flash devices.
Following are some functional examples provided with the NetFPGA-10G platform: