入门指南
Jiaojinxing (讨论 | 贡献) (→运行SylixOS应用程序) |
Jiaojinxing (讨论 | 贡献) (→插入SylixOS内核模块) |
||
第341行: | 第341行: | ||
====插入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 |
2014年4月30日 (三) 15:52的版本
目录 |
入门指南
获得源代码
源代码的地址与组成
- 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
- 默认安装即可,安装步骤略。
下载源代码
- 创建一个名为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 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上运行起来的界面:
- 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开源集成开发环境整体结构框图:
安装Eclispe CDT
- 根据你的主机操作系统类型,下载对应的压缩包:
- 由于笔者的主机操作系统是64位的windows7,所以笔者下载的压缩包是eclipse-cpp-kepler-SR2-win32-x86_64.zip。
- 下载后把它解压到D:\SylixIDE目录:
- 解压完成后,进入D:\SylixIDE\eclipse目录,将eclipse.exe发送到桌面快捷方式以方便后续使用:
安装GNU Tools for ARM Embedded Processors
- 根据你的主机操作系统类型,下载对应的安装包。
- 由于笔者的主机操作系统是64位的windows7,所以笔者下载的安装包是gcc-arm-none-eabi-4_8-2014q1-20140314-win32.exe。
- 把它安装到D:\SylixIDE\arm-none-eabi-gcc目录。
- 注意要在完成界面那里勾选Add path to environment variable:
- 安装完成后,需要新建一用户环境变量,变量名为GCC_INCDIR,变量值为D:\SylixIDE\arm-none-eabi-gcc:
安装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:
替换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目录,如下:
导入SylixOS工程
- Eclipse切换工作空间后,会显示欢迎界面,请关掉欢迎界面,将显示如下的界面:
- 左侧的工程浏览器空空如也,并没有显示我们期待的libsylixos等工程,在Eclipse中,点击File->Import菜单,
在弹出的对话框中选择General下的Existing Projects into Workspace,如下:
- 点击Next按钮,在弹出的对话框的Select root directory那里选择D:\sylixos_workspace目录,
并且勾选bspmini2440和libsylixos及libcextern工程,如下:
- 最后,点击Finish按钮完成工程导入。
- 现在,左侧的工程浏览器应该会显示bspmini2440和libsylixos及libcextern工程:
导入风格文件
- SylixOS源码众多,但风格统一,这主要归功于开发者们使用统一的代码风格来书写SylixOS系统,
sylixos_ref.epf是我们配制的Eclipse代码样式文件,导入它来书写代码,我们就可以轻松地书写出符合SylixOS规范的代码,
这将有助于你未来向SylixOS组织提交代码,所以我们强烈建议你也导入该代码样式文件。
- 在Eclipse中,点击File->Import...菜单,在弹出的对话框中选中General->Perferences:
- 然后点击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目录)。
生成系统符号表文件
- 拷贝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:
编译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目录)。
编译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批处理文件将所有的虚拟网卡删除,
- 如果你有其它虚拟机,请不要执行它!)。
- 将新增的虚拟网卡的名字修改为virtual(由上图可以看到新增的虚拟网卡是TAP-win32 Adapter V9),
- 将它的IP设为192.168.7.XX(必须要和SylixOS目标板的IP同一个网段),将子网掩码设为255.255.255.0。
- 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系统将启动起来并进入到控制台:
- 在控制台下输入命令:
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:
- 建议重命名该FTP站点的名称为IP地址,即192.168.7.30,以方便区分。
- 点击“连接”按钮即可连接到SylixOS目标板的FTP服务器:
- 将本地磁盘路径切换到 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