AnsweredAssumed Answered

icc COREB: execption 2b addr ff700be8

Question asked by willrobot on Oct 31, 2011
Latest reply on Feb 6, 2012 by willrobot

Hi Steven,


following the post:


I did further test to localise the problem as the fix you did in icc helped. I could have FreeRTOS installed in my app with the running function commanted it does work. It still work when I  uncoment xTaskCreate() function but it gives the previous error :


COREB: execption 2b addr ff700be8


when running the vTaskStartScheduler() function.


tracking down with coreb debugging message, I've got:


./icc_loader -f -e test_ad1836_driver                                  
writing to 0x03c00000, 0x4sm_debug:sm_find_session bits 00000000 localep 0     
sm_debug:table bits1 00000000                                                  
sm_debug:table index 0                                                         
sm_debug:table bits2 00000001                                                  
sm_debug:create ep index 0 srcep 0 type 2                                      
sm_debug:session 028f3828                                                      
854sm_debug:sm_send_packet: 0 028f3828                                         
sm_debug:alloc buffer 2b10c00                                                  
sm_debug:sm_task_sendmsg msg type 2000000                                      
sm_debug:sm_task_sendmsg init addr03c02994                                     
sm_debug:sm_send_packet: len 332 type 2000000 dst 1 dstep 5 src 0 srcep 0      
sm_debug:sm_send_message_internal: dst 1 src 0 02000000                        
sm_debug:send message cpu 1 sent 1                                             
COREB: sm_handle_control_message type 2000000                                  
    bytes: OK                                                                  
writing to 0x03f00000, 0x5000    bytes: OK                                     
task_init_addr 3c02994                                                         
tasCOREB: sm_handle_control_message 2000000 2000000                            
k_exit_addr 3c031e0                                                            
COREB: task init 3c02994 exit 3c031e0                                          
COREB: sm_send_message_internal() dst 0 src 1 2000001                          
sm_debug:sm_find_session bits 00000001 localep 0                               
sm_debug:index 0 ,local ep 0 type 2                                            
sm_debug:session 028f3828 index 0 msg type2000001                              
sm_debug:sm_task_recvmsg msg type 2000001                                      
sm_debug:sm_task_recvmsg free 2b10c00                                          
COREB: finish sm_handle_control_message task status 1                          
COREB: finish1 sm_handle_control_message task status 1                         
COREB: before run task 3c02994                                                 
COREB: Init 1836 runned                                                        
COREB: Init Sport0 runned                                                      
COREB: init DMA runned                                                         
COREB: Init Sport Interupts runned                                             
COREB: Enable DMA runned                                                       
COREB: create ep                                                               
COREB: create ep index 0 srcep 5                                               
COREB: icc_task_init() task1 icc index 0                                       
COREB: session open, send mesg Request Ressources                              
COREB: start setup LED                                                         
COREB: bfin direction reg: 0                                                   
COREB: bfin direction reg: ffff                                                
COREB: bfin set reg: 0                                                         
COREB: bfin set reg: ffff                                                      
COREB: bfin set DIR: 9001                                                      
COREB: bfin set DIR: 9001                                                      
COREB: bfin set INEN: 202                                                      
COREB: bfin set INEN: 242                                                      
COREB: bfin set EDGE: 0                                                        
COREB: bfin set EDGE: 64                                                       
COREB: bfin set MASKA: 200                                                     
COREB: bfin set MASKA: 240                                                     
COREB: bfin read MASKA Clear: 240                                              
COREB: bfin read MASKA Clear: 240                                              
COREB: bfin read MASKA data: 240                                               
COREB: bfin set SICB MASK1: c00a8000                                           
COREB: bfin set SICB MASK1: c00a8000                                           
COREB: bfin set IAR5: 43333333                                                 
COREB: bfin set IAR5: 53333333                                                 
COREB: bfin set evt12: 3c03200                                                 
COREB: bfin imask core: 2df                                                    
COREB: bfin imask core: 12df                                                   
COREB: end setup LED                                                           
COREB: handler declared                                                        
COREB: task created                                                            
COREB: Add the idle task at the lowest priority                                
COREB: end Add the idle task at the lowest priority                            
COREB: if xReturn == 1, and xReturn = 1                                        
COREB: before disable interupt                                                 
COREB: after disable interupt                                                  
COREB: before  xPortStartScheduler                                             
COREB: start xPortStartScheduler function before setup core timer              
COREB: after ContextSwitch interupt flag, before prvSetupTimerInterrupt        
COREB: after prvSetupTimerInterupt, before vStartFirstTask()                   
COREB: execption 2b addr ff700be8                                              
COREB: execption 2b addr ff700be8                                              
COREB: execption 2b addr ff700be8                                              
COREB: execption 2b addr ff700be8                      


vStartFirstTask() is a macro defined as:


#define vStartFirstTask() portYIELD() in Source/portable/ADI_DSP/blackfin/portmacro.h


portYIELD() is as follow:


#define portYIELD()                                             \
    asm volatile ("[ -- SP ] = R0;  \n\t    \                              
                                        CLI R0;                 \n\t    \      
                                        BITSET (R0, 14);\n\t    \              
                                        STI R0;                 \n\t    \      
                                        R0 = [ SP ++ ]; \n\t    \              
                                        RAISE 14;")


This is look to be the part that trigger the exception. How can I identify what goes wrong in there between the interaction of icc with FreeRTOS?


can you see something obvious which will triger this conflict?