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设备并调用动态库中的算法,代码如程序清单 2‑1所示;calc_lib是一个动态库,代码如程序清单 2‑2所示;程序pwm_driver是一个TTY设备接口函数。
程序清单 2‑1 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); }
|
程序清单 2‑2 calc_lib代码
#include <stdio.h> int lib_func (int ivalue) { int iresult = 0; iresult += 100; return iresult; } |
2.2 中间层calc_lib(动态库)调用
右击应用程序,选择Properties,将动态库添加至应用程序中并进行关联,如图 2‑1所示。
图 2‑1 添加动态库
关联后将user_app(应用层程序)、calc_lib(中间层动态库)、pwm_driver(底层驱动模块)部署到模拟器上。
2.3 加载驱动模块(pwm_driver)
在“ /lib/modules ”下查看驱动模块是否上传成功,如图 2‑2所示。
图 2‑2 驱动模块上传成功
用“modulereg”指令加载驱动模块,如图 2‑3所示。
图 2‑3 加载驱动模块
运行应用程序,结果如图 2‑4所示,调用了动态库中的算法。
图 2‑4 应用程序运行结果
3. 总结
在SylixOS中可以使用多种调试方式进行相关调试,根据实际情况对程序进行调试,本节主要通过一个完整的工程文件来描述从从应用层到底层的基本使用流程。
4. 参考资料
《SylixOS应用程序开发手册》
《RealEvo-IDE使用手册》