• 发文章

  • 发资料

  • 发帖

  • 提问

  • 发视频

创作活动
0
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
返回

电子发烧友 电子发烧友

  • 全文搜索
    • 全文搜索
    • 标题搜索
  • 全部时间
    • 全部时间
    • 1小时内
    • 1天内
    • 1周内
    • 1个月内
  • 默认排序
    • 默认排序
    • 按时间排序
大家还在搜
  • 揭开深记忆示波器的神秘面纱

    揭开深记忆示波器的神秘面纱

    2019-09-23 07:56

  • 一文揭开AI芯片神秘面纱 精选资料分享

    今天一朋友咨询我AI芯片怎么样?我是搞软件的,历来计算机系专业学生里搞软件的不懂硬件,但是要聊到AI芯片,它真的很简单,哈哈。1、什么是人工智能(AI)芯片?广义上讲,能...

    2021-07-26 08:01

  • 异步信号的处理真的有那么神秘

    说到异步时钟域的信号处理,想必是一个FPGA设计中很关键的技术,也是令很多工程师对FPGA望 而却步的原因。但是异步信号的处理真的有那么神秘吗?那么就让特权同学和你一起慢慢解开这些所谓的难点

    2021-11-04 08:03

  • Analog/.Discharge的神秘工作原理

    The Keysight 3070 series has quite a few built in features to make developing board tests easier, while protecting the operator, the board under test, and the 3070 itself from harm.

    2019-05-13 12:13

  • 带你走进嵌入式ARM MMU神秘的内部世界

    ARM MMU页表框架 先上一张arm mmu的页表结构的通用框图(以下的论述都由该图来逐渐展开): 以上是arm的页表框图的典型结构:即是二级页表结构:其中第一级页表(L1)是由虚拟地址的高12bit(bits[31:20])组成,所以第一级页表有4096个item,每个item占4个字节,所以一级页表的大小为16KB,而在第一级页表中的每个entry的最低2bit可以用来区分具体是什么种类的页表项,2bit可以区分4种页表项,具体每种页表项的结构如下: 简而言之L1页表的页表项主要有两大类:第一大类是指向第二级页表(L2页表)的基地址; 第二类直接指向1MB的物理内存。在L1页表中每个表项可以覆盖1MB的内存,由于有4096K个选项(item),所以总计可以覆盖4096K*1MB=4GB的内存空间。具体对应到Linux,由于linux的软件架构是支持3级页表结构,而arm架构实际只有2级的页表结构,所以linux代码中的中间级页表的实现是空的。在linux代码中,第一级的页表的页目录表项用pgd表示,中间级的页表的页目录表项用pud表示(arm架构其实不需要),第三级的页表的页目录表项用pmd表示(由于中间pud是空的,所以pgd=pmd),另外目前arm体系的移动设备中RAM的page大小一般都是4KB/page,所以L1页表中的页表项都是指向fine page table的信盈达嵌入式企鹅要妖气呜呜吧就零久要。但在linux内核启动的初始化阶段,临时建立页表(initial page tables)以供linux内核初始化提供执行环境,这时L1的页表项使用的就是第二种页表项(section enty),他直接映射的是1M的内存空间。具体的可以参考arch/arm/kernel/head.S中的__create_page_tables函数,限于篇幅,这里就不展开说了。针对这种section page translation,mmu硬件执行虚拟地址转物理地址的过程如下: 以上在初始化过程使用的临时页表(initial page tables),在内核启动的后期会被覆盖掉,即在paging_init--->map_lowmem函数中会重新建立页表,该函数为物理内存从0地址到低端内存(lowmem_limit)建立一个一一映射的映射表。所谓的一一映射就是物理地址和虚拟地址就差一个固定的偏移量,该偏移量一般就是0xc0000000(呵呵,为什么是0xc0000000?)说到这里引入一个重要的概念,就是与低端内存相对的高端内存,什么是高端内存?为什么需要高端内存?为了解析这个问题,我们假设我们使用的物理内存有2GB大小,另外由于我们内核空间的地址范围是从3G-4G的空间,并且前面也说到了,linux内核的低端内存空间都是一一映射的,如果不引入高端内存这个概念,全部都使用一一映射的方式,那内核只能访问到1GB的物理内存,但实际上,我们是需要内核在内核空间能够访问所有的4GB的内存大小的,那怎么做到呢?方法就是我们不让3G-4G的空间都使用一一映射,而是将物理地址的[0x00,fix_addr](fix_addr

    2017-08-22 11:22

  • 一个神秘现象引发对beego框架的思考

    1、beego框架的分析  小强最近在项目中遇到了一个很奇怪的问题:在整改日志规范时,为了避免影响现有的代码结构以及改动尽可能小的前提下,在调用记日志的SDK处将某一个字段值首字母改为大写,代码示例如下:  fmt.Println(“--------SayHello begin------------”)  //项目中这里的a实际是作为参数传入,只是可能为空串,不为空串,这样写肯定没问题  a := “”  b := strings.ToUpper(a[:1]) + a[1:]  fmt.Println(“b is ”, b)  fmt.Println(“--------SayHello end------------”)  this.Ctx.Output.Body(this.Ctx.Input.RequestBody)  项目中这里的a变量其实是作为参数传入,只是可能为空串。a变量不为空串时,这样写肯定没问题。但是当为空串时,即“”时,就会出问题,在java中,运行的时候肯定会报一个“数组下表越界”的异常。小强将工程编译后生成二进制文件,放到服务器上跑,测试修改后的日志是否符合规范,验了一遍,没有问题,然后就将代码提交了。原作者:小碗汤

    2022-10-18 14:38

  • 揭开RCRC和RC探针的神秘面纱应用笔记

    An ideal probe would provide an exact replica of a signal being probed. However, the probe becomes a part of the circuit under test, because the probe introduces probe loading to the circuit.

    2018-10-16 10:22

  • 揭开linux内核中container_of的神秘面纱

    在linux 内核中有一个大名鼎鼎的宏container_of(),这个宏是用来干嘛的呢?我们先来看看它在内核中是怎样定义的。呵呵,乍一看不知道是什么东东。我们先来分析一下container_of(ptr,type,member),这里面有ptr,type,member分别代表指针、类型、成员。看一个例子:Struct test{ int i; int j; char k;};Struct test temp;现在呢如果我想通过temp.j的地址找到temp的首地址就可以使用container_of(&temp.j,struct test,j);现在我们知道container_of()的作用就是通过一个结构变量中一个成员的地址找到这个结构体变量的首地址。下面来看看比较复杂的内容:我们用上面的struct test张展一下Const typeof(((struct test *)0)->j) * __mptr = (&temp.j);其中,typeof是GNU C对标准C的扩展,它的作用是根据变量获取变量的类型。因此,上述代码的作用是首先使用typeof获取结构体成员j的类型为int,然后顶一个int指针类型的临时变量__mptr,并将结构体变量中的成员的地址赋给临时变量__mptr。(struct test *)((char *)__mptr - offsetof(struct test,j));接着我们来看一下offsetof(struct test,j),他在内核中如下定义展开(size_t)&((struct test *)0)->j,这是什么东东?一开始也不明白,这里要感谢曹老师老师的热心帮助,一语惊醒梦中人,呵呵,可以是这样理解。其中size_t是整型,那么我们可以知道最终的结果是一个整形值,也就是j相对于0地址的偏移量。也许现在你会问,整出这么个玩意干嘛,下面看个列子:程序运行结果:发现没有如果把第二个值 减去最后一个值,就能得到第一个值。在回首一下它:(struct test *)((char *)__mptr - offsetof(struct test,j));是不是可以获得结构体变量temp的首地址呀,是不是太精妙了呀,linux内核中随随便便一个宏就有如此精妙,呵呵,想想对linux了解非常多的牛人,还有很长一段路。

    2016-11-11 10:02

  • 寄存器是什么?STM32芯片内有什么

    欢迎来到精神小火君的科技主义教室!Ps:记录STM32入土路上的艰苦旅程,加油UPUPUP!文章目录欢迎来到精神小火君的科技主义教室!前言一、寄存器是什么?二、STM32内部世界1.STM32神秘

    2022-01-07 08:24

  • 锂离子电池电解液超全面介绍 有何神秘之处?

    好了,关键来了!我们知道,常规的锂离子电池采用的都是非水有机溶剂,当电池由于内部短路而发热时,电解液受热分解产生气体,轻则电池膨胀,重则导致电池爆炸。那么“神秘“的电解液到底是什么呢?在传统电池

    2017-02-22 11:59