PowerMan
unread,Dec 16, 2008, 6:34:29 AM12/16/08Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to RTEMS Chinese User Group
我的应用程序代码附在最后,主要问题是timer的服务例程
不能调用printf,否则程序就跑飞,而printk可以。
我的平台是rtems-4.7.3,s3c2410,因为我的板子和smdk2410差别很大,
所以没用最新的rtems-4.9.1,而是根据gp32(s3c2400)修改了一下。
因为我只做了少量修改,所以我猜想这个bug不是我导致的,因此
在rtems-4.9.1上会有同样的问题,有smdk2410的同志请帮我在4.9.1上验证一下。
app代码如下:
#include <bsp.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <rtems/bspIo.h>
static rtems_id timer_id;
static rtems_name timer_name;
static const char timer_name_s[8] = "tmr0";
static rtems_timer_service_routine timer_show(rtems_id tid, void
*pdat)
{
printk("aa");
printf("bb");
printk("cc");
}
static int init_timer(void)
{
/* build object name for timer */
timer_name = rtems_build_name(timer_name_s[0], timer_name_s[1],
timer_name_s[2], timer_name_s[3]);
/* create timer */
if (rtems_timer_create(timer_name, &timer_id) != RTEMS_SUCCESSFUL) {
fprintf(stderr, "failed to create timer\n");
return 0;
}
/* fire after 5 seconds */
rtems_timer_fire_after(timer_id, 500, timer_show, NULL);
return 1;
}
rtems_task Init(rtems_task_argument argument)
{
if (!init_timer()) {
fprintf(stderr, "failed to init timer\n");
exit(0);
}
for (;;);
if (rtems_task_delete(RTEMS_SELF) != RTEMS_SUCCESSFUL) {
fprintf(stderr, "failed to delete init-task\n");
exit(0);
}
}
/**************** START OF CONFIGURATION INFORMATION ****************/
#define CONFIGURE_INIT
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
#define CONFIGURE_MAXIMUM_TASKS 10
#define CONFIGURE_MAXIMUM_TIMERS 10
#define CONFIGURE_TICKS_PER_TIMESLICE 10
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
#include <rtems/confdefs.h>
/**************** END OF CONFIGURATION INFORMATION ****************/