From: SourceForge.net <no...@so...> - 2012-06-01 17:45:08
|
Feature Requests item #3531384, was opened at 2012-06-01 10:45 Message generated for change (Tracker Item Submitted) made by koliada You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=350599&aid=3531384&group_id=599 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: mcs51(8051) target Group: None Status: Open Priority: 5 Private: No Submitted By: Koliada (koliada) Assigned to: Nobody/Anonymous (nobody) Summary: Support for 'unitfied' memory spaces Initial Comment: All ChipCon (now TI) CCXXXX 8051 implementations have some form of unified memory architecture. This means that flash can be read as part of a unified xdata space. Unified memory allows constants to remain in flash rather than ram. Whereas placement of the CONST segment by the linker can accommodate this, the following code; unsigned a; const unsigned b = (unsigned) &a; Where b is a constant handle to global variable fails to compile (all models). The reason for this failure is unclear - it generates error 2: Initializer element is not constant Which is clearly incorrect. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=350599&aid=3531384&group_id=599 |
From: SourceForge.net <no...@so...> - 2012-06-02 08:09:47
|
Feature Requests item #3531384, was opened at 2012-06-01 10:45 Message generated for change (Comment added) made by maartenbrock You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=350599&aid=3531384&group_id=599 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: mcs51(8051) target Group: None >Status: Pending Priority: 5 Private: No Submitted By: Koliada (koliada) >Assigned to: Maarten Brock (maartenbrock) Summary: Support for 'unitfied' memory spaces Initial Comment: All ChipCon (now TI) CCXXXX 8051 implementations have some form of unified memory architecture. This means that flash can be read as part of a unified xdata space. Unified memory allows constants to remain in flash rather than ram. Whereas placement of the CONST segment by the linker can accommodate this, the following code; unsigned a; const unsigned b = (unsigned) &a; Where b is a constant handle to global variable fails to compile (all models). The reason for this failure is unclear - it generates error 2: Initializer element is not constant Which is clearly incorrect. ---------------------------------------------------------------------- >Comment By: Maarten Brock (maartenbrock) Date: 2012-06-02 01:09 Message: On the mcs51 constants always stay in code memory (flash). They are read using MOVC instructions. So I'm not sure what you're asking for here. And how is the unified memory involved in this? The other problem you already reported as bug 3531375. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=350599&aid=3531384&group_id=599 |
From: SourceForge.net <no...@so...> - 2012-06-02 16:59:39
|
Feature Requests item #3531384, was opened at 2012-06-01 10:45 Message generated for change (Comment added) made by koliada You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=350599&aid=3531384&group_id=599 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: mcs51(8051) target Group: None >Status: Open Priority: 5 Private: No Submitted By: Koliada (koliada) Assigned to: Maarten Brock (maartenbrock) Summary: Support for 'unitfied' memory spaces Initial Comment: All ChipCon (now TI) CCXXXX 8051 implementations have some form of unified memory architecture. This means that flash can be read as part of a unified xdata space. Unified memory allows constants to remain in flash rather than ram. Whereas placement of the CONST segment by the linker can accommodate this, the following code; unsigned a; const unsigned b = (unsigned) &a; Where b is a constant handle to global variable fails to compile (all models). The reason for this failure is unclear - it generates error 2: Initializer element is not constant Which is clearly incorrect. ---------------------------------------------------------------------- >Comment By: Koliada (koliada) Date: 2012-06-02 09:59 Message: It was a wild guess - the behavior seemed different if for const.... It would seem this behavior is additional to 3531375. ---------------------------------------------------------------------- Comment By: Maarten Brock (maartenbrock) Date: 2012-06-02 01:09 Message: On the mcs51 constants always stay in code memory (flash). They are read using MOVC instructions. So I'm not sure what you're asking for here. And how is the unified memory involved in this? The other problem you already reported as bug 3531375. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=350599&aid=3531384&group_id=599 |
From: SourceForge.net <no...@so...> - 2012-06-02 22:41:55
|
Feature Requests item #3531384, was opened at 2012-06-01 10:45 Message generated for change (Comment added) made by maartenbrock You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=350599&aid=3531384&group_id=599 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: mcs51(8051) target Group: None >Status: Pending Priority: 5 Private: No Submitted By: Koliada (koliada) Assigned to: Maarten Brock (maartenbrock) Summary: Support for 'unitfied' memory spaces Initial Comment: All ChipCon (now TI) CCXXXX 8051 implementations have some form of unified memory architecture. This means that flash can be read as part of a unified xdata space. Unified memory allows constants to remain in flash rather than ram. Whereas placement of the CONST segment by the linker can accommodate this, the following code; unsigned a; const unsigned b = (unsigned) &a; Where b is a constant handle to global variable fails to compile (all models). The reason for this failure is unclear - it generates error 2: Initializer element is not constant Which is clearly incorrect. ---------------------------------------------------------------------- >Comment By: Maarten Brock (maartenbrock) Date: 2012-06-02 15:41 Message: > It was a wild guess - the behavior seemed different if for const.... What was? And what was different? > It would seem this behavior is additional to 3531375. What behaviour? Are you trying to be vague on purpose? You're asking for unified memory spaces, but what is exactly that you would like to see? Currently unified code and xdata is supported, but you must tell the linker no to use overlapping addresses with --code-loc and --xram-loc. I see no relationship with bug 3531375 so please keep it out of this request. ---------------------------------------------------------------------- Comment By: Koliada (koliada) Date: 2012-06-02 09:59 Message: It was a wild guess - the behavior seemed different if for const.... It would seem this behavior is additional to 3531375. ---------------------------------------------------------------------- Comment By: Maarten Brock (maartenbrock) Date: 2012-06-02 01:09 Message: On the mcs51 constants always stay in code memory (flash). They are read using MOVC instructions. So I'm not sure what you're asking for here. And how is the unified memory involved in this? The other problem you already reported as bug 3531375. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=350599&aid=3531384&group_id=599 |
From: SourceForge.net <no...@so...> - 2012-06-02 22:53:23
|
Feature Requests item #3531384, was opened at 2012-06-01 10:45 Message generated for change (Comment added) made by koliada You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=350599&aid=3531384&group_id=599 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: mcs51(8051) target Group: None >Status: Open Priority: 5 Private: No Submitted By: Koliada (koliada) Assigned to: Maarten Brock (maartenbrock) Summary: Support for 'unitfied' memory spaces Initial Comment: All ChipCon (now TI) CCXXXX 8051 implementations have some form of unified memory architecture. This means that flash can be read as part of a unified xdata space. Unified memory allows constants to remain in flash rather than ram. Whereas placement of the CONST segment by the linker can accommodate this, the following code; unsigned a; const unsigned b = (unsigned) &a; Where b is a constant handle to global variable fails to compile (all models). The reason for this failure is unclear - it generates error 2: Initializer element is not constant Which is clearly incorrect. ---------------------------------------------------------------------- >Comment By: Koliada (koliada) Date: 2012-06-02 15:53 Message: The errant behavior here is; unsigned a; const unsigned b = (unsigned) &a; which incorrectly does not compile in >all< models. I, apparently mistakenly, attributed that to some feature deficiency. I previously reported bug 3531375 in that the following code: unsigned a; unsigned b = (unsigned) &a; Does not compile in >large< model - this is bug 3531375 The only difference between these two pieces of errant code is one uses const and the other doesn't and hence my assertion that they are related. If the const is not confusing the handling of data spaces, then this feature request is moot. ---------------------------------------------------------------------- Comment By: Maarten Brock (maartenbrock) Date: 2012-06-02 15:41 Message: > It was a wild guess - the behavior seemed different if for const.... What was? And what was different? > It would seem this behavior is additional to 3531375. What behaviour? Are you trying to be vague on purpose? You're asking for unified memory spaces, but what is exactly that you would like to see? Currently unified code and xdata is supported, but you must tell the linker no to use overlapping addresses with --code-loc and --xram-loc. I see no relationship with bug 3531375 so please keep it out of this request. ---------------------------------------------------------------------- Comment By: Koliada (koliada) Date: 2012-06-02 09:59 Message: It was a wild guess - the behavior seemed different if for const.... It would seem this behavior is additional to 3531375. ---------------------------------------------------------------------- Comment By: Maarten Brock (maartenbrock) Date: 2012-06-02 01:09 Message: On the mcs51 constants always stay in code memory (flash). They are read using MOVC instructions. So I'm not sure what you're asking for here. And how is the unified memory involved in this? The other problem you already reported as bug 3531375. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=350599&aid=3531384&group_id=599 |
From: SourceForge.net <no...@so...> - 2012-06-02 23:05:31
|
Feature Requests item #3531384, was opened at 2012-06-01 10:45 Message generated for change (Comment added) made by maartenbrock You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=350599&aid=3531384&group_id=599 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: mcs51(8051) target Group: None >Status: Closed Priority: 5 Private: No Submitted By: Koliada (koliada) Assigned to: Maarten Brock (maartenbrock) Summary: Support for 'unitfied' memory spaces Initial Comment: All ChipCon (now TI) CCXXXX 8051 implementations have some form of unified memory architecture. This means that flash can be read as part of a unified xdata space. Unified memory allows constants to remain in flash rather than ram. Whereas placement of the CONST segment by the linker can accommodate this, the following code; unsigned a; const unsigned b = (unsigned) &a; Where b is a constant handle to global variable fails to compile (all models). The reason for this failure is unclear - it generates error 2: Initializer element is not constant Which is clearly incorrect. ---------------------------------------------------------------------- >Comment By: Maarten Brock (maartenbrock) Date: 2012-06-02 16:05 Message: Thank you for your answer and for extending bug 3531375 with this one. I had not noticed the small differences, esp. since I was looking for a feature request here instead of a bug report. So there is no feature request and I therefore close it. ---------------------------------------------------------------------- Comment By: Koliada (koliada) Date: 2012-06-02 15:53 Message: The errant behavior here is; unsigned a; const unsigned b = (unsigned) &a; which incorrectly does not compile in >all< models. I, apparently mistakenly, attributed that to some feature deficiency. I previously reported bug 3531375 in that the following code: unsigned a; unsigned b = (unsigned) &a; Does not compile in >large< model - this is bug 3531375 The only difference between these two pieces of errant code is one uses const and the other doesn't and hence my assertion that they are related. If the const is not confusing the handling of data spaces, then this feature request is moot. ---------------------------------------------------------------------- Comment By: Maarten Brock (maartenbrock) Date: 2012-06-02 15:41 Message: > It was a wild guess - the behavior seemed different if for const.... What was? And what was different? > It would seem this behavior is additional to 3531375. What behaviour? Are you trying to be vague on purpose? You're asking for unified memory spaces, but what is exactly that you would like to see? Currently unified code and xdata is supported, but you must tell the linker no to use overlapping addresses with --code-loc and --xram-loc. I see no relationship with bug 3531375 so please keep it out of this request. ---------------------------------------------------------------------- Comment By: Koliada (koliada) Date: 2012-06-02 09:59 Message: It was a wild guess - the behavior seemed different if for const.... It would seem this behavior is additional to 3531375. ---------------------------------------------------------------------- Comment By: Maarten Brock (maartenbrock) Date: 2012-06-02 01:09 Message: On the mcs51 constants always stay in code memory (flash). They are read using MOVC instructions. So I'm not sure what you're asking for here. And how is the unified memory involved in this? The other problem you already reported as bug 3531375. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=350599&aid=3531384&group_id=599 |