SylixOS调试方法详解——综合案例分析

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SylixOS调试方法详解——综合案例分析相关的知识,希望对你有一定的参考价值。

1. SylixOS调试方法介绍

SylixOS实现了一个功能强大的调试stub(桩),可在设备或模拟器上在线调试应用程序,RealEvo-IDE也提供配套的调试插件。目前RealEvo-IDE既支持自动推送调试、也支持传统的手动启动gdbserver的调试方式。在官方公布的使用手册中没有详细写出在日常开发中非常实用的几种调试方式,本文主要介绍一个由底层到应用层的综合调试方法。

2. SylixOS综合案例调试步骤详解

2.1      综合案例演示demo

综合案例demo包括三个部分:user_app(应用层)、calc_lib(中间层动态库)、pwm_driver(底层驱动模块)。本篇文档通过介绍应用层对TTY接口(pwm_driver )和calc_lib的调用来全面的展示系统的使用方式。user_app主要是打开PWM设备并调用动态库中的算法,代码如程序清单 21所示;calc_lib是一个动态库,代码如程序清单 22所示;程序pwm_driver是一个TTY设备接口函数。

程序清单  21  user_app代码

#include <stdio.h>

 

int main (int argc, char **argv)

{

   int  icalc_result;

     /*

      *  打开PWM设备

      */

   int  pwm_fd = open("/dev/pwm/pwm", O_RDWR);

 

     /*

      *  打开设置步进速度

      */

   ioctl(pwm_fd,1,2);

 

   while  (1) {

      /*

       *  获取算法结果

       */

      icalc_result  = lib_func (10);

      malloc(100);

 

      /*

       *  控制PWM输出

       */

      write(pwm_fd,  &icalc_result, sizeof(icalc_result));

 

      sleep(1);

   }

 

     return  (0);

}

 

程序清单  22 calc_lib代码

#include <stdio.h>

int lib_func (int ivalue)

{

   int  iresult = 0;

   iresult  += 100;

     return iresult;

}

 

2.2      中间层calc_lib(动态库)调用

右击应用程序,选择Properties,将动态库添加至应用程序中并进行关联,如图 21所示。

技术分享                            

图 21  添加动态库

关联后将user_app(应用层程序)、calc_lib(中间层动态库)、pwm_driver(底层驱动模块)部署到模拟器上。

2.3      加载驱动模块(pwm_driver)

在“ /lib/modules ”下查看驱动模块是否上传成功,如图 22所示。

技术分享

图 22  驱动模块上传成功

用“modulereg”指令加载驱动模块,如图 23所示。

技术分享

图 23  加载驱动模块

运行应用程序,结果如图 24所示,调用了动态库中的算法。

技术分享

图 24  应用程序运行结果

3. 总结

在SylixOS中可以使用多种调试方式进行相关调试,根据实际情况对程序进行调试,本节主要通过一个完整的工程文件来描述从从应用层到底层的基本使用流程。

4. 参考资料

《SylixOS应用程序开发手册》

《RealEvo-IDE使用手册》

 


以上是关于SylixOS调试方法详解——综合案例分析的主要内容,如果未能解决你的问题,请参考以下文章

SylixOS 调试方法详解——静态代码分析

SylixOS串口调试详解

Java SE之基础篇——IDEA中DeBug调试以及综合案例练习

Java SE之基础篇——IDEA中DeBug调试以及综合案例练习

SylixOS的RealEvo-IDE调试方法

SylixOS 中断系统分析