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

Zedboard hangs when running HL code

Unsolved
7 posts / 0 new
jesusmgonzalez's picture
jesusmgonzalez
Junior(0)
Zedboard hangs when running HL code

Hi!

I'm trying to run some High Level code generated from Matlab/Simulink. I set all kind of software optimizations regarding embedded destination platform, such as RAM optimization and complex reduction, as well.

But he problem arises when I try to run the first step. The Zedboard freezes and the XSDK returns a debug error. I don't know if the problem is related with memory consumption. The total reserved space in one iteration is at least 20KB of data.

Does anybody know how to solve this problem? Could I add any hardware accelerator in PlanAhead?

Thanks,

TroutChaser's picture
TroutChaser
Moderator(18)
Zedboard hangs is not enough

Zedboard hangs is not enough information to help you.
 
What version of the Xilinx tools and Matlab are you using?
What is your host PC OS?
Is your application standalone or running under an OS?
What is the error returned by XSDK?
What does your overall application in general and your Matlab generated code specifically attempt to accomplish?
Is this code modeled on some existing app note or reference design? If so what is it and did it work on your platform?
Do you have a baseline design that works at some point before you add your new code? It is generally a good practice to build up an application step by step as you develop it. In reverse, in debug, it is often useful to remove modules until the application no longer fails.
 
-Gary

jesusmgonzalez's picture
jesusmgonzalez
Junior(0)
Hi!

Hi!
Thanks for the answers and comments.

- Matlab/Simulink versión 2014 is used in order to generate C/C++ of a small Kalman filter (some matrices and vectors).
- XSDK and PlanAhead used version is 14.7.
- My host PC OS os Windows 7, and the application is suppoused to run on baremetal.
- The XSDK returned error is lost of communication with the Zed, during debug mode or run mode.
- Even when I generate a .mcs boot image, in the first step of the main function (I additionally turn on a LED) the blue LED indicating everything is done turns off.
- The code is not in any existing App note.
- The problem is that I think there is not enough memory to run the application without OS. Is there any method in XSDK to see the memory consumed by the running application, in debug mode?
- I've done several other projects following the same steps, importing Matlab generated code into the Zedboard, and everything was fine. The problem is that I don't understand why the Zedboard hangs when try to run step by step my application, and why when I set the Zed on Flash boot at the very first step board configuration gets off.

Thanks!

zedhed's picture
zedhed
Moderator(22)
RE: Zedboard hangs when running HL code

Hi jesusmgonzalez,

Based upon what I am reading above, it sounds like you are swinging for the fences to get a home-run right out of the box. You mentioned that you have done several other projects with Matlab generated code which ran just fine. Can you elaborate on what is different between this project and the ones that you know work? Do smaller applications work where this new one does not? Have you verified that those other older projects still work well on this hardware platform and that you are creating the new project code with the same exact toolflow of SDK 14.7 + Matlab/Simulink 2014 as the old projects?

If you are able to rule out any tool chain differences, then I have one further suggestion that has bitten me several times over my career and that is stack and heap memory allocation sizing. AFAIK, SDK does not have the ability to detect when this occurs which is what makes this a particularly insidious problem. You may be coding along just fine and then all of a sudden your latest application build starts locking up, seemingly randomly. This sort of thing drives you insane until you realize that you might be running out of space in either the stack or heap locations and that your latest line of code pushed you past that boundary into no man's land.

Here are some links that might help you dig out of this problem:

http://forums.xilinx.com/t5/Embedded-Development-Tools/getting-the-usage...

http://forums.xilinx.com/t5/Embedded-Processor-System-Design/Zynq-and-SD...

According to this last post, SDK should be able to tell you if you are running out of statically assigned memory space. However, unless you are using special tools or an OS in your development I don't think there are many IDEs that will be able to tell you when you have run out of dynamically assigned memory space.

Regards,

-Kevin

jesusmgonzalez's picture
jesusmgonzalez
Junior(0)
Hi!

Hi!

Many thanks for your comments and suggestions. Regarding the first part of your comments, Matlab projects I've deplyed in the Zedboard are current projects, so I'm just doing exactly the same steps in both projects. The main difference is that in the second kind of projects I've just doing several matrix operations, reserving an amount of memory ap. 20 KB. I don't think this is the problema, because I know there is a huge amount of available DDR memory for the PS.

Regards,

zedhed's picture
zedhed
Moderator(22)
RE: Zedboard hangs when running HL code

Hi jesusmgonzalez,

Yes, you are correct in that the amount of memory available to the PS is relatively large.  What I am suggesting is that you double check to see if the space allocated to your call stack and heap area is sufficient for the application you are running.

For example, I just created a new project using the Empty Application template on the build in zed_hw_platform in SDK.  Here are the default stack and heap allocations that SDK creates for you: 

You can see that they are rather small at 2K each, so if you are running a complex application with nested function calls that go rather deep, my suggestion is to check and make sure that you are not overflowing the stack space.  Also, if you are operating on dynamically allocated memory (any space created with malloc() or call to a class constructor) make sure you are not running our of heap space.

SDK gives you the ability to modify the size of these areas within your lscript.ld file or create a new one using the Xilinx Tools-->Generate linker script window.

Regards,

-Kevin

jesusmgonzalez's picture
jesusmgonzalez
Junior(0)
Memory size

Hi Kevin,

Thanks for your support. Indeed, the amount of memory available in the system was what you commented.

But now I have another problem. After increasing the size of memory available in the system, my application runs for several iterations, using interrupts from uart_lite, and suddenly (with no changes in the code or inputs) the interrupts in this uart_lite turns off. That is, the receive handler is no longer called even when data is available in the serial port.

Does anybody have any suggestions?

Thanks in advance!