Linux-ARM架构

ARM架构
    看一款芯片的思路:公司名-芯片型号-ARM内核-ARM架构
    ARM内核:
        数字递增划分:
            ARM1/2/3/6/7/8/9/10/10
        ARMv6引入后按功能划分:
            Cortex-M Microcontroller    如Cortex-M
            Cortex-R Real-Time
            Cortex-A Application        
    
    ARM架构:
        按照指令集和流水线
        ARMv1 -- ARMv8,数字代表几级流水线。

List of ARM microarchitectures

上图链接: https://en.wikipedia.org/wiki/ARM_architecture

ARM处理器特点
    耗电少功能强、16位/32位双指令集和合作伙伴众多。
    1、体积小、低功耗、低成本、高性能;
    2、支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件;
    3、大量使用寄存器,指令执行速度更快;
    4、大多数数据操作都在寄存器中完成;
    5、寻址方式灵活简单,执行效率高;
    6、指令长度固定。

RISC(Reduced Instruction Set Computer,精简指令集计算机)
    RISC结构优先选取使用频最高的简单指令,避免复杂指令;将指令长度固定,指令格式和寻址方式种类减少;以控制逻辑为主,不用或少用微码控制等
    RISC体系结构特点
        1 采用固定长度的指令格式,指令归整、简单、基本寻址方式有2~3种。
        2 使用单周期指令,便于流水线操作执行。
        3 大量使用寄存器,数据处理指令只对寄存器进行操作,只有加载/存储指令可以访问存储器,以提高指令的执行效率。
        除此以外,ARM体系结构还采用了一些特别的技术,在保证高性能的前提下尽量缩小芯片的面积,并降低功耗:
        4 所有的指令都可根据前面的执行结果决定是否被执行,从而提高指令的执行效率。
        5 可用加载/存储指令批量传输数据,以提高数据的传输效率。
        6 可在一条数据处理指令中同时完成逻辑处理和移位处理。
        7 在循环处理中使用地址的自动增减来提高运行效率。
    
寄存器结构
    ARM处理器共有37个寄存器,被分为若干个组(BANK),这些寄存器包括:
    31个通用寄存器,包括程序计数器(PC指针),均为32位的寄存器。
    6个状态寄存器,用以标识CPU的工作状态及程序的运行状态,均为32位,只使用了其中的一部分。
    
指令结构
    ARM微处理器的在较新的体系结构中支持两种指令集:ARM指令集和Thumb指令集。其中,ARM指令为32位的长度,Thumb指令为16位长度。Thumb指令集为ARM指令集的功能子集,但与等价的ARM代码相比较,可节省30%~40%以上的存储空间,同时具备32位代码的所有优点。    
    
处理器工作模式
    用户模式(usr) ARM处理器正常的程序执行状态
    系统模式(sys) 运行具有特权的操作系统任务
    快中断模式(fiq) 支持高速数据传输或通道处理
    管理模式(svc) 操作系统保护模式
    数据访问终止模式(abt) 用于虚拟存储器及存储器保护
    中断模式(irq) 用于通用的中断处理
    未定义指令终止模式(und) 支持硬件协处理器的软件仿真

    除用户模式外,其余6种模式称为非用户模式或特权模式;用户模式和系统模式之外的5种模式称为异常模式。ARM处理器的运行模式可以通过软件改变,也可以通过外部中断或异常处理改变。    

### 安装 Python 2.7 至 Linux-ARM 架构 #### 下载源码包 对于希望在Linux-ARM架构上部署Python 2.7的开发者而言,获取官方发布的Python源代码是一个重要的起点。可以从指定链接下载版本为2.7.3的Python源码压缩文件[^3]。 ```bash wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tar.xz tar xf Python-2.7.3.tar.xz cd Python-2.7.3 ``` #### 配置编译环境变量 为了适应目标硬件平台,在编译前需调整一系列配置参数以确保构建过程针对特定处理器优化。这包括设定交叉编译器路径以及共享库创建工具等必要选项: ```bash export AR=arm-xilinx-linux-gnueabi-ar export CC=arm-linux-gnueabihf-gcc export LDSHARED="arm-linux-gnueabihf-gcc -shared" export CROSS_COMPILE=arm-linux-gnueabihf- export CROSS_COMPILE_TARGET=yes ``` 上述命令通过导出环境变量的方式指定了用于ARM架构的目标编译链路及其关联组件[^1]。 #### 编译并安装 完成前期准备工作之后,可以执行`configure`脚本来初始化项目结构,并随后利用Makefile来实际编译程序。考虑到可能存在的依赖关系或其他因素影响,默认情况下建议先运行一次完整的清理操作再继续后续流程;而具体安装位置则可根据个人需求自定义设置: ```bash ./configure --prefix=/path/to/installation/directory make clean make make install ``` 这里采用的是相对通用的做法,其中`--prefix`参数用来指示最终二进制文件及其他资源存放的具体目录地址。如果遵循先前提到的例子,则应替换为类似如下形式: ```bash make install HOSTPYTHON=./hostpython \ BLDSHARED="$LDSHARED" \ CROSS_COMPILE=$CROSS_COMPILE \ CROSS_COMPILE_TARGET=yes \ prefix=/home/user/linux/tool/Python-2.7.13/install ``` 此部分展示了更为详细的定制化安装指令集,特别适合于那些需要严格控制输出布局的应用场景[^2]。 #### 设置默认解释器(可选) 一旦成功完成了整个移植工作,便可以通过修改系统级软连接的方式来切换当前使用的Python版本至新近安装的那个实例。不过需要注意的是,此类改动可能会对已有应用程序造成潜在的影响,因此务必谨慎行事: ```bash rm /usr/bin/python ln -s /usr/local/bin/python2.7 /usr/bin/python ``` 该步骤仅当确实有必要改变全局默认行为时才推荐实施,其他时候保持原有状态通常是更安全的选择[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值