当前位置: 首页 > news >正文

Greenhills Lib操作-查看Lib信息与将lib中的data段link到指定区域

文章目录

    • 前言
    • Greenhillls中gsize的用法
    • 修改ld文件将lib中的data段指定区域
    • 示例定义与链接
    • 总结

前言

项目开发过程中,遇到客户开发ASW,提供Lib进行集成,但ASW中的标定量没有定义对应的data段,导致无法将标定量指定到特定的内存。本文介绍将Lib中的data段链接到指定区域的一种方法。以及当我们拿到Lib后,如何获取Lib中的有用信息。

Greenhillls中gsize的用法

gsize用来查看文件中的各个段的大小,输入的文件可以是.o文件,.a文件(lib)或可执行文件。

使用方法:

Usage: gsize [-table] [-all] [-nototals] file1 [file2 ...]@commandfile    read in additional options from <commandfile>-help           display this help message-all            show all sections. overrides -text -nobss etc-commons        display common symbols (ELF only)-count_commons  include commons in total size of .bss .sbss-[no]details    suppress/display section detail info-[no]totals     suppress/display section summary info-table          display output in table format-gcompare       display output in format suitable for gcompare-text           only show text sections. same as -nodata -nobss-notext         ignore text sections-nodata         ignore data sections-nobss          ignore bss  sections-zero           display zero-length sections

当我们拿到一个lib后,使用如下方式,可以完整读取到lib中的各个文件中的各个段的大小

gsize -all  libTest.a

打印信息示例如下:
在这里插入图片描述
最后输出的是整个lib中所占的各个段大小

前面会输出Lib中各个文件的各个段大小
在这里插入图片描述
另外,可以使用ax -t命令将lib中的.o解压出来

修改ld文件将lib中的data段指定区域

在GHS编译手册中有介绍,如何将.o或.a文件中的段链接到指定段,如下图所示
在这里插入图片描述
注意:对于.a和.o,不要使用完整路径,只用其名称即可

如果我们需要将lib中的所有文件的data段指定到特定段,可以按下面的定义:
在这里插入图片描述
使用*通配符,即可表示为lib中的所有文件

示例定义与链接

示例中,ASW已有一部分标定量定义到指定的caldata段,其他还有一些文件中的data段未映射到data,将lib中的其他data段也映射到caldata上。

    .caldata :{. = ALIGN(4);*(.caldata)  . = ALIGN(4);libASW.a(*(.data)). = ALIGN(4);} > ram_cal

通过该方式,将lib中的data段重映射到caldata段

在未映射时,lib中的data段会被分配到默认的data段(sram_data),地址不是单独的一块区域

在这里插入图片描述
重映射后,lib中的data数据被映射到caldata段,为指定地址

在这里插入图片描述

总结

使用该方法有一个弊端,就是标定量和观测量(若初始化不为0)无法区分,还是建议将标定量放在单独的文件中,这样维护起来更加方便。

相关文章:

Greenhills Lib操作-查看Lib信息与将lib中的data段link到指定区域

文章目录 前言Greenhillls中gsize的用法修改ld文件将lib中的data段指定区域示例定义与链接总结 前言 项目开发过程中&#xff0c;遇到客户开发ASW&#xff0c;提供Lib进行集成&#xff0c;但ASW中的标定量没有定义对应的data段&#xff0c;导致无法将标定量指定到特定的内存。…...

【十进制整数转换为其他进制数——短除形式的贪心算法】

之前写过一篇用贪心算法计算十进制转换二进制的方法&#xff0c;详见&#xff1a;用贪心算法计算十进制数转二进制数&#xff08;整数部分&#xff09;_短除法求二进制-CSDN博客 经过一段时间的研究&#xff0c;本人又发现两个规律&#xff1a; 1、不仅仅十进制整数转二进制可…...

【JavaEE】网络(2)

一、网络编程套接字 1.1 基础概念 【网络编程】指网络上的主机&#xff0c;通过不同的进程&#xff0c;以编程的方式实现网络通信&#xff1b;当然&#xff0c;我们只要满足进程不同就行&#xff0c;所以即便是同一个主机&#xff0c;只要是不同进程&#xff0c;基于网络来传…...

AI for Science 的完美实践——科研文献的智慧化提取获得“综述性文摘”的软件开发

实践是检验真理的唯一标准&#xff01;show your codes! 1 综述性文摘的需求 再简单不过了。 甲方&#xff08;综述性文摘&#xff09;需求&#xff1a;针对项目特征或描述&#xff0c;从几百篇相关的科研论文&#xff08;PDF&#xff09;中智能提取相关内容&#xff0c;包括…...

前端使用xlsx.js实现 Excel 文件的导入与导出功能

前端使用xlsx.js实现 Excel 文件的导入与导出功能 在现代的 Web 开发中&#xff0c;处理文件上传和导出功能已经变得越来越常见&#xff0c;尤其是 Excel 文件的导入与导出。 我们将使用 Vue.js 和 XLSX.js 库来处理 Excel 文件的读取和生成。XLSX.js 是一个强大的 JavaScrip…...

React简单了解

原理简化了解 import React from "react" import { createRoot } form "react-dom/client"const element React.createElement(p,{id: hello},Hello World! )const container document.querySelector(#root) const root createRoot(container) root.r…...

backbone 和Run-Length Encoding (RLE)含义

在深度学习中&#xff0c;特别是在图像分割任务中&#xff0c;backbone&#xff08;主干网络&#xff09;是指用于特征提取的预训练神经网络模型。Backbone 的主要作用是从输入图像中提取有用的特征&#xff0c;这些特征随后会被用于更高层次的任务&#xff0c;如分类、检测或分…...

在Centos7上安装MySQL数据库 How to install MySQL on Centos 7

执行以下命令&#xff0c;下载并安装MySQL。 wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm && yum -y install mysql57-community-release-el7-10.noarch.rpm && yum install -y mysql-community-server --nogpgcheck执行以下…...

Linux docker-20.10.9安装

Linux Docker20.10.9安装 解压文件 tar -xvf docker-20.10.9.tgz 给docker执行文件赋予可执行权限 chmod 755 -R docker/复制docker到/usr/bin/目录下,使docker命令可以执行 cp docker/* /usr/bin/将Docker注册为service&#xff0c;创建docker.service文件 vim /etc/syst…...

操作系统(13)虚拟存储器

前言 操作系统中的虚拟存储器是一项关键技术&#xff0c;它为用户提供了一个远大于实际物理内存容量的逻辑内存空间。 一、定义与原理 虚拟存储器是具有请求调入功能和置换功能&#xff0c;能从逻辑上对内存容量加以扩充的存储器系统。其逻辑容量由内存容量与外存容量之和决定&…...

《面向对象综合训练01~05》

《面向对象综合训练01~05》 训练01&#xff1a;文字版格斗游戏 第一步&#xff1a;创建游戏角色的javabean类 public class Role {private String name;private int blood;private char gender;private String face;//长相是随机的//创建男女长相的随机数组String[] boyfaces…...

电脑为什么会提示“msvcr120.dll缺失”?“找不到msvcr120.dll文件”要怎么解决?

电脑故障排查指南&#xff1a;揭秘“msvcr120.dll缺失”的真相与解决方案 在软件开发与日常维护的广阔天地里&#xff0c;遇到系统报错或文件缺失的情况可谓家常便饭。今天&#xff0c;我将带领大家深入探讨一个常见的系统提示——“msvcr120.dll缺失”&#xff0c;并揭秘其背…...

huggingface NLP-微调一个预训练模型

微调一个预训练模型 1 预处理数据 1.1 处理数据 1.1.1 fine-tune 使用tokenizer后的token 进行训练 batch tokenizer(sequences, paddingTrue, truncationTrue, return_tensors"pt")# This is new batch["labels"] torch.tensor([1, 1])optimizer A…...

【BUG记录】Apifox 参数传入 + 号变成空格的 BUG

文章目录 1. 问题描述2. 原因2.1 编码2.2 解码 3. 解决方法 1. 问题描述 之前写了一个接口&#xff0c;用 Apifox 请求&#xff0c;参数传入一个 86 的电话&#xff0c;结果到服务器 就变成空格了。 Java 接收请求的接口&#xff1a; 2. 原因 2.1 编码 进行 URL 请求的…...

Spring AI API 介绍

目录&#xff1a; Spring AI 框架介绍 Spring AI API 核心API简介 Spring AI 提供了很多便利的功能&#xff0c;主要如下&#xff1a; AI Model API “Model API” 提供了聊天、文本转图像、音频转录、文本转语音、嵌入等功能&#xff0c;且不局限于某个固定的大模型提供商…...

【MySQL】Linux使用C语言连接安装

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &#x1f4e2;本文由 JohnKi 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f4e2;未来很长&#…...

2024年第十五届蓝桥杯青少组C++国赛—割点

割点 题目描述 一张棋盘由n行 m 列的网格矩阵组成&#xff0c;每个网格中最多放一颗棋子。当前棋盘上已有若干棋子。所有水平方向或竖直方向上相邻的棋子属于同一连通块。 现给定棋盘上所有棋子的位置&#xff0c;如果要使棋盘上出现两个及以上的棋子连通块&#xff0c;请问…...

【软件开发】做出技术决策

文章目录 专注于核心业务除非绝对必要,不要重写代码保持技术栈简单尽量减少依赖避免范围蔓延按照业务实际情况确定优先级在做出高风险决策前构建原型跨职能团队协作信任你的团队在过去的二十年里,我曾在多家初创企业担任软件开发人员、技术负责人以及首席技术官(包括创办自己…...

Airborne使用教程

1.安装环境 前提条件&#xff1a;系统已安装Ruby 打开终端输入如下命令 gem install airborne 或者在Gemfile添加 gem airborne 然后运行bundle install 2.编写脚本 在项目中新建api_tests_spec.rb文件 以GET接口"https://www.thunderclient.com/welcome"为…...

WPF实现曲线数据展示【案例:震动数据分析】

wpf实现曲线数据展示&#xff0c;函数曲线展示&#xff0c;实例&#xff1a;震动数据分析为例。 如上图所示&#xff0c;如果你想实现上图中的效果&#xff0c;请详细参考我的内容&#xff0c;创作不易&#xff0c;给个赞吧。 一共有两种方式来实现&#xff0c;一种是使用第三…...

CodeMirror边栏不止能显示行号:手把手教你打造代码调试器与个性化标记系统

CodeMirror边栏不止能显示行号&#xff1a;手把手教你打造代码调试器与个性化标记系统 在代码编辑器的演进历程中&#xff0c;边栏&#xff08;Gutter&#xff09;这个看似简单的区域&#xff0c;已经从单纯显示行号的辅助工具&#xff0c;进化为开发者与代码交互的重要界面。想…...

告别重复造轮子:用快马AI为qclaw项目封装高效算法模板与优化工具

在量子计算领域&#xff0c;qclaw项目的开发往往需要处理大量重复性工作。每次从零开始编写量子算法不仅耗时耗力&#xff0c;还容易引入人为错误。最近我在开发一个量子化学模拟项目时&#xff0c;发现了一个能显著提升效率的方法——利用InsCode(快马)平台构建可复用的算法模…...

Halcon点云拼接实战:如何用特征模板搞定3D扫描缺失问题?

Halcon点云拼接实战&#xff1a;特征模板技术在工业3D扫描中的应用 在工业检测和逆向工程领域&#xff0c;3D扫描常常面临一个棘手问题——单次扫描无法完整捕获复杂物体的所有表面细节。想象一下&#xff0c;当您需要检测一个汽车发动机缸体的内部结构&#xff0c;或者重建一…...

如何用Obsidian PDF++插件打造终极PDF阅读与标注体验

如何用Obsidian PDF插件打造终极PDF阅读与标注体验 【免费下载链接】obsidian-pdf-plus PDF: the most Obsidian-native PDF annotation & viewing tool ever. Comes with optional Vim keybindings. 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-pdf-plus …...

Phi-4-mini-reasoning效果对比:数学推理准确率 vs Llama3-8B实测分享

Phi-4-mini-reasoning效果对比&#xff1a;数学推理准确率 vs Llama3-8B实测分享 1. 模型介绍与部署 1.1 Phi-4-mini-reasoning简介 Phi-4-mini-reasoning是一个基于合成数据构建的轻量级开源模型&#xff0c;专注于高质量、密集推理的数据处理能力。作为Phi-4模型家族的一员…...

Wan2.2-I2V-A14B效果展示:动态运镜+光影变化的高质量视频样例

Wan2.2-I2V-A14B效果展示&#xff1a;动态运镜光影变化的高质量视频样例 1. 惊艳的视频生成能力 Wan2.2-I2V-A14B文生视频模型带来了令人惊叹的视频生成效果。这个私有部署镜像经过深度优化&#xff0c;能够根据文字描述生成具有专业级动态运镜和光影变化的高质量视频。想象一…...

像素剧本圣殿企业应用:中小型内容工作室剧本量产工作流搭建

像素剧本圣殿企业应用&#xff1a;中小型内容工作室剧本量产工作流搭建 1. 剧本创作新范式 在内容创作行业&#xff0c;剧本开发一直是耗时费力的核心环节。传统编剧流程中&#xff0c;一个完整剧本从构思到成稿往往需要数周甚至数月时间&#xff0c;这对于资源有限的中小型工…...

JVM面试题——垃圾收集器

目录 Serial / Serial Old ParNew Parallel / Parallel Old CMS&#xff08;Concurrent Mark Sweep&#xff09; G1收集器 ZGC 简介 垃圾收集器对比与选择 Serial / Serial Old 定位&#xff1a;最古老、最稳定的单线程串行收集器&#xff0c;全程 STW。 算法&#xff1…...

Phi-3-mini-4k-instruct快速上手:Ollama部署指南,开启你的第一个AI项目

Phi-3-mini-4k-instruct快速上手&#xff1a;Ollama部署指南&#xff0c;开启你的第一个AI项目 1. 认识Phi-3-mini-4k-instruct&#xff1a;轻量级AI助手 Phi-3-mini-4k-instruct是一个仅有38亿参数的轻量级AI模型&#xff0c;由微软团队开发。虽然体积小巧&#xff0c;但它在…...

YOLOv8实战:从数据增强到模型部署的完整Pipeline(附代码)

YOLOv8实战&#xff1a;从数据增强到模型部署的完整Pipeline&#xff08;附代码&#xff09; 计算机视觉领域的目标检测技术近年来取得了显著进展&#xff0c;其中YOLO系列算法因其高效性和准确性备受关注。作为该系列的最新成员&#xff0c;YOLOv8在保持实时检测速度的同时&am…...