- 博客(163)
- 资源 (4)
- 收藏
- 关注
原创 五、翻译控制寄存器(TCR_ELn、VTCR_EL2)与页表基地址(TTBR*_ELn、VTTBR_ELn)
•地址对齐:位A[47:x]直接对应于翻译表基地址中的相应位;•所有针对非安全IPA空间的安全EL1&0翻译机制的第二阶段翻译表遍历都将映射到安全PA(Physical Address)空间。•所有针对非安全IPA空间的安全EL1&0翻译机制的第二阶段翻译都会访问安全PA(Physical Address)空间。•所有针对非安全IPA空间的安全EL1&0翻译机制的第二阶段翻译表遍历都将映射到非安全PA空间。•所有针对非安全IPA空间的安全EL1&0翻译机制的第二阶段翻译都会访问非安全PA空间。
2024-11-01 14:57:22 449
原创 六、armv8 安全状态与非安全状态
EL3是sec-world和non-sec world之间的gateway, 也就是说sec 想变成 non-sec,一定要经过EL3这条路。这同样可以说明跑在EL3下的管理程序为什么叫做 Secure monitor。根据这张图片,EL1 sec如何变成 EL1 non-sec?除非从EL3改变了安全状态,否则安全状态不会随着异常级别的更改而更改。
2024-10-31 15:41:11 330
原创 四、虚拟化配置寄存器(HCR_EL2)
在没有引入VHE模式下type2的hypervisor,host的kernel运行在el1而虚拟化拓展部分运行在el2上,分层设计在系统运行时会造成很多不必要的上下文切换,带来不少设计上的复杂性和性能开销。此时只需要HCR_EL2.H2E == 1这一比特被置位,即vhe使能,那Host OS对所有EL1寄存器的访问操作都被硬件转换为对相应EL2寄存器的访问。但是,重定向又会带来一个新的问题,那就是Hypervisor完全可能在某些情况下,例如当执行任务切换时, 访问真正EL1的寄存器。
2024-10-30 15:50:29 265
原创 三、系统控制寄存器(SCTLR_ELn)
系统控制寄存器(SCTLR)是一个用来控制标准内存、配置系统能力、提供处理器核状态信息的寄存器。包括 SCTLR_EL1、 SCTLR_EL2和 SCTLR_EL3。
2024-10-30 13:57:22 144
原创 二、ARMv8寄存器之系统寄存器
例如,单独的辅助控制寄存器(ACTLR)以ACTLR_EL1,ACTLR_EL2和ACTLR_EL3的形式存在。AArch64中系统寄存器会以”_ELn“的方式名命,寄存器的名称会告诉你可以访问它的最低异常级别。MSR TTBR0_EL1, x0 // 把x0 的值写入TTBR0_EL1寄存器。MRS x0, TTBR0_EL1 // 把 TTBR0_EL1 的值保存到x0。_EL1:处理器处于EL1、EL2、EL3时可以访问。TTBR0_EL1可以从EL1、EL2和EL3访问。
2024-10-30 13:43:02 800
原创 一、ARMv8寄存器之通用、状态、特殊寄存器
通用寄存器。这类寄存器主要是用来暂存数据和参与运算。通过load\store指令操作。状态寄存器。AArch64体系结构使用PSTATE寄存器表示当前处理器状态。特殊寄存器。有专门的用途,用于控制处理器的行为,或表示CPU的状态。系统寄存器。除了以上寄存器,ARMv8体系结构还定义了很多系统寄存器,用来完成对处理器不同功能的配置。对应ARMv7的cp15寄存器。
2024-10-30 11:19:24 862
原创 ARM 寄存器学习:(一)arm多种模式下得寄存器
的处理器模式,在每一种处理器模式中可见的寄存器包括 15 个通用寄存器( R0~R14)、一个或两个(User和Sys不是异常模式,没有spsr寄存器)状态寄存器(cpsr和spsr)、程序计数器( PC )。
2024-03-14 17:13:12 657
原创 ARM 汇编指令:(七) STM/LDM多寄存器加载/多存储指令
ARM 微处理器支持这四种类型的堆栈工作方式,一般使用那种栈都是由编译器决定的,arm_gcc是使用的满递减栈,那么我们写.s也按照满递减栈才方便。reglist :表示寄存器列表,可以包含多个寄存器,它们使用“,”隔开,如{R1,R2,R6-R9},寄存器由小到大排列;不能在USR模式和SYS模式下使用该符号,因为user和svc模式是公用r0-r14的,所以这两个模式下都不能用^。LDM寄存器列表如果包含R15(PC)时,那么除了正常的多寄存器传送外,考验大家理解能力的地方来了,专心点,嘿嘿!
2024-03-13 18:02:56 1409
原创 ARM 汇编指令:(六) B 跳转指令
能够影响指令条件码的是CRSP的那几位,有符号减法,也会影响到CRSP,所以这里跳转指令B的条件码是被subs的结果所影响。跳转指令 B 使程序跳转到指定的地址执行程序。指令 BL 将下一条指令的地址复制到 R14()寄存器中,然后跳转到指定地址运行程序。
2024-03-13 15:09:47 2213
原创 ARM 汇编指令:(五)CMP指令
CMP指令是计算机指令集中的一种比较指令,用于比较两个操作数的大小关系或相等性,并根据比较结果设置或更新条件码寄存器(或程序状态字)的标志位。指令格式:CMP 第一操作寄存器:参与比较的第一个数(只能是寄存器)第二操作数:参与比较的第二个数(既可以是寄存器,也可以是立即数)执行CMP指令时,计算机会计算操作数1与操作数2之间的差值,并更新CPSR状态寄存中的标志位。常见的标志位包括零标志位(Z),负标志位(N),进位标志位(C)和溢出标志位(V)。
2024-03-13 14:30:19 5384
原创 ARM 汇编指令:(四) 位运算指令
的结果存放在目标寄存器(目标寄存器=操作数1 & ~操作数2)移指令,实现将寄存器进行左移操作。移指令,实现将寄存器进行右移操作。操作数2的结果存放在目标寄存器。操作数2的结果存放在目标寄存器。操作数2的结果存放在目标寄存器。AND:将操作数1按位。EOR:将操作数1按位。BIC:将操作数1按位。
2024-03-13 12:43:46 1310
原创 ARM 汇编指令:(三)运算处理指令
adds 指令进行加法时,在产生进位时,会改变状态寄存器CPSP的C位,标识本次运算有进位。操作数1和2都必须是寄存器,并且操作数1的寄存器编号不能和目标寄存器一样。32位乘法指令,将操作数1和操作数2相乘的结果给目标寄存器(add用于执行实现两个寄存器或寄存机或寄存器与立即数的。它可以用于整数、浮点数等各种数据类型的加法运算。操作,它可以用于整数、浮点数等各种数据类型的减法运算。SUB指令实现两个寄存器或寄存机或寄存器与立即数的。其实就是计算有符号类型。其实就是计算有符号类型。
2024-03-13 10:40:53 1488
原创 ARM 汇编指令:(二) LDR与STR 单内存访问指令
如果使用ldr伪指令时,后面跟的立即数没有超过8位,那么在实际汇编的时候该ldr伪指令是被转换为mov指令的。#offset是可选的偏移量,用于指定基地址寄存器Rn与实际数据的偏移量。#offset是可选的偏移量,用于指定基地址寄存器Rn与实际数据的偏移量。Rn是基地址寄存器,其中存储了要加载数据的内存地址。Rn是基地址寄存器,其中存储了要存储数据的内存地址。STR指令将寄存器中的数据存储到内存中的指定位置。Rd是目标寄存器,用于存储从内存中加载的数据。Rd是源寄存器,其中存储了要存储到内存的数据。
2024-03-12 15:22:32 4656
原创 ARM 汇编指令 :(一) MOV
Operand2是操作数,即要移动到目标寄存器的值。它可以是另一个寄存器、立即数或寄存器的移位操作。mov word:传送字 :16位;把 16 位立即数放到寄存器的底16位,高16位清0。movs r0, #0 默认结果为零但不影响CPSR的Z位,加上s以后会影响CPSR标志位。中用于将数据从一个位置或寄存器复制到另一个位置或寄存器的指令。3.将一个寄存器里保存的值与一个立即数做逻辑或操作,然后将结果移动到目标寄存器里。mov long : 传送字长 : 32位;Rd是目标寄存器,用于存储要加载的数据。
2024-03-12 14:00:17 2432
转载 expect基础语法
1. Expect基础语法解释1.1 cmd arg arg arg 一条Tcl命令由空格分割的单词组成.其中,第一个单词是命令名称,其余的是命令参数 . 1.2 $foo $符号代表变量的值.在本例中,变量名称是foo. 1.3 [cmd arg] 方括号执行了一个嵌套命令.例如,如果你想传递一个命令的结果作为另外
2015-10-11 20:14:33 21153
转载 缺少动态连接库.so--cannot open shared object file: No such file or directory
总结下来主要有3种方法:1. 用ln将需要的so文件链接到/usr/lib或者/lib这两个默认的目录下边
2013-10-31 16:22:54 2611
转载 tcgetattr函数与tcsetattr函数
为了便于通过程序来获得和修改终端参数,Linux还提供了tcgetattr函数和tcsetattr函数。tcgetattr用于获取终端的相关参数,而tcsetattr函数用于设置终端参数。这两个函数的具体信息如表6.2所示。表6.2 tcgetattr函数和tcsetattr函数头文件函数形式i
2013-09-22 17:28:57 3276
原创 MySQL的C语言API接口
1、首先当然是连接数据库,函数原型如下:MYSQL * STDCALL mysql_real_connect(MYSQL *mysql, const char *host,const char *user,const char *passwd,const char *db,unsigned int port,const char *unix_socket,unsign
2013-08-13 10:00:16 1062
原创 使用FTP出现的3种常见错误
一、530 Permission denied1.首先检查系统是否开启了vsftp服务,如果没有开启,先开启该服务。 方法1.setup--系统服务--自启动服务 方法2.界面设置,service vsftpd restart 2.查看配置vsftpd的配置,配置文件中限定了vsftpd用户连接控制配置。vsftpd.ftpusers:位于/etc目录下。它指定了哪
2013-08-07 11:20:15 3883
原创 FTP命令大全
FTP命令是Internet用户使用最频繁的命令之一,熟悉并灵活应用FTP的内部命令,可以大大方便使用者,并收到事半功倍之效。 如果你想学习使用进行后台FTP下载,那么就必须学习FTP指令。 FTP的命令行格式为: ftp -v -d -i -n -g [主机名] , 其中 -v 显示远程服务器的所有响应信息; -n 限制ftp的自动登录,即不使用;.n etrc文件; -d 使用调试方式; -g
2013-08-06 14:31:20 873
原创 友善之臂 TINY210網絡配置
配置文件 /etc/fa_ethernet.conf内容控制以太网开机时的行为:------------------------------开机自动DHCP:REQUEST ETHERNETCONNECT DHCP 0.0.0.0 0.0.0.0开机自动STATIC IP:REQUEST ETHERNETCONNECT STATICIP ipAddress ne
2013-08-06 11:14:48 2455
转载 linux驱动开发流程
在这里,以字符设备为例,分析其驱动程序的框架:一、编写驱动程序的初始化函数。驱动程序的初始化在函数XXX_init()中完成,包括对硬件初始化、中断函数、向内核注册等。a) 首先要理解硬件结构,搞清楚其功能、接口寄存器以及CPU怎么访问控制这些寄存器等。b) 其次要明白如何把该设备驱动注册到内核中。设备驱动程序可以直接编进内核(在移植内核时,就将该驱
2013-07-22 10:55:40 9870
原创 2011-02-20 19:17 Arm Linux下如何保存设置的系统时间
问:Linux下如何保存设置的系统时间?答:分以下步骤进行:(1)通过开发板控制台设置开发板的当前系统时间:date [MMDDhhmm[[CC]YY][.ss]]例如:date 010410462008(2)将系统时间写入RTC:hwclock -w读出检验一下,写入是否正确: hwclock -r(3)修改开发板根文件系统中的/etc/init.d/rc
2013-07-18 13:00:23 837
转载 6410SPI控制器
********************************LoongEmbedded********************************作者:LoongEmbedded(kandi)时间:2011.12.07类别:WINCE驱动开发********************************LoongEmbedded**********************
2013-06-17 17:18:04 782
转载 make 出现的错误
最近在学习linux中,一开始自己是用Ubuntu入手,Ubuntu用起来相当的方便,环境的搭建只用个sudo apt-get intsall 就OK了。但是公司装的是centos,并且作为学习来说遇到的问题越多越好,所以决定还是装个centos。当我装好centos6.2后问题就来了,我们这里用的是无线,不能联网啊。 首要解决的问题就是上网了,作为linux菜鸟的我就开始了各
2013-06-14 17:28:05 2322
转载 Makefile:3:***遗漏分隔符。停止 。原来如此..... .
我编写makefile的时候出现了这个问题上网查了查,都说是gcc ,g++ ,rm,cp前面是tab,不是空格我改了两边,都是用tab,但是编译时还是提示出现了错误Makefile:3:***遗漏分隔符。停止我才意识到在getit的编译->首选项:"编辑器"选项页下,有一个"制位表",有一个复选框:插入空格代替制表符(s)若选中的话,编辑器将会以空格代替“制位表”
2013-06-14 17:27:06 7904
转载 linux内核驱动模块加载方式
在类unix操作系统中,驱动加载方式一般分为:动态加载和静态加载,下面分别对其详细论述。一、动态加载 动态加载是将驱动模块加载到内核中,而不能放入/lib/modules/下。 在2.4内核中,加载驱动命令为:insmod ,删除模块为:rmmod; 在2.6以上内核中,除了insmod与rmmod外,加载命令还有modprobe; insmod与
2013-06-14 15:27:47 753
转载 [经典]Linux内核中ioremap映射的透彻理解 .
几乎每一种外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器、状态寄存器和数据寄存器三大类,外设的寄存器通常被连续地编址。根据CPU体系结构的不同,CPU对IO端口的编址方式有两种: (1)I/O映射方式(I/O-mapped) 典型地,如X86处理器为外设专门实现了一个单独的地址空间,称为"I/O地址空间"或者"I/O端口空间",CPU通过专门的I/O指令(如X86的
2013-06-13 09:00:17 771
原创 spi驱动比较好的文章
http://blog.chinaunix.net/uid/27041925/cid-175294-list-3.html
2013-06-03 10:46:53 669
转载 什么是Linux内核模块
什么是模块?从代码的特征上来看,模块就是可完成一项独立功能的一组函数的集合。从使用特征上来看,它在被需要时可以随时被安装,而在不需要时又可以随时被卸载。总之,模块是一个为内核(从某种意义上来说,内核也是一个模块)或其他内核模块提供使用功能的代码块。准确地说,模块就是一个已编译但未连接的可执行文件。前面反复介绍Linux是一个一体化的内核,由于内核中的各部件联系紧密,因此这种内核最重要的特点
2013-05-31 09:38:42 2022
转载 Linux驱动修炼之道-SPI驱动框架源码分析(下) .
来自:http://blog.csdn.net/woshixingaaa/article/details/6574224这篇文档主要介绍spi数据传输过程。当应用层要向设备传输数据的时候,会通过ioctl向设备驱动发送传输数据的命令。如图,向SPI从设备发送读写命令,实际的读写操作还是调用了主机控制器驱动的数据传输函数。transfer函数用于spi的IO传输。但是,tra
2013-05-30 15:05:16 953
转载 Linux驱动修炼之道-SPI驱动框架源码分析(中) .
来自:http://blog.csdn.net/woshixingaaa/article/details/6574220这篇来分析spi子系统的建立过程。嵌入式微处理器访问SPI设备有两种方式:使用GPIO模拟SPI接口的工作时序或者使用SPI控制器。使用GPIO模拟SPI接口的工作时序是非常容易实现的,但是会导致大量的时间耗费在模拟SPI接口的时序上,访问效率比较低,容易成为系统
2013-05-30 15:03:32 781
转载 Linux驱动修炼之道-SPI驱动框架源码分析(上)
SPI驱动架构,以前用过,不过没这个详细,跟各位一起分享:来自:http://blog.csdn.net/woshixingaaa/article/details/6574215SPI协议是一种同步的串行数据连接标准,由摩托罗拉公司命名,可工作于全双工模式。相关通讯设备可工作于m/s模式。主设备发起数据帧,允许多个从设备的存在。每个从设备有独立的片选信号,SPI一般
2013-05-30 14:50:40 686
转载 基于2440的SPI测试驱动程序以及应用程序(实例)
在做项目时用到SPI所以这里整理了一下SPI的测试程序以便后用下面是驱动部分:spi_ker.c[cpp] view plaincopyprint?/******************************************** *说明:本实验是针对TQ2440的SPI测试程序 * *设备模型:混杂设备
2013-05-29 16:30:21 703
转载 字符设备和块设备的区别
设备文件分为Block Device Driver和Character Device Drive两类。Character Device Drive又被称为字符设备或裸设备raw devices; Block Device Driver通常成为块设备。而Block Device Driver是以固定大小长度来传送转移资料 ;Character Device Driver是以不定长度的字元传送资料
2013-05-29 14:39:42 645
转载 基于S3C2440的嵌入式Linux驱动——SPI子系统解读(四)
本系列文章对Linux设备模型中的SPI子系统进行讲解。SPI子系统的讲解将分为4个部分。 第一部分,将对SPI子系统整体进行描述,同时给出SPI的相关数据结构,最后描述SPI总线的注册。基于S3C2440的嵌入式Linux驱动——SPI子系统解读(一) 第二部分,该文将对SPI的主控制器(master)驱动进行描述。 基于S3C2440的嵌入式Linux驱动
2013-05-28 16:20:23 787
转载 基于S3C2440的嵌入式Linux驱动——SPI子系统解读(三)
该系列文章将分为四个部分: 第一部分,将对SPI子系统整体进行描述,同时给出SPI的相关数据结构,最后描述SPI总线的注册。基于S3C2440的嵌入式Linux驱动——SPI子系统解读(一) 第二部分,该文将对SPI的主控制器(master)驱动进行描述。基于S3C2440的嵌入式Linux驱动——SPI子系统解读(二) 第三部分,即本篇文章,该文将对SPI设备驱动,也称p
2013-05-28 16:16:46 642
转载 基于S3C2440的嵌入式Linux驱动——SPI子系统解读(二) .
该系列文章将分为四个部分: 第一部分,将对SPI子系统整体进行描述,同时给出SPI的相关数据结构,最后描述SPI总线的注册。基于S3C2440的嵌入式Linux驱动——SPI子系统解读(一) 第二部分,即本篇文章,该文将对SPI的主控制器(master)驱动进行描述。 第三部分,该文将对SPI设备驱动,也称protocol 驱动,进行讲解。基于S3C2440的嵌入式Linu
2013-05-28 16:11:33 949
转载 基于S3C2440的嵌入式Linux驱动——SPI子系统解读(一)
本文将介绍SPI子系统。内核版本为2.6.30。如有错误欢迎指正。预备知识要求:1.SPI总线 2. platfrom平台 3. sysfs子系统 4. 阅读过LDD3第3,5,6,7,9,10,11章的内容。NOTE:如果没有看过LDD3的相
2013-05-28 16:08:26 1086
NFS配置文档
2013-04-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人