arm: 使用结构体操作寄存器

2023-05-16

使用结构体操作寄存器:


//寄存器赋值和取值的时候,要注意寄存器的长度,有的寄存器的值只有8位。
//还要注意,使用volatile修饰寄存器变量。volatile 参考http://www.cnblogs.com/mylinux/p/4630749.html  

//addr.h
typedef unsigned int S3C24X0_REG32;

/* NAND FLASH (see S3C2410 manual chapter 6) */
typedef struct {
    S3C24X0_REG32 NFCONF;
    S3C24X0_REG32 NFCMD;
    S3C24X0_REG32 NFADDR;
    S3C24X0_REG32 NFDATA;
    S3C24X0_REG32 NFSTAT;
    S3C24X0_REG32 NFECC;
} S3C2410_NAND;

//nand.c
static S3C2410_NAND* s3c2410nand = (S3C2410_NAND *)0x4e000000;
//如此,s3c2410nand 表示寄存器组的起始地址 。
//&s3c2410nand->NFCMD 表示NFCMD寄存器的地址 。
//s3c2410nand->NFCMD 表示NFCMD寄存器的值 。
//寄存器赋值和取值的时候,要注意寄存器的长度,有的寄存器的值只有8位。
//还要注意,使用volatile修饰寄存器变量。

/* 读取数据 */
static unsigned char s3c2410_read_data(void)
{
    volatile unsigned char *p = (volatile unsigned char *)&s3c2410nand->NFDATA;
    return *p;
}  

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

arm: 使用结构体操作寄存器 的相关文章

  • 线程安全的向量和字符串容器?

    我之前发过一个问题 在嵌入式 Linux 平台上使用 std string 时出现段错误 https stackoverflow com questions 2412667 seg fault when using stdstring on
  • 使用 GCC 编译器为代码的特定部分保留寄存器

    是否可以为 C 代码的特定部分保留寄存器 ffixed reg 选项或声明全局寄存器变量不是我正在寻找的答案 我想保留特定范围 比如说特定函数 的寄存器值 使用局部寄存器变量是不可能的 因为它不能保证在整个范围内保留寄存器的值 我正在寻找类
  • 将ELF文件加载到内存中

    我正在尝试将 elf 文件放入内存然后执行它 步骤如下 1 要放入内存的文件 int main printf Hello world n return 0 2 编译它gcc o hello hello c static ELF Header
  • 警告:可加载部分“my_section”位于 ELF 段之外

    我使用 Cortex R4 的 Arm Compiler v6 9 构建了一个 axf elf 文件 但是 当我使用 Arm MCU Eclipse J link GDB 插件将其加载到目标时 它无法加载我的段的初始化数据 如果我使用 Se
  • 小型 ARM 微控制器的 RTOS 内核之间的可量化差异 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 有许多不同的 RTOS 可用于微控制器 我专门寻找支持 ARM Cortex M 处理器的 RTOS 另外 我对闭源解决方案不感兴趣 试图从网站
  • RAM 存储二进制数和汇编语言的冒泡排序

    我必须使用 ARM v7 执行一个例程 在 RAM 内存中存储 10 个二进制数 然后使用冒泡排序对这些数字从高到低进行排序 我应该如何开始 func bubbleSortAscendingU32 ldr r3 r0 4 mov r1 9
  • C 嵌入式应用程序中 time() 函数的问题

    我在用time 在 ARM 微控制器上 处理器一到达此函数就会重新启动 奇怪的是 当我处于调试模式时 代码运行得很好 但一旦我想将其应用到独立模式 我就会遇到重置 我是否忽略了什么 这个功能有替代品吗 代码部分是这样的 include
  • Linux malloc() 在 ARM 和 x86 上的行为是否不同?

    这个网站上有很多关于内存分配的问题 但是我 找不到专门解决我的问题的人 这 问题 https stackoverflow com questions 19148296 linux memory overcommit details似乎最接近
  • 分析 Cortex-M7 (stm32f7) 上的 memcpy 性能

    简洁版本 从 GNU ARM 工具链中提取的 memcpy 的性能指标在 ARM Cortex M7 上对于不同的副本大小似乎差异很大 即使复制数据的代码始终保持不变 这可能是什么原因造成的 长版 我是使用 GNU Arm 工具链 11 2
  • ARM 调用约定是否允许函数不将 LR 存储到堆栈中?

    正如标题所示 我在理解 ARM 架构的调用约定时遇到问题 特别是 我仍然很难知道当你调用子程序时 LR 寄存器会发生什么 我认为 当您进入子程序时 处理 LR 寄存器的最明显 最安全的方法是将其存储到堆栈中 但该行为没有出现在文档中 因此我
  • 使用 Android NDK 使用 -fsigned-char 进行构建安全吗?

    为了与其他平台保持一致 我需要使用signed char在我正在处理的一些本机代码中 但默认情况下在Android NDK上char类型是unsigned 我尝试明确使用signed char类型 但它生成太多警告differ in sig
  • 在 Intel 机器上构建 Apple Silicon 二进制文件

    如何在 macOS 11 Intel 上编译 C 项目以在 Silicon 上运行 我当前的构建脚本很简单 configure make sudo make install 我尝试过使用 host and target标志与aarch64
  • ARM 系统调用的接口是什么?它在 Linux 内核中的何处定义?

    我读过有关 Linux 中的系统调用的内容 并且到处都给出了有关 x86 架构的描述 0x80中断和SYSENTER 但我无法追踪 ARM 架构中系统调用的文件和进程 任何人都可以帮忙吗 我知道的几个相关文件是 arch arm kerne
  • 如何设置 CMake 与 clang 交叉编译 Windows 上的 ARM 嵌入式系统?

    我正在尝试生成 Ninja makefile 以使用 Clang 为 ARM Cortex A5 CPU 交叉编译 C 项目 我为 CMake 创建了一个工具链文件 但似乎存在错误或缺少一些我无法找到的东西 当使用下面的工具链文件调用 CM
  • AOSP 的“午餐”组合是什么意思?我需要选择什么?

    我是 Android 设备 ROM 开发的新手 无论如何 我现在正在为具有 64 位处理器的中国设备构建 AOSP 我按照 source android com 上的菜单进行操作 当我运行 午餐 命令时 终端显示 午餐菜单 选择一个组合 我
  • gdb 不会从外部架构读取核心文件

    我正在尝试在 Linux 桌面上读取 ARM 核心文件 但似乎无法找出我的核心文件 有什么方法可以指示 gdb 我的核心文件是什么类型吗 file daemon daemon ELF 32 bit LSB executable ARM ve
  • 为什么 GCC 交叉编译不构建“crti.o”?

    在尝试为arm构建gcc 4 x x交叉编译器时 我陷入了缺失的困境crti o文件在 BUILD DIR gcc子目录 An strace在顶层Makefile表明编译后的xgcc正在调用交联器ld with crti o 作为一个论点
  • ARM Chromebook 上的 Android 开发环境?

    我尝试了多次安装和使用安卓工作室 https developer android com studio index html on an ARM Chromebook C100P https archlinuxarm org platfor
  • iPhone 3GS 上的 ARM 与 Thumb 性能比较,非浮点代码

    我想知道是否有人有关于 iPhone 3GS 上 ARM 与 Thumb 代码性能的硬性数据 特别是对于非浮点 VFP 或 NEON 代码 我知道 Thumb 模式下的浮点性能问题 更大的 ARM 指令的额外代码大小是否会在某个时刻成为性能
  • Android NDK 代码中的 SIGILL

    我在市场上有一个 NDK 应用程序 并获得了有关以下内容的本机崩溃报告 SIGILL信号 我使用 Google Breakpad 生成本机崩溃报告 以下是详细信息 我的应用程序是为armeabi v7a with霓虹灯支持 它在 NVIDI

随机推荐

  • web前端利用turf.js生成等值线、等值面

    样例如下 xff1a lt DOCTYPE html gt lt html xmlns 61 34 http www w3 org 1999 xhtml 34 gt lt head gt lt meta http equiv 61 34 C
  • python模块名和文件名冲突解决

    对于python初学者 xff0c 很容易练习到一个随机数生成的程序 xff0c 代码如下 xff1a 1 usr bin python 2 import random 3 print random randint 12 20 这个小程序最
  • python3 logging 'ascii' codec can't encode characters

    环境 xff1a mac 10 12 python3 django 1 10 问题发现 最近刚从arch 换到 mac下搬砖 xff0c 发现在arch跑的好好的代码 xff0c 在mac下 终端老是报错 还是编码错误 code try i
  • Hutool之文件工具——FileUtil

    为什么80 的码农都做不了架构师 xff1f gt gt gt 简介 我想在Java工具中 xff0c 文件操作应该也是使用相当频繁的 xff0c 但是Java对文件的操作由于牵涉到流 xff0c 所以较为繁琐 xff0c 各种Stream
  • java中数字与ASCII码的相互转换

    2019独角兽企业重金招聘Python工程师标准 gt gt gt code 测试demo public static void main String args int a 61 91151561 for byte b String va
  • IDEA怎么查看现在的项目使用的JDK版本? 2016年4月19日22:51

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 右键单击项目 xff0c 选择 或者直接使用F4 转载于 https my oschina net sprouting blog 670222
  • 什么是北向接口和南向接口

    Northbound Interface Southbound Interface 南向接口 xff1a 管理其他厂家网管或设备的接口 xff0c 即向下提供的接口 北向接口 xff1a 提供给其他厂家或运营商进行接入和管理的接口 xff0
  • 官网下载mysql源码

    官网下载mysql源码 xff0c 如下为具体步骤 xff1a 1 进入官网点击download页https www mysql com downloads 2 点击MySQL Community Edition进入mysql社区版下载页面
  • Vue设置button的disable属性

    表单元素有一个disable属性 xff0c 用来控制该元素是否可用 1 这个属性在HTML里只有1个值 xff0c 用法就是 lt button disable 61 34 disable 34 gt 点击 lt button gt 经实
  • 用C++进行简单的文件I/O操作

    序论 我曾发表过文件输入输出的文章 xff0c 现在觉得有必要再写一点 文件 I O 在C 43 43 中比烤蛋糕简单多了 在这篇文章里 xff0c 我会详细解释ASCII和二进制文件的输入输出的每个细节 xff0c 值得注意的是 xff0
  • VC++鼠标画圈

    int r 61 100 int x0 61 gameRect left 43 pt x int y0 61 gameRect top 43 pt y int x y double n 61 0 MoveTo x0 y0 while n l
  • matlab练习程序(求向量间的旋转矩阵与四元数)

    问题是这样 xff0c 如果我们知道两个向量v1和v2 xff0c 计算从v1转到v2的旋转矩阵和四元数 xff0c 由于旋转矩阵和四元数可以互转 xff0c 所以我们先计算四元数 我们可以认为v1绕着向量u旋转 角度到v2 xff0c u
  • 用lighttpd搭建一个简易的http服务器

    1 安装lighttpd 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 cd wget http download lighttpd net lighttpd releases
  • 结构体(对齐规则及举例)

    概念 一种数据结构 xff1b C语言中聚合数据类型的一类 xff1b 可以被声明为变量 数组 指针等 xff0c 用以实现比较复杂的数据结构 xff1b 是一系列元素的集合 xff0c 这些元素被称为结构体成员 xff1b 结构体成员需要
  • C++解析头文件-Qt自动生成信号定义

    目录 一 概述二 实现思路三 代码讲解 1 类图2 QtCppDescription3 测试四 源代码 一 概述 上一篇文章C 43 43 解析头文件 Qt自动生成信号声明我们主要讲解了怎么去解析C 43 43 头文件 xff0c 然后在指
  • VC++6.0与VS2010的区别

    区别1 字符串的表达 void CMy123Dlg OnBnClickedButton1 MessageBox 34 你好 34 以前VC6 0写法 现在用不了 老版本用的多字节字符集 MessageBox L 34 你好 34 L 是 u
  • 存储过程出现ORA-06508错误

    一个存储过程平时执行正常 xff0c 刚才执行出ORA 06508错误 百思不得其解 xff0c 好像没有什么不正常的地方啊 xff01 后来找到了答案 重现这个错误如下 xff1a 执行一个存储过程 xff0c 其运行时间比较长 刚开始运
  • 从零构建TCP/IP协议

    从零构建TCP IP协议 这次叫PCT协议 这篇博客是读完 图解TCP IP协议 和 TCP IP协议详解卷一 xff1a 协议 之后的总结 我从0构建了一个可靠的双工的有序的基于流的协议 xff0c 叫做PCT协议 OSI七层模型和TCP
  • c语言 checksum,crc校验方法,用c语言实现源代码(CRC checksum method, using C language source code).doc...

    crc校验方法 用c语言实现源代码 CRC checksum method using C language source code crc校验方法 用c语言实现源代码 CRC checksum method using C languag
  • arm: 使用结构体操作寄存器

    使用结构体操作 寄存器 xff1a 寄存器赋值和取值的时候 xff0c 要注意寄存器的长度 xff0c 有的寄存器的值只有8位 还要注意 xff0c 使用volatile修饰寄存器变量 volatile 参考http www cnblogs