又是一次Hello world
今天又写了一次Hello World!
今天开始在uClinux上写程序了。我使用的平台是S3C44b0x + Nor Flash。主分区为只读的JFFS2文件系统,用户区使用的是读写的JFFS2,ramdisk区采用的是ext2文件系统,用来接收串口发来的文件。
交叉工具还是用的arm-elf-gcc,它是适用于没有MMU的平台,有MMU的请使用arm-linux-gcc。编译的时候一般来说需要加-elf2flt参数,意思是将elf格式转为uClinux上常用的可执行文件格式flt;如果没加可能产生如下错误:
/usr/local/lib/gcc-lib/arm-elf/2.95.3/libgcc.a(__main.o): In function `__do_global_ctors’:
__main.o(.text+0xc4): undefined reference to `__CTOR_LIST__’
/usr/local/lib/gcc-lib/arm-elf/2.95.3/libgcc.a(__main.o)(.data+0×0): undefined reference to `__DTOR_LIST__’
collect2: ld returned 1 exit status
编译成功之后,可以通过不同的方式将程序的可执行印象传给uClinux。可以使用tftp来传,还可以用xmodem协议来传,这需要看你所采用的平台。
我用xmodem协议将产生的可执行文件传到uClinux上后,和平常一样的执行,出现了非常熟悉的Hello World!
当然,你也可以将其他文件传入,例如脚本。但是,要注意,嵌入式设备所使用的shell一般都是被裁剪过的,而且一般不是bash。现在多采用BusyBox,可以查看BusyBox的一些简单信息。你可以通过重新编译内核时,选择busybox相应的选项来添加一些常用的shell命令。