KIDE 使用培训

62
©2007 ZTE corporation KIDE KIDE 使使使使 使使使使 使使使使使使 使使

description

KIDE 使用培训. 成研所操作系统团队. 安装 KIDE 搭建 Linux 虚拟机环境 开发 LSP 工程 开发 Downloadable 工程 开发 Bootable 工程 调试工程. 目录. 许可协议. 欢迎界面. 安装前卸载. 选择安装组件. 重启计算机. 选择安装路径. d:\Embsys1.2. 安装 KIDE. 安装 KIDE. Step1 双击安装图标进入 KIDE 安装程序 Step2 欢迎界面:可以查看安装版本 Step3 许可协议:阅读后 “ 同意 ” Step4 先卸载,后安装 , 尽量这样。 - PowerPoint PPT Presentation

Transcript of KIDE 使用培训

Page 1: KIDE 使用培训

©2007 ZTE corporation

KIDEKIDE 使用培训使用培训

成研所操作系统团队

Page 2: KIDE 使用培训

目录

• 安装 KIDE• 搭建 Linux 虚拟机环境• 开发 LSP 工程• 开发 Downloadable 工程• 开发 Bootable 工程• 调试工程

Page 3: KIDE 使用培训

安装 KIDE欢迎界面许可协议安装前卸载选择安装组件重启计算机选择安装路径

d:\Embsys1.2

Page 4: KIDE 使用培训

安装 KIDE

Step1 双击安装图标进入 KIDE 安装程序 Step2 欢迎界面:可以查看安装版本 Step3 许可协议:阅读后“同意” Step4 先卸载,后安装 , 尽量这样。 Step5 选择安装组件,可选组件是 4 种 CPU

体 系和标准 Linux 内核,其他务必安装。 Step6 选择安装路径,开始安装 Step7 重启计算机 ( 一般不需要 )

Page 5: KIDE 使用培训

卸载 KIDE开始卸载选择卸载组件选择卸载位置重启计算机

Page 6: KIDE 使用培训

卸载 KIDE

Step1 点击图标进入卸载程序。 Step2 卸载向导,点“下一步” Step3 选择卸载组件,选择不要的 CPU 体系

或内核版本。注意取消“卸载全部文件”。 Step4 选择卸载位置,一般按默认。 Step5 开始卸载 Step6 重启计算机 ( 一般不需要 )

Page 7: KIDE 使用培训

进入 KIDE

点桌面图标 选择工作空间, KIDE 默认在此空间下放置所

有用户工程。

Page 8: KIDE 使用培训

KIDE 目录结构 HOST 目录

ide: 集成开发环境目录 Target

bsp:LSP 模板目录 include : KLinux 所需的头文件kernel-version :内核源码 tools :一些 KIDE 需要的工具软件workspace :用户工程目录

DOC 目录

Page 9: KIDE 使用培训

KIDE 目录结构

Embsys1.2

host

target

ide cygwindebuggereclipsetools chain

workspace

tools phrasefakesymanaelf

kernel version

Linux2.4.20

KLinux2.0

KLibcKTH

Linux-2.4.20

TDAgentinclude

doc

bsp KLinux2.0

board1/2/3…

主程序调试器

用户文档

存放 LSP 模板,可添加

成研所维护

目标端文件

符号表生成工具

makefile 工具

交叉编译工具链

主机端文件

Page 10: KIDE 使用培训

C/C++ 透视图

Page 11: KIDE 使用培训

C/C++ 透视图 工程视图

管理工程、文件、内核配置 编辑窗口

编辑时代码录入 大纲视图

函数、声明间快速跳转 目标视图

目标机连接 模块下载

杂项视图 问题查看(所有 KIDE 错误) 控制台信息(编译命令) 工程属性

Page 12: KIDE 使用培训

调试透视图

Page 13: KIDE 使用培训

调试透视图 调试视图

启动、关闭调试进程 调试状态切换 Attach 、 Detach 堆栈查看 恢复进程运行

查看视图 断点查看 变量查看修改 表达式查看 寄存器查看修改 内存查看 反汇编查看

Page 14: KIDE 使用培训

调试透视图 编辑窗口

设置断点 修改代码

大纲视图 (同 C/C++ 透视图)

目标视图 (同 C/C++ 透视图)

杂项视图 控制台信息(调试代理)

Page 15: KIDE 使用培训

目录

• 安装 KIDE• 搭建 Linux 虚拟机环境• 开发 LSP 工程• 开发 Downloadable 工程• 开发 Bootable 工程• 调试工程

Page 16: KIDE 使用培训

需要的资源 VMware5.5.0

Linux 虚拟机 :DHCP 服务

tftpd32TFTP 服务

必要的文件bzImage initrd.imgpxelinux.0default

Page 17: KIDE 使用培训

搭建虚拟机 安装 VMware5.5.0

按默认安装 新建虚拟机

按照后面图片 启动 DHCP 服务

按照后面图片 tftp 客户端配置

添加 tftp 服务器地址 添加远程网络引导程序名

Page 18: KIDE 使用培训

搭建虚拟机

点此处新建虚拟机按图上选择

记住虚拟机文件的路径选 host-only 模式

双击 Ethernet

配置网卡 ( 需要按下页先配置 DHCP )

选择 VMnet1 为主机

Page 19: KIDE 使用培训

启动 DHCP 服务

选择此处配置 DHCP关闭自动桥接

点此处选择 VMnet1 和 VMnet8 作主机,之后点应用,以后每 1 个改动都点应用

为 VMnet1 配置子网掩码保证 DHCP 里只有 VMnet1 ,移除其他虚拟网络

确保此处为 started

设置 VMnet8 为 NAT 设备

Page 20: KIDE 使用培训

tftp 客户端配置

修改此路径的配置文件在加框位置添加这两行代码

Page 21: KIDE 使用培训

启动 tftp 服务 获取 tftpd32 和配置文件 将文件放入目录

主程序

映像文件远程引导程序

tftpd32 配置文件

Page 22: KIDE 使用培训

启动 tftp 服务

点此处设置

DHCP 已由虚拟机启动,关闭此项

选择前面配置的 IP

选择我们新建的路径

配置 tftpd32

Page 23: KIDE 使用培训

测试环境 可以 ping 通目标板 可以进入 KShell 的命令行提示符

Page 24: KIDE 使用培训

常见问题 刚启动虚拟机时 DHCP 那过不了

查看 VMware 网络配置里, DHCP 是否被 stopped

提示找不到映像文件 查看 \tftpboot 目录里,是否有 bzImage 查看 \tftpboot\pxelinux.cfg 目录下, default 文件里

是否指定了 bzImage

提示找不到根文件系统 查看 \tftpboot 目录里,是否有 initrd.img 。有可能

为其他名字,请修改与 default 文件里一致。

Page 25: KIDE 使用培训

目录

• 安装 KIDE• 搭建 Linux 虚拟机环境• 开发 LSP 工程• 开发 Downloadable 工程• 开发 Bootable 工程• 调试工程

Page 26: KIDE 使用培训

LSP 工程概念 LSP = Linux Support Package 针对 Linux 嵌入式开发, KIDE增加了一种 L

SP 工程类型,专为开发 LSP使用 稳定性 二次开发 方便应用开发。

Page 27: KIDE 使用培训

LSP 工程概念 新建的 LSP

选定 CPU 体系的内核代码 驱动代码 各级 Makefile

构建后的 LSP 内核映像LSP 库 符号表文件

Page 28: KIDE 使用培训

新建 LSP 工程

选 LSP 项目

名字中不能有空格、 () 号、标点

按默认

LSP 模板,本图是虚拟机专用

编译工具链按默认

Page 29: KIDE 使用培训

配置内核

Enter键选择

空格键选择

内核调试必须修改此项内容

除这 4 项目外,都和标准 Linux 一致。根据硬件特征配置

按图上设置

此项选择网口 /串口连接方式

退出时记得保存设置

LSP 工程默认关闭内核调试

Page 30: KIDE 使用培训

配置内核

此文件保存前面的配置信息

某些子选项需要 Enable父选项才出现

Page 31: KIDE 使用培训

编译构建 编译:对单个源文件,检查语法正确性 构建:编译链接所有文件, makefile 由 KIDE

自动生成。 重构:已经构建好的工程,构建选项有改变,

或者内核重新配置了,需要重构。 清理:将工程还原到构建前的状态,删除构建

生成的一系列文件( .d 、 .o 、 .out 、 .img)

Page 32: KIDE 使用培训

编译构建

内核映像

符号表文件

构建生成的目录

构建工程

Page 33: KIDE 使用培训

建立调试 建立连接

Step1 将生成的 bzImage拷贝到 \tftpboot 目录 Step2 启动 tftpd32 和虚拟机 Step3 进入 KShell ,输入 ifconfig 查看 IP,如

192.168.1.56 Step4 在目标视图新建调试目标

Page 34: KIDE 使用培训

建立调试

本次培训用例都选这种方式连接

网线连接方式,本例采用它

只能用串行线的情况

新建调试目标

Page 35: KIDE 使用培训

建立调试 KIDE 的调试类型

内核态调试 ---KLinux 工程、内核态工程• 内核任务级调试:只对某个进程运行控制• 内核系统级调试:对整个系统运行控制

用户态调试 --- 用户态工程 建立调试配置的目的

选择调试类型 选择符号表文件 选择目标板 ( 可能有多个 )

Page 36: KIDE 使用培训

主菜单 -> 运行 -> 调试

建立调试建立调试配置

本例用任务级调试,双击新建,取名为 LSP2

从新建的目标机中选择一个单击此处选择对应工程的符号表

设置好后点“调试”

建立调试配置

Page 37: KIDE 使用培训

建立调试 启动调试

第 1次建立调试配置按前面步骤启动,以后点此图标启动调试

下拉菜单中,这些都是建好的调试配置,选择一个我们需要的

由 C/C++ 透视图启动时,会自动提示切换到调试透视图

启动成功!进程列表出现

Page 38: KIDE 使用培训

目录

• 安装 KIDE• 搭建 Linux 虚拟机环境• 开发 LSP 工程• 开发 Downloadable 工程• 开发 Bootable 工程• 调试工程

Page 39: KIDE 使用培训

Downloadable 工程概念 Downloadable 工程

仅有应用程序部分 通常在开发阶段使用 生成 .out 可执行文件 体积小、编译速度快,调试方便。 模块方式动态加载

Page 40: KIDE 使用培训

Downloadable 工程开发流程

新建工程 新建文件 编码 构建工程 建立目标连接

启动虚拟机

下载模块

建立调试配置

调试

卸载模块修改代码重构

重复直到调试 OK

Page 41: KIDE 使用培训

新建 Downloadable 工程

与 LSP 工程唯一不同之处在于这里不用选 LSP 模板

Page 42: KIDE 使用培训

建立调试 下载模块

条件 1 :调试代理处于闲置状态 条件 2 :目标连接采用的 KLinux 模式

卸载模块 条件:被调试的模块已被终止

启动调试根据自己所写代码,选择需要的函数,将其作为一个任务创建于线程表中函数名

参数赋值

Page 43: KIDE 使用培训

建立调试 下载模块

.out 自动选好(推荐 )

手动选择 .out

一种方式是对 Downloadable 工程名点右键

一种方式是在目标视图下载

Downlable 工程生成的 .out 文件

先前建好的目标板

Page 44: KIDE 使用培训

建立调试除了选择内核符号表模块也要选符号表

新建调试配置

Page 45: KIDE 使用培训

目录

• 安装 KIDE• 搭建 Linux 虚拟机环境• 开发 LSP 工程• 开发 Downloadable 工程• 开发 Bootable 工程• 调试工程

Page 46: KIDE 使用培训

Bootable 工程概念 主要运用于上层应用开发 适合开发最终的 Release 版本 与 LSP 工程或 LSP lib 关联 关联后大大加快了工程的编译、构建速度。 构建生成的映像文件包含了 LSP 和应用两部分。

Page 47: KIDE 使用培训

新建 Bootable 工程

两种方式是等效的,但 lib方式新建工程时较快,推荐使用!

Page 48: KIDE 使用培训

工程属性 开发版的构建选项 (KIDE 默认 )

调试选项: – g 开启 代码优化:无

Release 版的构建选项 调试选项: -g 关闭 代码优化: -O2

Page 49: KIDE 使用培训

工程右键菜单 -> 属性

工程属性

开发版本Release 版本开发版本Release 版本

Page 50: KIDE 使用培训

建立调试 连接虚拟机

同 LSP 工程,只是生成的 bzImage 不仅包含了 LSP 部分,还包含了应用部分。

新建调试配置 同 Downloadable 工程

启动调试 同 LSP 工程

Page 51: KIDE 使用培训

目录

• 安装 KIDE• 搭建 Linux 虚拟机环境• 开发 LSP 工程• 开发 Downloadable 工程• 开发 Bootable 工程• 调试工程

Page 52: KIDE 使用培训

进入调试 Attach

调试视图,当前是在内核任务级调试状态,我们现在对 usrAppint 这个线程进行调试

首先对其点右键 ->Attach

Attach 成功! usrAppint暂停,自动列表显示它的堆栈信息。此时可以双击我们需要的某个堆栈,打开源文件,对它设置断点。

Page 53: KIDE 使用培训

进入调试 双态切换内核调试的两种方式前面已经介绍过,实际调试过程中,我们可能都会用到。 KIDE 为此提供了双态切换功能,前面 LSP 调试配置我们是建立的任务级调试,其实也可以建系统级调试,区别只在于进入调试时的初始状态。

任务级切到系统级:对 System Thread 点右键 -> 系统级调试

系统级切任务级 : 对 Task Thread 点右键 ->任务级调试

切换回任务级调试

Page 54: KIDE 使用培训

查找源

正常情况下,双击堆栈即可打开源文件

某些源会找不到,例如内核中的源

直接点这里查找

记得勾上

点这里添加路径

找到路径,最好是最后 1级目录

如果不是最高优先级,请调整这里

Succeed!!!

Page 55: KIDE 使用培训

设置断点 断点类型

局部断点:只对当前任务起作用 全局断点:对整个系统起作用(主要针对系统级调

试)临时断点:断点只在第 1次生效 函数断点:将整个函数作为一个断点,停在其内部

有效行第 1 行处。 数据断点:对全局变量设置,在读 /写全局变量时停住。

Page 56: KIDE 使用培训

设置断点设置局部断点

直接在行数左边双击设置;再双击删除

设置全局断点

光标停在代码行 -> 运行 -> 设置全局断点

设置临时断点

设置方法与全局断点类似

设置数据断点

只能在此主进程处设置

运行 -> 设置数据断点

全局变量名

写 / 读时断下来

设置函数断点

只能在大纲视图中,对函数名设置

Page 57: KIDE 使用培训

恢复运行 对于处于 Attached并暂停的任务,设置断点

之后需要恢复运行,以便断点生效。 恢复的 3 种方式:

Detach :使线程脱离调试状态。Detach and Rusume :脱离调试状态并运行继续:直接恢复运行

Page 58: KIDE 使用培训

单步调试

任务停在断点处时,可以进行单步运行。查看各种信息 ( 变量、内存、寄存器、反汇编… )1 单步跳入 (Step into)2 单步跳过 (Step over)3 单步返回 (Step out)

1 2 3

Page 59: KIDE 使用培训

任务处于 Attached+暂停状态

单步调试 运行至行

光标停在目标行处

运行 -> 运行至行

运行一段时间后停在此行

Page 60: KIDE 使用培训

查看状态 查看变量查看寄存器查看内存查看断点反汇编查看

Page 61: KIDE 使用培训

结束调试 Step1 关闭所有断点 --- 断点列表 Step2 恢复所有任务到运行状态 Step3 终止调试进程 Step4 卸载模块 (Downloadable 工程 )

Page 62: KIDE 使用培训

©2007 ZTE corporation