阅读本专栏其他文章,有助于理解本文。👆文章目录一、开发库选择1.1概述1.2CMSISpack1.3SPL库1.4HAL库1.5LL库1.6寄存器开发二、代码对比2.1使用寄存器2.2使用CMSIS库2.3使用SPL库2.4使用HAL库2.5使用LL库2.6使用RTOS三、如何在软件中选择不同的库3.1ARMMDK3.2STM32CubeIDE一、开发库选择1.1概述STM32开发相关的库有很多,它们都是为了方便开发者使用STM32微控制器而提供的软件工具。根据不同的功能和层次,可以将它们分为以下几类:CMSIS库(准确来说是CMSISpack)(CortexMicrocontrollerSo
Linux学习记录60(ARM篇)本文目录Linux学习记录60(ARM篇)一、SPI总线1.概念2.硬件连接二、SPI总线协议三、SPI总线通信模式四、对比IIC总线和SPI总线1.相同点2.不同点思维导图一、SPI总线1.概念1、SPI总结是Motorola首先提出的全双工三线/四线同步串行总线2、采用主从模式(MasterSlave)架构3、支持多slave模式应用,一般仅支持单Master,多从机使用4、时钟由Master控制5、在时钟移位脉冲下,数据按位传输,先发送高位,在发送低位,也可以先发送低位,在发送高位6、SPI接口有2根单向数据线,为全双工通信7、目前应用中的数据速率可达几
使用系统:WSL2——Kali(MicrosoftStore)命令列表rustuptargetlist#当前官方支持的构建目标架构列表rustuptargetaddaarch64-unknown-linux-gnu#添加目标架构sudoapt-getinstallgcc-13-aarch64-linux-gnugcc-13-aarch64-linux-gnu#下载目标工具链,可以把13删了sudodpkg--add-architecturearm64#解决后面使用qemu-aarch64的lib问题sudoaptupdatesudoaptinstalllibc6:arm64cargonewTe
经过前两篇的步骤,现在板子上已经有了系统内核镜像文件,就差提供一个内核可挂载的根文件系统了. 制作根文件系统的方式有很多种, 如果是第一次制作根文件系统建议使用busybox, 因为busybox整体结构比较简陋, 纯粹是提供了一些基础工具, 还需要开发者自己移植一些库文件, 制作一些脚本文件, 移植一些自己需要的文件, 但是在一步步制作的过程中能学会很多东西. 但是直接使用Ubuntu文件系统的好处就是能在较短的时间内获得一个完善的文件系统. 首先在官方网站中下载,在这个界面中可以选择想要安装的版本:然后点击想要下载的版本,然后点release,然后在如下界面选择arm64的.gz压缩包
文章目录B.NE指令格式CBNZ指令格式b指令和f及b的关系上篇文章:ARM常见汇编指令学习3–ARM64无符号位域提取指令UBFX下篇文章:ARM常见汇编指令学习5–arm64汇编指令wzr和xzrB.NE指令格式B.NElabel>B.NE指令的含义是:如果上一个指令的结果不等于零(即条件标志位Z为0),那么跳转到指定的地址。如果结果等于零,则继续执行下一个指令。wait_rd: ldrx7,=0x18ac0000 ldrw9,[x7,#0x0] ubfxw9,w9,#0,#1 cmpw9,#0x1 b.newait_rd dsbsy isb上面汇编代码是判断w9与0x1是否相等,cmp指
文章目录extern"C"介绍extern"C"使用示例1.2.2作用场景上篇文章:ARM嵌入式编译系列4.1–GCC编译属性likely与unlikely学习下篇文章:ARM嵌入式编译系列5–GCC内建函数__builtin介绍extern“C”介绍extern“C”是一种链接规范,它用于告诉C++编译器按照C语言的方式来链接代码。这个关键字主要用于在C++代码中调用C语言的函数库。C++语言对函数进行了名字修饰(NameMangling),也就是说,C++编译器在编译函数的时候会给函数的名字添加一些额外的信息,例如函数的参数类型和数量。这样做的目的是为了支持函数的重载。然而,C语言不支持函
.global_start_start: /*movr0,#0x5 movr1,#0x6 blLoop Loop:cmpr0,r1 beqstopsubhir0,r0,r1 subccr1,r1,r0 movpc,lr */ movr0,#0x1 movr1,#0x0 movr2,#0x64 blLoop Loop: cmpr0,r2 bhistop addr1,r1,r0 addr0,r0,#0x01 movpc,lrstop: Bstop .end
记录一下armbacktrace分析过程什么是ARMbacktraceARMbacktrace指的是在ARM架构下的程序调试过程中,获取当前函数调用栈帧的信息,以便定位问题所在。调用栈(CallStack)是一种数据结构,用于记录函数调用的顺序和嵌套关系,每次函数调用都会在栈上分配一个栈帧(StackFrame),保存了函数的局部变量、参数和返回地址等信息。backtrace是指获取调用栈的逆序列表,即从当前函数回溯到最开始的函数调用。ARMbacktrace通常用于调试应用程序中的错误,如崩溃、段错误等。通过分析backtrace信息,开发人员可以定位问题发生的位置,从而进行修复。在Linu
由于macarm芯片的问题,导致随便拉取镜像会出现AMD64的警告,如果不想出现则可以gitclone https://github.com/apache/rocketmq-docker.git 拉代码自己编译镜像下面是根据别人已经上传的镜像进行的本地部署操作下面两个镜像都是某位老哥打包的,测试无问题1.拉取rocketMq镜像 该版本为5.0.0dockerpullcandice0630/rocketmq:5.0.0-alpine2.拉取rocketMq控制台镜像dockerpullcandice0630/rocketmq-console-ng:2.03.进行docker-compose编排
linuxarm64安装ELK前言:本篇文章主要介绍如何在linux环境下安装ELK栈,包括es、kibana和logstash1.安装elasticsearch1.1下载eslinuxaarch64rpm包运行命令rpm-ivhelasticsearch-7.17.4-aarch64.rpm1.2创建es数据和日志目录mkdir/home/elasticsearchmkdir/home/elasticsearch/datamkdir/home/elasticsearch/logs1.3对数据和日志目录授权chownelasticsearch:elasticsearch-R/home/elas