Sorry, you need to enable JavaScript to visit this website.

xtmrctr.h file cannot be found

Unsolved
14 posts / 0 new
paul_fitch's picture
paul_fitch
Junior(0)
xtmrctr.h file cannot be found

I am trying to complete the helloworld tutorial with the imbedded axi_timer and axi_gpio. This is in Chapter 3 of the Zynq ZedBoard Concepts, Tools and Techniques document. After exporting the design to SDK I cannot compile and run the design because the helloworld.c file calls out an include for the xtmrctr.h file.

Where is this file? It does not seem to be included in the zip file where the tutorial came from and I cannot find it on the xilinx web site either.

Any help would be appreciated.

TroutChaser's picture
TroutChaser
Moderator(18)
Hello Paul,

Hello Paul,
When SDK creates the BSP it reads the HW platform and adds the appropriate drivers for each of the peripherals. When you added the axi timer to your hardware design in the previous experiment and exported the design to SDK the new hardware should have been detected and the BSP should have added xtmrctr.h to the project along with the device drivers. You can take a look at the system.mss file (located under Hello_world_bsp in the SDK project if it is not already open), under 'Peripheral Drivers' and see if the axi_timer drivers have been included. If not, this is the problem. If the export of the hardware design to SDK was successful you might try a 'clean' of the SDK projects to see if the BSP will rebuild correctly. Otherwise you might need to go back to Vivado, make sure the design including the axi_timer is 'open' and export the design to SDK again.
Regards,
-Gary
 

paul_fitch's picture
paul_fitch
Junior(0)
The clean did not help so I

The clean did not help so I took the drastic step of starting from scratch. I get through to the SDK startup and the .mss shows that it has the peripherals installed. I got through a compile, but the output to the screen is simply hello world which is from the original file. I open the helloworld.c file in the SDK editor and it shows the new file and hello is not in the file other than the name, so SDK shows one file but apparently is compiling the old, or is loading the old output file.

TroutChaser's picture
TroutChaser
Moderator(18)
Auto Build after a change in

Auto Build after a change in the C code is the default but perhaps it is disabled in your configuration. Right click on the Hello_world application under the SDK Project Explorer and perform a 'Clean Project' and, once that is complete, select Hello_world again and perform a 'Build Project'. To verify that you have a new executable you could check the 'properties' of the Hello_world.elf file under the Hello_world project, under 'Debug' to make sure the file was just updated. If the elf file has been updated and the helloworld.c includes the updated application code you should be able to launch the new application as directed.
 
-Gary

paul_fitch's picture
paul_fitch
Junior(0)
Gary,

Gary,

Thanks for the help. That got me farther down the path, but now the compile fails searching for variables such as XPAR_AXI_GPIO_0_DEVICE_ID, XPAR_AXI_TIMER_0_DEVICE_ID, and XPAR_XGPIOPS_NUM_INSTANCES.

Where are these variables supposed to be picked up or defined? I think that I have the hardware defined correctly inside the chip but these are not found.

TroutChaser's picture
TroutChaser
Moderator(18)
Paul,

Paul,
 
I have seen the issue with  XPAR_AXI_GPIO_0_DEVICE_ID and XPAR_AXI_TIMER_0_DEVICE_ID.  If you take a look in the xparameters.h file that was generated when the BSP was generated (look in the 'include' directory under Hello_world_bsp) you should see that the definitions matching the hardware are  XPAR_AXI_GPIO_1_DEVICE_ID and XPAR_AXI_TIMER_1_DEVICE_ID. You will need to change the definitions in the application code to match the hardware definitions. I think this is due to the current version of the Xilinx tools enumerating hardware instances differently than the version the sample application code was tested with, so the definitions generated by your hardware are slightly different. I have not seen an error with the XPAR_XGPIOPS_NUM_INSTANCES, so I am not sure what your are seeing. In any case, you can always refer to the xparameters.h file for defintions that match your exported hardware. 
 
-Gary

paul_fitch's picture
paul_fitch
Junior(0)
Gary,

Gary,

The xparameters.h file does not have any definitions in it for XPAR_AXI. Are there multiple xparameters.h files that could be copied into my working directory? Does the file depend on the hardware instantiated in the design? I am running with Vivado 2013.3.

TroutChaser's picture
TroutChaser
Moderator(18)
xparameters.h

Xparameters.h is generated based on the hardware instantiated in your design. You could check the 'system.xml' and 'system.mss' files in SDK to see if your design includes the axi_timer and axi_gpio modules.
 
The current CTT was designed for Vivado 2013.2 and may not work with Vivado 2013.3 without some modifications. As an example: in Vivado 2013.2 when you selected the target board for your project, as you do in the CTT section 2.1.1, the board presets were automatically applied to the project. This was reflected in section 2.1.1 step 7 where it had you click the 'Presets' button and select the ZedBoard Development Board Template' to see the option but then had you 'Cancel' and not apply the presets. In Vivado 2013.3 you would need to apply the presets in step 7 as the board presets are not automatically applied earlier when you selected the target board.
 
I have not tried to run the CTT through using Vivado 2013.3 yet so I don't know if there will be other issues. If the axi_timer and axi_gpio modules are not reflected in the system.xml and system.mss files in SDK you will need to go back to the Vivado section of the exercise and complete the hardware design first.
 
-Gary

paul_fitch's picture
paul_fitch
Junior(0)
The axi_gpio_0 and axi_timer

The axi_gpio_0 and axi_timer_0 are shown in the system.xml file under the IP blocks present in the design section. They do not show up in the system.mss file. When I generate the hdl wrapper, do I need to do the step of generate output files first?

TroutChaser's picture
TroutChaser
Moderator(18)
If the axi_gpio and axi_timer

If the axi_gpio and axi_timer modules appear in the system.xml file, which is generated by the Vivado tool and exported to the SDK, that seems to indicate that they are in your hardware design. If the drivers for axi_gpio and axi_timer are not listed in the system.mss under 'Peripheral Drivers' then that implies that the bsp you are using has not be updated or generated to match the latest hardware, as they are generated when the bsp is built. If you have more than one bsp in your project make sure that your application project is referencing the correct one. If you only have one bsp ( Hello_world_bsp as expected) you may need to perform a clean and rebuild of the bsp to make sure it picks up the latest hardware. You can also check the bsp settings and make sure that it is referencing the correct hardware specification under the 'Target Hardware' section.
 
-Gary

psullivan's picture
psullivan
Junior(0)
RE: xtmrctr.h file cannot be found

I ran into the same problem using version 14.7 of the planahead tools and was able to fix it using the followign steps. When I went to the system.mss file to make sure my drivers where exported, "axi_gpio_0" and "axi_timer_0" where there, but nothing was listed to the right of them where "generic" appears next to everything else. I had to click on the "Modify this BSP's Settings" button at the top of the page and add the drivers from within there.

-Pat

kaankara's picture
kaankara
Junior(0)
Thanks, this helped me.

Thanks, this helped me.

L30nardoSV's picture
L30nardoSV
Junior(0)
xgpio.h and xtmrctr.h not found

I was trying the helloworld tutorial of Chapter 3. At the beginning compilation was failing due the these two header files. Then I followed these steps: open "system.mss", click on "Modify this BSP's settings", select drivers and for the "axi_gpio_0" and "axi_timer_0" components, add the "gpio" and "tmrctr" drivers respectively.

After compiling again, I got error searching for XPAR_AXI_GPIO_1_DEVICE_ID, XPAR_AXI_TIMER_1_DEVICE_ID, and etc, similarly as stated in a a previous comment by Troutchaser.

Doing what he suggests solves compilation error, i.e replacing e.g. XPAR_AXI_GPIO_1_DEVICE_ID by XPAR_AXI_GPIO_0_DEVICE_ID solves it.

jerryo's picture
jerryo
Junior(0)
Build modification for this problem

Hi,
I, too, had this problem. The axi_timer and axi_gpio didn't show. From chap 2, you "export hardware", which incidentally didn't invoke SDK. I had to do that separately.
That said, when I deleted everything in sdk and "exported hardware" first, then invoked SDK, all was well.
I would add this step.
Jerry