您的位置:首页 > 其它

SylixOS 驱动调试软件使用说明

2018-01-19 14:28 267 查看
1.适用范围
本文档适用于使用SylixOS进行驱动模块开发的客户人员和技术工程师。
2.工作准备
BSP驱动开发软件;
CAN驱动模块代码;
CAN应用程序测试代码。
3.原理概述
翼辉BSP驱动开发软件是一种用于调试驱动程序的软件库,它通过替换系统IO接口,利用软件库内的中间线程做中转,将内核态的驱动程序构建为用户态,使驱动程序的调试如普通应用程序一样简单。
4.使用说明
下面以AM4378板卡的CAN设备驱动为例,说明BSP驱动开发软件的使用过程。使用步骤如下:4.1构建用户态驱动工程
1.在RealEvo-IDE下创建APP工程(can_debug),创建过程请参考《RealEvo-IDE使用手册》第2.4章节——创建SylixOS APP工程。
2.创建成功后,将CAN设备驱动代码拷贝至APP工程内,并将驱动模块的moudle_init函数替换为应用程序的main函数,其它代码不变。替换结果如程序清单4. 1所。 程序清单4. 1 APP工程替换结果
int main (int argc, char **argv)
{
printf("Hello SylixOS!\n");

/*
* 打开 CAN0 还是 CAN1 的总线驱动,是在 bspboard.h 中配置
*/
CAN_CHAN *pcanchan = LW_NULL;
pcanchan = __canChanCreate(0);
/* 对应 CAN0 设备 */
canDevCreate("/dev/can0", pcanchan, 128, 128);

return (0);
}
4.2替换系统注册接口
1.将CAN驱动代码中的系统注册接口替换为驱动调试库内相应的接口,CAN驱动需要向系统注册设备和注册CAN中断服务函数,因此替换结果如图4.1所示。


图4.1 替换CAN系统注册接口
替换规则是将需要替换函数的前面加上"debug"字符串,其他驱动代码也是相同规则。

2 .然后在APP程序内添加对应的函数声明,并进行编译,CAN驱动需要的函数声明如程序清单4. 2所示。
程序清单4. 2 函数声明
extern INT32 debugcanDevCreate(PCHAR pcName,
CAN_CHAN *pcanchan,
UINT uiRdFrameSize,
UINT uiWrtFrameSize);
extern ULONG debugAPI_InterVectorConnect (ULONG ulVector,
POVID pvArg,
CPCHAR pcName);
4.3部署调试库和用户态驱动工程 将已有的调试库文件(libIoDevDebug.so)和编译好的APP程序下载到目标板卡上,下载步骤为:

1
.使用RealEvo-IDE的一键部署功能实现库文件下载,右键驱动调试库(IoDevDebug)工程,选择菜单"Properties"打开工程属性页,选择"SylixoS
Project→Device Setting"选项卡,可查看和更改部署配置。如图4.2所示。



图4.2 工程部署设置

1. 在"Device Name"栏里设置与目标板卡一致的IP地址。

2. 可以在"Upload Setting"栏目里设置库文件的本地路径和将要下载到目标板卡的远端路径,库文件需要下载至目标板的"/lib/"目录内,选择默认配置即可。

3. 依次点击"Apply"和"OK"按钮设置成功。

4. 设置完成后,右键库文件工程,选择菜单" SylixOS→Upload"部署。部署成功后,会在目标板的"/lib/"目录下看到libIoDevDebug.so文件

5. 部署APP程序与部署库文件类似,只需将右击库文件工程替换成右击APP工程即可。部署成功后,会在目标板的"/apps/"目录下看到can_dbeug目录。
4.4 APP工程添加动态链接库

APP工程需要添加调试库的路径,调试时才能够找到调试库中提供的接口,添加步骤如下:

1. 右击APP工程(can_debug),选择菜单" Properties",在弹出窗口上点击" SylixOS Project"下的"
Linker Setting",在工作空间中选择要添加的库文件(libIoDevDebug.so),如图4.3所示。



图4.3 添加动态库设置

1.添加完成后,在" Library Path"选项卡下可以看到已经加入了库文件路径,需要注意的是不能添加"strip/"目录下的libIoDevDebug.so文件,因为"strip/"目录下的文件不带调试信息。
4.5 调试选项配置

调试选项配置步骤如下:

1. 右击APP工程(can_debug),选择菜单"Debug As→Debug Configurations",在弹出的窗口中进行以如图4.4所示操作来新建一个调试项目。



图4.4 新建调试项目

2. 点击Debugger选项卡,设置添加动态库路径,如图4.5所示。



图4.5 添加动态库路径
动态库路径是在4.4小节中配置的,此处无法修改,选择默认即可。

3.配置完成后点击Debug按钮即可进入调试界面(确保AM4378板卡正在运行SylixOS)。
4.6 驱动程序调试
4.6.1 调试main函数
点击"Debug"按钮后的调试界面如下所示。图4.6可以看出程序已经进入到CAN设备初始化函数(main函数)、并且可以使用单步执行、进入执行、全速运行等功能。



图4.6 调试main函数
4.6.2调试系统IO接口和中断服务程序

1. 在__canIoCtl函数内设置断点,该函数在打开CAN设备时会被调用。

2. 在__canIsr函数内设置断点,该函数是CAN设备中断服务函数。
设置断点位置如图4.7所示。





图4.7 设置断点位置

3. 点击RealEvo-IDE菜单栏下的

(Resume)按钮使程序全速运行,运行结束后CAN设备注册成功,可以在目标板的shell命令行内使用"devs"命令查看到CAN0设备节点。

4. 执行CAN测试程序,该测试程序会打开CAN0设备,并发送数据产生中断,在执行的过程中,可以发现程序停在了刚刚设置断点的位置。如图4.8所示。



图4.8 打开函数断点位置

5. 继续运行,可以看到程序会停在中断服务程序内,如图4.9所示。



图4.9 中断服务程序断点位置
5. 总结
通过上面的测试可以说明,BSP驱动开发软件可以实现对驱动模块的调试,并可以调试中断服务程序,用户态的驱动调试结果最终可以回归到内核态相应的调用位置,以维持系统驱动的功能完整性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  SylixOS 说明