Xilkernel problem

Hi there,

I'm having problems trying to use Xilkernel on a XPS system designed to work on a Virtex-II Pro FPGA with MicroBlaze processor. I am testing with a very simple code that is supposed to launch only one process and then terminate. The problem is that after launching xilkernel_main and initializing parameters the system isn't launching the process indicated in the static_pthread_table parameter. I have no errors compiling and I have tried changing some xilkernel parameters but I can't really see what is failing.

Here is the definition of xilkernel in the MSS file:


BEGIN OS PARAMETER OS_NAME = xilkernel PARAMETER OS_VER = 3.00.a PARAMETER PROC_INSTANCE = microblaze_0 PARAMETER systmr_dev = opb_timer_1 PARAMETER stdin = RS232 PARAMETER stdout = RS232 PARAMETER config_time = true PARAMETER n_prio = 6 PARAMETER config_sema = true PARAMETER max_sem = 4 PARAMETER config_msgq = true PARAMETER num_msgqs = 1 PARAMETER config_bufmalloc = true PARAMETER config_debug_support = true PARAMETER verbose = true PARAMETER enhanced_features = true PARAMETER config_kill = true PARAMETER static_pthread_table = ((capture_main,1)) PARAMETER mem_table = ((4,30),(8,20)) END


Here is the application C code:


#include "xmk.h" #include #include #include #include #include #include

#define UART_BAUDRATE (115200)

static pid_t spid; static pthread_t tid; static pthread_attr_t attr;

void* sum(void *arg);

int main () { microblaze_enable_interrupts(); xil_printf("Before xilkernel_main...\r\n"); xilkernel_main (); xil_printf("After xilkernel_main...\r\n"); //Never reaches this point }

void* capture_main (void *arg) { int ret; pthread_attr_init (&attr); xil_printf("Before launching the process...\r\n"); ret = pthread_create (&tid, &attr, (void*)sum, NULL); if (ret != 0) { xil_printf ("-- ERROR (%d) launching process...\n", ret); return; } ret = pthread_join (tid, NULL); xil_printf("After launching process..."); }

void* sum (void *arg) { int a = 1, b= 2, c=3; xil_printf("a + b = %d\r\n",(a+b)); xil_printf("a + c = %d\r\n",(a+c)); xil_printf("b + c = %d\r\n",(b+c)); }


And here is the program output:


Before xilkernel_main... XMK: Start XMK: Initializing Hardware... XMK: Initializing PIT device. XMK: System initialization... XMK: Enabling interrupts and starting system... Idle Task Idle Task Idle Task Idle Task Idle Task Idle Task Idle Task Idle Task Idle Task Idle Task ......... ......... .........


and carries on like that forever.

I can't really see what is going wrong so that's why I'm posting the message to this group hoping that somebody with more experience using xilkernel with MicroBlaze processor could help me out.

Any help would be greatly appreciated.

Thanks in advance,


Reply to
Loading thread data ...

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.