===================
== lxulxu's blog ==
===================
Hello there

Tcl C API 概览(一)

tcl

解释器管理

解释器是Tcl的核心概念。这部分API用于创建、删除和管理Tcl解释器。

Tcl_CreateInterp

功能: 创建一个新的Tcl解释器

语法: Tcl_Interp *Tcl_CreateInterp(void)

返回值: 新创建的解释器的指针

说明:

  • 创建一个新的Tcl解释器实例
  • 必须使用Tcl_DeleteInterp释放

示例:

1Tcl_Interp *interp = Tcl_CreateInterp();
2if (interp == NULL) {
3    // 处理错误
4}

Tcl_DeleteInterp

功能: 删除Tcl解释器

语法: void Tcl_DeleteInterp(Tcl_Interp *interp)

参数:

  • interp: 要删除的解释器

说明:

  • 释放与解释器相关的所有资源
  • 调用所有已注册的退出处理程序

示例:

1Tcl_DeleteInterp(interp);

Tcl_InterpDeleted

功能: 检查解释器是否已被删除

语法: int Tcl_InterpDeleted(Tcl_Interp …

Read more...

C++中的push_back与emplace_back

c++

1. 引言

C++标准库提供了push_backemplace_back两种向容器末尾添加元素的方法。本文将深入分析这两个函数的区别、使用场景,以及在实际应用中的性能考虑。

2. 基本概念

2.1 push_back push_back有两个重载版本:

1void push_back(const T& value);
2void push_back(T&& value);

第一个版本复制元素,第二个版本移动元素。

2.2 emplace_back emplace_back是C++11引入的变参模板函数:

1template <class... Args>
2void emplace_back(Args&&... args);

它直接在容器中构造对象,参数被完美转发给元素的构造函数。

3. 主要区别

  1. 构造方式push_back需要预先构造的对象,emplace_back在容器内构造对象。
  2. 参数传递push_back接受对象,emplace_back接受构造函数参数。
  3. 效率emplace_back可能避免不必要的临时对象创建和复 …
Read more...

Y2024Q3 影视音总结

生活

🎬MOVIES

Y2024Q2 影视音总结

生活

🎬MOVIES

C++安全指南

c++

编程习惯

  • switch中应有default
  • 不应在debug或错误信息中提供过多内容
  • 不应该在客户端代码中硬编码对称加密秘钥
1    // Bad
2    char g_aes_key[] = {...};
3    void Foo() {
4      ....
5      AES_func(g_aes_key, input_data, output_data);
6    }
1    // Good
2    char* g_aes_key;
3    void Foo() {
4      ....
5      AES_encrypt(g_aes_key, input_data, output_data);
6    }
7    void Init() {
8      g_aes_key = get_key_from_https(user_id, ...);
9    }
  • 函数不可以返回栈上的变量的地址,而应当使用堆来传递非简单类型变量,强烈建议返回 string、vector 等类型。
1    // Bad
2    char* Foo(char* …
Read more...

Y2024Q1 影视音总结

生活

🎬MOVIES

RF Analyzer 简介

xilinx RF

参考PG269 Ch1 & Ch2。

特点

  • 多达16个14-bit RF-DAC Gen 1/Gen 2:4个14-bit二倍频RF-ADC tile,2/4个14-bit四倍频RF-ADC tile; Gen 3:1/2/4个14-bit二倍频RF-ADC tile,2/4个14-bit四倍频RF-ADC tile。
  • 支持多个转换器之间的对齐(多片同步(MTS))
  • 支持预编程RF-DAC和RF-ADC,用户可以定义关键参数
  • RF-ADC和RF-DAC有多个AX14-Stream数据接口
  • 单独的AX14-Lite配置接口
  • Gen 1/Gen 2:1x(旁路),2x, 4x, 8x抽取和插值 Gen 3:1x(旁路),2x, 3x, 4x, 5x, 6x, 8x, 10x, 12x, 16x, 20x, 24x, 40x抽取和插值后的额外的2x插值
  • 数字复合混频器和数控振荡器(NCO)
  • 正交调制校正(QMC),Gen 3每个RF-ADC有嵌入式数字步进衰减器(DSA),每个RF-DAC有可变输出功率(VOP)控制
  • 片上时钟系统包含每个tile的PLL
  • Gen 3:片上时钟分配网 …
Read more...

RF Analyzer 功能详解

xilinx RF

RF-ADC

img-72

转换器设置(Converter Settings)

  • 校准模式(Calibration Mode)

    img-151
    校准子系统由三个主要模块组成:

    • 时间交错偏移校准模块(OCB):校正每个子RF-ADC的DC偏移
    • 增益校准模块(GCB):校正交错子RF-ADC之间的增益差异
    • 时间偏移校准模块(TSCB):校正交错子RF-ADC之间的时间偏移

    除了自动校准外,所有四个校准模块(OCB1、OCB2、GCB、TSCB)都可用于获取和设置用户系数。 应用程序读回校准解冻时生成的系数,并在需要时恢复它们; 这有助于在输入信号不满足校准要求时保持 RF-ADC 性能。 此功能适用于 IP 向导中的每个 RF-ADC。 启用此功能会增加 IP 的大小。

     1//以下示例代码显示了 TSCB 的用户系数设置。
     2
     3u32 Status = XRFDC_FAILURE;
     4XRFdc_Calibration_Coefficients Coeffs;
     5//使用下面的样本系数
     6Coeffs.Coeff0 = 146;
     7Coeffs.Coeff1 = …
Read more...

RFdc 驱动

xilinx RF

参考PG269 Appx.C

数据结构

数据结构UML图如下:

UML

API 功能

系统设置相关函数

函数原型功能
u32 XRFdc_CfgInitialize(XRFdc *InstancePtr, XRFdc_Config *ConfigPtr)通过从配置结构复制相关条目来填充驱动程序实例中的适当条目。与 RFdc 驱动程序 API 的任何软件交互都需要此函数,并且必须在使用任何其他 API 函数之前首先调用此函数。
XRFdc_Config *XRFdc_LookupConfig(u16 DeviceId)根据设备的唯一 ID 查找设备配置
u32 XRFdc_RegisterMetal(XRFdc *InstancePtr, u16 DeviceId, struct metal_device **DevicePtr)使用 Libmetal 注册RFDC
u32 …

《高质量C++编程指南》笔记

c++

文件结构

头文件结构

 1//版权和版本声明
 2/*
 3* Copyright (c) 2001,上海贝尔有限公司网络应用事业部
 4* All rights reserved.
 5*
 6* 文件名称:graphics.h
 7* 文件标识:见配置管理计划书
 8* 摘   要:简要描述本文件的内容
 9*
10* 当前版本:1.1
11* 作   者:输入作者(或修改者)名字
12* 完成日期:2001年7月20日
13*
14* 取代版本:1.0
15* 原作者 :输入原作者(或修改者)名字
16* 完成日期:2001年5月10日
17*/
18
19#ifndef GRAPHICS_H // 防止 graphics.h 被重复引用
20#define GRAPHICS_H
21#include <math.h> // 引用标准库的头文件
22...
23#include “myheader.h” // 引用非标准库的头文件
24...
25void Function1(...); // 全局函数声明
26...
27class Box // 类结构声明
28{ …
Read more...
Previous Page 2 of 3 Next Page