arm专题

arm中的PLL,MPLL,UPLL,FCLK,HCLK,PCLK的作用概述

前言:     不同公司,不同等级的ARM架构也是有许多共同的地方,因此以最为广泛使用的2440为实例讲解。 一,PLL     S3C2440 CPU主频可达 400MHz,开发板上的外接晶振为 12M,通过时钟控制逻辑的PLL(phase locked loop,锁相环电路)来倍频这个系统时钟。2440有 两个PLL(phase locked loop)一个是 MPL

ARM 汇编 伪指令 MACRO及MEND

ARM 汇编 伪指令 MACRO及MEND MACRO伪操作标识 宏定义的开始,MEND标识宏定义的结束。 用MACRO 及MEND定义一段代码,称为宏定义体,这样在程序中就可以通过宏指令多次调用该代码段 语法格式 MACRO {$label}  macroname {$param

ARM_SWP指令用法

SWP 寄存器和存储器交换指令。SWP指令用于将一个内存单元(该单元地址放在寄存器Rn中)的内容读取到一个寄存器Rd 中,同时将另一个寄存器Rm 的内容写入到该内存单元中。使用SWP 可实现信号量操作。 指令格式如下: SWP{cond}{B} Rd,Rm,[Rn] 其中,B 为可选后缀,若有B,则交换字节,否则交换32 位字:Rd 为数据从存储器加载到的寄存器;Rm 的数据用于存储到存储

ARM数据处理指令中的立即数问题

CPU的手册上,数据处理指令格式如上: 立即数是Operand2部分,占据了机器码的低12位。其中最低8位称为immed_8,高4位称为rotate_imm。 立即数的数值计算方法:=immed_8 循环右移 (2 * rotate_imm)。 就是说,一个立即数0x56000000,循环左移,如果可以得到一个用8位位图表示的数,则该立即数0x56000000是

NFS服务器搭建-共享PC与ARM主板文件

NFS服务器搭建-共享PC与ARM主板文件 在搭建好交叉编译环境之后需要实现目标板与宿主机的文件共享,在这里选择NFS,由于资料较多。需要注意的以下几点: 目标板与宿主机需要连接在同一个网段内。宿主机需要搭建nfs服务器,同样目标板在编译内核的时候需要选择nfs。 步骤一 宿主机环境设置 安装nfs-kernel-server; sudo apt-get install nfs-kern

编译gdb:在x86虚拟机上,加载分析arm程序及崩溃

目标 在X86虚拟机上,加载arm程序及崩溃。 最早我想的是编译一个arm版本的,在虚拟机上显然不能使用。 后来同事跟我说,可以编译一个在虚拟机上,分析arm的gdb,我觉得好神奇。事实证明确实可以。 首先不能使用已编译的,尤其是别人已经编译。下载 linux编译gdb-CSDN博客 编译 指定输出目录,方便使用。 指定前缀,方便识别。 编译脚本: CROSS_NAME=aar

DPDK:用rte_wmb()来保序,对ARM和IA而言,RTE_WMB()的实现有何不同

rte_wmb()函数在DPDK中用于实现写入屏障(Write Memory Barrier),它的作用是确保在CPU执行写操作之前,所有先前的写操作已经被完全刷新到内存中。这个函数在IA和ARM处理器上的实现有一些不同。         对于Intel Architecture (IA)处理器而言,rte_wmb()函数的实现非常简单,它直接调用了IA架构提供的mfence指令

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-15.7讲 GPIO中断实验-编写按键中断驱动

前言: 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM(MX6U)裸机篇”视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。 引用: 正点原子IMX6U仓库 (GuangzhouXingyi) - Gitee.com 《【正点原子】I.MX6U嵌入式Linux驱动开发指南V1

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-15.6讲 GPIO中断实验-GPIO驱动添加中断处理函数

前言: 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM(MX6U)裸机篇”视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。 引用: 正点原子IMX6U仓库 (GuangzhouXingyi) - Gitee.com 《【正点原子】I.MX6U嵌入式Linux驱动开发指南V1

知从科技作为Arm嘉宾出席亚太区SOAFEE研讨会

汽车研发需遵循多种行业及法规标准,软件定义汽车时代来临。2021 年 9 月,Arm 为推动汽车行业向软件定义汽车 (SDV) 转型而发起了一个行业协作项目——面向嵌入式边缘的可扩展开放架构SOAFEE(Scalable Open Architecture for Embedded Edge)。现在已经拥有100多家成员,覆盖整个汽车供应链,其中不乏国际知名大厂与国内头部企业。 中国市场作为全球

【ARM Cortex-M 系列 2.1 -- Cortex-M7 Debug system registers】

请阅读【嵌入式开发学习必备专栏】 文章目录 Debug system registers中断控制状态寄存器(ICSR)Debug Halting Control and Status Register, DHCSR Debug 寄存器DCRSR与DCRDRCPU 寄存器读操作CPU 寄存器写操作CPU 寄存器选择CPU 寄存器读写示例 调试故障状态寄存器(DFSR) Deb

LVGL移植到ARM开发板(GEC6818)

源码下载:点击跳转 下载好三个文件后,将其解压缩,并合到一个文件夹里面—— 1、修改 Makefile 删除 -Wshift-negative-value 2、修改 main.c 3、修改 lv_drv_conf.h 在lv_drv_conf.h文件屏幕驱动文件刚好与开发板LCD驱动文件一致,所以不用修改。 修改触摸屏 define EVDEV_

ARM架构安全特性之隔离技术

安全之安全(security²)博客目录导读 目录 一、保护代码和数据 二、TrustZone 三、安全世界之间的隔离 四、Secure-EL2扩展 五、保护主流计算工作负载 六、领域管理扩展(RME) 七、内存密集型可信应用程序 八、Arm动态TrustZone技术 强制执行明确定义的安全边界是安全工程的最基本原则之一。Arm 提供可扩展的隔离技术,以最小的性能影响将各种

【ARM64 常见汇编指令学习 20.1 -- ARM 伪指令 .include】

请阅读【嵌入式开发学习必备专栏】 文章目录 ARM 编译指令 .include 使用介绍a.s 文件b.s 文件小结 ARM 编译指令 .include 使用介绍 在UEFI(统一可扩展固件接口)开发中,通常会用到汇编语言文件(.s 或 .S 文件)。如果你想在一个汇编语言文件中包含(或者说“include”)另一个汇编语言文件,你可以使用 .include 指令。这种

ARM架构安全特性概览

安全之安全(security²)博客目录导读 目录 一、跨行业计算安全 二、Arm架构安全特性的益处 三、安全威胁与缓解 四、防御执行技术 五、隔离技术 六、通用平台安全服务 七、标准安全 API 八、PSA安全标准认证 一、跨行业计算安全 从一开始,Arm 生态系统一直是计算安全的先驱。Arm 积极与我们全球生态系统的合作伙伴合作,通过开发和实施一整套架构安全功能来分析

【ARM 嵌入式 C 入门及渐进 12.3 -- 将数值的第 s 位到 e 位清零】

请阅读【嵌入式开发学习必备专栏】 文章目录 将数值的第 s 位到 e 位清零 将数值的第 s 位到 e 位清零 为了定义一个VAL_CLR_BITS(val, s, n)宏,该宏将变量val的第s位到第n位清零(假设n >= s),其余位的值保持不变,我们可以使用位操作来实现这一目标。以下是宏的一个可能实现: #define VAL_CLR_BITS(val, s, n

ARM基于DWT实现硬件延时(GD32)

软件延时的缺点 软件延时的精度差,受系统主频影响,调教困难 硬件延时 DWT数据跟踪监视点单元硬件延时 硬件延时实现代码 delay.c #include <stdint.h>#include "gd32f30x.h"/***********************************************

【ARM 嵌入式 C 入门及渐进 12.2 -- 将数值的第 0 位到 n 位清零】

请阅读【嵌入式开发学习必备专栏】 文章目录 将数值的第 0 位到 n位清零 将数值的第 0 位到 n位清零 要定义一个宏VAL_CLR_BITS(val, n),该宏将变量val的第0位到第n位清零(包括第n位),其余位的值保持不变,我们可以使用位操作来实现这个功能。以下是宏的一个可能实现: #define VAL_CLR_BITS(val, n) ((val) & ~

【ARM 嵌入式 C 字符串系列 23.9 -- strcmp 与 strncmp 在使用上的区别以及注意事项】

文章目录 strcmp 与 strncmp 使用介绍strcmpstrncmp使用建议 strcmp 与 strncmp 使用介绍 strcmp 和 strncmp 都是 C 语言标准库中用于比较两个字符串的函数,它们定义在 <string.h> 头文件中。这两个函数在功能上相似,但在使用方式和应用场景上有一些区别。 strcmp strcmp 函数比较两个字符串,直到遇

ARM单片机实现流水灯(GD32)

根据上图可知使用的引脚分别是PA8,PE6,PF6流水灯功能的实现要分别初始化这几个引脚 流水灯实现 编写流水灯代码 LED.C #include "gd32f30x.h" // Device header#include "Delay.h"// 初始化LED灯void LED_Init(void){// 使能RCU时

arm架构下安装conda

一、参考文章:感谢这位网友的分享,搬过来以备过几天使用,这种小众系统真的有些麻烦解决方案:ARM架构下安装Miniconda + 离线配置Conda环境的全流程及踩坑避坑指南 - 技术栈 二、步骤 2.1 确认系统架构 uname -m 2.2 根据架构下载对应的conda安装文件 Miniconda — Anaconda documentation 2.3、安装Miniconda

glmark2 GPU 跑分工具移植到arm实机上运行

glmark2 是开源的对OpenGL 2.0 和 ES 2.0的基准测试程序,一般用来对GPU进行基准测试。glmark提供了一系列丰富的测试,涉及图形单元性能(缓冲,建筑,照明,纹理等)的不同方面,允许进行更全面和有意义的测试。 每次测试进行10秒,并且单独计算帧速率。 开源地址是: https://github.com/glmark2/glmark2 但是glmark2只能在windo

arm linux系统中移植编译iw命令的过程和遇见问题的解决方法

使用背景: 由于将arm板上的USB -wifi的模式修改为sta的模式,数据的传输延时太大。所以需要在开机的时候执行: ./iw wlan0 set power_save off 。用以减小延时。会用到iw命令,需要额外的移植。 编译环境: Ubuntu  运行环境: 基于rv1108的linux平台(linux内核3.10) 编译过程: 参考:https://blog.c

arm板中wifi设置为sta模式后连接路由器数据传输的延时太大的解决方法

基于rv1108的板子,将上面的usb WiFi设置为sta模式后,连接上路由器ping路由器的时候发现数据传输的延时太大。 如下图: 解决的方法: https://wiki.archlinux.org/index.php/Network_configuration_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)/Wireless_(%E7%AE%80%E4

GPIO输出速度(ARM-GD32)

单片机输出速度对GPIO硬件的影响 如果T为100ns 那么2/3*100ns = 67ns 那么tr + tf = 38 ns (也就是不能超过32ns) tr 和tf和什么东西有关如何去控制 CL 是一个电容,电容会改变和影响电压变化的速率,输出高低电平也就是对电容进行充电和放电根据上图电容充电的公式DV / DT 电压变化的速率:因此在负载电容一定的情况下,电

Makefile解析(ARM LINLON V5/V7 VPU firmware tools例)

根目录Makefile 初始化一些变量TARGETS := model executiontb cpuROOT_DIR?=$(abspath $(CURDIR))OUT_DIR?=$(abspath $(CURDIR))ADDR_FILE:=$(ROOT_DIR)/build/mmu_addr.txtmake all 执行 make helpall: help.PHONY后面跟