MZ Blog

Thinking will not overcome fear but action will.

深入理解计算机系统篇之链接(6):PIC可执行目标文件与RAM运行实现

深入理解计算机系统篇之链接(6):PIC可执行目标文件与RAM运行实现 1.摘要 ​ 在学习了PIC位置无关代码后,想要做一个位置无关代码的APP跑起来的测试,通过添加编译选项变成PIC代码,然后存入Flash中,编写Boot加载该APP程序,看看效果如何 2.APP ​ APP程序很简单,用cubeMX生成后直接用cmake进行编译,不过cmake文件有几行需要修改,首先是开启位置...

Mac上调试STM32命令记录

ELF文件转二进制或十六进制 arm-none-eabi-objcopy -O binary myapp.elf myapp.bin arm-none-eabi-objcopy -O ihex myapp.elf myapp.hex ST-Link命令 查看所有 ST-LINK 设备 st-info --probe 🔹 查看芯片 Flash 信息 st-info --flash...

深入理解计算机系统篇之链接(5):PIC位置无关代码

深入理解计算机系统篇之链接(5):PIC位置无关代码 1.摘要 ​ 本章讲解PIC位置无关代码的引入动机,使用方法及原理。 2.动机 ​ 引入PIC的动机是共享库(动态库)的使用方式决定的,共享库只有一份被放入Flash中,每个应用程序如果要链接共享库,就需要讲其搬移到RAM中链接,可是每个应用程序在RAM中的地址不同,引入的共享库地址也就不一样,不能再采用静态的固定的地址获取方式去...

深入理解计算机系统篇之链接(4):重定位

深入理解计算机系统篇之链接(4):重定位 1.摘要 ​ 本文讲解链接过程中最核心的步骤之一:重定位。介绍重定位的工作原理。 2.重定位的主要工作 ​ 链接器完成符号解析后,就把符号引用与符号定义关联起来了。然后就可以开始重定位的步骤了,重定位的目的就是==确定每个符号定义的运行时内存地址,然后修改符号引用,使之指向符号定义的运行时内存地址==。 ​ 重定位由两步组成: 重定...

深入理解计算机系统篇之链接(3):符号解析

深入理解计算机系统篇之链接(3):符号解析 1.摘要 ​ 本文讲解链接中最重要的步骤之一:符号解析相关的内容,包括链接器如何进行符号解析,解析规则是什么,这种解析规则可能会产生什么问题等,还有如何使用静态库以及动态库进行符号解析等。 2.链接器的符号解析方法 ​ 链接器解析符号的方法是将每个符号引用与输入的可重定位目标文件中的符号表中的一个符号定义关联起来。通俗的讲就是链接器从后面的...

深入理解计算机系统篇之链接(2):目标文件

深入理解计算机系统篇之链接(2):目标文件 1.摘要 本文主要讲解一下链接的基础:目标文件格式以及相关基础知识,嵌入式的目标文件通常是ELF-32,本文就ELF-32描述一下其文件的组织,还有一些查看elf文件的工具,如Mac上的greadelf等。 2.目标文件类型 目标文件是汇编或链接的产物,主要类型分为==可重定位目标文件、可执行目标文件和可共享目标文件==(还有一个核心转储文...

深入理解计算机系统篇之链接(1):gcc/g++的编译流程

深入理解计算机系统篇之链接(1):gcc/g++的编译流程 1.摘要 本文讲解一下整个编译流程,为学习链接打基础。gcc/g++编译流程一共分为四大部分:预处理、编译、汇编、链接。最后生成elf文件。gcc/g++编译工具其实包含了预处理、编译、汇编和链接,它是一个编译驱动器。 2.预处理 编译前的纯文本处理! 预处理阶段编译器执行的工作主要有: 将源文件中的#...

从零构建大模型

从零构建大模型

从零构建大模型 1.理解大语言模型 什么是大语言模型 大语言模型是一种用于理解、生成和响应类似人类语言文本的神经网络。这类模型属于深度神经网络,通过大规模文本数据训练而成。通过输入大量的文本数据,训练资料可能涵盖了网络上大部分公开的文本。 大语言模型的“大”主要体现在两个方面:一是训练样本数据大,二是训练模型的参数规模大,数百亿甚至数千亿的参数,这些参数都是可调整的,在训练中...

Typora手动修改破解

Typora破解(Windows) 1.修改XXXXXX\Typora\resources\page-dist\static\js下的LicenseIndex.180dd4c7.74fcdd39.chunk.js //搜索 e.hasActivated="true"==e.hasActivated //改成 e.hasActivated="true"=="true" 2.修改XXXX...

CMake介绍与基本用法

1.CMake概述 CMake 是一个项目构建工具,并且是跨平台的。关于项目构建我们所熟知的还有Makefile(通过 make 命令进行项目的构建),大多是IDE软件都集成了make,如果自己动手写 makefile,会发现,makefile 通常依赖于当前的编译平台,而且编写 makefile 的工作量比较大,解决依赖关系时也容易出错。 而 CMake 恰好能解决上述问题, 其允许开...