ARM RVDS开发环境配置与使用指南

需积分: 9 1 下载量 40 浏览量 更新于2024-09-11 收藏 1.09MB PDF 举报
"SoC module1主要涉及了系统级芯片(SoC)设计方法的实验步骤,特别是关于ARM REALVIEW DEVELOPMENT SUITE软件的安装、配置和使用。实验内容包括熟悉软件环境,理解ARM编译器、汇编器、链接器等工具链的工作原理,以及如何在RVDS中使用调试器。实验过程中,需要确保计算机连接到局域网,并且服务器已经启动,因为编译工具链和调试器需要验证服务器上的License。此外,还提供了在310机房局域网内安装RVDS的指南,包括使用License Wizard配置许可证,指定服务器地址和端口。实验操作步骤包括导入示例项目并设置调试选项。" 在SoC设计中,ARM REALVIEW DEVELOPMENT SUITE (RVDS) 是一个重要的集成开发环境,用于针对ARM架构的系统进行软件开发。这个工具集包含了多种关键组件,如编译器、汇编器和链接器,它们是软件开发过程中的核心工具。 1. **ARM编译器**:编译器是将高级语言源代码转换为机器可执行代码的关键工具。对于ARM架构,特定的ARM编译器能够生成优化的二进制代码,以充分利用ARM处理器的特性。 2. **汇编器**:汇编器将汇编语言程序转化为机器语言,这是程序员使用接近硬件级别的语言编写代码的方式。 3. **链接器**:链接器将编译器生成的多个对象文件合并成一个可执行文件,解决符号引用,如函数调用和全局变量,确保所有依赖关系得到满足。 实验中的调试器是开发过程中的另一个重要组成部分,它允许开发者在代码运行时检查和修改程序状态,如查看和修改变量值,设置断点,单步执行等,这对于理解和修复错误至关重要。 实验操作步骤如下: 1. **安装和配置RVDS**:首先,需要安装RVDS并配置License。由于使用的可能是服务器验证的License,所以必须确保计算机接入局域网并且服务器已启动。配置时,通过License Wizard指定服务器地址(192.168.20.200)和端口(8224)。 2. **导入示例项目**:在RVDS的ARM Workbench IDE中,通过File->Import->Existing Projects into Workspace导入示例项目sorts。 3. **设置调试选项**:在进行调试前,需要在File->Properties中设置调试相关选项,以便在运行时监控和控制程序行为。 这个实验旨在帮助学生掌握SoC设计的基本工具和流程,为后续更复杂的系统级集成和验证打下基础。通过实际操作,学生不仅能理解工具链的工作原理,还能学习如何有效地调试和优化代码,这对于在实际的SoC设计项目中解决问题至关重要。

优化代码 def module_split(self, save_on=True): """ split module data :param save_on: :return: """ for ms in range(self.mod_num): m_sn = self.module_list[ms] module_path = os.path.join(self.result_path_down, m_sn) cols_obj = ChuNengPackMustCols(ms, self.mod_cell_num, self.mod_cell_num) # 传入当前的module序号(如0,1,2,3,4),电芯电压个数,温度NTC个数。 aim_cols = [i for i in cols_obj.total_cols if i in self.df.columns] print(m_sn, aim_cols) self.modules[m_sn] = rename_cols_normal(self.df.loc[:, aim_cols], ms, self.mod_cell_num) print("after change cols name:", ms, m_sn, self.modules[m_sn].columns.tolist()) self.modules[m_sn].dropna(axis=0, how='any', subset=['soc'], inplace=True) volt_col = [f'volt{i}' for i in range(self.mod_cell_num)] temp_col = [f'temp{i}' for i in range(self.mod_cell_num)] self.modules[m_sn].dropna(axis=0, how='any', subset=volt_col, inplace=True) self.modules[m_sn] = stat(self.modules[m_sn], volt_col, temp_col) self.modules[m_sn].reset_index(drop=True, inplace=True) print(self.modules[m_sn]['discharge_ah'].iloc[-1]) self.module_cap[m_sn] = [self.modules[m_sn]['discharge_ah'].iloc[-1], self.modules[m_sn]['charge_ah'].iloc[-1], self.modules[m_sn]['soh'].iloc[-1]] self.module_peaks[m_sn] = list(quick_report(self.modules[m_sn], module_path, f'quick_report_{m_sn[:8]}')) # check soc status mod_soc = self.modules[m_sn]['soc'] self.module_soc_sig[m_sn] = [np.nanmedian(mod_soc), np.max(mod_soc), np.min(mod_soc)] if save_on: single_variables_plot(mod_soc, module_path, f'{m_sn[:8]}_soc_distribution_box.png', 'box', 'SOC') single_variables_plot(mod_soc, module_path, f'{m_sn[:8]}_soc_distribution_violin.png', 'violin', 'SOC')

2023-05-25 上传