<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[M0XFFF的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/M0XFFF</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; M0XFFF]]></copyright><item><title><![CDATA[VMware安装虚拟机ubuntu16环境配置]]></title><link>https://blog.youkuaiyun.com/M0XFFF/article/details/128038373</link><guid>https://blog.youkuaiyun.com/M0XFFF/article/details/128038373</guid><author>M0XFFF</author><pubDate>Fri, 25 Nov 2022 17:33:44 +0800</pubDate><description><![CDATA[ubuntu16调试linux安装配置]]></description><category></category></item><item><title><![CDATA[ARM Development Studio 2021 FVP调试Linux内核代码]]></title><link>https://blog.youkuaiyun.com/M0XFFF/article/details/127108259</link><guid>https://blog.youkuaiyun.com/M0XFFF/article/details/127108259</guid><author>M0XFFF</author><pubDate>Sat, 08 Oct 2022 10:29:30 +0800</pubDate><description><![CDATA[如何使用ARM DS2021 FVP调试Linux内核代码，包含内核源码构建、环境配置、代码调试等相关内容。]]></description><category></category></item><item><title><![CDATA[arm交叉编译器添加环境变量]]></title><link>https://blog.youkuaiyun.com/M0XFFF/article/details/122427365</link><guid>https://blog.youkuaiyun.com/M0XFFF/article/details/122427365</guid><author>M0XFFF</author><pubDate>Tue, 11 Jan 2022 11:20:24 +0800</pubDate><description><![CDATA[在为ARM交叉编译器添加环境变量时，要注意是添加的是用户环境变量，还是root环境变量。
添加用户环境变量
//修改环境变量，使用 VI打开 /etc/profile文件，命令如下
sudo vi /etc/profile
//打开 /etc/profile以后，在最后面输入如下所示内容：
export PATH=$PATH:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin

注意要使用自已的文件路径
添加root环]]></description><category></category></item><item><title><![CDATA[ARM LDR和ADR指令]]></title><link>https://blog.youkuaiyun.com/M0XFFF/article/details/122086912</link><guid>https://blog.youkuaiyun.com/M0XFFF/article/details/122086912</guid><author>M0XFFF</author><pubDate>Wed, 22 Dec 2021 16:06:30 +0800</pubDate><description><![CDATA[讲的比较好的一篇帖子，ADR和LDR区别的比较清除：
LDR和ADR的区别
Load/Store指令
ARM属于RISC指令集，CPU无法对内存的数据进行直接操作，只能通过Load/Store指令来实现：当我们需要对内存中的数据进行操作时，首先将这个数据从内存中加载到寄存器，在寄存器中进行数据处理，最后将结果重新存储到内存中。使用指令：

LDR X1,[X0] //将x0的值作为地址，将该地址的数据保存到寄存器x1

LDR X1,LOOP  //将LOOP地址上的数据送给X1

STR X1,[X0] ]]></description><category></category></item><item><title><![CDATA[ARMv8处理器异常处理]]></title><link>https://blog.youkuaiyun.com/M0XFFF/article/details/122056303</link><guid>https://blog.youkuaiyun.com/M0XFFF/article/details/122056303</guid><author>M0XFFF</author><pubDate>Tue, 21 Dec 2021 10:50:51 +0800</pubDate><description><![CDATA[本章重点分析处理器产生异常的原因、在发生异常时的动作以及异常返回时的动作。ARMv8有四种异常等级EL0/1/2/3，以及两种安全模式，这部分的内容我会在下一章节详细讲解，本章针对于异常的通用概念。
1、AArch64异常和中断处理的定义
异常是指需要特权软件（异常处理程序）执行某些操作以确保系统顺利运行的条件或系统事件。它们会导致执行流程中断。

区分异常和中断的一种方法是：异常是一个事件（分支或跳转指令除外），它会导致指令的正常顺序执行被修改；而中断是一种非直接由程序执行引起的异常，通常用处理器内核外部]]></description><category></category></item><item><title><![CDATA[ARMV8_AARCH64裸机启动流程分析]]></title><link>https://blog.youkuaiyun.com/M0XFFF/article/details/122048192</link><guid>https://blog.youkuaiyun.com/M0XFFF/article/details/122048192</guid><author>M0XFFF</author><pubDate>Mon, 20 Dec 2021 20:06:15 +0800</pubDate><description><![CDATA[本篇针对于ARMV8架构下64位模式的裸机启动代码流程分析，重点介绍裸机启动代码bootcode.s。
重点了解ARM处理器从上电到跳转到main函数的过程！！！
1、寄存器初始化
首先我们需要初始化相关寄存器：

通用寄存器；
SP寄存器（stack pointer）；
System control registers.（控制寄存器）。

1.1、初始化通用寄存器
ARM处理器使用一些非复位触发器。这可能会导致模拟中出现X传播问题。寄存器初始化有助于减少问题的可能性。寄存器的低32位用w来表示。
注：由于]]></description><category></category></item><item><title><![CDATA[Ubuntu平台通过QEMU模拟ARM多核CPU教程]]></title><link>https://blog.youkuaiyun.com/M0XFFF/article/details/122047899</link><guid>https://blog.youkuaiyun.com/M0XFFF/article/details/122047899</guid><author>M0XFFF</author><pubDate>Mon, 20 Dec 2021 19:05:15 +0800</pubDate><description><![CDATA[1 环境及软件包准备
本教程是在ubuntu系统上进行的模拟，ubuntu系统可以安装在物理机或虚拟机上，考虑性能问题，优先选择物理机安装。本教程ubuntu系统选用软件版本如下表所示：

在进行模拟之前，需提前将软件包下载并上传至ubuntu目录（可选任意目录，本教程选择/home/xt目录），如下所示：

2 ubunut 操作系统更换国内源
为了提高下载速度，建议将ubuntu源更换成国内源，本教程选择更换成阿里源。更换步骤如下：
2.1 登录ubuntu后台，并切换成root用户
2.2 依次执行如]]></description><category></category></item><item><title><![CDATA[ARMGCC-C语言函数内嵌汇编]]></title><link>https://blog.youkuaiyun.com/M0XFFF/article/details/122035027</link><guid>https://blog.youkuaiyun.com/M0XFFF/article/details/122035027</guid><author>M0XFFF</author><pubDate>Mon, 20 Dec 2021 09:52:11 +0800</pubDate><description><![CDATA[前言
最近在写ARMV8架构下的测试代码，对于CORTEX-A76核的测试代码避免不了C语言函数内嵌汇编的编写，此文就对C语言函数内嵌汇编的规则进行说明，并配有实例。
运行环境：IDE:ARM-DS5,编译器：ARM C Compiler6，target:ARMV8-AARCH64
ATPCS规则
在汇编程序调用C语言函数、C语言函数调用汇编程序和C语言函数内嵌汇编中，都会涉及到子程序的调用、子程序的返回和参数传递等问题。在ARM体系结构中，使用ATPCS规则来约束这些参数的传递，规则内容如下：


子程序]]></description><category></category></item></channel></rss>