入门指南

来自SylixOS-wiki
2014年5月3日 (六) 15:35Jiaojinxing (讨论 | 贡献)的版本

跳转至: 导航, 搜索

目录

获得源代码

源代码的地址与组成


SylixOS开发者们使用Git服务器管理源代码,Git服务器的地址为:http://git.sylixos.com/cgit/
Git服务器上的源代码可以分为如下几类:
examples 示例工程,包括应用程序工程、内核模块工程、库工程
examples-bsp 示例BSP工程
librarys 开源库工程,包括Qt补丁
operating-system SylixOS操作系统工程
tools-patch 工具与补丁等
virtual-machine 虚拟机
为了下载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/bspmini2440.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
git clone http://git.sylixos.com/repo/qemu-mini2440.git
git clone http://git.sylixos.com/repo/Qt-4.8.5.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

安装JRE


Eclipse使用Java语言开发,运行Eclipse需要JRE(Java Runtime Environment,Java运行环境),所以需要安装JRE。
它的下载页面是 http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html
根据你的主机操作系统类型,下载对应的安装包,安装过程略。

安装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


它的下载页面是 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等工具,需要安装yagato tools。
安装D:\sylixos_workspace\tools\yagarto-tools\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目录,提示文件夹合并时,请点击“是”按钮。

编译工程

切换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工程是SylixOS操作系统的静态库工程。
在左侧的工程浏览器中选择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工程


bspmini2440工程是移植SylixOS操作系统到mini2440开发板的BSP工程。
拷贝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工程是进程C库工程。
在左侧的工程浏览器中选择libcextern工程,然后点击Project->Build Project菜单编译libcextern工程,

最后生成静态库文件libcextern.a和动态库文件libcextern.so(位于D:\sylixos_workspace\libcextern\Debug目录)。

编译examples工程


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开发板运行SylixOS操作系统的镜像,为了让没有mini2440开发板的朋友也能尝鲜,我们提供了

Qemu for mini2440虚拟机。

该虚拟机位于D:\sylixos_workspace\qemu-mini2440目录,首次使用该虚拟机,需要如下进行如下两个步骤的操作:
1. 生成Nand Flash镜像文件
执行nandCreator.exe,执行完成后,会在当前目录生成一个名为nand.bin的Nand Flash镜像文件。
2. 增加虚拟网卡
执行addtap.bat批处理文件,以增加虚拟网卡(可以执行deltapall.bat批处理文件将所有的虚拟网卡删除,
如果你有其它虚拟机,请不要执行它!)。

Sylixide tapinstall.png

将新增的虚拟网卡的名字修改为virtual(由上图可以看到新增的虚拟网卡是TAP-win32 Adapter V9),
将它的IP设为192.168.7.XX(必须要和SylixOS目标板的IP同一个网段),将子网掩码设为255.255.255.0。

Sylixide ipconfig.png

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,vlan=1 
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

在控制台下输入命令:
ifconfig
可以查看或配置SylixOS目标板的网络接口,输入该命令,我们得知SylixOS目标板的en1网络接口的IP地址为192.168.7.30。

运行SylixOS应用程序


SylixOS操作系统内建了一个FTP服务器,只要PC机安装FTP客户端就能连接上SylixOS目标板的FTP服务器,就可以很方便地通过

FTP客户端向目标板传输文件,如应用程序可执行文件等。

如果你的PC机操作系统是windows,建议安装filezilla FTP客户端,它的官网地址为 https://filezilla-project.org/
安装完成后,打开filezilla,务必将传输类型修改为二进制,点击 传输 -> 传输类型 -> 二进制 菜单
然后新建一如下的FTP站点,IP地址为SylixOS目标板的IP地址(如上面的192.168.7.30),端口号为21,用户名和密码均为root:

Sylixide ftpconfig.png

建议重命名该FTP站点的名称为IP地址,即192.168.7.30,以方便区分。
点击“连接”按钮即可连接到SylixOS目标板的FTP服务器:

Sylixide ftp.png

将本地磁盘路径切换到 D:\sylixos_workspace\examples\hello_world\Debug\ 目录,

可以看到该目录有我们之前编译应用程序示例工程hello_world生成的应用程序可执行文件hello_world,

将其拖动到右侧的SylixOS目标板文件列表的/apps目录,即可将其传输到SylixOS目标板的/apps目录。

应用程序可执行文件hello_world运行时还依赖于进程补丁libvpmpdm.so(位于D:\sylixos_workspace\libsylixos\Debug目录),

将libvpmpdm.so拖动到右侧的SylixOS目标板文件列表的/lib目录,即可将其传输到SylixOS目标板的/lib目录。

在控制台下输入命令 cd /apps 以进入 /apps 目录,再输入命令 ./hello_world 即可执行应用程序hello_world:
[root@sylixos_station:/]# cd /apps/
[root@sylixos_station:/apps]# ./hello_world
hello world (base on sylixos)!

插入SylixOS内核模块


将本地磁盘路径切换到 D:\sylixos_workspace\examples\hello_module\Debug\ 目录,

可以看到该目录有我们之前编译内核模块示例工程hello_module生成内核模块文件hello_module.ko,

将其拖动到右侧的SylixOS目标板文件列表的/lib/modules目录,即可将其传输到SylixOS目标板的/lib/modules目录。

在控制台下输入命令 cd /lib/modules 以进入 /lib/modules 目录,再输入命令 modulereg hello_module.ko 即可插入

内核模块文件hello_module.ko进内核:

[root@sylixos_station:/]# cd /lib/modules/
[root@sylixos_station:/lib/modules]# modulereg hello_module.ko
hello_module init!
module hello_module.ko register ok, handle : 0x30c54c40
在控制台下输入命令 modules 即可查看当前内核插入的内核模块:
[root@sylixos_station:/lib/modules]# modules

            NAME                HANDLE   TYPE  GLB   BASE     SIZE    SYMCNT
------------------------------ -------- ------ --- -------- -------- --------
VPROCESS: kernel               pid:   0 TOTAL MEMORY: 8192
+ hello_module.ko              30c54c40 KERNEL YES c00c7000       c4        2

total modules : 1

调试SylixOS

增加调试实例


关闭上面的Qemu虚拟机程序。
点击调试工具栏Sylixide newdebug.png 的臭虫图标的下拉的Debug Configurations…菜单,将弹出如下的调试配置对话框:

Sylixide newdebugzylin.png

双击Zylin Embedded debug(Native),将增加一个名为bspmini2440 Default的实例:

Sylixide newzylindebug.png

修改调试配置


切换到Debugger选项卡,将GDB Debugger修改为
arm-none-eabi-gdb

Sylixide debugconfig.png

切换到Commands选项卡,将Initalize commands修改为如下的内容:
target remote localhost:1234
load

Sylixide debugcommands.png

最后点击Apply按钮应用修改,点击Debug按钮开始调试。

开始调试


mini2440_debug.bat 的内容如下:
start qemu-system-arm.exe -s -S -M mini2440 -show-cursor -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/
mini2440_debug.bat 和 mini2440_run.bat 的区别在于 mini2440_debug.bat 并没有指定 kernel 镜像文件,但增加 -s -S 选项。
执行 mini2440_debug.bat 批处理文件,如果出现如下的 windows 安全警报,请点击允许访问按钮。

Sylixide netwarnning.png

稍等数秒,Eclipse 将控制 arm-none-eabi-gdb 连接到 Qemu 虚拟机,并将 SylixOS 的相关节区 section 加载到 mini2440 开发板内存的相应位置:
target remote localhost:1234
vector () at src/Target/Startup/Startup.s:68
68	        ldr     pc, _reset_addr                                       
Loading section .text, size 0x29eb1c lma 0x30000000
load
Loading section .ARM.exidx, size 0x8 lma 0x3029eb1c
Loading section .ctors, size 0x8 lma 0x3029eb24
Loading section .dtors, size 0x8 lma 0x3029eb2c
Loading section .data, size 0x1ca08 lma 0x3029eb34
Start address 0x30000000, load size 2864444
Transfer rate: 239 KB/sec, 2027 bytes/write.
现在你可以通过图形化的方式调试 SylixOS 系统了:

Sylixide debug.png

个人工具
名字空间

变种
操作
导航
工具