快乐虾http://blog.csdn.net/lights_joy/lights@hb165.com本文适用于ADI bf561 DSP优视BF561EVB开发板uclinux-2008r1.5-rc3(smp patch)Visual DSP++ 5.0(update 5)欢迎转载,但请保留作者信息出现一个错误提示:"../../linux-2.6.x/include/linux/hardirq.h", line 60: cc0035:fatal error:#error directive: PREEMPT_ACTIVE is too low!#error PREEMPT_ACTIVE is too low!出错的代码为:#if PREEMPT_ACTIVE < (1 << (HARDIRQ_SHIFT + HARDIRQ_BITS))#error PREEMPT_ACTIVE is too low!#endif搜一下PREEMPT_ACTIVE的定义,有这样的结果:F:/embed/uClinux/uClinux-dist-2008R1.5-RC3/linux-2.6.x/include/asm/thread_info.h(115):#definePREEMPT_ACTIVE0x4000000不过在这个定义的前面还有一个条件:#ifdef __KERNEL__呵呵,__KERNEL__这个宏用于区分用户程序可以使用的定义,在uclinux的原始文件中是通过在makefile中控制编译器的选项来达到这一目的的。而我们在每个uclinux内核的c文件头加上了#include ,因此直接将这一定义放在config.h中:#define__KERNEL__1// 仅适用于内核配置