Jump to content

Dave

Administrators
  • Content Count

    2,046
  • Joined

  • Last visited

Everything posted by Dave

  1. Artan, You need to change the projet to use ths libraries supplied as part of the latest Boostc compiler. The old library files are incompatible with the latest version of the compiler. Regards Dave
  2. Artan, Please try building with the latest release version (SourceBoost V7.11), and let us know the result. Regards Dave
  3. artan, What version of the compiler are you using to give you this error? It would be good to see the source code that generates this problem. Regards Dave
  4. artan, It's a bit strange, its not getting as far as linking, so it looks like the compiler is croaking.What happens if you exclude NOVO RTOS and compile you code? Can you compile a simple project with nothing more than just a main() function ? I hope that helps. Regards Dave
  5. neptun, All novo libraries need rebuilding.The problem is there just waiting to happen when the right conditions are met. Regards Dave
  6. Attached is a rebuilt version of the library you use. Let us know if this fixes your problem. Regards Dave novolib_pic16t3e5ts1.zip
  7. I found an issue in the Novo code kernel. Please replace the code in the function below in Novo.c, you will need to rebuild the Novo library you are using. There is a SourceBoost IDE project supplied for that as part of the installation. void SysiAddToSleepQueue( TASK_HANDLE hTask, TICK_COUNT sleepTime ) { // Add to wait queue at appropriate place for wakeup time // Tasks at the front of the queue are due to wakeup before those at the rear. // Add to sleep queue at appropriate place for sleep time // No need to look before update head as those tasks have already timed out // By working away from head we will chase the update head if it moves BYTE i = GetSleepUpdateHead(); bit foundInsertionPoint = false; while( !foundInsertionPoint ) { // Interrupt code for wakeup will be looking at the sleep queue // so we modify it while interrupts are disable // Interrupt routine does not modify sleep queue, it just looks at it // and adjusts it sleep update head pointer. SysCriticalSectionBegin(); { if( i == SLEEP_QUEUE_HEAD ) { // start reached, so we insert the new task at this point foundInsertionPoint = true; } else { if( GetTaskStatus( i ) & TS_IS_WAKING ) // awaking ? ; // will move onto next task else { // if not waking then we need to check remaining sleep time TICK_COUNT remainingSleep = GetTaskWakeUpTime( i ) - scheduler.os_tickCnt; // if this task has more time to sleep, ie will wake up later, than the new task // then we have found the insertion point in the list, ie in front of this task if( remainingSleep > sleepTime ) foundInsertionPoint = true; } } if( foundInsertionPoint ) { { // insert the new task before the current point SetTaskWakeUpTime( hTask, scheduler.os_tickCnt + sleepTime ); BYTE hPrev = GetPrevTask( i ); // connect up new task into list SetNextTask( hTask, i ); SetPrevTask( hTask, hPrev ); // patch up existing task in list SetPrevTask( i, hTask ); SetNextTask( hPrev, hTask ); } // new task added before update head means that it will would never be checked as head // is already passed this point so we must adjust it if( i == GetSleepUpdateHead() ) SetSleepUpdateHead( hTask ); SetTaskStatusBit( hTask, TS_IN_SLEEP_Q ); SysCriticalSectionEnd(); } else i = GetNextTask( i ); // move on next task for examination } SysCriticalSectionEnd(); } }
  8. neptun, I'm running your code under SourceBoost IDE and simulator and I see the problem where the code seems to stop functioning correctly after a while. Not sure what the cause is yet. Regards Dave
  9. neptun, What version of the BoostC compiler are you using? Regards Dave
  10. ahsenj, Sounds like some kind of corruption.Without seeing the code it is almost impossible to help. Regards Dave
  11. mmga, Problem is cause by code trying to use PREINC0 register which does not exist on these devices.It is because of the use of array index used on array of data type that is more than 8 bits long. It comes down to a compiler bug :-( Regards Dave
  12. Lieuwe, Thanks for letting us know, it's now fixed. Regards Dave
  13. W4GNS, I can't reproduce this issue, maybe we need more detail in the steps required to make it happen? Regards Dave
  14. Andrew Leiper, Another option is to use #pragma DATA (see BoostC user manual on how to use this), but I think the method you demonstrate above is probably the neatest and the most flexible in terms of data types that can be readily stored. Regards Dave
  15. JorgeF, The vectoring code that normally jumps to these routines is offset by the address specified. So for example the reset vectoring code normally resides at address 0, if -rb 0x100 linker command line option is used this vectoring code now appears at address 0x100, and so on. Regards Dave
  16. John S, Not that I can think of. The bootloader and the application don't run concurrently so both can use all available RAM. The code starts at the end of the interrupt and reset code locations. Use RAM at fixed addresses (define variables like this int x@0x100 ) and have then defined in a header file that both the application and the bootloader include. I hope that helps. Regards Dave
  17. trossin, This problem is now fixed and so should be in the BoostC V7.11 final release.Problem was in the coff file generation in linker, where it did not add pointer information to structures. Regards Dave
  18. Yes. When you open an existing project you will need to set the the new compiler and linker directory in SourceBoost IDE, Menu Settings->Options->Tools->Compile&Linker Directory to use the new compiler and linker. Regards Dave
  19. SyPTo Go here and select "Reorder license copy". Regards Dave
  20. ajbeavan, You always learn much more from things that don't work, the extra time is therefore not actually wasted. Regards Dave
  21. ajbeavan, Have you considered ignoring the busy flag and just using a time delay. Many applications do this to save an output, ie then the read/write connection is not needed?Doing this may give a clue to the problem. Regards Dave
  22. Larry, If you are using the SourceBoost IDE, In Menu Settings->Options->Compile Options Did you have in "All Warnings" radio button selected ?If you are using MPLAB, did you have "All Warinings" selected, or us compiler command line option -W2? Regards Dave
×
×
  • Create New...