hi maoguohua,
To reduce the size of the kernel, you can re-configure the kernel and disable those features you don't want. For example, if you don't want TCP/IP stack, I am sure you can reduce the size of resulting kernel a lot. Some filesytem, device drivers can be configured off. But I'm not sure if you can get a kernel image as small as 500k.
If you don't have enough flash space to put the kernel, you can try compressing the image, like a Linux desktop. A compressed image can be easily smaller than 500k, but you need some booting code to uncompress the kernel...