裸机程序

网上关于S3C6410裸机程序开发都是基于RealView RVDS。也有一些是基于eclipse的,但都没有详细介绍在eclipse中如何建立S3C6410裸机程序工程。

尽管友善之臂提供的6410裸机程序示例使用了eclipse工程,然程序的编译却还是基于makefile的。那怎样建立6410的eclipse裸机程序工程呢?本文就此进行详细介绍。有了这个工程,可以简化裸机程序的开发过程,把精力专注于功能实现。

设置eclipse字体

因为友善之臂提供的裸机程序示例使用的是UTF-8编码,为正常使用这些源码,把eclipse的字体编码设为UTF-8格式。Windows—>Preferences中,选择General—>Workspace,如下图所示。

设置eclipse字体

设置eclipse字体

建立C工程

在eclipse中建立一个C工程,假设工程名称为6410App。Project Type和Toolchains如下图所示。

建立eclipse C工程

建立eclipse C工程

Cross GCC Command设置如下。交叉编译器使用上一节所介绍的编译器。

设置eclipse编译器

设置eclipse编译器

添加源文件

建立工程后,往工程添加源文件。工程结构如右图所示。image虽然是裸机程序开发,但在程序构思设计上,还是力图把底层驱动、上层应用程序分开来,体现一个成熟系统设计思路。

common文件夹

工程中公共头文件。

driver文件夹

所有和底层驱动实现。其中,clock.c、drv_common.h、nand.c、sdram.c都是从友善之臂提供的裸机示例程序中拷贝过来的。

src文件夹

相对于底层驱动的源文件。实现用户应用程序功能。

script文件夹

链接脚本文件。用于控制程序的链接行为。如果没有指定链接脚本,编译时默认使用交叉编译器的链接脚本文件。

配置工程

在工程导航中,选中工程,右键选择Properties。在弹出的对话框中,选择C/C++ Build—>Setting。主要的配置内容有:

preprocessor配置

点击Cross GCC Compiler—>Proprocessor,勾选右边窗口的Do not search system directories(-nostdinc)。相当于编译程序时加上选项:-nostdinc。该选项的含义为:编译程序时不要在标准系统目录中搜索头文件。裸机程序没有用到交叉编译器提供的库函数,故不需要去搜索这些头文件。

4_设置eclipse的Preprocessor属性

添加包含路径

点击Cross GCC Compiler—>Includes,在右边窗口中添加common文件夹为包含路径。如下图所示。添加包含路径的目的是:包含common文件夹下的头文件时可以不用带路径。

设置eclipse包含路径

设置eclipse包含路径

链接选项

点击Cross GCC Linker—>General,勾选右边窗口前面三个选项,相当于添加三个链接标志:-nostartfiles、  -nodefaultlibs、-nostdlib。这三个链接标志的含义为:

-nostartfiles

连接时不使用标准系统的启动文件。标准系统库通常被使用,除非选项“-nostdlib”和“-nodefaultlibs”被使用。

-nodefaultlibs

连接的使用不使用标准系统库。只有你指定的库才能够传递给连接器。与系统库有关的特定的连接选项(例如-static-libgcc 和 -shared-libgcc )将会被忽略。标准的启动文件通常会被使用,除非-nostartfiles选项被使用。

编译器可能会生成memcmp,memset,memcpy和memmove的调用,这些entries通常会被标准库libc中的相关的entries解决。当这个选项被使用的时候,这些入口点应该通过其他的方法被提供。

-nostdlib

链接的时候不使用标准的系统启动文件和系统库。 没有启动文件和只用你指定的库可以被传递给连接器。与系统库有关的特定的连接选项(例如-static-libgcc 和 -shared-libgcc )将会被忽略。编译器可能会生成memcmp,memset,memcpy和memmove的调用,这些entries通常会被标准库libc中的相关的entries解决。当这个选项被使用的时候,这些入口点应该通过其他的方法被提供。

设置eclipse一般链接选项

设置eclipse一般链接选项

指定链接脚本

点击Cross GCC Linker—>Libraries,在右边下半窗口Library search path(-L)中,指定链接脚本的路径。在GNU链接选项中,-L用来指定要链接的库的搜索路径。

设置eclipse链接库路径

设置eclipse链接库路径

点击Cross GCC Linker—>Miscellaneous,在右边的Linker flags中加入-Tlink_script.lds。在GNU链接选项中,-T用来指定链接脚本文件。

设置eclipse链接选项

设置eclipse链接选项

设置编译步骤

点击Setting窗口Build Steps标签,在Post-build steps中加入如下命令:

arm-none-eabi-objcopy -O binary ${ProjName}.elf ${ProjName}.bin; arm-none-eabi-objdump -D ${ProjName}.elf > ${ProjName}.dis

交叉编译器默认编译输出的镜像格式为elf格式。上述命令就是把这elf格式转换为bin格式,并输出dis文件(汇编格式的程序文件)。

设置eclipse的Build Steps

设置eclipse的Build Steps

点击Setting窗口Build Artifact标签,设置输出镜像的后缀。在Artifact extension中输入elf。表示输出的镜像后缀为.elf。

设置eclipse的Build Artifact

设置eclipse的Build Artifact

编译工程

经过上述步骤,完成工程配置后,就可以编译工程了。使用友善之臂提供的Minitools工具,把工程Debug目录下把6410App.bin烧写到tiny6410开发板的DDR中。

总结

通过这个工程,让我进一步理解和熟悉了一些之前不明白的eclipse工程配置选项,具体来说,是理解了一些GNU编译链接选项的含义和使用方法。

整个工程的下载地址:http://velep.com/downloads?did=12

» 文章出处: reille博客—http://velep.com , 如果没有特别声明,文章均为reille博客原创作品
» 郑重声明: 原创作品未经允许不得转载,如需转载请联系reille#qq.com(#换成@)
分享到:

  One Response to “三星6410裸机程序开发2:建立eclipse裸机程序工程”

 Leave a Reply

(必须)

(我会替您保密的)(必须)


*

   
© 2012 velep.com | reille blog | 管理| 粤ICP备12094833号-2| 谷歌地图| 百度地图| Suffusion theme|Sayontan Sinha

无觅相关文章插件,快速提升流量