We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hello!
I declared 3d array in my Keil project for lpc1788: volatile uint16_t db[16][128][3]. When I read members of the array db[x][y][z] with z < 1 there is no problem. But if I try to read members with z >=1 I always get 0xFFFF, even if they are not equal 0xFFFF (I checked it in debugger). For example:
db[0][1][0] = 0x1515; uint16_t id_ = db[0][1][0]; //works fine, id_ is equal 0x1515 db[1][0][1] = 0x1515; uint16_t index_ = db[1][0][1]; //returns index_ equal 0xFFFF
Could anybody explain to me what's wrong?
Regars, Vasilij.
Only the OP can confirm whether your assumption was correct or not!
Again, that's why the OP needs to provide the example!
"3D-array is defined inside a function and setting stack size smaller than the array size caused a program to fail"
This shows one possible failure mechanism - it may or may not be the particular failure mechanism that the OP is experiencing...
"would be useful if the tools can detect such a condition..."
That would be quite difficult, as the tools don't have full knowledge of the operating environment.
However, Keil does provide an analysis of the stack usage of functions
http://www.keil.com/support/man/docs/armcc/armcc_cjaiidcg.htm