首页
学习
活动
专区
工具
TVP
发布

人人都是极客

专栏成员
495
文章
902326
阅读量
178
订阅数
ARM SoC漫谈
芯片厂商向客户介绍产品,从硬件角度说地最多的就是功能,性能,功耗和价格。功能这个主要就是看芯片提供了什么接口,比如闪存,内存,PCIe,USB,SATA,以太网等,还看内部有什么运算模块,比如浮点器件,解码器,加解密,图形加速器,网络加速器等等。性能,对CPU来说就是测试程序能跑多少分,比如Dhrystone,Coremark,SPEC2000/2006等等。针对不同的应用,比如手机,还会看图形处理器的跑分;又比如网络,还会看包转发率。当然,客户还会跑自己的一些典型应用程序,来得到更准确的性能评估。功耗就是在跑某个程序的时候,整个芯片的功率是多少瓦。通常,这时候处理器会跑在最高频率,但这并不意味着所有的晶体管都在工作,由于powergating和clock gating的存在,那些没有被用到的逻辑和片上内存块并没在完全耗电。我看到的芯片公司给出的处理器最大功耗,通常都是在跑Dhrystone。这个程序有个特点,它只在一级缓存之上运行,不会访问二级缓存,不会访问内存。这样得出的其实并不是真正的最大功耗。但是从实际经验看,没有应用程序能让CPU消耗更高的能量,所以这么测量最大功耗也没什么错。当然,作为整体的芯片功耗,还得包括各种加速器和接口,尤其是会被用到的模块。
刘盼
2024-04-02
4540
深入理解 kernel panic 的流程
我们在项目开发过程中,很多时候会出现由于某种原因经常会导致手机系统死机重启的情况(重启分Android重启跟kernel重启,而我们这里只讨论kernel重启也就是 kernel panic 的情况),死机重启基本算是影响最严重的系统问题了,有稳定复现的,也有概率出现的,解题难度也千差万别,出现问题后,通常我们会拿到类似这样的kernel log信息(下面log仅以调用BUG()为例,其它异常所致的死机log信息会有一些不同之处):
刘盼
2023-01-05
2K0
为U-boot 添加新的board
uboot需要支持众多的硬件,并且具有良好的可扩展性、可移植性和可维护性,因此必须要有一个设计良好的代码架构。代码架构的设计总是与软硬件架构密不可分的,在硬件层面嵌入式系统的核心一般包括以下层次:
刘盼
2023-01-05
1.4K2
Uboot 大全 | uboot 启动流程(一)
atf基本启动流程为:BL1 – BL2 – BL31 – BL32 – BL33(uboot),即在bl32启动完成后再启动uboot,uboot作为启动链中作为最后一级镜像,用于启动最终的os。Atf是arm为了增强系统安全性引入,只支持armv7和armv8架构的可信固件。而uboot是通用的嵌入式系统引导程序,其可以支持包含arm在内的多种处理器架构,如mips、riscv、powerpc以及x86等,且其历史比atf更加久远。因此默认情况下uboot并不需要与atf共同启动,而其自身就被设计为支持完整的多级启动链,该启动链被设计为最多可包含spl、tpl和uboot三个阶段。接下来我们通过一些典型启动流程,来看下这些阶段的一些组合关系吧。
刘盼
2023-01-05
4.3K0
虚拟化技术的总结
虚拟化是一种广泛使用的技术,支撑了几乎所有现代云计算和企业基础设施。开发人员基于虚拟化功能可以在单台机器上运行多个操作系统,从而完成软件测试而不会存在破坏主计算环境的风险。虚拟化为芯片和基础设施带来了许多特性,包括良好的隔离性、不同资源的可及性、同一资源的工作负载平衡、隔离保护等。
刘盼
2023-01-05
1.4K0
入门篇-GPU知识概览
做了一段时间的 GPU 固件和驱动开发,加上平时学习的一些零散的知识,最近打算整理,将这些做成一页文章。 主线任务:梳理 GPU 的知识大纲 =====> 对标 GPU入门工程师 支线任务:了解 GPU 硬件工作机理 支线任务:掌握 GPU 固件工作机理 =====> 对标 GPU固件工程师 支线任务:了解 GPU 驱动 和 GPU 固件的交互接口 支线任务:掌握 GPU 驱动工作机理 =====> 对标 GPU驱动工程师 支线任务:了解 GPU 驱动 和 LIBDRM 的交互接口
刘盼
2023-01-05
1.9K0
ARM平台下独占访问指令LDREX和STREX的原理
为了实现线程间同步,一般都要在执行关键代码段之前加互斥(Mutex)锁,且在执行完关键代码段之后解锁。为了实现所谓的互斥锁的概念,一般都需要所在平台提供支持。
刘盼
2023-01-05
1.1K0
通过小实验让你彻底理解VMA
作者简介: Loopers,码龄11年,喜欢研究内核基本原理 在32位机器上,总共有4G大小的虚拟地址空间,其中0-3G是给应用程序使用,3-4G是给内核使用。 在64位机器上,目前还不完全支持64位地址宽度,常见的地址长度有39(512GB)和48位(256TB),目前我使用的模拟器采用的是39位的地址宽度,这样的话用户空间和内核空间各占512GB的地址空间。 当一个应用程序在用户跑起来的时候,它内部是如何正常运行的,通过一个简单的例子详细说明下。 #include <stdio.h> #include 
刘盼
2022-09-28
6900
为什么mmap之后访问地址仍然发生了缺页异常?
作者简介: viho he,ARM64专家,现供职于某芯片公司,专注于Linux内核、BSP、ARM64虚拟化以及与ARM64 SoC相关的各种底软技术 问题简述 在笔者的开发平台上,应用程序使用ION申请cma内存,并用mmap映射到用户地址空间去做写操作。 重点代码摘要如下: 客户希望提高 node->var = some_value; 这里的访问效率(实际代码要复杂些,是申请了一个大数组并往里循环读写数据)。 第一轮分析 首先用perf分析应用程序行为,发现程序在运行时产生了不少page fault
刘盼
2022-09-22
1.4K0
内核启动时为什么要做线性映射?
作者简介: 周文嘉: 曾服务于ARM、阿里系子公司、HTC等公司。10年以上工作经验,主要从事系统软件开发,涵盖:系统库开发、指令集优化、Linux内核开发等。累计为某些开源社贡献过一定数量的patch。 在 Linux 内核启动之后,对于 32 位的系统来说,他会把 0 ~ 896M 这部分低端内存(low memory)都做线性映射,不管这部分内存是否需要用到。对于 64 位的系统,内核会把所有的物理(一般情况如此,除非物理内存特别大)内存都映射出来。这么做的目的是啥?这里先说结论,然后分析代码。 这么
刘盼
2022-08-26
7350
招聘内核工程师 | 初创芯片公司
公司介绍 遇贤微电子始创于2020年,团队云集了CPU产业专家及技术骨干,致力于为中国市场提供国产云计算高性能CPU芯片,拉动国内云计算架构CPU切换趋势。产品基于ARM架构,采用先进制程技术,自研部分核心IP,与客户软件生态协同发展,具备一流竞争力。 初创公司+ 软件部现在由CEO直接领导负责 = 待遇没有天花板 Linux 内核工程师 工作地: 上海/深圳/西安 岗位职责: 负责针对需求定制Linux内核,结合业务需求移植、开发内核新功能; 负责对crash等疑难问题分析定位; 负责对Linux内核进行
刘盼
2022-07-27
5510
训练营:ARM安全架构之Trustzone-TEE实战
01 讲师介绍 baron,九年手机安全/SOC底层安全开发经验。擅长trustzone/tee安全产品的设计和开发。是国内较早一批做TEE的,对商用TEE、开源TEE研究也比较深入,对未来的安全架构/安全趋势也有着明确的看法... 02 课程背景 2021年ARM又推出了ARMv9架构,系统软件架构也在悄无声息地发生变化。在这种架构中,强调的是隔离技术,包括资源的隔离、运行时隔离,特权操作系统的权限也变得越来越小… 不管您是什么领域,ARM服务器、汽车电子、手机或者是其它设备终端,安全都是其中的一个重要环
刘盼
2022-07-12
1.3K0
用 Trace32 分析内核死机
dmesg 初步分析 [  423.400073] Unable to handle kernel NULL pointer dereference at virtual address 00000008 [  423.400075] [silead finger_interrupt_handler 505]:S IRQ 19 , GPIO 12 state is 0 [  423.400083] [silead finger_interrupt_handler 506]:state is 0 [  42
刘盼
2022-06-07
2.2K0
Linux 启动时间优化实战,2.41 秒启动应用!
劳动节,更个文吧,祝大家都劳有所获。 今天看了一个关于启动优化的讲座,简单总结一下。 本文的目标是尝试一些比较简单有效的方法,并不会覆盖所有的优化技巧。感兴趣的伙伴可以关注我视频号,后面准备用直播的方式和大家交流。 目标系统 硬件: Beagle Bone Black (Cortex A8) USB 摄像头 + LCD 软件: Linux 5.1 + Buildroot rootfs FFmpeg,用于采集视频并解码到 LCD。 点击查看大图 当前启动时间: 从上电到 LCD 显示第一帧图像:9.4
刘盼
2022-05-05
3.2K0
内核中断子系统介绍
很多人在学习中断子系统的过程中,在对基本概念与整体不太了解的情况下,过早的陷入了各种架构的实现细节,如同盲人摸象。这里主要给大家明确中断的各个基本概念,希望从这个角度能让大家更好的理解中断子系统。
刘盼
2022-04-26
1.2K0
推荐几个朋友的号
大家周一好 ,我是 Peter,今天给大家推荐几位嵌入式行业不错的原创技术博主,有需要的可以多看看! 一口Linux 公众号「一口Linux」号主彭老师曾就职于中兴等全球知名企业,曾任华清远见教学总监。彭老师精通Linux系统编程、计算机网络、ARM、Linux驱动、龙芯、物联网,已建立多个高质量粉丝群,耐心解答问题,在读者中有非常好的反响。《从0学Linux驱动第一期》视频共32期已经更新完毕,并发布于B站,ARM 0基础入门系列视频也正在更新中。 一口Linux / 原创文章汇总 一口Linux /
刘盼
2022-03-21
5400
ARM64 的多核启动流程分析
工作中遇到的多核 ARM CPU 越来越多,总结分享一些多核启动的知识,希望能帮助更多小伙伴。 在 ARM64 架构下如果想要启动多核,有 spin-table 和 psci 两种方式,下面针对这两种启动流程进行分析。 代码版本 boot-wrapper-aarch64 version : 28932c41e14d730b8b9a7310071384178611fb32 linux v5.14 多核 CPU 的启动方式 嵌入式系统的启动的基本流程是先运行 bootloader ,然后由 bootloade
刘盼
2022-03-10
2.2K0
一文搞懂 | ARM MMU
MMU概念介绍 MMU分为两个部分: TLB maintenance 和 address translation MMU的作用,主要是完成地址的翻译,无论是main-memory地址(DDR地址),还是IO地址(设备device地址),在开启了MMU的系统中,CPU发起的指令读取、数据读写都是虚拟地址,在ARM Core内部,会先经过MMU将该虚拟地址自动转换成物理地址,然后在将物理地址发送到AXI总线上,完成真正的物理内存、物理设备的读写访问。 下图是一个linux kernel系统中宏观的虚拟地址到物
刘盼
2022-03-04
2.8K0
CPU 进入 IDLE 都做了啥?
每一个 CPU 核心都会有一个 idle 进程,idle 进程是当系统没有调度 CPU 资源的时候,会进入 idle 进程,而 idle 进程的作用就是不使用 CPU,以此达到省电的目的。
刘盼
2022-01-27
2.4K0
Linux 内核进程管理之基础
这是进程在内核中的结构形式,那么内核是如何来以树形结构管理描述这些进程的呢?用来描述进程的数据结构,可以理解为进程的属性。比如进程的状态、进程的标识(PID)等,都被封装在了进程描述符 task_struct 这个数据结构中。
刘盼
2021-04-29
1.3K0
点击加载更多
社区活动
【纪录片】中国数据库前世今生
穿越半个世纪,探寻中国数据库50年的发展历程
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档