前言
本文针对Novatek Scaler Leon2 32bit核心架构在单机模式下如何建立简易的编译环境,提供在外部若修改固件时可以使用单机电脑完成编译的动作进行所需要的除错与对应下达软体对策时的测试。
全新版本Cygwin 完整安装流程
首先到如下图Cygwin官网(Cygwin)中”Installing Cygwin”点选适合电脑安装版本的安装载点。
点选载点后会弹出如下图下载画面,点下储存档案将安装档储存下来。
下载完成后,点击下载的安装执行档,启动安装程序。
选择”Install from Internet”由网路来源进行安装。
接着点选”Browse”选择或是建立Cygwin安装后的目录,并设定权限。
因为由网路来源安装,再指定”SetupPackage”目录。
设定网路连线方式,这边选择”Direct Connection”直接连线方式安装。
网路设定部分最后再选择下载来源网点,若有连线下载失败讯息可以选择其他载点再进行安装测试。
若连线成功则会显示下载安装包进度。
安装包下载完成后会进入Cygwin自订需要安装的套件与版本选择,因为安装包会一直更新,我们可以针对Cygwin本身相关的套件与函式库版本以最新版本为主进行选用,若需要测试其他版本可以再进入此安装界面进行更换。在选用设定套件可以点选”View”的下拉式功能表单选择”Full”选项。
以cygwin32相关套件为范例,我们可以在下图绿框"Search"栏位键入需要搜寻套件名称的关键字,以下键入”cygwin32”后可以看到下方就会将名称相关的套件列出,我们再一一将有使用到的套件选择需要使用的版本,如红框处按下箭头Icon后选择对应版本号即可完成设定,若不需要安装的套件则设定到skip状态。
Cygwin需要安装的相关套件都完成设定后就可以按下一步开始准备进行安装。
开始安装前会提示目前要安装与修改的套件版本列表,若有需要可以下拉进行确认动作,没问题就按下一步进行安装。
等待安装进度完成,就完成了Cygwin环境安装。
LEON2 GCC编译工具设定
安装好Cygwin环境后并无法符合所需编译的需求,主要是必须要使用并设定LEON2 core编译所需的GCC工具,本文将直接由网路下载对应版本的GCC工具导入Cygwin环境当中最后并完成编译环境的相关设定。首先先搜寻LEON2 core所需的GCC编译工具,本文下载网址如下图为Downloads — NavSpark,点选windows版本下载sparc-elf-3.4.4 GCC编译工具,下载档案为sparc-elf-3.4.4-mingw.zip档。
针对下载完成的zip档进行解压缩动作获得sparc-elf-3.4.4-mingw目录档案如下图红框处。
最后在Cygwin安装目录下建立”opt”目录,并将上述解压缩的sparc-elf-3.4.4-mingw目录复制进来。
完成复制后将目录路径设定到如下图范例的Windows环境变数中。
完成以上动作即可成功安装并设定LEON2核心所需要的编译环境。
Cygwin 编译环境使用
首先先开启已经安装设定成功的Cygwin环境,双击安装目录下的”Cygwin.bat”档案。
执行后会进入如下图Cygwin Console视窗。
在Cygwin Console界面中使用”cd”指令切换到所需要编译韧体的source code目录下,如下图范例,切换到确定目录后可以执行”make all”命令开始执行编译动作。
编译流程结束可以参考编译完成画面如下看到bin档产出即完成编译动作。
Q/A
Q:Cygwin使用方式为在Console界面下键入指令方式,若不熟悉相关指令使用方式是否可以有方式查询?
A:Cywin相关指令都可以搭配”—help”参数执行后将会将该指令详细搭配参数格式与每个参数操作说明详细列出,可以在Offline状况下直接进行查询使用方法
Q:安装完成后若要确认已经安装套件与版本要如何获得相关资讯?
A: 安装完成后可以到文中说明的Cygwin目录下启动Cygwin Console界面,同时键入”cygcheck -c”指令,将会将我们设定安装的所有套件与对应版本列出若需要确认安装是否遗漏或是正确性,可以进行比对确认。
Q:针对已经安装完成的套件版本若要升级或是降级使用中的版本是否需要重新安装?
A:不需要整个环境重新安装,套件新增或是针对已经安装版本的套件进行升降版本别都可以参考文中安装流程直接执行到”Select Packages”页面步骤后在该页面使用搜寻的方式寻找需要异动的套件名称后,在所列出套件可以使用下拉工能表选择”Reinstall”、”Uninstall”或是换版本等设定后进行”下一步”动作等待结束即可完成套件异动。
Q:针对编译完成的档案甚至其他核心bin档资料想要一起进行打包动作可以使用甚么套件完成?
A:Cywin安装程式中可以选择将p7zip套件安装设定,设定完成后就可以在环境中使用”7z”的指令针对需要打包压缩的目录与其下档案进行一次性自动化的打包动作,我们也可以将指令编辑在程式包建立一个”shell”档案先执行”make all”命令完成编译后再执行”7z”指令搭配”a”的参数将所需要的档案目录进行打包为一个档案。
Q:执行编译时遇到”Argument list too long fail”的报错讯息该如何处置?
A: 这是Linux Shell指令长度限制常遇到的问题,最常碰到的案例就是所带入的档案目录的参数过长所产生的错误,我们可以使用”getconf ARG_MAX”指令来查出目前设定,并搭配使用ulimit命令来调整扩大ARG_MAX的限制设定;若已经设定到最大值依然发生报错讯息就必须修改Makefile的编译程序来避免此问题,例如将不需要的目录项移除。