查看入门指南的源代码
←
入门指南
跳转至:
导航
,
搜索
因为以下原因,你没有权限编辑本页:
你刚才请求的操作只对属于该用户组的用户开放:
用户
您可以查看并复制此页面的源代码:
==获得源代码== ===源代码的地址与组成=== ---- :SylixOS开发者们使用Git服务器管理源代码,Git服务器的地址为:http://git.sylixos.com/cgit/ :Git服务器上的源代码可以分为如下几类: {| class="wikitable" |- | examples || 示例工程,包括应用程序工程、内核模块工程、库工程 |- | examples-bsp || 示例BSP工程 |- | libraries || 开源库工程 |- | operating-system || SylixOS操作系统工程、SylixOS Base工程 |- | 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 :输入如下命令进入该目录: cd /d/sylixos_workspace :输入如下命令下载源代码: git clone http://git.sylixos.com/repo/sylixos-base.git git clone http://git.sylixos.com/repo/bspmini2440.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 :sylixos-base是SylixOS Base工程,里面包含了libsylixos和libcextern子工程,输入如下命令初始化和更新子工程: cd sylixos-base git submodule init git submodule update ==搭建开源集成开发环境== ===开源集成开发环境的组成=== ---- :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/lunasr2 :根据你的主机操作系统类型,下载对应的压缩包: [[文件:sylixide_eclipsedownload.png]] :由于笔者的主机操作系统是64位的windows7,所以笔者下载的压缩包是eclipse-cpp-luna-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_9-2015q1-20150306-win32.exe。 :把它安装到D:\SylixIDE\arm-none-eabi-gcc目录。 :注意要在完成界面那里勾选Add path to environment variable: [[文件:sylixide_gccinstall.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]] :安装完毕后需要确定系统首先找到的 make 是 yagarto tools 的 make,方法如下: :在 windows 的控制台输入 make -v 命令,如果输出的 make 的版本是 3.81,那说明安装成功了,如下图: [[文件:sylixide_make.png]] :备注:如果你的系统有多个 make,需要确保 D:\SylixIDE\yagarto-tools-20121018\bin\make.exe 在最前面, :如果不是,你可能需要调整你的系统的 PATH 环境变量。 ===替换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_preference.epf是我们配制的Eclipse代码样式文件,导入它来书写代码,我们就可以轻松地书写出符合SylixOS规范的代码, 这将有助于你未来向SylixOS组织提交代码,所以我们强烈建议你也导入该代码样式文件。 :在Eclipse中,点击File->Import...菜单,在弹出的对话框中选中General->Perferences: [[文件:sylixide_importpreferences.png]] :然后点击Next按钮,在From Perferences File那里选择D:/sylixos_workspace/tools/eclipse/sylixos_preference.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镜像文件(依靠上面的 load 命令下载 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]]
返回
入门指南
。
个人工具
登录
名字空间
页面
讨论
变种
查看
阅读
查看源代码
查看历史
操作
搜索
导航
首页
最近更改
随机页面
工具
链入页面
相关更改
特殊页面