嵌入式编程
文章平均质量分 87
sg-expert
elite
展开
-
使用riscv-gnu-toolchain编译linux内核
riscv-gnu-toolchain的交叉编译工具链编译和使用原创 2023-07-27 23:57:24 · 773 阅读 · 0 评论 -
实例化解析USB 通信协议
实例化解析usb通信原创 2022-08-27 18:22:42 · 684 阅读 · 0 评论 -
解决文件大导致磁盘满的问题
找到导致磁盘满的程序当发现磁盘占用比较多的时候,可以通过下面的命令,查看各个挂载路径的占用情况:$ df -hudev 3.9G 0 3.9G 0% /devtmpfs 784M 2.0M 782M 1% /run/dev/sda11 19G 6.5G 12G 37% /tmpfs 3.9G 91M 3.8G 3% /dev/shmtmpfs 5.0M原创 2020-10-11 22:56:28 · 494 阅读 · 0 评论 -
比较单片机3种时钟电路方案
作为单片机研发设计的项目,它的最小电路工作系统包含电源电路、复位电路、时钟频率电路;其中电源电路与复位电路,相信工程师都非常容易理解与设计。然而时钟频率电路,由于不同的开发项目功能需求不一样,设计的方案选择也不尽相同,很难得到有效的统一设计。1 外部晶振方案所谓外部晶振方案,是指在单片机的时钟引脚X1与X2外部连接一个晶振。单片机外部晶振图优点:时钟频率精度高,稳定性能好;对于一些数据处理能力要求较高的项目,尤其是多个电路系统彼此需要信息通讯,如包含USB通讯、CAN通讯的项目,选用外部晶振的方案原创 2020-08-25 22:42:17 · 472 阅读 · 0 评论 -
Linux环境下c程序段错误的产生原因及调试方法总结
在Linux环境下做C语言项目,项目工程庞大复杂,出现了不少问题,其中遇到最多、花费时间最长的问题就是著名的“段错误”(Segmentation Fault)。借此机会系统学习了一下。1. 段错误是什么一句话来说,段错误是指访问的内存超出了系统给这个程序所设定的内存空间,例如访问了不存在的内存地址、访问了系统保护的内存地址、访问了只读的内存地址等等情况2. 段错误产生的原因2.1 访问不存...原创 2020-04-28 23:08:01 · 4019 阅读 · 1 评论 -
C语言内存-栈与堆使用
C语言程序需要载入内存才可以运行,其不同的数据保存在不同的区域。所使用的内存可以分成两类:一类是静态存储区,另一类是动态存储区。1 静态存储区静态存储区分为三类:只读数据区(RO Data)、已初始化读写数据区(RW Data)、未初始化读写读写数据区(BSS)。这三类存储区都是在程序的编译-连接阶段确定的,且运行过程中是不会变化的,只有当程序退出的时候,静态存储区的内存才会被系统回收。2...原创 2019-12-29 19:19:34 · 1277 阅读 · 0 评论 -
指针与数组使用的区别(C语言)
一 函数不可返回指向栈内存的指针预备知识:内存的分类C/C++程序占用的内存分为两大类:静态存储区与动态存储区。其示意图如下所示:数据保存在静态存储区与动态存储区的区别就是:静态存储区在编译-链接阶段已经确定了,程序运行过程中不会变化,只有当程序退出的时候,静态存储区的内存才会被系统回收。动态存储区是在程序运行过程中动态分配的。在其它地方我们还可以看到内存分配还有其他分类,那些都是细分的...原创 2019-12-29 18:56:07 · 199 阅读 · 0 评论 -
一文搞定电子设计的静电放电(ESD)问题
冬天来了,又到触电时刻!和静电亲密接触的瞬间,可以弹出好几米。不止生活中,我们的电子电路中也“隐藏”静电,你知道么?人类认识静电放电(ESD)的心路历程顾名思义,静电就是静止不动的电荷。各种物质的原子核对电子的束缚能力不同,因而物质得失电子的本领也不同,这就造成了摩擦起电等各种带电现象。金属的外层电子容易丢失,这些从原子内跑出来的电子叫做“自由电子”,所以金属容易导电。绝缘体内的电子受到原子...转载 2019-12-11 22:47:24 · 3763 阅读 · 0 评论 -
用指针参数去申请内存
void GetMemory2(char **p, int num){ *p = (char *)malloc(sizeof(char) * num);}void Test2(void){ char *pt = NULL; GetMemory2(&pt, 100); // 注意参数是 &pt,而不是pt strcpy(str, "hello"); cout原创 2016-11-24 17:32:12 · 424 阅读 · 0 评论 -
Unix下C程序内存泄漏检测工具Valgrind安装与使用
Valgrind是一款用于内存调试、内存泄漏检测以及性能分析的软件开发工具。Valgrind的最初作者是Julian Seward,他于2006年由于在开发Valgrind上的工作获得了第二届Google-O'Reilly开源代码奖。Valgrind遵守GNU通用公共许可证条款,是一款自由软件。 官网http://www.valgrind.org转载 2017-01-18 14:20:33 · 241 阅读 · 0 评论 -
live555的概要介绍
1live555简介编辑Live555 是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准流媒体传输协议如RTP/RTCP、RTSP、SIP等的支持。Live555实现了对多种音视频编码格式的音视频数据的流化、接收和处理等支持,包括MPEG、H.263+、DV、JPEG视频和多种音频编码。同时由于良好的设计,Live555非常容易扩展对其他格式的支持。目前,Live555已经被转载 2017-03-16 14:58:48 · 783 阅读 · 0 评论 -
CRC16的代码段
/* @func crc16 * @input array pointer and numbers of array * @output crc result ****************************************************************************** * @description * *原创 2017-09-05 14:59:43 · 363 阅读 · 0 评论 -
Linux环境变量设置/etc/profile、/etc/bashrc、~/.profile、~/.bashrc
登入系统读取步骤:当登入系统时候获得一个shell进程时,其读取环境设定档有三步 :1.首先读入的是全局环境变量设定档/etc/profile,然后根据其内容读取额外的设定的文档,如 /etc/profile.d和/etc/inputrc2.然后根据不同使用者帐号,去其家目录读取~/.bash_profile,如果这读取不了就读取~/.bash_login,这个也读取不了才会读取~/.转载 2018-02-02 11:36:27 · 2860 阅读 · 2 评论 -
linux下rabbitmq发送接收流程
1.创建一个新连接conn = amqp_new_connection();2.创建一个新socketsocket = amqp_tcp_socket_new(conn);3.打开socket,设置IP、port等status = amqp_socket_open(socket, hostname, port);4.登录服务器amqp_login(conn, "/", 0,转载 2018-03-22 16:33:22 · 1127 阅读 · 0 评论 -
System V IPC 之共享内存
IPC 是进程间通信(Interprocess Communication)的缩写,通常指允许用户态进程执行系列操作的一组机制:通过信号量与其他进程进行同步向其他进程发送消息或者从其他进程接收消息和其他进程共享一段内存区System V IPC 最初是在一个名为 "Columbus Unix" 的开发版 Unix 变种中引入的,之后在 AT&T 的 System III 中采用。现转载 2018-04-04 13:37:27 · 270 阅读 · 0 评论 -
System V 信号量的区别
在开始正式的内容前让我们先概要的了解一下 Linux 中信号量的分类。信号量的分类在学习 IPC 信号量之前,让我们先来了解一下 Linux 提供两类信号量:内核信号量,由内核控制路径使用。用户态进程使用的信号量,这种信号量又分为 POSIX 信号量和 System V 信号量。POSIX 信号量与 System V 信号量的区别如下:对 POSIX 来说,转载 2018-04-04 13:42:27 · 301 阅读 · 0 评论 -
STM32F4读写内部FLASH【使用库函数】
STM32F4Discovery开发帮使用的STM32F407VGT6芯片,内部FLASH有1M之多。平时写的代码,烧写完之后还有大量的剩余。有效利用这剩余的FLASH能存储不少数据。因此研究了一下STM32F4读写内部FLASH的一些操作。【STM32F4 内部Flash的一些信息】STM32F407VG的内部FLASH的地址是:0x08000000,大小是0x00100000。写F转载 2016-11-22 11:46:55 · 2000 阅读 · 0 评论 -
CreateThread,_beginthread,_beginthreadx的区别
CreateThread是Windows的API函数,而_beginthread和_beginthreadex则是CRT库函数,查看这两个CRT函数的代码可以得知其实它们内部是调用的CreateThread(这很显然嘛,CRT库也是要运行在Windows上)。CreateThread API创建的线程中使用sprintf,malloc,strcat等涉及CRT存储堆操作的CRT库函数是很危险的,转载 2016-10-25 17:00:05 · 351 阅读 · 0 评论 -
嵌入式系统中看门狗的使用
最近需要在板子上加上一块WatchDog,以确保在系统出错时自动重启,所以看了一些在嵌入式系统中使用看门狗的资料,现在总结如下:一、看门狗原理 在产品化的嵌入式系统中,为了使系统在异常情况下能自动复位,一般都需要引入看门狗。 看门狗其实就是一个可以在一定时间内被复位的计数器。当看门狗启动后,计数器开始自动计数,经过一定时间,如果没有被复位,计数器溢出就会对CPU产生一个复位转载 2013-06-26 15:13:17 · 6115 阅读 · 0 评论 -
Linux内核的时钟中断机制
good,转载一下。 Linux内核的时钟中断机制第七章 Linux内核的时钟中断 (By 詹荣开,NUDT) opyright © 2003 by 詹荣开 E-mail:zhanrk@sohu.com Linux-2.4.0 Version 1.0.0,2003-2-14 摘要:本文主要从内核实现的角度分析了Linux 2.4.0内核的时钟中断、内核转载 2013-06-26 15:34:43 · 4164 阅读 · 0 评论 -
Blackfin DSP学习心得与参考资料
呵,学习DSP,特别是Blackfin系列的,没数据手册简直是没法学的。该系列基本上只有英文资料,而就我目前翻过的所有教材基本上都是从数据手册上摘录一个片段,翻译一下就完事了,连个总结都没有。很多关键的地方(比如中断),要想理解完整,必须同时参考多个数据手册,因此只看教材基本上是云里雾里的。附件里是bf548与bf533的相关手册,与bf561大部分是一样的。bf561是双核的,在编译与链接库参考转载 2013-07-03 23:07:38 · 3972 阅读 · 0 评论 -
DSP中CMD的作用及说明
CMD文件有两种产生方式:一种是手写,一种是由DSP/BIOS配置工具产生。CMD的作用很多,但它的最基本的功能就是实现对存储空间的说明和配置。如下关于CMD配置的例程主要完成的功能有:1. 说明系统有片内静态RAM(ISRAM,256KB)和片外动态RAM(SDRAM,32MB)组成,其起始地址和长度分别为...2. 构建一个C工程需要多个段,SECTIONS中说明如何分配这些段。都转载 2013-08-28 16:24:09 · 2132 阅读 · 0 评论 -
DSP之中断总结篇
1 中断概述中断定义:由硬件或软件驱动的信号,使DSP将当前的程序挂起,执行另一个称为中断服务子程序(ISR)的任务。C55x支持32个ISR。有些ISR可以由软件或硬件触发,有些只能由软件触发。当CPU同时收到多个硬件中断请求时,CPU会按照预先定义的优先级对它们做出响应和处理。所有的软件中断都是不可屏蔽中断 DSP处理中断的步骤:(1)接收中断请求。转载 2013-08-17 17:44:48 · 2911 阅读 · 0 评论 -
Qt 中的QString和QByteArray 使用
最近在用Qt做字符串数据收发方面的实验,经常用到像QString和QByteArray一类的字符处理类,因此在这里做一个总结,文章有点凌乱,希望见谅。 先要说的是QString。 之所以把QString单独拿出来,是因为string是很常用的一个数据结构,甚至在很多语言中,比如JavaScript,都是把string作为一种同int等一样的基本数据结构来实现的。转载 2013-09-13 11:55:12 · 2201 阅读 · 0 评论 -
C++中数字与字符串之间的转换
1、字符串数字之间的转换(1)string --> char * string str("OK"); char * p = str.c_str();(2)char * -->string char *p = "OK"; string str(p);(3)char * -->CString char *p ="OK"; CSt转载 2013-12-18 14:53:55 · 530 阅读 · 0 评论 -
C++ 内存分配、堆栈!
内存分配方面:堆:操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时,会遍历该链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删除,并将该结点的空间分配给程序,另外,对于大多数系统,会在这块内存空间中的首地址处记录本次分配的大小,这样代码 中的delete语句才能正确的释放本内存空间。我们常说的内存泄露,最常见的就是堆泄露(还有资源泄露),它是指程序在运行转载 2014-01-02 17:53:50 · 667 阅读 · 0 评论 -
Unicode和UTF-8的区别
如果你对能很快回答出unicode和utf-8的关系,你可以直接跳过这篇文章。下面我来说说两者的关系和转换。(本文使用符号2字代表所有的汉字,英文,数字等)首先明确一点,UTF-8是UNICODE一种实现方式。UNICODE:代表一种符号集合,它规定了一种符合的二进制表示,没有指明存储方式。(http://www.unicode.org/)UTF-8:实现了UNICODE,使用多字节的转载 2014-01-20 10:01:43 · 1217 阅读 · 0 评论 -
linux ps top 命令 VSZ,RSS,TTY,STAT, VIRT,RES,SHR,DATA的含义
http://javawind.net/p131VIRT:virtual memory usage 虚拟内存1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量RES:resident memory usage 常驻内存1、进程当前使用的内存大小,但不包括swap out转载 2014-08-29 10:00:54 · 95236 阅读 · 2 评论 -
编译安装linux内核步骤
一.获取内核源码源码网址:www.kernel.org二.解压内核源码首先以root帐号登录,然后进入/usr/src子目录。如果用户在安装Linux时,安装了内核的源代码,则会发现一个linux-x.y.z的子目录。该目录下存放着内核x.y.z的源代码。此外,还会发现一个指向该目录的链接linux。删除该连接,然后将新内核的源文件拷贝到/usr/src目录中,并解压:# tar转载 2015-08-26 17:15:18 · 1528 阅读 · 0 评论 -
各种流派的正则表达式简单介绍
正则表达式:在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容。许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“r转载 2016-03-01 15:49:17 · 1997 阅读 · 0 评论 -
微处理器的实模式和保护模式
什么是保护模式自从1969年推出第一个微处理器以来,Intel处理器就在不断地更新换代,从8086、8088、80286,到80386、80486、奔腾、奔腾Ⅱ、奔腾4等,其体系结构也在不断变化。80386以后,提供了一些新的功能,弥补了8086的一些缺陷。这其中包括内存保护、多任务及使用640KB以上的内存等,并仍然保持和8086家族的兼容性。也就是说80386仍然具备了8086和80286转载 2016-05-12 23:44:31 · 609 阅读 · 0 评论 -
arm-linux交叉编译ACE
ACE应用于主站数据采集核心的开发已告一段落了。现在打算涉足嵌入式linux应用程序的设计。俗话说“工欲善其事,必先利其器”,ACE支持arm系列的嵌入式系统,当然首先折腾他了,后期还打算整整apache的运行时库apr。嵌入式系统的仿真平台采用skyeye,在这样一个平台里我已经实现了nfs mount 宿主机目录。测试交叉编译后的程序十分方便。 网上搜到一篇《机电之家 嵌入式L转载 2016-05-17 09:34:33 · 2148 阅读 · 1 评论 -
WES7 定制界面完整过程
前一段时间得到了很多大侠的指导,今天汇报实验的结果如下:目的:实验从启动开始到出现桌面,不出现任何windows图标或标识。WES7启动大致有3个阶段(以界面显示分类)1、“windows启动+启动动画”阶段2、出现鼠标和时间圈阶段(时间比较短)3、出现“欢迎”界面+登录+WES7版本阶段完整的修改过程如下(前提已经安装成功WES7,并成功启动)1、安装VC转载 2016-09-23 15:41:31 · 5044 阅读 · 1 评论 -
UC/OS和uClinux的比较
随着现代计算机技术的飞速发展和互联网技术的广泛应用,从PC时代过渡到了以个人数字助理、手持个人电脑和信息家电为代表的3C(计算机、通信、消费电子)一体的后PC时代。后PC时代里,嵌入式系统扮演了越来越重要的角色,被广泛应用于信息电器、移动设备、网络设备和工控仿真等领域。嵌入式系统是以嵌入式计算机为核心,面向用户、面向产品、面向应用,软硬件可裁减的,适用于对功能、可靠性、体积、成本、功耗等综合性转载 2013-06-20 21:35:14 · 731 阅读 · 0 评论