• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

SOC/IP验证工程师

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

文章分类 -  C

1 2 下一页

在#define中使用参数
摘要: 阅读全文

posted @ 2025-10-05 18:02 SOC验证工程师 阅读(4) 评论(0) 推荐(0)

C语言中inline的用法
摘要:C语言中inline的详细用法 在C语言中,inline关键字是C99标准引入的,用于定义内联函数,主要目的是优化程序性能,减少函数调用的开销。下面我将详细介绍inline的用法。 一、内联函数的概念 内联函数是通过将函数代码直接嵌入到调用点,避免常规函数调用的开销(如参数压栈、跳转、返回值处理等) 阅读全文

posted @ 2025-10-04 10:19 SOC验证工程师 阅读(8) 评论(0) 推荐(0)

C语言中static用法
摘要:C语言中static的用法 在C语言中,static关键字是一个非常重要的修饰符,主要用于控制变量和函数的存储区、生命周期以及链接属性。它有三种主要用法: 1. 修饰局部变量(静态局部变量) 特性: 生命周期:整个程序运行期间,不会在函数调用结束后销毁 初始化:只在第一次调用函数时初始化,之后每次调 阅读全文

posted @ 2025-10-04 10:07 SOC验证工程师 阅读(11) 评论(0) 推荐(0)

C语言中static的详细用法
摘要:static是C语言中非常重要的关键字,根据使用上下文有不同的含义。以下是static的详细用法: 1. 静态局部变量 基本特性 #include <stdio.h> void counter() { static int count = 0; // 只初始化一次 count++; printf(" 阅读全文

posted @ 2025-10-03 21:32 SOC验证工程师 阅读(35) 评论(0) 推荐(0)

C语言中inline的详细用法
摘要:inline是C语言中用于函数内联的关键字,它建议编译器将函数调用处直接替换为函数体代码。以下是inline的详细用法: 1. 基本语法 简单内联函数 inline int max(int a, int b) { return (a > b) ? a : b; } 带static的内联函数 stat 阅读全文

posted @ 2025-10-03 21:29 SOC验证工程师 阅读(38) 评论(0) 推荐(0)

C语句:#define raw_clearl(v,a)
摘要:这是一个用于清除寄存器特定位的C语言宏定义,让我详细分析它的工作原理和用途: 宏定义结构分析 #define raw_clearl(v,a) do { uint32_t __v = ___raw_readl(a); __v &= ~(v); __raw_writel(__v, (a)); } whi 阅读全文

posted @ 2025-10-03 21:21 SOC验证工程师 阅读(9) 评论(0) 推荐(0)

C语句:#define __ram_readl(a)
摘要:这是一个用于直接内存访问的C语言宏定义,让我详细分析它的各个组成部分: 宏定义结构分析 #define __ram_readl(a) (*(volatile uint32_t *) (caddr_t)(a)) 各部分分解: __ram_readl(a) - 宏名称和参数 (*(volatile ui 阅读全文

posted @ 2025-10-03 21:21 SOC验证工程师 阅读(6) 评论(0) 推荐(0)

C语言中#if 0的详细用法
摘要:#if 0 是C语言预处理器中的一个重要技巧,用于条件编译。让我详细解释它的各种用法和场景。 基本语法和原理 基本形式 #if 0 // 被注释掉的代码 printf("这行代码不会被编译"); int x = 100; #endif 工作原理 预处理器评估:#if 0 的条件为假(0) 代码排除: 阅读全文

posted @ 2025-10-03 20:53 SOC验证工程师 阅读(30) 评论(0) 推荐(0)

C语言中#if 1的详细用法
摘要:#if 1 是C语言预处理器中用于条件编译的指令,它总是为真,因此包含的代码一定会被编译。让我详细解释它的各种用法和场景。 基本语法和原理 基本形式 #if 1 // 这段代码总是会被编译 printf("这行代码一定会被编译"); int x = 100; #endif 工作原理 预处理器评估:# 阅读全文

posted @ 2025-10-03 20:52 SOC验证工程师 阅读(11) 评论(0) 推荐(0)

arm中的缓存维护指令和缓冲一致性有什么区别
摘要:这是一个非常核心且重要的问题。简单来说,它们是 “目标” 和 “手段” 的关系。 缓存一致性 是一个目标,一种需要维护的状态。 缓存维护指令 是达成这个目标的工具,是软件主动执行的操作。 下面我们进行详细的分解和对比。 一、缓存一致性 1. 定义 缓存一致性是指,在多处理器系统或带有DMA等主设备的 阅读全文

posted @ 2025-10-03 20:40 SOC验证工程师 阅读(8) 评论(0) 推荐(0)

C语句:*((volatile uint32_t*)(reg_addr))=value
摘要:这是一个在嵌入式系统和硬件驱动编程中非常经典且重要的语句。让我们逐层深入分析。 语句分解 *((volatile uint32_t*)(reg_addr)) = value; 从内向外分解: reg_addr - 寄存器地址,通常是一个整数类型的地址值 (volatile uint32_t*) - 阅读全文

posted @ 2025-10-03 20:39 SOC验证工程师 阅读(16) 评论(0) 推荐(0)

经典C语句:*data=*(volatile uint32_t*)(reg_addr)
摘要:这个语句是从硬件寄存器读取数据到变量的经典操作。让我们详细分析: 语句分解 *data = *(volatile uint32_t*)(reg_addr); 从右向左分析: reg_addr - 硬件寄存器的内存地址 (volatile uint32_t*) - 强制类型转换 (volatile u 阅读全文

posted @ 2025-10-03 20:38 SOC验证工程师 阅读(7) 评论(0) 推荐(0)

data[0]=*((volatile uint32_t*)(0xe5030004))和data=*((volatile uint32_t*)(0xe5030004))的区别
摘要:这是一个非常好的问题,涉及到C语言中变量类型和赋值目标的根本区别。让我们详细对比分析: 根本区别:data的类型不同 语句1:data[0] = *((volatile uint32_t*)(0xe5030004)) data的类型:uint32_t data[] 或 uint32_t* data( 阅读全文

posted @ 2025-10-03 20:29 SOC验证工程师 阅读(7) 评论(0) 推荐(0)

硬件验证中何时需要volitaile关键词
摘要:这是一个很好的问题,涉及到ARM芯片验证中volatile关键字的正确使用。让我们详细分析这段代码和volatile的应用场景。 代码分析 volatile uint32_t data1; // 声明volatile变量 data1 = reg_read32(0x581c2f28); // 从寄存器 阅读全文

posted @ 2025-10-03 20:20 SOC验证工程师 阅读(7) 评论(0) 推荐(0)

经典C语句:#define reg_write32(addr, val) do { (*((volatile uint32_t *)(addr)) = (uint32_t)(val)); } while(0)
摘要:#define reg_write32(addr, val) do { \ (*((volatile uint32_t *)(addr)) = (uint32_t)(val)); \ } while(0) 这种do { ... } while(0)的宏定义写法是为了解决C语言宏的多个常见问题,主要有 阅读全文

posted @ 2025-10-03 20:13 SOC验证工程师 阅读(3) 评论(0) 推荐(0)

常用C语句: reg_read32(addr)
摘要:这是一个非常经典的硬件寄存器读取宏定义。让我详细分析这个C语言宏的每个部分: 宏定义分解 #define reg_read32(addr) (*((volatile uint32_t *)(addr))) 从内向外逐层分析: 1. 核心成分解析 成分 作用 说明 addr 宏参数 传入的寄存器地址 阅读全文

posted @ 2025-10-03 19:58 SOC验证工程师 阅读(11) 评论(0) 推荐(0)

常用的C语句:reg_write32(addr,reg)
摘要:这是一个硬件寄存器写入宏定义,是嵌入式系统开发中的核心工具。让我详细分析这个C语言宏的每个部分: 宏定义分解 #define reg_write32(addr, reg) (*((volatile uint32_t *)(addr))) = (uint32_t)(reg) 从内向外逐层分析: 1. 阅读全文

posted @ 2025-10-03 19:48 SOC验证工程师 阅读(10) 评论(0) 推荐(0)

详细分析总结一下C语言中强制类型转换的用法
摘要:C语言强制类型转换全面分析与总结 强制类型转换是C语言中非常重要且强大的特性,它允许程序员显式地改变表达式的类型。下面我将从基础到高级全面总结其用法。 1. 基本语法与概念 基本语法 (type_name) expression 示例 int i = 10; double d = (double)i 阅读全文

posted @ 2025-10-03 15:15 SOC验证工程师 阅读(65) 评论(0) 推荐(0)

8.3.2 二维数组有关的指针
摘要: 阅读全文

posted @ 2025-10-01 22:10 SOC验证工程师 阅读(3) 评论(0) 推荐(0)

8.3 通过指针引用数组
摘要: 阅读全文

posted @ 2025-10-01 19:18 SOC验证工程师 阅读(3) 评论(0) 推荐(0)

1 2 下一页
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3