SylixOS 驱动程序加载

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SylixOS 驱动程序加载相关的知识,希望对你有一定的参考价值。

  1. SylixOS开发套件简介

    SylixOS专用的集成开发环境是RealEvo-IDE。RealEvo-IDE是一套基于 eclipse 开发的 SylixOS集成开发环境,包括一系列开发调试插件,提供完整的 SylixOS嵌入式开发解决方案,集设计、开发、调试、仿真、部署、测试功能于一体。

    RealEvo-IDE 在宿主机上运行,通过网络或串口与目标机交互。RealEvo-IDE的交叉编译器在宿主机上编译生成可以在目标机上运行的SylixOS镜像文件,交叉调试器实现宿主机与目标机之间的前后台调试。

    RealEvo-IDE的主要功能是SylixOS工程管理和程序调试。RealEvo-IDE可以创建SylixOS Base、SylixOS BSP 、SylixOS App、SylixOS Shared Lib、SylixOS Kernel Module和SylixOS Kernel Static Lib工程。支持一键推送调试、手动启动调试、通过串口调试、动态库调试及Attach到进程调试,所有调试方式在多线程调试时都支持 Non-stop模式。

  2. 开发套件工程管理

  3. 工程导入

    在IDE中选择菜单"file→Import",选择General下的SylixOS Projects,点击Next,其次选择第一个选项select root dectory,点击后面的Browse。选择自己需要导入工程的所在目录,点击自己所要导入的工程,最后点击Finish,完成工程的导入。导入工程成功之后,可在Workspace工程列表中看到新导入的工程。

  4. 工程删除

    在IDE中选定待删除工程,右击选择菜单"Delete"可删除工程。

  5. 修改工程

    在IDE中选中需要修改的工程,右击选择菜单"Properties"打开工程属性页,选择"SylixOS Project",在弹出对话框中可以更改"SylixOS Base Project"、"Debug Level"及"Expert Mode Setting"。为了保证通用设置与"SylixOS Base Project"选项指定的 SylixOS Base 工程保持一致,其他选项默认不可更改。

  6. 开发套件设备管理

  7. 设备实时监控

    RealEvo-IDE 支持对在线设备的实时监控。进入"Device界面",在左侧"Remote System Navigator"区域列出了工程中设置的所有设备。也可以在该区域点击右键,新建一个设备。右键一个在线设备,点击"Launch Device",在"System Information"下列出了设备的内存信息、当前运行的进程及线程信息,设备信息每6s自动刷新一次,也可以在某个信息页面上点击右键手动刷新。对于非内核进程或线程,可以点击右键选择"Kill Process"或"Kill Thread"杀死该进程或线程。

  8. 设备文件系统访问

    RealEvo-IDE支持访问在线设备的文件系统。右键一个在线设备,点击"Launch FTP",打开设备文件系统。在本地选择文件后,右键 "Upload"可以将文件上传到设备文件系统,在设备上选择文件后,右键"Download"可以将文件下载到本地。对于设备上的文件,右键"Permissions"可以更改文件权限。

  9. TFTP服务器

    RealEvo-IDE支持TFTP文件传输。点击"Tools"→"TFTP Server",在弹出的对话框中选择待传输文件的文件夹,点击"Start"后启动TFTP。

  10. 创建BASE工程

    在新建工程中选择"SylixOS Base",点击"Next",进入图 41所示配置页面。在"Project Name"输入框输入工程名,工程名称不允许包含空格,取消勾选"Use default location",可在默认Workspace之外的位置创建工程。

    技术分享

    41创建base工程

    点击"Next"进入工具链设置页面,设置基础编译选项,含:工具链、调试级别、处理器和浮点处理器设置,如图 42所示。

    技术分享

    42 Base Project通用设置

    点击"Next"进入组件选择页面,SylixOS包含大量可选组件,如图 43所示。选中图中列表左侧复选框可包含对应组件到 SylixOS Base工程,选择"Select All"按钮可选中全部组件。这里点"Finish"即可完成工程创建。

    技术分享

    43 SylixOS Base选择组件

    工程向导结束后可在"Project Explorer"中看到新建的"SylixOS"工程,展开可看到libsylixos和libcextern 组件的源码。如图 44所示,选中新建的"SylixOS"工程,右击选择"Build Project"编译工程,编译时间由系统配置决定,大约需要几分钟。

    技术分享

    44编译 SylixOS Base的输出文件

  11. 创建SylixOS模块工程

  12. 创建SylixOS Kernel Module工程

    在新建工程中选择"SylixOS Kernel Module"(其它操作同SylixOS Base),可以创建"SylixOS Kernel Module"工程,如图 51所示。

    技术分享

    51创建SylixOS Kernel Module工程

    点击"Next"选择相应Workbase,点击finish。如图 52所示。

    技术分享

    52工程设置

  13. 目标文件部署及运行

  14. SylixOS Kernel Module 工程编译

    在"Project Explorer"中选择创建好的module工程,点击鼠标右键选择"Build Project"即可完成module工程的编译,编译成功后会在module工程下生成Debug文件夹,Debug文件夹下将包含编译成功的module可执行文件。如图 61所示。

    技术分享

    61 Debug文件夹

  15. SylixOS Kernel Module工程部署

    使用 RealEvo-IDE 的一键部署功能可以将编译的内核模块文件下载到"/lib/modules"目录,配置方法如下:右键 mod_demo 工程,选择菜单"Properties"打开工程属性页,选择"SylixOS Project→Device Setting"选项卡查看或更改部署配置。在创建 SylixOS Kernel Module 工程时,RealEvo-IDE 默认会添加工程当前配置输出文件夹下与工程名同名的文件到文件列表,如图 62所示。

    技术分享

    62 SylixOS Kernel Module工程部署

  16. 加载内核模块

    在SylixOS shell上,运行"modulereg"命令加载内核模块,然后使用"modules"命令查看当前已经加载的内核模块,并可以获得模块句柄("HANDLE"部分),根据获取到的模块句柄,使用"moduleunreg"命令可卸载内核模块如图 63所示。

    技术分享

    63加载内核模块

    加载命令:modulereg /lib/modules/module.ko(module为创建时的工程名)

    查看命令:modules

    卸载命令:moduleunreg 30ca7668(30ca7668为模块句柄)

    内核模块代码如程序清单 11所示:在加载成功后显示hello_module init!在卸载退出后显示hello_module exit!

    程序清单 11


    #define  __SYLIXOS_KERNEL
    #include <SylixOS.h>
    #include <module.h>
    
    /*
     *  SylixOS call module_init() and module_exit() automatically.
     */
    int module_init (void)
    {
        printk("hello_module init!\n");
    
        return 0;
    }
    
    void module_exit (void)
    {
        printk("hello_module exit!\n");
    }
    
    /*
     *  module export symbols
     */
    LW_SYMBOL_EXPORT void hello_module_func (void)
    {
        printk("hello_module_func() run!\n");
    }



以上是关于SylixOS 驱动程序加载的主要内容,如果未能解决你的问题,请参考以下文章

SylixOS注册USB驱动模块

SylixOS 在 t_main 中使用硬浮点方法

SylixOS 启动浅析

SylixOS AMP下跨网段通信

SylixOS 用户进程加载浅析

SylixOS下Shell命令行执行模块内函数