锐华嵌入式操作系统

CH 1—ReDE

一、 ReDE介绍

ReDe是基于Eclipse开发的集成嵌入式系统开发平台。构建和项目管理依赖于GCC交叉编译工具链和make工具(但会操作简单点,自动生成Makefile)

二、ReDe使用

1. 建立工程

Reworks的项目是建立在一个拥有系统镜像的自引导工程之上的。

一般的,在项目文件中建立一个自引导工程和多个可下载工程和库工程。通过自引导工程引用别的工程的内容,将所有的文件写入elf的系统镜像之中。

也可以在运行好的Reworks系统上通过库工程L和可下载工程D动态的加卸载.o和.a文件。

  1. 自引导工程B: 生成可以直接在目标机上运行的目标代码。编译生成.bin和.elf文件。

  2. 库工程L: 生成可以被其他库引用的库文件。编译生成.a文件。

  3. 可下载工程D: 生成可以下载到目标机运行的文件。编译生成.o和.out文件。

  4. BSP工程: 该工程提供了BSP工程建立、代码模板自动导入、BSP库构建与ReWorks自引导工程一体化调试、BSP资源组建配置与发布等功能。

  5. 自定义工程: 允许用户自定义包括makefile的工程。

  6. 资源组件工程: 对工程的一系列属性进行了配置。可在自引导工程、库工程、可下载工程的资源配置模块中应用。(资源配置模块就是资源组件工程?是的)

  7. 目标板资源工程:定义在目标系统上运行所需的最低资源集合

2. 配置系统资源

出于嵌入式系统的特性考虑(功耗、资源、性能、价格等…),需要对完整的系统根据需求进行定制裁剪。根据具体的调试和应用需要,各异的设置开发板上所需的系统资源。

ReDe中可以直接在.syscfg中勾选保存所需的功能。具体功能需要那些系统资源请看各自功能的文档。

常用的资源配置:

板级支持包–网卡驱动、控制台配置

开发和运行支持–运行时工具–任务调试支持

3. 构建工程

对工程中的文件进行编译,自引导工程、库工程、可下载工程具有默认的构建配置(自动生成的makefile) 。可以在工程属性中管理自动生成的makefile和make指令。

连接可下载/库工程到自引导工程(系统调试):

右键–属性–C++构建–设置–GCC C++ linker–杂项–附加对象文件–选择

为项目添加依赖(先构建依赖):

右键–属性–项目引用–选择

为make all 添加选项:

右键–属性–C/C++构建–构建器设置–去除勾选使用默认构建命令–添加选项。

例如:make -j10 all开启多线程编译。

4. 连接目标板

ReDe和开发板的Uboot通过USB串口和RJ45以太网接口连接。串口用于和开发板直接沟通配置Uboot。以太网接口用于进行FTP通信。

此时还没有拷贝镜像!更没有启动系统!和系统资源配置没关系!只是在和U-Boot交互

FTP方式下载系统镜像:

注意:网卡需要设置的IP地址。这次用的192.168.1.110,取决于板上写入的服务器地址(uboot tftp配置的地址,可以更改)

setenv ipaddr 192.168.1.1
setenv serverip 192.168.1.31
saveenv

更改前本机的ip地址,软件平台室服务器。

USB串口设置:左上角选择终端打开设备管理器选择对应的COM号,设置端口速度为115200。(这是USB连接的线用来和uboot的引导程序命令行进行交互)运行过程中不断敲击回车键(保证能中断他的自动引导,其实一下好像就行)

TFTP服务器设置

右键存在需下载文件的项目目录–设置TFTP路径

打开窗口–显示视图–TFTP服务–启动TFTP 服务(依然是上次设置的路径)

5. Uboot启动系统镜像

在串口界面输入命令: tftpboot 0x80100000 reworks 使用TFTP服务从服务器获得reworks.elf放到地址0x80100000

go 0x80100000 从地址运行系统,进行uboot,启动reworks系统镜像

地址是根据不同开发板而不同的。

6. 调试

6.1 系统调试(本地调试):

.o文件跟随系统镜像写入开发板。参见在自引导工程中引用可下载工程的.o文件部分。直接烧入镜像进行测试。

在自引导工程中引用可下载工程的.o文件:

右键属性–c++构建–设置–c++linker–杂项–附加对象文件–输入命令“${workspace_loc:/projectName/gnuXXX/boardName/projectName.out}”

6.2 任务调试(远程调试):

.o文件在系统启动以后在写入并加载。首先需要通过TFTP等方式拷贝系统镜像,使用Uboot启动系统。使用的是GNU GDB工具进行测试。

0、系统资源配置:

运行时工具–任务调试支持、协同总线组件、远程接卸载 和 板级支持包–网卡驱动

1、运行系统镜像:

勾选任务调试支持后系统会暂停于usrInit处。

2、连接目标机:

左下角目标机系统管理器,第一个图标:添加连接。

目标机名填写系统资源配置中网卡的IP(和TFTP中的IP并不一定相同)

U-boot和Reworks是两个不同的系统。U-boot是引导系统的系统。

有bug,必须更改一次ip地址才可以使用!

3、调试配置:

右键项目–调试–调试配置–自引导应用程序–程序

右键项目–调试–调试配置–自引导应用程序–目标机

4、开始调试:

等同于GNU GDB,略

6.3 远程加卸载:

对非核心的.o文件在系统中动态的加载或者卸载。实质是把.out文件下载到 /clb/dynamicModuleFolder/路径下,然后运行ld unld指令,然后删除可执行文件。等价于TFTP获取文件+加载模块+删除文件。

与直接镜像link然后构建写入镜像不同。直接写入镜像的模块无法卸载,在/clb/dynamicModuleFolder/路径下没有.out文件

TFTP命令

tftp ("ip", "path/remotefile", "get/put",“ascii/netascii/binary/image/octet”, "path/localfile")

符号表命令

ld 加载.out/.o文件

unld 卸载已加载的.out/.o文件

unld_by_module_name 通过模块名称卸载已加载的.out/.o文件

unld_by_module_id 通过模块ID卸载已加载的.out/.o文件

reld 重新加载.out/.o文件

module_info 显示已加载的.out/.o文件

symbol_lkup 查找指定的符号信息

lkup 显示包括指定名称的所有符号信息

0、系统资源配置: 远程加卸载、符号表、网卡

1、目标及启动系统:

2、连接目标机:

3、加卸载: 左上角加载–加载配置–设置目标机、动态加载

4、符号表同步: 何意?

6.4 仿真调试:Qumu

CH 2—系统命令行Shell

一、Shell介绍

1.1 Reworks Shell命令

i

oi

stackuse

cpuuse

1.2 反汇编

在软件运行过程中只要有shell线程工作就可以使用pthread_show_stackframe命令获得任务运行的堆栈,再使用arrch64-objdump-elf -C -x -S可以查看反汇编的.elf源码,方便进行调试。

任务堆栈:

pthread_show_stackframe

objdump反汇编工具: