锐华嵌入式操作系统
CH 1—ReDE
一、 ReDE介绍
ReDe是基于Eclipse开发的集成嵌入式系统开发平台。构建和项目管理依赖于GCC交叉编译工具链和make工具(但会操作简单点,自动生成Makefile)
二、ReDe使用
1. 建立工程
Reworks的项目是建立在一个拥有系统镜像的自引导工程之上的。
一般的,在项目文件中建立一个自引导工程和多个可下载工程和库工程。通过自引导工程引用别的工程的内容,将所有的文件写入elf的系统镜像之中。
也可以在运行好的Reworks系统上通过库工程L和可下载工程D动态的加卸载.o和.a文件。
-
自引导工程B: 生成可以直接在目标机上运行的目标代码。编译生成.bin和.elf文件。
-
库工程L: 生成可以被其他库引用的库文件。编译生成.a文件。
-
可下载工程D: 生成可以下载到目标机运行的文件。编译生成.o和.out文件。
-
BSP工程: 该工程提供了BSP工程建立、代码模板自动导入、BSP库构建与ReWorks自引导工程一体化调试、BSP资源组建配置与发布等功能。
-
自定义工程: 允许用户自定义包括makefile的工程。
-
资源组件工程: 对工程的一系列属性进行了配置。可在自引导工程、库工程、可下载工程的资源配置模块中应用。(资源配置模块就是资源组件工程?是的)
-
目标板资源工程:定义在目标系统上运行所需的最低资源集合
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
