Jump to content

thiemann

EstablishedMember
  • Content Count

    18
  • Joined

  • Last visited

Community Reputation

0 Neutral

About thiemann

  • Rank
    Newbrie
  1. OK, I see what you are getting at now. Thanks for clearing it up. Eric
  2. Pavel, The dothis() is declared before it is used. It is declared as void dothis() in main.c before it is used in the main() function. Its definition is, however, located in another module, test.c, but this should not be a problem as this is a common thing to do. I am not sure what is incorrect about the code. Please let me know what aspect you may be talking about so that I can clear that up. Thanks, Eric
  3. Even with the new 1.7.2 BoostC compiler, the linker generates an error if an inline function definition is located in another c module, but used in another c module. Example: Make a new project with two files (main.c and test.c) In main.c, put the following code: void dothis(); void interrupt() { dothis(); } void main() { dothis(); } In test.c, put the following code: inline void dothis() { } Compile and link the project. Notice that the linker says that dothis() is an unresolved external symbol. FYI: In main.c, I tried using "inline void dothis();" a
  4. Bug description: The BoostC compiler is making unions tool large. It makes them the same size as a structure. Steps to reproduce: 1.) Create a new project 2.) Add a main.c file to the project with the following code union TEST { int x1; int x2; int x3; int x4; int x5; }; union TEST w; void main() { } 3.) Compile and link the project using BoostC 4.) Notice the compiler reports that 10 bytes of RAM are used when only 2 bytes should be used. Expected behavior: Only 2 bytes of RAM should be used. Is the problem 100% reproducible: Yes SourceBoost vers
  5. Bug description: The linker produces an error if the following code is compiled and linked. Steps to reproduce: 1.) Create a new project 2.) Add a main.c file to the project with the following code inline void serialSendChar(char value); void DoThis() { serialSendChar('a'); } void serialSendChar(char value) { } void interrupt() { } void main() { } 3.) Compile and link the project using BoostC 4.) Notice the var not found error. Expected behavior: There should be no linker error. Is the problem 100% reproducible: Yes SourceBoost version: 5.7 Compiler: BoostC
  6. The bootloader that I am now using is called the "Shane Tolmie PIC bootloader v9-30". You can download it at the following site: http://www.microchipc.com/PIC16bootload/index.htm#download
  7. After further investigation, I found out that the problem was that BoostC did not produce a "clrf PCLATH" instruction as the first instruction, which for some reason confused my bootloader. I tried another bootloader and it worked fine. Thus, there is no bug in BoostC, my bootloader was not robust. Consider this discussion topic completed. Sorry for the confusion. Eric
  8. Pavel, the target is the 16f876a, however, I found the problem, I was doing #define instead of #pragma for the config word, my bad. However, now that this is figured out, perhaps you can help me with the grand problem that I am having (which I first thought this config word was the reason for my grand problem). Is there anything strange with the BoostC compiler that will not allow the code it generates to work with bootloaders? I know I asked you this before and you said there was a problem. Is the problem, or any other problems of this nature, resolved? I ask this because code that is
  9. Bug description: The compiler is not generating the correct config word. Steps to reproduce: 1.) Create a new project 2.) Add a main.c file to the project with the following code #include <system.h> #define DATA 0x2007, _CP_OFF & _DEBUG_OFF & _WRT_OFF & _CPD_OFF & _LVP_ON & _BODEN_ON & _PWRTE_ON & _WDT_OFF & _HS_OSC void main() { while (1) { } } 3.) Compile and link the project using BoostC 4.) Check to see what the generated config word is (I do this by opening the hex file using the ICprog program). 5.) Notice that the gener
  10. Yes, its looks like it is fixed, however, a form of the extern problem is back. Note: the following should compile fine (and did in Boostc 1.3), but now doesn't: extern char x; char x; void main() { }
  11. Bug description: The compiler does not warn when a variable is redefined or when a variable is set to a constant that does not fit within the variable. Steps to reproduce: 1.) Create a new project 2.) Add a main.c file to the project with the following code void main() { char x = -129; // -129 is too big to fit into char unsigned char x = 3; // x is already defined char w; w = x; } 3.) Compile and link the project using BoostC 4.) Notice that the code compiles fine and no warnings or errors are generated. Expected behavior: The compiler should fail
  12. Bug description: If you compile and then link the following code, you will get a linker error. Steps to reproduce: 1.) Create a new project 2.) Add a main.c file to the project with the following code #include <system.h> inline void test(char value); void test(char value) { char x = value; } void testfunc(char a) { test(a); } void main() { } 3.) Compile and link the project using BoostC 4.) Notice the linker error message. ("Var not found") 5.) Note: if you delete the keyword "inline" and then recompile and link the project, you will receive no errors.
  13. Bug description: The BoostC linker fails with "No Error" if you declare an extern variable, but never define it. Steps to reproduce: 1.) Create a new project 2.) Add a main.c file to the project with the following code extern char x; void interrupt() { } void main() { } 3.) Compile the project using BoostC 4.) Notice the linker error message. Expected behavior: The linker should allow an undefined extern variable (as long as it is not used). MSVC++ allows an undefind extern. Is the problem 100% reproducible: Yes PicAntIDE version: PicAndIDE version Compiler: Boo
  14. Gotcha, however, if this is the case, how come the following code does not link because the linker says that there are duplicate variables. Make a main.c source file with the following code: #include <system.h> void main() { } Then, make another test.c source file with the following code: #include <system.h> void test() { } Add both files to a new project and compile. It compiles fine, but will not link without errors. If I understand you correctly, the linker should not fail because the variables within the system.h file are fixed address variables. H
×
×
  • Create New...