Jump to content

jartim

EstablishedMember
  • Content Count

    39
  • Joined

  • Last visited

Everything posted by jartim

  1. Hi Pavel You are 100% correct, I was changing the coding from assembler to C and wasn't concentrating! Please disregard my original post. Regards Tim
  2. Bug description: Compiler hangs indefinitely with the following source - Steps to reproduce: This file is "TClass.hpp" - unsigned char ReadFlash(unsigned int FlashAddr) { asm { _tblptru = 0 _tblptrh = _FlashAddr _tblptrl = _FlashAddr+1 tblrd* } return tablat; } Expected behaviour: This should compile with no errors Is the problem 100% reproduceable: 100% every time IDE version: MPLAB-X V4.20 Compiler: BoostC++ Compiler version: V7.43 Target dev
  3. Hi Jorge No, not yet, I will do this today. I assumed that the forum was the first place to go to report an issue? Regards Tim
  4. Bug description: Compiler generates incorrect code from mixed C++ and inline assembler - Steps to reproduce: The following is a sample section of code that generates the wrong address for _TestTemp+1 - void CPUTest() { unsigned char TestTemp[3]; asm { CPUTest_9: movlw 0xff ; set up locations ready to change movwf _TestTemp movwf _TestTemp+1 movwf _TestTemp+2 lfsr 0, _TestTemp+1 ; set up a pointer movlw 0x55 movwf _pos
  5. Thanks Pavel. Unfortunately the Chameleon compiler does not support C++ (does it?) Regards Tim
  6. Bug description: The compiler generates incorrect code for the following statement - while (c -= 1) Steps to reproduce: My source code is this - #define BSIZE 120 unsigned char RxBuffer[BSIZE]@0x100; unsigned char TxBuffer[BSIZE]@0x200; unsigned char RamSwapArea[16U]@0x300; void main() { asm lfsr 1, _RxBuffer asm lfsr 2, _TxBuffer unsigned char c = BSIZE; while (c -= 1) { asm movff _postinc1, _postinc2 } } The bug is the statement "while (c -= 1)" generates an INFSNZ instruction, even though variable c is being decremented. Here is the disassembly
  7. Thanks Pavel, that was the problem. Cannot believe I missed it, it was a long day. Rgds Tim
  8. Hi, Does anyone have any insight into how to access a function parameter from in-line assembler? I am doing the following - void type24Var::add(const unsigned long src) { asm { movf _src, W } } But this will not compile and I get the message - failure type24Var.cpp(68:2): error: error in built-in assembly make[2]: [build/default/production/type24Var.o] Error 1 (ignored) It's driving me crazy, nothing I do seems to clear the error!
  9. Hi guys, I'm getting this message when I build my project - Coff generation: Internal Warning: Member Var:currentCrcRomPtr Unrecognised type id:0xF000000F Coff generation: Internal Warning: Member Var:currentCrcRomPtr Unrecognised type id:0xF000000F Coff generation: Internal Warning: Member Var:currentCrcRomPtr Unrecognised type id:0xF000000F Coff generation: Internal Warning: Member Var:currentCrcRomPtr Unrecognised type id:0xF000000F Coff generation: Internal Warning: Member Var:currentCrcRomPtr Unrecognised type id:0xF000000F Coff generation: Internal Warning: Member Var:currentCrc
  10. Thanks Jorge, pretty much what I had decided to do as well. It just would be easier to have the compiler and linker do all the work for me, rather than have to build the code twice. Regards Tim
  11. Hi Jorge All I'm trying to do is calculate a CRC checksum for the ROM, starting at 0x0000 and ending at the last used address of my program, hence I need to know the last address used. I can't CRC the entire ROM because I will be using the top end for non-volatile storage, and for that I also need to know the last used address. Normally I would edit the linker control file and add a label after the used code section, but this compiler doesn't appear to use a control file, I guess it has the parameters hard-coded in. All I can do at the moment is build the code with a 0x0000
  12. Hi guys, Is there any easy way of identifying the last used address in rom using BoostC or BoostC++ compilers? I cannot find a linker control file to add a label, is there any way to guarantee that a label defined in the source code ends up as the last addressed object? Thanks Tim
  13. Another request, not much luck with enhancements so far but worth a punt... Please can you add support for friend functions for classes? Thanks.
  14. A long shot I know, but what are the chances of the source code being moved to an open-source licence? That way maybe there could be more third-party improvements and bug fixes etc. Just a thought. (I would certainly be interested in adding new features, i.e. 12-bit support, true template support, overloaded constructor support etc.) Regards Tim
  15. Please can you add support for the 12-bit baseline devices to BoostC and BoostC++? Some of these have relatively large FLASH and register memories but have a 12-bit instruction-width core, which the current compiler doesn't support! Regards Tim Jarrett
  16. Pavel, I don't think this is correct? I'm using MPLAB-X and I've added a new header for a PIC16F570 device and modified the MPLAB jar files to allow me to use SourceBoost with that device (it doesn't by default). I haven't created a .tdf file for the same device because I don't use the SourceBoost IDE, but when I try to build under MPLAB-X, I get this message - main.cpp error: could not open input file 'C:\Program Files (x86)\SourceBoost\config\PIC16F570.tdf' So it appears as though the build process needs the .tdf file as part of the build as well (this is using the C++ comp
  17. Thanks Pavel. Will you be doing a similar exercise with an alternative to the BoostC++ compiler as well, or does Chameleon already support C++? Thanks Rgds. Tim
  18. Guys, No disrespect, but why would I want to use the Chameleon compiler instead of the BoostC compiler, especially as it is only 95% back-compatible? Does the Chameleon compiler give any better performance, smaller object code, better optimisation etc? Many thanks. Tim Jarrett
  19. Ok, found the problem. I had a member function and a member variable in one class, both with the same name, and that caused the compiler to fall over. Changed one of them and everything is compiling again.
  20. My build keeps crashing with the following error code, any ideas what this code means, please? make[2]: [build/default/production/PortClass.o] Error -1073740777 (ignored) Windows reports that the program has stopped responding when this happens, so my guess is that this is an internal compiler error?
  21. Hey Chris - I purchased the BoostC++ compiler a couple of months ago, and received the licence information from SWReg as you did. But, before I had chance to enter the licence, I received an email from Pavel with a different licence key to use instead. I got the impression from other posts on the forum that they had had problems with the licence server and were emailing the keys out manually. Not sure if this still applies or applies in your case, but worth an email to "support" ? Rgds Tim
  22. Hi Jorge I agree, the coding looks a bit odd as it stands; it wasn't meant to be an example of how to do it, rather an example of a possible way the compiler could implement a solution. The syntax looks strange, but it's not breaking any of the compiler's rules or the C++ language rules. Having two structure members at non-consecutive addresses is quite acceptable, in fact many C-compilers do just by adding padding bytes between members when the target processor requires each member to be aligned on 16 or 32-bit boundaries. My suggestion just tries to force the alignment rather t
  23. Hi, not really a request for an enhancement to the compiler, but it would be really nice if you would occasionally post on the forum what developments / improvements / bug fixes etc you are currently planning and/or working on for the Boost compilers. IMHO the forum is pretty quiet and it's not filling me with confidence that this product is being actively developed or supported. I'm having a difficult time convincing my client that this is the compiler for their project development, any information posted would help give your current and potential future users and customers a bit of a
  24. Please can you add support for private, public and protected class members? I know the compiler accepts these at present, but it doesn't honour them.
  25. What would be useful would be a construct like this - struct sMyPortStruct { volatile unsigned char BasePortA @0x05; volatile unsigned char BasePortC @0x07; } MyPortStruct; for (unsigned char c = 0; c!= 16; c++) { MyPortStruct.c = 1; } Although the compiler quite happily accepts this syntax, it ignores the fixed addresses and assigns the structure members to consecutive registers in RAM instead, so this doesn't work. Also it would need some additional code inserted by the compiler to make sure you're addressing the correct member port. I
×
×
  • Create New...