讨论:首页

来自SylixOS-wiki
(版本间的差异)
跳转至: 导航, 搜索
(安装Qemu模拟器)
(清空页面)
 
(未显示2个用户的32个中间版本)
第1行: 第1行:
==入门指南==
 
===获得源代码===
 
  
----
 
 
====源代码的地址与组成====
 
:SylixOS开发者们使用Git服务器管理源代码,Git服务器的地址为:http://git.sylixos.com/cgit/
 
 
:Git服务器上的源代码可以分为如下几类:
 
{| class="wikitable"
 
|-
 
| examples || 示例工程,包括应用程序工程、内核模块工程、库工程
 
|-
 
| examples-bsp || 示例BSP工程
 
|-
 
| librarys || 开源库工程
 
|-
 
| operating-system || SylixOS操作系统工程
 
|-
 
| tools-patch || 工具与补丁等
 
|}
 
:为了下载Git服务器上的源代码,你需要一个Git客户端,如果你的PC机操作系统是windows,建议使用Git for windows。
 
 
====安装Git for windows====
 
:下载地址:http://msysgit.github.io/
 
 
:默认安装即可,安装步骤略。
 
 
====下载源代码====
 
:创建一个名为sylixos_workspace的目录(下文约定该目录是D:\sylixos_workspace目录),进入该目录,打开Git Bash,输入如下命令:
 
 
git clone http://git.sylixos.com/repo/libsylixos.git
 
git clone http://git.sylixos.com/repo/mini2440.git
 
git clone http://git.sylixos.com/repo/libcextern.git
 
git clone http://git.sylixos.com/repo/examples.git
 
git clone http://git.sylixos.com/repo/tools.git
 
 
===搭建开发环境===
 
 
----
 
 
====开源开发环境的组成====
 
:SylixOS开源集成开发环境由以下组成:
 
*Eclipse
 
:Eclipse是著名的跨平台开源集成开发环境(IDE),最初主要用来开发Java语言程序,目前亦可以通过插件使其作为C++、Python、PHP等其他语言程序的开发工具。
 
 
:Eclipse本身只是一个框架平台,但是有众多插件的支持,使得Eclipse拥有较佳的灵活性。许多软件开发商以Eclipse为框架开发自己的IDE。
 
 
:下图是Eclipse在windows7上运行起来的界面:
 
 
[[文件:sylixide_eclipse.png]]
 
*CDT
 
:CDT是扩展Eclipse支持C/C++开发的插件。
 
 
*GNU Tools for ARM Embedded Processors
 
:GNU Tools for ARM Embedded Processors是一套GNU的开发ARM处理器程序的工具集。
 
 
*Zylin CDT
 
:Zylin CDT是扩展Eclipse支持嵌入式远程调试的插件。
 
 
:SylixOS开源集成开发环境整体结构框图:
 
 
[[文件:ide.png]]
 
 
====开源开发环境的搭建====
 
 
----
 
 
*安装Eclispe CDT
 
:它的下载页面是 http://www.eclipse.org/downloads/packages/eclipse-ide-cc-developers/keplersr2
 
 
:根据你的主机操作系统类型,下载对应的压缩包:
 
 
[[文件:sylixide_eclipsedownload.png]]
 
 
:由于笔者的主机操作系统是64位的windows7,所以笔者下载的压缩包是eclipse-cpp-kepler-SR2-win32-x86_64.zip。
 
 
:下载后把它解压到D:\SylixIDE目录:
 
 
[[文件:sylixide_unzipeclipse.png]]
 
 
:解压完成后,进入D:\SylixIDE\eclipse目录,将eclipse.exe发送到桌面快捷方式以方便后续使用:
 
 
[[文件:sylixide_eclipselink.png]]
 
 
*安装GNU Tools for ARM Embedded Processors
 
:它的下载页面是 https://launchpad.net/gcc-arm-embedded/+download
 
 
[[文件:sylixide_gccdownload.png]]
 
 
:根据你的主机操作系统类型,下载对应的安装包。
 
 
:由于笔者的主机操作系统是64位的windows7,所以笔者下载的安装包是gcc-arm-none-eabi-4_8-2014q1-20140314-win32.exe。
 
 
:把它安装到D:\SylixIDE\arm-none-eabi-gcc目录。
 
 
:注意要在完成界面那里勾选Add path to environment variable:
 
 
[[文件:sylixide_gccinstall.png]]
 
 
:安装完成后,需要新建一用户环境变量,变量名为GCC_INCDIR,变量值为D:\SylixIDE\arm-none-eabi-gcc:
 
 
[[文件:sylixide_env.png]]
 
 
*安装yagato tools
 
:现在还缺少make等工具,到www.yagarto.de下载yagato tools:
 
 
[[文件:sylixide_yagartodownload.png]]
 
 
:把下载的yagarto-tools-20121018-setup.exe安装到D:\SylixIDE\yagarto-tools-20121018目录,
 
 
:注意要在选择组件界面那里勾选Add the make utils to the PATH variable:
 
 
[[文件:sylixide_yagartoinstall.png]]
 
 
*替换reent.h文件
 
:由于SylixOS修改了编译器的reent.h文件,所以使用编译器自带的reent.h文件将不能编译成功。
 
 
:把D:\sylixos_workspace\tools\arm-none-eabi-patch\4.8\reent.h文件放入D:\SylixIDE\arm-none-eabi-gcc\arm-none-eabi\include\sys目录替换原有的。
 
 
*安装Zylin CDT
 
:复制D:\sylixos_workspace\tools\eclipse\zylin目录下的features与plugins两个子文件夹到D:\SylixIDE\eclipse目录,提示文件夹合并时,请点击“是”按钮。
 
 
====安装Qemu模拟器====
 
 
----
 
 
:1. 生成Nand镜像文件
 
:2. 增加虚拟网卡
 
::首次使用,请先执行tapinstall.bat批处理文件,以增加虚拟网卡(可以执行tapuninstall.bat批处理文件将所有的虚拟网卡删除,
 
:如果你有虚拟机,请不要执行它)。
 
 
[[文件:sylixide_tapinstall.png]]
 
 
::将新增的虚拟网卡的名字修改为virtual(由上图可以看到新增的虚拟网卡是TAP-win32 Adapter V9),
 
 
:将它的IP设为192.168.7.XX(必须要和SylixOS的IP同一个子网),将子网掩码设为255.255.255.0。
 
 
[[文件:sylixide_ipconfig.png]]
 
 
====安装FTP客户端====
 
 
----
 
 
:SylixOS操作系统内建了一个FTP服务器,只要PC机安装FTP客户端就能连接上SylixOS的FTP服务器,
 
 
就可以很方便地通过FTP客户端向目标板传输文件,如应用程序可执行文件等。
 
 
:如果你的PC机操作系统是windows,建议安装filezilla FTP客户端,它的官网地址为 https://filezilla-project.org/
 
 
:安装完成后,打开filezilla,务必将传输类型修改为二进制,点击菜单 “传输”-> “传输类型”-> 二进制
 
 
:新建一如下的FTP站点(用户名和密码均为root):
 
 
[[文件:sylixide_ftpconfig.png]]
 
 
:恭喜,你已经将SylixOS开源集成开发环境搭建成功。
 
 
===编译工程===
 
 
----
 
 
====切换SylixOS工作空间====
 
 
:在Eclipse中,点击File->Switch WorkSpace->Other…菜单,在弹出的对话框的Workspace中选择D:\sylixos_workspace目录,
 
 
然后点击OK按钮,Eclipse会切换工作空间到D:\sylixos_workspace目录,如下:
 
 
[[文件:sylixide_workspace.png]]
 
 
====导入SylixOS工程====
 
 
----
 
 
:Eclipse切换工作空间后,会显示欢迎界面,请关掉欢迎界面,将显示如下的界面:
 
 
[[文件:sylixide_eclipseopen.png]]
 
 
:左侧的工程浏览器空空如也,并没有显示我们期待的libsylixos等工程,在Eclipse中,点击File->Import菜单,
 
 
在弹出的对话框中选择General下的Existing Projects into Workspace,如下:
 
 
[[文件:sylixide_importprojects.png]]
 
 
:点击Next按钮,在弹出的对话框的Select root directory那里选择D:\sylixos_workspace目录,
 
 
并且勾选bspmini2440和libsylixos及libcextern工程,如下:
 
 
[[文件:sylixide_importprojects2.png]]
 
 
:最后,点击Finish按钮完成工程导入。
 
 
:现在,左侧的工程浏览器应该会显示bspmini2440和libsylixos及libcextern工程:
 
 
[[文件:sylixide_projects.png]]
 
 
====导入风格文件====
 
 
----
 
 
:SylixOS源码众多,但风格统一,这主要归功于开发者们使用统一的代码风格来书写SylixOS系统,
 
 
sylixos_ref.epf是我们配制的Eclipse代码样式文件,导入它来书写代码,我们就可以轻松地书写出符合SylixOS规范的代码,
 
 
这将有助于你未来向SylixOS组织提交代码,所以我们强烈建议你也导入该代码样式文件。
 
 
:在Eclipse中,点击File->Import...菜单,在弹出的对话框中选中General->Perferences:
 
 
[[文件:sylixide_importpreferences.png]]
 
 
:然后点击Next按钮,在From Perferences File那里选择D:/sylixos_workspace/tools/eclipse/sylixos_ref.epf文件,
 
 
并且选中Import All,最后点击Finish按钮:
 
 
====编译libsylixos工程====
 
 
----
 
 
:在左侧的工程浏览器中选择libsylixos工程,然后点击Project->Build Project菜单编译libsylixos工程,
 
 
编译耗费的时间视你的机器的性能而定,一般需要10分钟。
 
 
:最后生成静态库文件libsylixos.a和libdsohandle.a及libvpmpdm.a、动态库文件libvpmpdm.so、内核模块xinput.ko
 
 
和xsiipc.ko(位于D:\sylixos_workspace\libsylixos\Debug目录)。
 
 
[[文件:sylixide_libsylixosbuildresult.png]]
 
 
====生成系统符号表文件====
 
 
----
 
 
:拷贝D:\sylixos_workspace\libsylixos\SylixOS\hosttools\makesymbol目录下的makesymbol.bat和makesymbol.sh及
 
 
nm.exe到D:\sylixos_workspace\libsylixos\Debug目录。
 
 
:执行D:\sylixos_workspace\libsylixos\Debug目录下的makesymbol.bat,会生成系统符号表文件symbol.c和symbol.h:
 
 
[[文件:sylixide_libsylixosmakesymbol.png]]
 
 
====编译bspmini2440工程====
 
 
----
 
 
:拷贝D:\sylixos_workspace\libsylixos\Debug目录下的symbol.c和symbol.h文件到D:\sylixos_workspace\bspmini2440\SylixOS\bsp目录替换原有的。
 
 
:在左侧的工程浏览器中选择bspmini2440工程,然后点击Project->Build Project菜单编译bspmini2440工程,
 
 
最后生成ELF文件bspmini2440.elf和二进制文件bspmini2440.bin(位于D:\sylixos_workspace\bspmini2440\Debug目录)。
 
 
[[文件:sylixide_bspmini2440buildresult.png]]
 
 
====编译libcextern工程====
 
 
----
 
 
:在左侧的工程浏览器中选择libcextern工程,然后点击Project->Build Project菜单编译libcextern工程,
 
 
最后生成静态库文件libcextern.a和动态库文件libcextern.so(位于D:\sylixos_workspace\libcextern\Debug目录)。
 
 
====编译examples工程====
 
 
----
 
 
:在左侧的工程浏览器中选择examples工程,然后点击Project->Build Project菜单编译examples工程。
 
 
:examples工程包含了三个子工程:应用程序示例工程hello_world、内核模块示例工程hello_module、库示例工程hello_library。
 
 
:*应用程序示例工程hello_world会生成应用程序可执行文件hello_world(位于D:\sylixos_workspace\examples\hello_world\Debug目录)。
 
 
:*内核模块示例工程hello_module会生成内核模块文件hello_module(位于D:\sylixos_workspace\examples\hello_module\Debug目录)。
 
 
:*库示例工程hello_library会生成静态库文件libhello_library.a和动态库文件libhello_library.so(位于D:\sylixos_workspace\examples\hello_library\Debug目录)。
 
 
===运行SylixOS===
 
 
----
 
 
====运行SylixOS操作系统====
 
::mini2440_run.bat位于
 
 
::mini2440_run.bat的内容如下:
 
start qemu-system-arm.exe -M mini2440 -show-cursor -kernel ../../bspmini2440/Debug/bspmini2440.bin
 
-serial telnet:127.0.0.1:1200,server -mtdblock nand.bin -serial file:virtualkbd
 
-net nic -net tap,ifname=virtual start putty.exe telnet://127.0.0.1:1200/
 
 
::可以看到它首先启动了qemu模拟器的可执行程序qemu-system-arm.exe,通过参数指定了module为mini2440开发板,
 
 
:指定了kernel镜像为../../bspmini2440/Debug/bspmini2440.bin,指定了串口为telnet服务器:127.0.0.1:1200,
 
 
:指定了网卡的接口名为virtual,指定了nand flash的模拟文件为nand.bin。
 
 
::之后启动了终端软件putty.exe,通过参数让putty连接telnet://127.0.0.1:1200/,即连接到mini2440开发板的串口。
 
 
:执行mini2440_run.bat,稍等片刻SylixOS系统将启动起来并进入到控制台:
 
 
[[文件:sylixide_console.png]]
 
 
====运行SylixOS应用程序====
 
----
 
 
====插入SylixOS内核模块====
 
----
 
 
==进阶教程==
 
===Bugzilla简明使用手则===
 
====简介:====
 
Bugzilla是Mozilla公司向我们提供的一个开源的免费缺陷跟踪工具。作为一个产品缺陷的记录及跟踪工具,它能够为你建立一个完善的Bug跟踪体系,
 
 
包括报告Bug、查询Bug记录并产生报表、处理解决、管理员系统初始化和设置四部分。并具有如下特点:
 
*基于Web方式,安装简单、运行方便快捷、管理安全。
 
*有利于缺陷的清楚传达。本系统使用数据库进行管理,提供全面详尽的报告输入项,产生标准化的Bug报告。提供大量的分析选项和强大的查询匹配能力,
 
能根据各种条件组合进行Bug统计。当错误在它的生命周期中变化时,开发人员、测试人员、及管理人员将及时获得动态的变化信息,允许你获取历史纪录,
 
并在检查错误的状态时参考这一记录。
 
*系统灵活,强大的可配置能力。Bugzilla工具可以对软件产品设定不同的模块,并针对不同的模块设定开发人员和测试人员;这样可以实现提交报告时自动发给指定的责任人;
 
并可设定不同的小组。设定不同的用户对Bug记录的操作权限不同,可进行有效的控制管理。允许设定不同的严重程度和优先级,可以在错误的生命期中管理错误,
 
从最初的报告到最后的解决,都有详细的记录,确保了错误不会被忽略,同时,可以让开发人员将注意力集中在优先级和严重程度高的错误上。
 
*自动发送Email通知相关人员。根据设定的不同责任人,自动发送最新的动态信息,有效的帮助测试人员和开发人员进行沟通。
 
 
====Bugzilla操作流程:====
 
#用户登录及设置流程:
 
#*打开浏览器,输入Bugzilla服务器地址:http://server/bugzilla/
 
#*进入主页面后,点击【新建帐号】,进入注册页面。
 
#*在注册页面中输入E-Mail地址和用户代号,然后,点击【Create Account】,随后,你将收到一封包含初始密码的E-Mail。
 
#*在收到E-Mail之后,点击【登录】,在帐号栏输入注册时使用的E-Mail地址,在密码栏输入邮件里通知的初始密码,然后,点击【Login】。
 
#*如忘记密码,在登陆页面中输入注册用户名,点击【Submit Request】,根据收到的邮件进行重新设置密码。
 
#*如果成功登录后,点击【Edit属性】->【帐号设置】,进行密码修改。
 
#*点击【Edit属性】->【邮件设置】,进行邮件通知设置。
 
#*点击【Edit属性】->【权限】,进行权限查询。
 
#Bug的处理流程概述:
 
#*测试人员或开发人员发现bug后,判断属于哪个模块的问题,填写bug报告后,通过Email通知项目组长或直接通知开发者。
 
#*项目组长根据具体情况,重新reassigned分配给bug所属的开发者。
 
#*开发者收到E-Mail信息后,判断是否为自己的修改范围。
 
#*#若不是,重新reassigned分配给项目组长或应该分配的开发者;
 
#*#若是,进行处理,resolved并给出解决方法。(可创建补丁附件及补充说明);
 
#*测试人员查询开发者已修改的bug,进行重新测试。(可创建test case附件)
 
#*#经验证无误后,修改状态为VERIFIED。待整个产品发布后,修改为CLOSED。
 
#*#还有问题,REOPENED,状态重新变为“New",并发邮件通知。
 
#*如果这个BUG一周内一直没被处理过。Bugzilla就会一直用E-Mail骚扰它的属主,直到采取行动为止。
 
#一个Bug的生存周期图示:
 
#测试人员报告Bug的流程:
 
#*请先进行查询,确认要提交的bug报告不会在原有纪录中存在,若已经存在,不要提交,若有什么建议,可在原有纪录中增加注释,告知其属主,让bug的属主看到这个后自己去修改。
 
#*若Bug不存在,创建一份有效的bug报告后进行提交。
 
#*具体操作:点击【新建】,选择产品后,填写一个Bug报告的表格。填表注意:【指派给】为空则默认为设定的owner, 也可手工制定。【抄送】可为多人,需用逗号隔开。【描述】中要详细说明下列情况:
 
#*#发现问题的步骤;
 
#*#执行上述步骤后出现的情况;
 
#*#期望应出现的正确结果。
 
#*【平台】、【操作系统】、【优先级】、【严重级】,可以根据具体情况自行选择。
 
#*【依赖】是指与这个新Bug有关联的Bug号码。
 
#*【Blocks】不太清楚J
 
#*填写完毕之后,点击【Commit】提交,发送邮件通知给相关人员。
 
#Bug的不同处理状态解释:
 
#*Bug的属主(owner)确认并接受这个Bug,然后给出解决方法,并填写【附加说明】,还可以【建立新的附件】(如:更改提交单)等等。
 
#*开发人员可以调整的Bug状态如下:
 
#*#FIXED                  =>    描述的问题已经修改;
 
#*#INVALID              =>    描述的问题不是一个bug (输入错误后,通过此项来取消);
 
#*#WONTFIX            =>    描述的问题将永远不会被修复;
 
#*#LATER                  =>    描述的问题将不会在产品的这个版本中解决;
 
#*#DUPLICATE        =>    描述的问题是一个存在的bug的复件;
 
#*#WORKSFORME  =>    所有要重新产生这个bug的企图是无效的。如果有更多的信息出现,请重新分配这个bug,而现在只把它归档。
 
#*测试人员收到Bug的修改通知之后,还可以做如下的调整:
 
#*#Leave as RESOLVED FIXED      =>  保持FIXED状态不变;
 
#*#Reopen bug                                    =>    这个bug还有问题,重新打开;
 
#*#Mark bug as VERIFIED        =>  这个bug确实被正确修改了;
 
#*#Mark bug as CLOSED                  =>  产品已经发布,将这个bug关闭。
 
#关于权限的说明:
 
#*组内成员对bug具有查询的权利,但不能进行修改。
 
#*Bug的owner 和 reporter 具有修改的权利。
 
#*具有特殊权限的用户具有修改的权利。
 

2014年4月30日 (三) 14:47的最后版本

个人工具
名字空间

变种
操作
导航
工具