摘要:
原因一 早些年,芯片的生产制作工艺也许还不能够将晶振做进芯片内部,但是现在可以了。这个问题主要还是实用性和成本决定的。 原因二 芯片和晶振的材料是不同的,芯片 (集成电路) 的材料是硅,而晶体则是石英 (二氧化硅),没法做在一起,但是可以封装在一起,目前已经可以实现了,但是成本就比较高了。 原因三 阅读全文
摘要:
本文主要介绍数字电路基础知识,用最简洁的内容介绍最核心的知识。 1、数字电路是什么? 数字电路是利用电源电压的高电平和低电平分别表示1和0,进而实现信息的表达。模拟信号:随时间连续变化的信号。处理模拟信号的电路就是模拟电路。数字信号:随时间不连续变化的信号,离散变化。处理数字信号的电路就是数字电路。 阅读全文
摘要:
可以先看 《模拟电子技术基础》童诗白的, 再看一下拉扎纬的《模拟CMOS集成电路设计> 晶体管电路设计上下册--razavi, paul gray 等等。 berkeley的视频也可以工作是最好的学习方法边工作、边实践、边学习,只有这样才能不断的提高把拉扎维的书多研究研究模拟电路IC三本圣经,读懂, 阅读全文
摘要:
1. 汇编 1.1. 通用寄存器 通用寄存器 37个寄存器,31个通用寄存器,6个状态寄存器,R13堆栈指针sp,R14返回指针,R15为PC指针, cpsr_c代表的是这32位中的低8位,也就是控制位 CPSR有4个8位区域:标志域(F)、状态域(S)、扩展域(X)、控制域(C)MSR - Loa 阅读全文
摘要:
构造 构造一个用户定义类型的实例只有一种方法:为其命名,并一次性初始化其所有字段: struct Foo { a: u8, b: u32, c: bool, } enum Bar { X(u32), Y(bool), } struct Unit; let foo = Foo { a: 0, b: 1 阅读全文
摘要:
幽灵数据 在处理不安全代码时,我们经常会遇到这样的情况:类型或生命周期在逻辑上与结构相关,但实际上并不是字段的一部分。这种情况最常发生在生命周期上。例如,&'a [T]的Iter(大约)定义如下: struct Iter<'a, T: 'a> { ptr: *const T, end: *const 阅读全文
摘要:
->在C语言中称为间接引用运算符,是二目运算符,优先级同成员运算符“.”。用法:p->a,其中p是指向一个结构体的指针,a是这个结构体类型的一个成员。表达式p->a引用了指针p指向的结构体的成员a。例如:struct T{int a;char b;}s;struct T* p=&s;那么,p->a相 阅读全文
摘要:
Rust 允许你指定不同于默认的数据布局策略,并为你提供了不安全代码指南。 repr(C) 这是最重要的“repr”。它的意图相当简单:做 C 所做的事。字段的顺序、大小和对齐方式与你在 C 或 C++ 中期望的完全一样。任何你期望通过 FFI 边界的类型都应该有repr(C),因为 C 是编程世界 阅读全文
摘要:
非正常大小的类型 大多数的时候,我们期望类型在编译时能够有一个静态已知的非零大小,但这并不总是 Rust 的常态。 Dynamically Sized Types (DSTs) Rust 支持动态大小的类型(DST):这些类型没有静态(编译时)已知的大小或者布局。从表面上看这有点离谱:Rust 必须 阅读全文
摘要:
repr(Rust) 首先,所有类型都有一个以字节为单位的对齐方式,一个类型的对齐方式指定了哪些地址可以用来存储该值。一个具有对齐方式n的值只能存储在n的倍数的地址上。所以对齐方式 2 意味着你必须存储在一个偶数地址,而 1 意味着你可以存储在任何地方。对齐至少是 1,而且总是 2 的幂。 基础类型 阅读全文