在windows环境下用Sourcery CodeBench编译基于Word文档格式.docx
- 文档编号:19701027
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:22
- 大小:1.38MB
在windows环境下用Sourcery CodeBench编译基于Word文档格式.docx
《在windows环境下用Sourcery CodeBench编译基于Word文档格式.docx》由会员分享,可在线阅读,更多相关《在windows环境下用Sourcery CodeBench编译基于Word文档格式.docx(22页珍藏版)》请在冰豆网上搜索。
Next->
开始安装。
2.安装SourceryCodeBenchLiteEditionforARMEABI
SourceryCodeBench是一款能够在ARM,Coldfire,MIPS,Power,X86,等平台上作嵌入式C/C++开发的完整的开发环境。
而其中的SourceryCodeBenchLite为你提供免费的,基于命令行接口的交叉编译器。
ccsv5自带有CGT编译器,而我们最终是要能够编译生成在am3359上裸跑的代码,所以我们需要ccsv5调用SourceryCodeBenchLite的交叉工具链替代掉原来的CGT编译器来编译u-boot。
下载SourceryCodeBenchLiteEditionforARMEABI:
EABI:
用于RTOS或者没有os的硬件设备。
这个配置不能用于构建内核或者应用程序。
uClinux:
用于运行不带MMU的CPU上的linux系统。
可以构建uClinux内核和应用程序。
GNU/Linux:
这个用于运行带有MMU的CPU上的linux系统。
可以构建linux内核和应用程序。
SymbianOS:
用于编译Symbian应用程序。
运行arm-2012.03-56-arm-none-eabi
然后Next->
Install。
3.构建u-boot工程并编译
为了移植u-boot我们需要做一些编辑工作,这时我们需要一个IDE。
由于我们只需要一个框架平台,用它调用SourceryCodeBench这样的交叉工具链和MinGW/MSYS下的一些linux命令来完成编译,这样Eclipse无疑是适合的选择。
Eclipse,一个跨平台的集成开发环境,它本身只是一个框架平台,但是众多插件的支持,使得人们能够以Eclipse为框架开发自己的IDE。
而ccsv5是基于Eclipse框架的,并且使用ccsv5还可以方便烧写flash和Debug,因此我们选择ccsv5。
关于ccsv5的下载与安装,受篇幅所限,笔者不再详述,大家可以到ti官网上自行下载安装。
3.1安装嵌入式调试插件ZylinCDT
ZylinCDT是一个免费的Eclipse的交叉调试插件,并且能够自动生成makefile。
下载ZylinCDT:
http:
//repo.or.cz/w/zylincdt.git
选择zylincdt:
4.16,点击zip下载。
解压Zylincdt:
打开CCSV5,Help->
InstallNewSoftware...
Add->
Archive->
Zylincdt\com.zylin.cdt.updatesite\content.jar
Name:
zylincdt
在ZylincdtEmbeddedCDT选项上打钩,Next>
Next>
->
Iacceptthetermsofthelicenseagreement
Finish
3.2导入u-boot工程
由于只是测试所用,笔者下载的是征对beaglebone这块板子配置好的u-boot源码。
File->
New->
Project
将路径指向到已存在的u-boot中:
3.3为u-boot工程设置一些选项
我们要设置好使用何种交叉工具链,指定好交叉工具链的路径,指定好要使用的MinGW/MSYS中linux命令的路径,然后做好编译u-boot时需要的编译选项。
在工程u-boot处右击,选择Properties:
C/C++Bulid->
Environment->
Add
CROSS_COMPILE
Value:
arm-none-linux-gnueabi-
PATH
D:
\MinGW\bin;
D:
\MinGW\msys\1.0\bin;
\Sourcery_CodeBench_Lite_for_ARM_EABI\bin
在C/C++Build下,选择BuilderSettings,将Usedefaultbuildcommand前面的钩取消,在下面Buildcommand中添加:
makeCROSS_COMPILE=$(CROSS_COMPILE),选择Behavior,在Build(Incrementalbuild)和clean前打钩,将Build(Incrementalbuild)后的all去掉:
在C/C++Build->
Settings中钩上GNUElfParser,然后在弹出的addr2linecommand和c++filtcommand中指明路径:
\Sourcery_CodeBench_Lite_for_ARM_EABI\bin\arm-none-linux-gnueabi-addr2line.exe
\Sourcery_CodeBench_Lite_for_ARM_EABI\bin\arm-none-linux-gnueabi-c++filt.exe
在Project下选择MakeTarget->
Creat:
在Targetname中添加distclean点击OK,再用同样的办法添加am335x_evm_config。
制作这两个选项是为makedistclean和makeam335x_evm_config做准备的。
由于做移植工作需要反复编译u-boot,在编译u-boot的过程中会产生一些中间文件和链接文件,当修改完u-boot再次编译时,它可能会调用原来的中间文件和链接文件,这样编译就会出错,这时就需要用到makedistclean。
makedistclean是用来清除之前编译u-boot产生的多余的中间文件和链接文件,能保证再次编译不受上一次干扰。
makeam335x_evm_config则是用来配置板子的相应信息。
3.4修改Makefile和mkconfig
由于Makefile和mkcong中有些命令在现有的环境中还无法使用,比如ln-s链接命令。
Windows下的快捷方式虽然与linux下的链接文件比较相似,但实现机制并不相同,如果通过修改makefile来取代链接文件直接指向原文件的位置,那工作量可想而知。
此时,我们需要一个工具junction。
junction是由Sysinternals出品的一个免费的命令行工具,它可以创建和删除符号链接。
这样我们修改makefile的工作量将大大减少。
下载Junction:
将junction.exe拷贝到D:
\MinGW\msys\1.0\bin下,然后双击它。
打开u-boot根目录下的Makefile,在文件末尾找到clobberclean处,修改如下:
clobber:
clean
@find$(OBJTREE)-typef\(-name'
*.depend'
\
-o-name'
*.srec'
-o-name'
*.bin'
-o-nameu-boot.img\)\
-print0\
|xargs-0rm-f
@rm-f$(OBJS)$(obj)*.bak$(obj)ctags$(obj)etags$(obj)TAGS\
$(obj)cscope.*$(obj)*.*~
@rm-f$(obj)u-boot$(obj)u-boot.map$(obj)u-boot.hex$(ALL-y)
@rm-f$(obj)u-boot.kwb
@rm-f$(obj)u-boot.imx
@rm-f$(obj)u-boot.ubl
@rm-f$(obj)arch/powerpc/cpu/mpc824x/bedbug_603e.c
#@rm-fr$(obj)include/asm/proc$(obj)include/asm/arch$(obj)include/asm
@rm-fr$(obj)include/generated
#new:
adddeletejunctiontothisplace
echo"
adddeletejunctiontothisplace"
@[!
-d$(obj)include/asm]||junction-d$(obj)include/asm
-d$(obj)nand_spl]||find$(obj)nand_spl-name"
*"
-typel-print|xargsrm-f
-d$(obj)onenand_ipl]||find$(obj)onenand_ipl-name"
-d$(obj)mmc_spl]||find$(obj)mmc_spl-name"
注:
红色字体为要添加的部分。
打开u-boot根目录下的mkconfig,找到注释#Createlinktoarchitecturespecificheaders处,修改如下(左边为修改前,右边为修改后):
#Createlinktoarchitecturespecificheaders
#
if["
$SRCTREE"
!
="
$OBJTREE"
];
then
mkdir-p${OBJTREE}/include
mkdir-p${OBJTREE}/include2
cd${OBJTREE}/include2
rm-fasm
ln-s${SRCTREE}/arch/${arch}/include/asmasm
LNPREFIX=${SRCTREE}/arch/${arch}/include/asm/
cd../include
mkdir-pasm
else
cd./include
ln-s../arch/${arch}/include/asmasm
fi
rm-fasm/arch
if[-z"
${soc}"
ln-s${LNPREFIX}arch-${cpu}asm/arch
ln-s${LNPREFIX}arch-${soc}asm/arch
${arch}"
="
arm"
rm-fasm/proc
ln-s${LNPREFIX}proc-armvasm/proc
#rm-fasm
#ln-s../arch/${arch}/include/asmasm
if[-dasm];
deletejunctioninclude/asm"
junction-dasm
fi
createjunctioninclude/asm"
junctionasm../arch/${arch}/include/asm
addrm-rtodeleteadirectory
rm-frasm/arch
rm-frasm/proc
3.5编译u-boot
因为编译u-boot时会默认调用D:
\MinGW\bin中的strip.exe,而我们需要调用的是SourceryCodeBench中的arm-none-linux-gnueabi-strip.exe。
那么我们只需要做简单地替换就行了,做法:
将D:
\Sourcery_CodeBench_Lite_for_ARM_EABI\bin中的arm-none-linux-gnueabi-strip.exe拷贝到D:
\MinGW\bin中改名为strip.exe替换掉原来D:
\MinGW\bin下的strip.exe。
在Project下的MakeTarget->
Build中,选择distclean,点击build:
如果编译提示没有/tmp目录,那么可以用D:
\MinGW\msys\1.0下的msys.bat新建一个:
双击msys.bat,键入:
Mkdir/tmp
Chmoda+rwx/tmp
Build中选择am335x_evm_config,点击build:
在Project下点击BuildProject,开始编译u-boot:
至此u-boot就编译好了。
由于笔者手上的板子没有NANDflash,它是从SD卡启动的,所以要用一个工具把u-boot.bin做成u-boot.img文件。
笔者从网上下载了适用于windows下的mkimage工具,然后把MLO和做好的u-boot.img拷入分好区的SD卡中,结果顺利运行。
笔者做这件事情,一是大家不需要装虚拟机或者linux的物理机,二是对习惯在windows环境下操作的朋友提供一种工作模式,二是为刚从windows转移到linux中工作的人提供方便。
笔者是在windows7系统32位环境下编译的u-boot,编译一次大概30分钟。
由于笔者才疏学浅,文中不足之处还请多多包涵。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 在windows环境下用Sourcery CodeBench编译基于 windows 环境 Sourcery CodeBench 编译 基于