Jump to content

Pavel

Administrators
  • Content count

    1,463
  • Joined

  • Last visited

Everything posted by Pavel

  1. Pavel

    Compiler hangs with in-line assembly

    Compiler hanging is not good and we will look into this but your code does not look correct either. Everything inside the asm{} block should be assembly language. Anything else including C statements like _tblptru = 0 will not work. Regards, Pavel
  2. Pavel

    Incorrect code generated

    I can confirm this issue for the BoostC compiler family. The Chameleon compiler however handles this code well. Regards, Pavel
  3. Yes you can share the compiled libc binary but not the library sources. Please make sure the github users know the origin of the binary. Regards, Pavel
  4. We would like to reproduce this and we don't need your source code. Please email your project obj files and linker command line to support@sourceboost.com Regards, Pavel
  5. I tried your suggestions but could not reproduce this error Most likely it's just one particular line of code. Maybe you can remove portions of this code that contain IP of your customer and send us the resulting file and maybe even obfuscate it. We are releasing a new version very soon and it'll be nice if this fix makes its way in. Regards, Pavel
  6. Here are some notes how rom objects work in BoostC: - a rom object is always identified by one byte (that's why in the code above gbl_sw_id is 1 byte long) - when linker processes all its input files it makes a list of all rom objects and allocates IDs to them - linker generates code for all these rom objects that it puts into the code memory - linker generates a function that can extract any byte of any rom object using its ID and position/index - when compiler needs to generate code to access character in a rom object it uses an placeholder ID and character position/index and calls function that linker generates in the prev bullet. Later linker replaces this placeholder ID with an actual object ID. Chameleon does not yet support rom objects. Support for rom objects will be added to Chameleon in the upcoming 7.43 release. Regards, Pavel
  7. When compiling a file the first thing the compiler does it splitting preprocessed source file into lines. If it fails it spits out the error that you quoted. Normally this process is very straightforward and there shouldn't be any errors (hence the error is so brief) but looks like we missed something in this parser (Chameleon is still in beta stage). Can you email your source file along with the compiler command line to support@sourceboost.com so we can investigate. Regards, Pavel
  8. Cam you email your source file to support@sourceboost.com Regards, Pavel
  9. This is a bug. Please try a fix available from http://www.sourceboost.com/CommonDownload/Fixes/c_pic16.zip (download and unzip it into your SourceBoost installation directory, it will replace the original chameleon pic16 compiler). Thanks for reporting this. Regards, Pavel
  10. You need to show us your GsmRemote.c file or at least its first 18+ lines. Regards, Pavel
  11. Try changing random_int = rand(); to random_int = rand() >> 1; This will reduce the possible random range by half but your code will operate on the positive half of the int range (when itoa implicitly converts unsigned to signed it will deal with lover half of the unsigned range which converted to signed will contain only positives).
  12. You access function argument correctly. Must be something else that causes the problem. Have you included system.h? If W is undefined you'll get same error (to check replace W with 0)
  13. A TDF file is required for build but only the core data from it is used. You need to have a TDF file that has at least minimal data like in _PIC18minimal.TDF There is no document that lists all options that can be used in TDF. You need to check the existing TDF files for examples. Regards, Pavel
  14. You can use your v7 license key with SourceBoost v6. Regards, Pavel
  15. Pavel

    Error with PIC18F25K40

    Well spotted. This error affects several other recently added targets as well. The fix you provided is correct too. Affected files: PIC18F24K40.TDF PIC18F25K40.TDF PIC18F26K40.TDF PIC18F27K40.TDF PIC18F45K40.TDF PIC18F46K40.TDF PIC18F47K40.TDF PIC18F65K40.TDF PIC18F66K40.TDF PIC18F67K40.TDF PIC18LF24K40.TDF PIC18LF25K40.TDF PIC18LF26K40.TDF PIC18LF27K40.TDF PIC18LF45K40.TDF PIC18LF46K40.TDF PIC18LF47K40.TDF PIC18LF65K40.TDF PIC18LF66K40.TDF PIC18LF67K40.TDF
  16. Chameleon has much better template support including meta programming. It does not however support member functions including constructors and destructors or inheritance (inheritance is not too difficult to add but probably does not make much sense if member functions are not supported). Regards, Pavel
  17. Chameleon has a number of advantages over BoostC. Some technical differences: - faster compilation - native floating point support - native bitfield support Current release of Chameleon does not have any license limitations and is free. Another important difference is in the way how compiler generates code. In BoostC user can't control this while in Chameleon almost all aspects of code generation can be customised by editing system headers located in include\sys directory. Regards, Pavel
  18. Pavel

    Can't register the licence?

    Sorry about the confusion and let's try to sort this out. What product is the key for? Based on the screenshot that you provided it seems that the product is BoostC Pro but you try to register either plugins or IDE. Keys are valid only for products they were issued for and will not work with other products. Please email details to support@sourceboost.com and we'll sort this out. Regards, Pavel
  19. If your license is for version 7.x it should be valid for 6.x as well. What is wrong with your 7.x installation? Regards, Pavel
  20. Looks like a bug. Will take a look. Pavel
  21. Plugins have not changed and we don't plan to release 7.41 plugins. You can use 7.40 plugins with this release.
  22. Limited support means that only core information that is necessary to compile and debug for this target is included into system headers and TDF files:- only core registers are defined in the system header files, if you need other registers you need to add your own defines to either your code or system header - full config data is added to the system headers (PIC16) or TDF(PIC18) files - target architecture is fully described in the TDF files but non-core registers and register groups are not. You are welcome to add missing information. To compile it's only necessary to add it to system header files. Missing information in the TDF files is used in debugging under SourceBoost IDE and if you use Mplab or Mplab X you don't need it. For example look at the Port B support that is not defined in the limited support targets but is fully supported in PIC18F8722. This target has the following information in its system header file PIC18F8722.h (used in compilation): ... #define PORTB 0x00000F81 ... volatile char portb @PORTB; .. and in PIC18F8722.tdf file (used for debugging): Configure PORTB { // create PinNames = "RB0|INT0","RB1|INT1","RB2|INT2","RB3|INT3|ECCP2|P2A","RB4|KBI0","RB5|KBI1|PGM","RB6|KBI2|PGC","RB7|KBI3|PGD"; } RegisterSF PORTB { Description = "PORTB",""; Address = F81h; BitNames = "RB7","RB6","RB5","RB4","RB3","RB2","RB1","RB0"; }
  23. The reason we use xlaunch.exe instead of the actual compiler in the MplabX plugin is to allow different programming languages to be used in the same project. Xlaunch analyses the command line and based on the extension of the input source file launched a relevant compiler For example a project can consist of .c, .c++ and .bas files an when compiling xlaunch.exe will use C, C++ and Basic compilers to compile these files.
  24. When you assign an integer to a float like in float fnum = 0x41bba752; you expect compiler to do copy number into the float directly byte by byte. This is not what's happening. Behind the scene compiler generates code like fnum = float32_from_int32(1102817106); so you get the same value but presented as a float.
  25. Use either this: asm { movlw 0x52 movwf _fnum+0 movlw 0xa7 movwf _fnum+1 movlw 0xbb movwf _fnum+2 movlw 0x41 movwf _fnum+3 } or this: union { unsigned long l; float f; } f; f.l = 0x41bba752; fnum = f.f;
×