Atomic operation in aarch64

作者:schspa 发布于:2021-11-15 19:42 分类:ARMv8A Arch

在Linux内核中看到下面这句话:

At least on ARM, pgprot_noncached causes the
memory to be mapped strongly ordered, and atomic operations on strongly ordered
memory are implementation defined, and won't work on many ARMs such as omaps.

所以, 为什么对用户non-cached的内存,部分平台不支持原子操作?

阅读全文>>

标签: 原子操作 atomic arm64 aarch64

评论(5) 浏览(5080)

X-011-UBOOT-使用bootm命令启动kernel(Bubblegum-96平台)

作者:wowo 发布于:2016-9-9 22:18 分类:X Project

我们在“X-010-UBOOT-使用booti命令启动kernel(Bubblegum-96平台)”中介绍了使用u-boot booti指令加载并运行ARM64 Image格式kernel的方法。与此同时,我们在“u-boot FIT image介绍”介绍了一种新的uImage(u-boot Image)格式----FIT uImage。本文将基于这两篇文章,介绍FIT uImage的编译、启动等方法,目的有二:

1)作为“u-boot FIT image介绍”的实践篇。

2)以后“X Project”和u-boot有关的image格式,将统一使用FIT uImage。

阅读全文>>

标签: arm64 u-boot uboot bootm fit uImage its itb

评论(8) 浏览(13431)

X-010-UBOOT-使用booti命令启动kernel(Bubblegum-96平台)

作者:wowo 发布于:2016-8-24 22:34 分类:X Project

X-009-KERNEL-Linux kernel的移植(Bubblegum-96平台)”中介绍了ARM64平台下,配置、编译、生成Linux kernel Image文件的方法。Image文件生成后,我们可以借助DFU工具将它下载到板子的DRAM中,然后借助u-boot boot有关的命令,加载并运行之(这个过程也称作引导)。

针对不同的Kernel image格式,u-boot提供了不同的boot指令,例如:

booti,引导ARM64 kernel image----Image;

bootz,引导ARM kernel image----zImage;

bootm,引导u-boot自定义的kernel image----uImage。

由于u-boot自定义的image格式(uImage),有着强大而又复杂的功能,本文暂时不想涉及,因此我们以booti命令为例,介绍u-boot的引导过程。

阅读全文>>

标签: arm64 u-boot dtb bootm booti Image

评论(2) 浏览(25243)

ARM64架构下地址翻译相关的宏定义

作者:linuxer 发布于:2016-8-12 18:50 分类:内存管理

本文主要分析linux-4.4.6/arch/arm64/include/asm目录下的若干和地址翻译相关的头文件(例如page.h、 pgtable.h、pgtable-hwdef.h、pgtable-prot.h等文件)中的各种宏定义以及相关的ARM64硬件知识。硬肯ARM ARM文档有时候太费劲,结合linux源代码会让学习变得简单一些。

阅读全文>>

标签: arm64 地址翻译

评论(5) 浏览(16576)

u-boot启动流程分析(1)_平台相关部分

作者:wowo 发布于:2016-5-19 22:38 分类:u-boot分析

本文将结合u-boot的“board—>machine—>arch—>cpu”框架,介绍u-boot中平台相关部分的启动流程。并通过对启动流程的简单分析,掌握u-boot移植的基本方法。

注1:本文所使用的u-boot版本,是2016/4/23从u-boot官网(git://git.denx.de/u-boot.git)导入的一个快照,具体可参考“https://github.com/wowotechX/u-boot”。

注2:为了方便,本文将“平台相关部分的启动流程”,定义为从u-boot启动开始,到board有关的C代码被执行为止。后续的部分,会在下一篇文章中分析。


阅读全文>>

标签: arm64 ARM boot u-boot spl

评论(38) 浏览(57033)

ARM64的启动过程之(六):异常向量表的设定

作者:linuxer 发布于:2015-11-24 18:22 分类:ARMv8A Arch

本文主要描述了4.1.10内核初始化过程中如何初始化异常向量表。当然,首先需要准备一些异常的基础知识,这主要在第二章,如果你非常熟悉 ARM64的异常,那么可以忽略这个章节。 第三章描述了ARM64上各种形形色色的异常,第四章描述了ARM64上硬件提供的协助,最后一章描述了代码过程。

为了简化,本文对所描述的异常进行了限制:

1、所有的exception level的运行状态都是AArch64,不考虑异常发生在AArch32 excution state的时候

2、不考虑支持security extension,也就是说EL3状态的异常处理也不在本文描述

3、不考虑virtualization的支持,也就是说EL2的异常处理不会在本文描述

一句话总结,本文主要描述EL0和EL1这两个exception level下的异常向量表的设定。

阅读全文>>

标签: arm64 exception

评论(19) 浏览(64753)

ARM64的启动过程之(五):UEFI

作者:linuxer 发布于:2015-10-30 19:27 分类:ARMv8A Arch

在准备大刀阔斧进入start_kernel之际,我又重新review了一下head.S文件,看看是否有一些遗漏的知识点,很不幸,看到了 CONFIG_EFI这个配置项。当然,在一年前阅读kernel代码的时候就了解过相关的内容,但是,做为一个嵌入式工程师总是或多或少对其有些排斥, 因此习惯性的忽略掉CONFIG_EFI相关的代码,逃避总不是办法,在本文中,我们一起来探讨ARM64平台上UEFI相关的内容。

阅读全文>>

标签: arm64 UEFI

评论(5) 浏览(45279)

ARM64的启动过程之(一):内核第一个脚印

作者:linuxer 发布于:2015-10-10 15:06 分类:ARMv8A Arch

kernel的整个启动过程涉及的内容很多,不可能每一个细节都描述清楚,因此我打算针对部分和ARM64相关的启动步骤进行学习、 整理,并方便后续查阅。本文实际上描述在系统启动最开始的时候,bootloader和kernel的交互以及kernel如何保存bootloader 传递的参数并进行校验,此外,还有一些最基础的硬件初始化的内容。

本文中的source来自4.1.10内核,这是一个long term的版本,后续一段时间的文章都会基于这个long term版本进行。

阅读全文>>

标签: arm64 初始化

评论(41) 浏览(81974)

ARMv8-a架构简介

作者:wowo 发布于:2015-7-7 22:31 分类:ARMv8A Arch

ARMv8(当前只有A系列,即ARMv8-A)架构,是ARM公司为满足新需求而重新设计的一个架构,是近20年来,ARM架构变动最大的一次。它引入的Execution State、Exception Level、Security State等新特性,已经和我们对旧的ARM架构的认知,有很大差距了。

因此,本文从ARMv8-A产生的背景开始,对它进行一个简单的介绍,使大家从整体上,对ARMv8有一个简单的了解。

阅读全文>>

标签: arm64 armv8-a exception_level;security;virtualization

评论(37) 浏览(85980)

Linux cpuidle framework(3)_ARM64 generic CPU idle driver

作者:wowo 发布于:2015-1-6 23:13 分类:电源管理子系统

本文以ARM64平台下的cpuidle driver为例,说明怎样在cpuidle framework的框架下,编写cpuidle driver。另外,本文在描述cpuidle driver的同时,会涉及到CPU hotplug的概念,因此也可作为CPU hotplug的引子。

阅读全文>>

标签: driver arm64 dts cpuidle

评论(13) 浏览(21152)

Copyright @ 2013-2015 蜗窝科技 All rights reserved. Powered by emlog