草庐IT

GIC 介绍 (二)—gic400 使用

GICV2(gic400)GIC400,支持最大8个core,在gicv2中,gic由两个大模块组成:distributor和cpuinterfacedistributor:实现中断分发,对于PPI,SGI是各个core独有的中断,不参与目的core的仲裁,SPI,是所有core共享的,根据配置决定中断发往的core。最后选择最高优先级中断发送给cpuinterface。寄存器使用GICD_作为前缀。一个GIC中,只有一个GICD_*。当一个中断事件分发到多个CPUinterface(最多8个)的时候,GIC的内部逻辑应该保证只assert一个CPU。Distributor:用来收集所有的中断

Android安全启动学习(五):Android Verified Boot 2.0

1、AVB概要AVB2.0被用于启动引导,此用法添加一个“vbmeta.img”镜像。publickey被编译到bootloader中用于校验vbmeta数据,vbmeta.img包含应由此publickey验证的签名。vbmeta.img包含用于验证的publickey,但只有bootloader验证过vbmeta.img才会可信,就好比认证一样,包含可信publickey和签名。因此,我们在AVB中有两个重要key,一个验证vbmeta.img的OEMkey,一个验证其他分区(boot/system/vendor)的veritykey。当然可以使用OEMkey作为veritykey。我们知

STM32-GPIO数码管动态显示

目录一、数码管原理1、LED数码管的结构2、LED数码管工作原理3、数码管动态显示1)动态显示的概念2)动态显示的接口二、代码的实现三、仿真结果展示 本篇文章将继续进一步了解GPIO外设输出模式一、数码管原理知道这一部分的朋友可以直接点击目录部分跳过这段跳过,这里介绍一下数码管的知识1、LED数码管的结构不管在嵌入式STM32中还是在单片机51中,我们经常采用LED数码管来显示我们系统的状态、运算结果等各种信息,LED数码管是机器和人对话的一种重要的输出设备。单个LED数码管的外形和内部结构如上图所示。LED数码管由8个发光二极管组成,通过不同的发光字段组合可以显示数字(0~9)、字符(A~F

ARM 反汇编工具objdump的使用简介

一、反汇编的原理&为什么要反汇编arm-linux-objdump-Dled.elf>led_elf.dis-D,--disassemble-allDisplayassemblercontentsofallsectionsobjdump是gcc工具链中的反汇编工具,作用是由编译链接好的elf格式的可执行程序反过来得到汇编源代码.-D表示反汇编,>左边的是elf的可执行程序(反汇编时的原材料),>右边的是反汇编生成的反汇编程序。反汇编的原因有以下:逆向破解。调试程序时,反汇编代码可以帮助我们理解程序(我们学习时使用objdump主要目的是这个),尤其是在理解链接脚本、链接地址等概念时。把C语言源

2023新版keil编译不通过,报错的-保姆级解决方法

        昨天心血来潮,把之前老版本的keil5升级到了MDK-5.38和C51-9.61A版本。安装什么的一开始很顺利,直到编译的时候出现下面的报错信息:        这里的错误信息提示就是:这里没有AC5版本的编译器,(大概就是这个意思)。(defaultcompilerversion5‘whichisnotavailable)    后来我又了解一下,这个是因为新版的keil不再提供默认AC5的编译器,只能够自己手动添加,后面会给出官网的下载地址。    之后根据安装目录查找,这个是由于我之前安装的时候已经把AC5的编译器添加了一次,所以现在的编译出现这样的报错信息,于是我把自己

stm32-DS1302时钟模块驱动

DS1302是时钟芯片1.DS1302芯片简介DS1302的寄存器地址定义如下: 单字节读写时序如下图,均为上升沿触发: 由于DS1302时钟芯片不是常用的SPI协议,与SPI协议很像,所以需要初始化普通GPIO口手工实现该协议通信。2.cubemx设置设置分别连接DS1302的CE、SCLK、Data口的GPIO,PB8\PB9\PB10:3.keil开发打开gpio.h文件,定义结构体和预处理:#defineW_SECOND0x80#defineW_MINUTE0x82#defineW_HOUR0x84#defineW_DAY0x86#defineW_MONTH0x88#defineW_W

STM32移植MPU6050/9250的DMP官方库(motion_driver_6.12)修改移植 DMP简单使用教程

前言为STM32F1/F4移植的MotionDriver6.12库俗称DMP库。官方的库从初始化硬件到获取数据一条龙服务,关键是假如想要用MPU的DMP单元,对于一般人来说那就只能用官方库了,因为官方库包含一个最核心的闭源静态库。工程已经发布在Github:https://github.com/Huffer342-WSH/MPU6050_I2C蓝奏云:https://wwz.lanzouo.com/iV0SQ004pn8b密码:1n4j该项目源自野火的例程,但野火MPU6050的例程对DMP的功能浅尝辄止,视频也讲的比较乱,我对原代码进行了一些删减,去掉了一些没有意义的部分,同时对略微的修改了

xml - 无法使用 expat 编译 GDB 以用于远程调试

我一直在尝试在64位X86Ubuntu上编译GDB的副本,以用于远程调试ARM设备。这意味着使用expat编译GDB;GDB在连接到远程调试器时使用XML解析。以下是我尝试过的一些方法和结果。只用--with-expat编译./configure--target=arm-none-eabi--with-expatmake....checkingwhethertouseexpat...yescheckingforlibexpat...(cached)noconfigure:error:expatismissingorunusableMakefile:9125:recipefortarge

国产化复旦微电子 FMQL45T900 FPGA开发板( 替代Xilinx ZYNQ ARM+FPGA 7045开发板)

-FM4550国产化开发板功能接口 --系统框图 -01-产品参数 -1.主要参数系统1:FPGA型号:FMQL45T900PS内核:四核ARMCortex-A7,主频800MHzPS端内存:1GBDDR3,数据速率1066Mbps,32bitPL端内存:1GBDDR3,数据速率1600Mbps,32bitGTX收发器:16X速度等级:对标进口-2                       芯片级别:工业级工作温度:-40℃-100℃                      逻辑单元数量:350k查找表:218600                            乘法器:900触发

STM32系统和自定义bootloader的实现和应用

01bootloader简介bootloader其实就是一段启动程序,它在芯片启动的时候最先被执行,可以用来做一些硬件的初始化或者用作固件热更新,当初始化完成之后跳转到对应的应用程序中去。bootloader程序需要通过下载器烧写到芯片中,而APP则可以通过有线方式的UART、IIC、USB、SPI等总线来通过bootloader来更新,视所设计的bootloader程序而定。另外,对于无线方式热更新APP,一般是用WiFi、bluetooth通过UART透传的方式烧写芯片APP程序。另外,也可以合并bootloader的bin文件和APP的bin文件,一次过烧写到芯片中。功能1.在一定时间内