![](https://img-blog.csdnimg.cn/20190918140213434.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
ARM BSP 系列
文章平均质量分 90
主要介紹 ARM BSP 系列内容
主公CodingCos
竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生
展开
-
【嵌入式开发-- 串口实现清屏函数】
下面是一个简单的函数,演示了如何发送这些序列到串口进行清屏,需要注意的是,这个例子假设已经有了发送数据到串口的基础设施(例如,通过编程设置好的UART)。然而,如果通过串口进行操作,并且不调用任何库函数,那么就需要采取与平台无关的方法。一种可能的方法是发送特定的ANSI转义序列到串口,这是许多终端和模拟器支持的标准方式来控制屏幕输出,包括清屏、光标移动等。在C语言中实现一个不依赖于库函数的清屏函数,通常需要直接与底层硬件或操作系统的API进行交互。,而移动光标到屏幕左上角的转义序列是。原创 2024-06-19 23:10:20 · 309 阅读 · 0 评论 -
【linux kernel 入门及渐进1 -- 常用同步机制】
linux kernel 常用同步机制介绍原创 2022-11-10 16:58:48 · 508 阅读 · 0 评论 -
【linux kernel 入门及渐进 2 -- linux 内核同步机制之spinlock】
如果被保护的共享资源在软中断(包括 tasklet 和 timer)或进程上下文和硬中断上下文访问,那么在软中断或进程上下文访问期间,可能被硬中断打断,从而进入硬中断上下文对共享资源进行访问,因此,在进程或软中断上下文需要使用。共享资源只在进程上下文访问和软中断上下文访问,那么当在进程上下文访问共享资源时,可能被软中断打断,从而可能进入软中断上下文来对被保护的共享资源访问,因此对于这种情况,对共享资源的访问必须使用。当然,由于需要关闭中断,会导致系统的响应降低,而且还会执行更多的代码,可能会导致性能下降。原创 2022-12-09 15:57:23 · 449 阅读 · 0 评论 -
【Linux kernel 文件系统入门及渐进 1 -- sysfs 介绍】
本文主要介绍 sysfs的工作原理原创 2023-01-05 11:49:38 · 1291 阅读 · 0 评论 -
【Linux kernel 文件系统入门及渐进 3 -- sysfs 与 kernfs】
引入的内存文件系统。在Linux内核中,kernfs 提供内核子系统内部伪文件系统所需的功能,源于拆分 sysfs 使用的部分内部逻辑,它通过将有关硬件设备和相关设备驱动程序的信息从内核的设备模型导出到用户空间,提供一组虚拟文件,从而实现独立且可重用的功能。,它会根据属性文件找到其父节点类型对应的 sysfs_ops ,然后调用 sysfs_ops.store。这时,我们看以看到一个完整的目录层次结构(sys目录下有10个子目录,子目录下又有各个子目录),以及这个目录结构的创建方式。原创 2023-01-07 11:36:42 · 1776 阅读 · 0 评论 -
【 ARMv9 Cluster BUS QoS 配置】
ARM 的一些硬件组件,如处理器(CPU)、内存控制器(Memory Controller),以及系统中的互连(Interconnect)等,通常都会支持 QoS 配置。需要注意的是,正确地配置和使用 QoS 需要对系统的工作负载和资源需求有深入的理解,并且可能需要进行一些性能测试和调优。QoS(Quality of Service,服务质量)在 ARM 架构中,主要指的是一种机制,它可以控制和管理系统资源(如内存、总线带宽等)的使用,以满足各种应用和任务的性能要求。寄存器来控制 core的 QoS的值。原创 2023-08-29 21:09:00 · 738 阅读 · 0 评论 -
【ARM Coresight 系列文章 22 -- linux frace 与 trace-cmd】
ftrace是 Linux 内核中的一个跟踪工具,主要用于帮助开发者分析和调试内核的行为。ftrace 的名字来源于 “”,它最初是用于跟踪内核函数调用的,但现在已经发展成一个功能强大的通用跟踪框架,可以跟踪函数调用、调度事件、中断、定时器、内存映射等各种内核事件。下面是一些使用 ftrace 的基本示例:注意:使用 ftrace 需要相应的权限,通常需要 root 权限。原创 2023-08-29 14:45:55 · 695 阅读 · 0 评论 -
【ARM 浮点计算单元 FPU (FPA,VFP,NEON)介绍】
ARM 的 FPU(浮点单元)是ARM处理器的一个重要组成部分,主要负责执行浮点数运算。ARM 的 FPU支持IEEE 754标准的浮点数格式,并能够执行各种浮点数的基本运算,如加法、减法、乘法、除法等,以及一些更复杂的运算,如平方根、绝对值等。在早期的ARM处理器中,浮点单元是一个可选的组件。但是在现代的ARM处理器中,如Cortex系列处理器,浮点单元通常是内置的,对于执行浮点数运算有极大的帮助。另外,ARM的浮点单元还支持向量运算,能够同时处理多个浮点数,从而极大地提高了运算效率。原创 2022-11-09 17:20:32 · 1500 阅读 · 0 评论 -
【ARM Cortex-M 系列 2 -- CPU 之 Cortex-M7 介绍】
而即使在不支持中断嵌套,即中断是没有优先级的,中断是不允许被中断的,所以,如果当前系统正在处理一个中断,而此时另一个中断到来了,系统也是不会立即响应的,而只是等处理完当前的中断之后,才会处理后来的中断。一般的CPU进入中断后都会去进行压栈操作,因为栈就是函数的现场,保护了栈内容,中断退出的时候只需要恢复栈数据就可以恢复到程序执行的状态了。在允许中断嵌套的实时操作系统中,中断也是基于优先级的,允许高优先级中断抢断正在处理的低优先级中断,所以,如果当前正在处理更高优先级的中断,即使此时有低优。原创 2022-11-14 10:40:08 · 9344 阅读 · 0 评论 -
【ARM Linux 内存管理入门及渐进 3 - CMA】
的page说明该页面上的数据是可以迁移的。一开始,CMA area的概念是全局的,通过内核配置参数和命令行参数,内核可以定位到Global CMA area在内存中的起始地址和大小(注:这里的Global的意思是针对所有的driver而言的)。具体有多少个CMA area是编译时决定了,而具体要配置多少个CMA area是和系统设计相关,你可以为特定的驱动准备一个CMA area,也可以只建立一个通用的CMA area,供多个驱动使用(本文重点描述这个共用的CMA area)。原创 2022-11-16 14:25:40 · 504 阅读 · 0 评论 -
【ARM Linux 内存管理入门及渐进5 - ioremap】
ARM Linux 引入设备树特性后,一些支持设备树的设备驱动不再使用直接 ioremap(),改用 drivers/of/address.c/of_iomap(),of_iomap() 的内部仍然会调用 ioremap()各字段具体含义可参照ARMv8手册中对内存属性的描述,内存可以分为DEVICE和NORMAL两大类型以及Device memory依据是否可合并等属性。上面ioremap_xxx 接口中用到的属性参数主要是。从上面的接口定义看,除了addr和size外还有一个。原创 2022-11-21 19:53:32 · 1869 阅读 · 0 评论 -
【ARMv8/v9 异常模型入门及渐进 6.1 -- linux 缺页异常处理流程详细介绍】
但是在ARM32的时候,TTBR1寄存器未使用,因为TTBR0和TTBR1寄存器只支持2G,1G,512M等,但是ARM32虚拟地址空间的划分比例为1:3,用户空间是3G,内核空间是1G,所以上述寄存器硬件限制无法满足这种通用配置,所以ARM32未使用TTBR1寄存器。为了避免在用户空间和内核空间切换时,切换页表带来的性能损耗,所以,用户空间和内核空间共用一个页表,即用户空间和内核空间具有相同的页表基地址TTBR0。对于current EL的 data abort,可以根据上图1-1中的内容,当。原创 2022-11-18 17:20:30 · 1414 阅读 · 0 评论 -
【ARM Linux 内存管理入门及渐进 4 - 常用接口实现(memcpy/copy_to_user)】
Linux 内核的拷贝函数也不是一开始就是这么好的性能,在 内核3.14 之前 Linux 尚且没有完善对 ARM64 架构的支持,系统的内存拷贝函数就是一个简单的 c 语言版本,也就是目前内核中的通用拷贝函数。当然是有的,那就是用汇编来写,结合上面提到的所有的优化方式,以汇编的形式实现,可以获得最佳性能。我们知道CPU的跳转指令代价很高,因为它会更新整个pipline,所以软件应该尽可能的减少 代码的跳转,上面的代码做完一次 8 字节的拷贝之后就进行一个跳转,那么是否可以做一个简单的优化?原创 2022-11-17 11:17:40 · 1654 阅读 · 0 评论