
嵌入式
文章平均质量分 93
-飞鹤-
喜欢音乐,喜欢文学,喜欢跑步,喜欢编程!
展开
-
嵌入式开发——基础电路知识
驱动能力、负载能力、逻辑电平、三态输出、推挽输出、开漏输出、上拉电阻、下拉电阻、高通波滤、低通波滤、电源去耦电路、阻抗匹配、差分信号、MOS管与继电器、RS232和RS485、译码器、UART/IIC/SPI、模拟信号和数字信号眼图、真实U盘电路讲解。原创 2024-03-27 16:09:57 · 5746 阅读 · 0 评论 -
嵌入式开发——基础元器件
差分线的好处是,如果传输的信号受干扰,那么两个差分线就同时受干扰,两个信号会同时变化,那么两个信号的幅值差就会近似不变的,利用幅值差来表示信号就可降低干扰。电流表是串联接入电路的,电流表的内阻很小,一般为几mΩ,这样电流表接入电路对电源的外部负载影响很小,所以测量的电流近似于真实值。Vdd,IC的设备电压,在NAND Flash中,与Vccq等同,用于数据传输存储,为了降低功耗,其电压从早期的5V到后来的3.3V, 1.8V甚至1.2V。Vcc,IC的工作电压,主要用于控制IC内部的各种逻辑。原创 2024-03-27 15:45:36 · 1612 阅读 · 0 评论 -
NVMe开发——NAND Flash的基本原理
当栅极(Gate)和P型衬底接通电源时,因为电场的缘故,P型半导体中的电子都往氧化绝缘层靠近,当绝缘层附近的电子足够多时,两个N型半导体之间的电子通道(N沟道)就形成了,两个N型半导体和中间的电子通道相当于一整个N型半导体。读0和读1会有两个阈值电压,先在栅极施加读0的阈值电压,检测是否导通,如果导通,输出1,结束。擦除之后读,因为浮栅层的电子全部释放回了P型半导体中,这时在控制栅加10V电压,P型半导体中的电子会聚集到N型半导体之间形成电子通道,源极和漏极之间接上电源,会导通,此时表示读到‘1’。原创 2024-03-22 17:47:11 · 2706 阅读 · 0 评论 -
C/C++代码性能优化——编程实践
主要针对嵌入式C/C++,性能优化编程技巧,参数传递、函数返回、循环展开、查表、位域、尾递归、位运算、0数组、分支预测、异步计算、事件驱动架构、AI。其他性能负优化的示例。原创 2024-03-22 17:43:28 · 1550 阅读 · 0 评论 -
C/C++代码性能优化——数据结构和算法
数据结构,数组、链表、块状链表、栈、堆、队列、二叉树、红黑树、B树、B+树、跳表、索引、哈希表、图的应用场景和性能比较。 常用排序算法、查找的应用场景和性能比较,其他通用算法应用场景介绍。原创 2024-03-22 17:40:14 · 1718 阅读 · 0 评论 -
C/C++代码性能优化——编译器和CPU
在现代软件开发中,性能优化至关重要,尤其是在资源受限的系统和处理大量数据的应用程序中。C/C++ 作为低级编程语言,提供了对底层硬件的直接访问,使其成为性能关键应用程序的理想选择。然而,编写高效的 C/C++ 代码是一项具有挑战性的任务,需要对语言特性、编译器优化、硬件架构、数据结构和算法有深入的理解。本文旨在为 C/C++ 程序员提供一个全面的指南,涵盖各种优化技术,以提高代码性能,重在指南引导,不讲细节。原创 2024-03-22 17:35:48 · 3232 阅读 · 0 评论 -
GCC工具链简介
想编译各种嵌入式裸机的,想编译Linux Kernel,又或者想编译u-boot的,或者想编译运行在KylinOS上,甚至想编译运行在Android上的C代码,该选择哪个gcc版本呢?MinGW和gcc什么关系?ARM下几种gcc有什么区别?RISC-V内核又该如何选择GCC工具链呢?gcc不同版本的头文件、动态库等兼容性如何呢?选择了正确的gcc版本,又是如何编译安装呢?下载arm gcc时,经常会遇到Linaro,那么Linaro与arm、gcc是什么关系呢?gdb-multiarch?原创 2024-02-26 17:49:55 · 2262 阅读 · 0 评论 -
QEMU开发入门
QEMU开发,对于分析Linux内核帮助非常多。目前电脑上的手机模拟器、还有各种虚拟机技术也基本都是基于qemu进行扩展开发的。文章得比较详细,并提供包括固件和qemu的完整测试代码:1. Windows、Linux下的编译、安装qemu。2. 基于qemu,用VSCode单步调试单片机系统的Cortex-m、RISC-V固件代码。3. 基于qemu,用VSCode单步调试Linux Kernel代码。4. 扩展qemu,给RISC-V添加了一个自定义的uart设备,并演示如何在固件中使用这个uart来输出原创 2024-02-23 18:55:33 · 3494 阅读 · 0 评论 -
适用于嵌入式单片机的压缩算法
不同的压缩算法,有不同的应用场景。1. 高压缩率,压缩速度慢,但是解压速度快的算法,适用于Bootloader。高压缩率,可以节省ROM空间,高解压速度对Boot速度影响小。因为是外部工具压缩,压缩速度不影响Bootloader的功能。适用于此场景的压缩算法有lzo、lz4hc。2. 追求压缩率,且算力和内存资源充足,并且压缩和解压均不错的算法,选择DEFLATE。3. 有一定的压缩率(50%),追求压缩和解压速度,且算法相对简单,优先LZ4,再选择LZ77,再先LZO.原创 2024-02-03 17:49:40 · 9198 阅读 · 0 评论 -
Keil使用命令行附加预定义宏编译
为一个target指定多个预定义宏,此处使用shell脚本编写,需要git-bash或cygwin来编译。添加一个define.h宏,Keil工程引用此宏达到控制一个Target中有不同的预编译宏。另外,提供两种方法,可以一次性编译所有的Target。原创 2022-10-15 01:27:54 · 8554 阅读 · 0 评论 -
ProtoThread原理及应用
概述1.1. 概念进程,一个具有独立功能的正在运行的程序实例。进程是相互独立的,并且可以同时运行。线程,描述一段代码的执行路径。线程属于进程,每个进程至少有一个线程。线程有自己独立的栈,多个线程可以同时运行。协程,coroutine,可以看作co-routine,也即协作程序。几个程序协作运行,可以理解为轻量级线程。1.2. 应用进程和线程都是重量级的,功能更强大,但是开销同样更大。尤其是针对一些嵌入式设备,受限于空间和性能,无法使用进程和线程。此时有一些并发需要,如果沿用通常的顺序流程来开发.原创 2021-04-02 19:07:33 · 4574 阅读 · 0 评论 -
C51中的函数指针
概述函数指针是C编程语言众多难懂的特性之一。由于C编译器对关于8051架构的独特要求,函数指针和可重入函数需要克服更大的挑战。这主要是因为函数参数传递的方式。通常,(对于大多数非8051的芯片),函数参数是在栈上以压入和弹出的汇编指令来完成。由于8051的栈大小有限(仅128字节,某些设备上更低至64字节),函数参数传递必须用不同的技术来传递。英特尔为8051推出PL/ML-51编译器时,他们引入了将参数存储在固定内存位置的技术。当链接器被调用时,它会建立程序的调用树,找出哪些函数参数是相互独立的,然翻译 2020-09-01 21:33:43 · 6537 阅读 · 9 评论 -
Keil C51 Code Banking
1. 简介MCS-51是8根数据线,16根地址线,所以MCS-51最大只能访问64KB(216)的地址。很多较复杂的C51代码,其整个代码生成Bin文件可能大小64KB。针对这种情况,Keil C51提出了Code Banking机制来解决这个问题。2. 基本原理MCS-51内核的代码执行机制已经固定死了,代码运行的地址范围只能在0-64KB之间。一般情况下,我们编译生成的Bin文件,其代码执行地址和代码存储地址是一致。MCU执行到哪个地址,直接去ROM上取相应地址的内容然后执行即可。MCU要访问超原创 2020-08-28 11:49:17 · 8710 阅读 · 6 评论 -
关于ARM Cortex-M0分散加载文件
1. 概念分散加载文件是MDK用来将生成的可执行文件内存分散在ARM存储器上不同位置,达到充分利用存储器的功能。分散加载文件有以下两种用法:1.1. 通用用法通常情况下,如果不需要分散加载文件,或者是简单的分散加载,都可以在Keil的Linker中色选Use Memory Layout from Target Dialog,然后直接在Target界面进行配置。片内ROM可以设置两段代码。1.2. 复杂用法有时候需要更详细的分散加载文件,如将指定文件存放在指定存储位置上。此时就需要使用分散加载文件原创 2020-05-25 18:28:28 · 1728 阅读 · 0 评论 -
C51和MDK的ROM大小及变量绝对地址初始化
1. C51的ROM大小Keil编译完之后,显示的Program Size: data=9.0 xdata=8 const=15 code=180,则 The Total ROM(const + code + code-gap + const-gap) is 199BYTE 实际生成的bin文件大小: 在.MAP中的C O D E M E M O R Y 中 code-ga...原创 2018-07-11 11:00:25 · 5730 阅读 · 0 评论 -
C51简介及Keil的使用
前言 此文档主要是针对有一定C/C++编程基础,并打算用Keil从事C51开发的开发人员。C51涉及的知识比较多,但是入门基本的开发,还是容易的。C51简介1. C51概念C51继承于C语言,主要运行于51内核的单片机平台。单片机,单片微型计算机器(SingleChipMicrocomputer)的简称,又称微控制单元(MicroControllerUnit,MCU)。MCU...原创 2018-03-23 10:28:21 · 41354 阅读 · 7 评论