首页
前端面试题
前端报错总结
电子书
更多
插件下载
Search
1
JavaScript基础(二)操作符 流程控制
42 阅读
2
HTML基础
20 阅读
3
Vue基础
17 阅读
4
wctype.h
14 阅读
5
Vue2(知识点)
13 阅读
默认分类
HTML CSS
HTML基础
CSS
HTML5 CSS3
javaScript
javaScript基础
javaScript高级
Web APIs
jQuery
js小总结
WEB开发布局
Vue
PS切图
数据可视化
Git使用
Uniapp
c语言入门
标准库
嵌入式
登录
Search
liuxiaobai
累计撰写
108
篇文章
累计收到
12
条评论
首页
栏目
默认分类
HTML CSS
HTML基础
CSS
HTML5 CSS3
javaScript
javaScript基础
javaScript高级
Web APIs
jQuery
js小总结
WEB开发布局
Vue
PS切图
数据可视化
Git使用
Uniapp
c语言入门
标准库
嵌入式
页面
前端面试题
前端报错总结
电子书
插件下载
搜索到
12
篇与
的结果
2024-12-12
cortex内核
目录arm内核发展历史cortexM0系列芯片系统框图通用寄存器m0特殊寄存器m3/m4/m7特殊寄存器MSP和PSPxPSRPRIMASKCONTROLFAULTMASKBASEPRI栈空间操作异常和中断系统异常NVIC可嵌套向量中断控制器系统操作寄存器NVIC寄存器系统控制块SCB寄存器SysTick寄存器cortex-m0启动流程中断向量表大小端堆栈压栈的寄存器杂项指令集M0/M3/M4/M7区别M3系统框图M3快速开关中断汇编指令M3内核CONTROL寄存器异常和中断MPU存储器保护单元arm内核发展历史arm内核架构arm7armv6cortex-m0armv6-mcortex-m0+armv6-mcortex-m3armv7-mcortex-m4armv7-mcortex-m7armv7-marm9ARMv6arm11ARMv6arm12ARMv6cortex-a7armv7-acortex-a8armv7-acortex-a9armv7-acortex-a15armv7-acortex-A17armv7-acortex-A53armv8cortex-A57armv8cortex-A72armv8cortexM0系列芯片系统框图系统中包括:中断控制器M0内核AHB总线存储器和外设电源管理时钟树调试系统通用寄存器 R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 m0特殊寄存器 SP(R13) LR(R14) PC(R15) CONTROL xPSR PRIMASK m3/m4/m7特殊寄存器 SP(R13) LR(R14) PC(R15) CONTROL xPSR PRIMASK FAULTMASK BASEPRI MSP和PSPmsp中断中会使用,psp用于线程栈使用,通过配置CONTROL寄存器切换。 系统复位后默认使用msp,中断中也使用msp。 xPSRIPSR可以用来判断当前处于什么中断。 PRIMASK中断屏蔽寄存器,写1屏蔽所有中断(除了不可屏蔽中断和hardfault) CONTROL第1bit写1表示切换成PSP FAULTMASK屏蔽所有的fault (NMI不受影响)BASEPRI屏蔽所有优先级不高于某个具体数值的中断栈空间操作栈向下递减 栈指针始终指向栈的最后一个数据,每次执行数据存储前(push),SP会首先减小 异常和中断m0最多支持32个外部中断系统异常主要用于操作系统和错误处理异常类型异常编号说明reset1上电复位、系统复位NMI2不可屏蔽中断hardfault3硬件错误SVCall11系统调用PendSV13挂起系统调用systick15系统滴答NVIC可嵌套向量中断控制器中断可嵌套相同优先级的中断不可嵌套相同中断不可嵌套系统操作寄存器实际上是许多的系统管理的寄存器地址范围寄存器说明0xE000E008 - 0xE000E00FSystem Control Block Table0xE000E010 - 0xE000E01F预留0xE000E010 - 0xE000E01FSysTick操作寄存器0xE000E100 - 0xE000E4EFNVIC操作寄存器0xE000ED00 - 0xE000ED3F系统控制块0xE000EF00 - 0xE000EF03NVICNVIC寄存器地址寄存器名称说明0xE000E100ISER中断使能寄存器0xE000E180ICER中断失能寄存器0xE000E200ISPR中断挂起寄存器0xE000E280ICPR清除挂起中断的寄存器0xE000E400 - 0xE000E41CIPR0-7中断优先级配置寄存器系统控制块SCB寄存器地址寄存器名称说明0xE000ED00CPUIDCPUID0xE000ED04ICSR中断控制和状态寄存器0xE000ED0CAIRCR应用中断和复位的寄存器0xE000ED10SCR系统控制寄存器0xE000ED14CCR配置控制寄存器0xE000ED1CSHPR2System Handler Priority Register 20xE000ED20SHPR3System Handler Priority Register 3SysTick寄存器地址寄存器名称说明0xE000E010SYST_CSRSysTick控制和状态寄存器0xE000E014SYST_RVRSysTick重载寄存器0xE000E018SYST_CVRSysTick当前值寄存器0xE000E01CSYST_CALIBSysTick校准寄存器cortex-m0启动流程程序从0x00000000地址开始执行m0从程序bin文件的开始处第2个word运行reset_handlerreset_handler函数开始执行一些必要的初始化(ramfunc函数复制,堆初始化,全局、静态变量初始化等)跳转到main函数中中断向量表 sp指针 resetHandler地址 NMIHandler地址 hardfault地址 reserved systickHandler地址 ...... 大小端m0支持大端模式和小端模式,不过一般芯片公司选择小端模式。 堆栈堆向上增长 栈向下增长 压栈的寄存器 xPSR PC LR R12 R3 R2 R1 R0 杂项指令集指令说明BKPT断点CPSID关闭总中断CPSIE打开总中断DMB数据存储器隔离 仅当所有在它前面的存储器访问操作都执行完毕后,才开始后面的存储器访问操作DSB数据同步隔离,比DMB更严格:仅当所有在它前面的存储器访问操作都执行完毕后,才开始后面的指令ISB指令同步隔离,最严格: 会清洗流水线,保证所有它前面的指令都执行完毕之后,才执行后面的指令。MRS从特殊寄存器读取数据到通用寄存器MSR从通用寄存器读取数据到特殊寄存器NOP空转指令SEV产生eventSVC产生SVC系统调用中断WFE等待eventWFI等待中断M0/M3/M4/M7区别M0 armv6-M架构M3 armv7-M架构多了basepri寄存器可以阻止某优先级或更低的优先级的中断。faultmask寄存器提供了更多的错误管理特性。CONTROL寄存器的bit0用于决定是特权模式还是用户线程模式32为thumb指令位段特性位域处理多处理器支持最多240个中断硬件除法存储器保护单元更多的调试和跟踪特性M4 armv7-M架构浮点特性SIMD指令(单周期多指令)饱和算法单周期MAC(MAC乘法累加)特性M0M3M4M7basepr M3系统框图M3快速开关中断汇编指令指令效果说明CPSID IPRIMASK=1关中断CPSIE IPRIMASK=0开中断CPSID FFAULTMASK=1关异常CPSIE FFAULTMASK=0开异常M3内核CONTROL寄存器CONTROL[1] 堆栈指针选择 0=选择主堆栈指针 MSP(复位后缺省值) 1=选择进程堆栈指针 PSP 在线程或基础级(没有在响应异常——译注),可以使用 PSP。在 handler 模式下,只允许使用 MSP,所以此时不得往该位写 1。CONTROL[0] 0=特权级的线程模式 1=用户级的线程模式 Handler 模式永远都是特权级的。异常和中断Cortex‐M3 支持大量异常,包括 16‐4‐1=11 个系统异常,和最多 240 个外部中断——简称 IRQ。编号类型优先级简介0N/AN/A没有异常在运行1复位-3(最高)复位2NMI-2不可屏蔽中断(来自外部 NMI 输入脚)3硬(hard) fault-1所有被除能的 fault,都将“上访”成硬 fault。除能的原因包括当前被禁用,或者 FAULTMASK 被置位。4MemManage可编程fault5存储器管理fault可编程MPU 访问犯规以及访问非法位置均可引发。企图在“非执行区”取指也会引发此 fault总线 fault从总线系统收到了错误响应,原因可以是预取流产(Abort)或数据流产,或者企图访问协处理器6用法(usage)可编程Fault由于程序错误导致的异常。通常是使用了一条无效指令,或者是非法的状态转换,例如尝试切换到 ARM 状态7-10保留N/AN/A11SVCall可编程执行系统服务调用指令(SVC)引发的异常12调试监视器可编程调试监视器(断点,数据观察点,或者是外部调试请求13保留N/AN/A14PendSV可编程为系统设备而设的“可悬挂请求”(pendable request)15SysTick可编程系统滴答定时器(也就是周期性溢出的时基定时器——译注)16IRQ#0可编程外中断#017IRQ#1可编程外中断#1............255IRQ#239可编程外中断#239MPU存储器保护单元Cortex‐M3 有一个可选的存储器保护单元。配上它之后,就可以对特权级访问和用户级访问分别施加不同的访问限制。当检测到犯规(violated)时,MPU 就会产生一个 fault 异常,可以由 fault异常的服务例程来分析该错误,并且在可能时改正它。MPU 有很多玩法。最常见的就是由操作系统使用 MPU,以使特权级代码的数据,包括操作系统本身的数据不被其它用户程序弄坏。MPU 在保护内存时是按区管理的(“区”的原文是 region,以后不再中译此名词——译注)。它可以把某些内存 region 设置成只读,从而避免了那里的内容意外被更改;还可以在多任务系统中把不同任务之间的数据区隔离。一句话,它会使嵌入式系统变得更加健壮,更加可靠(很多行业标准,尤其是航空的,就规定了必须使用 MPU 来行使保护职能——译注)。
2024年12月12日
5 阅读
0 评论
0 点赞
2024-12-12
gpu知识点
vivante图芯技术有限公司硬件抽象层Hardware Abstraction Layer (HAL)Alpha Blending是按照“Alpha”混合向量的值来混合源像素和目标像素的一种图像处理技术。android SurfaceFlingerSurfaceFlinger服务负责绘制Android应用程序的UI android专有驱动驱动说明Android Ashmem匿名共享内存; 为用户空间程序提供分配内存的机制Android Logger轻量级的LOG(日志)驱动Android Binder基于 OpenBinder 框架的一个驱动Android Power Management电源管理模块Low Memory Killer低内存管理器Android PMEM物理内存驱动USB GadgetUSB 驱动(基于 gaeget 框架)Ram Console用于调试写入日志信息的设备Time Device定时控制设备Android Alarm硬件时钟android 上的设备驱动驱动说明Framebuff显示驱动surfaceflinger显示驱动gralloc显示驱动Event输入设备驱动ALSA音频驱动OSS音频驱动v412摄像头视频驱动MTD驱动 蓝牙驱动WLANwifi驱动android 图形名词名词说明OpenGL开放图形库(open graphics library)用于生成2D 3D图像OpenGL ES(OpenGL for Embedded Systems)是OpenGL三维图形API的子集,针对手机、PDA和游戏主机等嵌入式设备而设计OpenVG(Open Vector Graphics)2D矢量图形处理标准函式库OpenCL(Open Computing Language)开放运算语言DirectFB(Direct Frame Buffer),提供硬体图形加速库GDI(Graphics Device Interface),图形设备接口,负责系统与绘图程序之间的信息交换DirectDrawDirectX中的关于视频输入输出的基本部分,使用DirectDraw可以方便地编制出高效的视频处理程序,只要用户的硬件支持DirectDraw,就能保证你的代码可以处理它们。SkiaAndroid中的2D图形库libaglAndroid中通过软件方法实现的一套OpenGL动态库libhgl为区别libagl,自定义的一种叫法。特指GPU厂商提供的硬件实现的OpenGLrender特指使用OpenGL动态库进行3D渲染copybitAndroid使用2D引擎来加速图形操作(主要是Surface之间的composition操作)的一种技术,对应着一个或几个动态库。pmemAndroid特有驱动,从linux内核中reserve物理连续内存,可以为2d、3d引擎、vpu等设备分配物理连续内存。使用GPU硬件加速需要做的工作Linux内核方面:添加GPU驱动支持,以模块方式编译GPU驱动,Android启动时加载内核模块。添加PMEM支持,预留内存供GPU使用Android方面:添加copybit HAL修改gralloc gralloc负责显存等的分配,以及对framebuffer操作修改libagl修改surfaceflingerframebufferframebuffer字符设备设备位于/dev/graphics/fb*,主设备号为29相关代码:include/linux/fb.h driver/video/fbmem.c fbmem.c # 提供用户接口 xxxfb.c # 提供硬件操作接口用户操作:函数说明ioctl()获取/设置信息mmap()映射内存
2024年12月12日
4 阅读
0 评论
0 点赞
2024-12-12
uboot学习
源码目录:api: 存放uboot提供的接口函数 arch: 存放跟芯片相关的文件 board: 开发板配置文件 common: uboot命令行下支持的命令 disk: 磁盘支持 doc: 文件目录 drivers:设备驱动程序 examples例程 fs: 支持的文件系统,cramfs fat fdos jffs2 registerfs include:uboot使用到的头文件 lib_xxx:与体系结构相关的库文件 net: 网络协议栈相关的文件 BOOTP TFTP RARP NFS tools: 工具 mkimage crc 启动流程:stage1:cpu 硬件初始化,汇编实现,加载U-Boot到RAM空间 设置堆栈 跳转到stage2 stage2:一般主函数是lib_arm/board.c中的start_armboot。 调用一系列的初始化函数 将内核从flash复制到ram中 进入uboot命令行 调用内核
2024年12月12日
3 阅读
0 评论
0 点赞
1
2
3
4