三星6410裸机程序开发2:建立eclipse裸机程序工程
2023-05-05 来源:velep
网上关于S3C6410裸机程序开发都是基于RealView RVDS。也有一些是基于eclipse的,但都没有详细介绍在eclipse中如何建立S3C6410裸机程序工程。
尽管友善之臂提供的6410裸机程序示例使用了eclipse工程,然程序的编译却还是基于makefile的。那怎样建立6410的eclipse裸机程序工程呢?本文就此进行详细介绍。有了这个工程,可以简化裸机程序的开发过程,把精力专注于功能实现。
设置eclipse字体
因为友善之臂提供的裸机程序示例使用的是UTF-8编码,为正常使用这些源码,把eclipse的字体编码设为UTF-8格式。Windows—>Preferences中,选择General—>Workspace,如下图所示。

设置eclipse字体
建立C工程
在eclipse中建立一个C工程,假设工程名称为6410App。Project Type和Toolchains如下图所示。
建立eclipse C工程
Cross GCC Command设置如下。交叉编译器使用上一节所介绍的编译器。
设置eclipse编译器
添加源文件
建立工程后,往工程添加源文件。工程结构如右图所示。
虽然是裸机程序开发,但在程序构思设计上,还是力图把底层驱动、上层应用程序分开来,体现一个成熟系统设计思路。
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。该选项的含义为:编译程序时不要在标准系统目录中搜索头文件。裸机程序没有用到交叉编译器提供的库函数,故不需要去搜索这些头文件。
添加包含路径
点击Cross GCC Compiler—>Includes,在右边窗口中添加common文件夹为包含路径。如下图所示。添加包含路径的目的是:包含common文件夹下的头文件时可以不用带路径。
设置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一般链接选项
指定链接脚本
点击Cross GCC Linker—>Libraries,在右边下半窗口Library search path(-L)中,指定链接脚本的路径。在GNU链接选项中,-L用来指定要链接的库的搜索路径。
设置eclipse链接库路径
点击Cross GCC Linker—>Miscellaneous,在右边的Linker flags中加入-Tlink_script.lds。在GNU链接选项中,-T用来指定链接脚本文件。

设置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
点击Setting窗口Build Artifact标签,设置输出镜像的后缀。在Artifact extension中输入elf。表示输出的镜像后缀为.elf。
设置eclipse的Build Artifact
编译工程
经过上述步骤,完成工程配置后,就可以编译工程了。使用友善之臂提供的Minitools工具,把工程Debug目录下把6410App.bin烧写到tiny6410开发板的DDR中。
总结
通过这个工程,让我进一步理解和熟悉了一些之前不明白的eclipse工程配置选项,具体来说,是理解了一些GNU编译链接选项的含义和使用方法。
- 三星代工迎来大逆转!接连拿下NVIDIA、Tesla、AMD大单:Q4有望扭亏
- 三星电子:HBM5 与 HBM5E 将分别升级基础裸片与 DRAM 的制程
- 曝三星计划在美国得州泰勒建立第二座芯片厂,规模与第一工厂相当
- 三星回应内存短缺:预计2028年结束
- 内存价格疯涨倒逼厂商停产性价比机型
- 英伟达罕见入局内存研发:联手三星共同推进铁电NAND商业化
- 三星电子:2nm 良率爬坡好于预期,泰勒晶圆厂预计年底完成首批流片
- 消息称特斯拉计划就大幅提升AI6芯片产能规模与三星电子磋商
- 消息称三星电子 FOPLP 先进封装研发转而聚焦 415mm × 510mm 基板
- 是德科技与三星携手NVIDIA展示端到端AI-RAN验证工作流程
- 六大全新产品系列推出,MCX A微控制器家族迎来创新
- 意法半导体全新STM32C5系列,重新定义入门级微控制器性能与价值,赋能万千智能设备
- 从控制到系统:TI利用边缘AI重塑嵌入式MCU的边界
- 模组复用与整机重测在SRRC、CCC、CTA/NAL认证中的实践操作指南
- 有源晶振与无源晶振的六大区别详解
- 英飞凌持续巩固全球微控制器市场领导地位
- 使用 Keil Studio for Visual Studio Code开发 STM32 设备
- LoRa、LoRaWAN、NB-IoT与4G DTU技术对比及工业无线方案选型分析
- 意法半导体中国本地造STM32微控制器启动规模量产
- 蓝牙信道探测技术原理与开发套件实践












