自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(90)
  • 收藏
  • 关注

转载 Linux系统真的很吃内存?

free命令介绍下面为使用free命令查看我们实验室文件服务器内存得到的结果,-m选项表示使用MB为单位: 、               输出的第二行表示系统内存的使用情况:Mem: total(总量)= 3920MB,used(已使用)= 1938MB,free(空闲)= 1982MB,shared(共享内存)= 0MB,buffers = 497MB,ca...

2018-12-19 14:44:02 528

转载 一位久经沙场的嵌入式er站在初学者角度谈谈嵌入式开发与学习的一些问题

一位久经沙场的嵌入式er站在初学者角度谈谈嵌入式开发与学习的一些问题在刚刚涉足嵌入式开发的时候,总想找到这样一本书,它可以解决我一些这样那样的疑惑。但是遗憾的是,到现在也没有这样一本书面世,而且我想永远也不可能面世了。因为我的疑惑太多太杂了。这些疑惑在教科书中又难以寻找到答案。C 教程注重讲C 的语法,编译原理注重讲语法,语义的分析。每一门教科书都是有它的注重,所以那些交叉的问题便成了三不管。

2018-02-07 10:24:11 512

转载 软件和硬件都是对生活的高度抽象---论中断控制

不同的芯片体系设计在集成电路系统设计阶段其实都遵循大体一致的设计思想,芯片设计发展那么多年,真正为人所熟知的就是X86架构和ARM架构,当然还有日渐没落的MIPS,其他都是一些简单的控制器芯片体系。而硬件模块设计又是高度抽象于现实需求,很多时候,X86、ARM和MIPS只有底层寄存器和指令级别的差异,对于软件驱动基本是一致的。本文论及ARM体系的中断控制,以基于Cortex-A8的S5PV210为

2017-12-20 14:55:37 523

转载 嵌入式系统交叉调试原理和方法

嵌入式系统交叉调试方法一般分为两种,一种是基于JTAG的片上调试方法,一种是基于调试代理的远程调试方法。JTAG是一种国际标准芯片测试协议,目前大多数CPU体系都支持JTAG。基于JTAG的片上调试方法最突出的代表就是JLink调试器,其定义了一个软件调试层面的RDI接口标准,然后JLink调试器将调试环境软件(IAR、KEIL等)发出的RDI接口转化为JTAG命令,对芯片进行调试。该方法多适

2017-12-18 10:52:29 5055

转载 字符设备驱动、设备驱动模型、sysfs、平台设备驱动的关系 -----从需求的角度去理解Linux之三

学习Linux设备驱动开发的过程中自然会遇到字符设备驱动、平台设备驱动、设备驱动模型和sysfs等相关概念和技术。对于初学者来说会非常困惑,甚至对Linux有一定基础的工程师而言,能够较好理解这些相关技术也相对不错了。要深刻理解其中的原理需要非常熟悉设备驱动相关的框架和模型代码。网络上有关这些技术的文章不少,但多是对其中的某一点进行阐述,很难找到对这些技术进行比较和关联的分析。对于开发者而言,能够

2017-12-17 16:18:26 557

转载 控制器中如何设计MMU--虚拟内存管理机制

高级处理器CPU一般都会实现内存管理单元(MMU),其也是Linux等高级操作系统运行的必备条件。虚拟内存管理是linux操作系统的基本组件之一,其目的是让每个应用程序都单独拥有足够大的(G字节级别)逻辑空间,并共享同一块较小的物理内存空间。虚拟内存管理正是依赖内存管理单元(MMU)来实现的。各进程在内存中的页表和MMU中的TLB(相当于页表的cache)是虚拟内存管理中的重要概念。   

2017-12-15 09:45:21 930

转载 从需求的角度去理解嵌入式Linux:总线、设备和驱动

一、软件、面向对象、软件框架软件是为了解决现实问题而产生的,面向对象的软件思维是解决普遍现实问题的一种有效的抽象方法,而软件框架指的是用面向对象的思维去解决某种特定领域的问题而专门设计的一套行之有效的解决方案。一般地,JAVA/C++编程反映面向对象的软件思维,而像Android Framework、Windows MFC和Linux的QT则代表应用层的软件框架。前述应用框架要解决的问

2017-12-11 16:31:36 356

转载 C语言在嵌入式系统编程时的注意事项1

C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。20世纪80年代,为了避免

2017-12-10 11:01:12 1907

转载 嵌入式软件学习路线图!

嵌入式学习是一个循序渐进的过程,如果是希望向嵌入式软件方向发展的话,目前最常见的是嵌入式Linux方向,关注这个方向,我认为大概分3个阶段:1、嵌入式Linux上层应用,包括QT的GUI开发2、嵌入式Linux系统开发3、嵌入式Linux驱动 嵌入式目前主要面向的几个操作系统是,Linux,WINCE、VxWorks等等。 Linux是开源免费的,而且其源代码是开放的,

2017-12-09 17:03:01 7408 2

转载 Linux多线程及线程间同步

1、进程和线程的区别进程的目的就是担当分配系统资源(CPU时间、内存等)的基本单位。线程是进程的一个执行流,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。一个进程由几个线程组成,线程与同属一个进程的其他的线程共享进程所拥有的全部资源。地址空间:进程有独立的地址空间,包括文本区域(text region)、数据区域(data region)和堆栈(stack reg

2017-12-08 14:13:45 201

转载 Linux文件系统的硬链接与软链接

Linux 系统中有软链接和硬链接两种特殊的“文件”。软链接可以看作是Windows中的快捷方式,可以让你快速链接到目标档案或目录。硬链接则透过文件系统的inode来产生新档名,而不是产生新档案。创建方法都很简单:1. 软链接(符号链接) ln -s   source  target 2. 3. 硬链接(实体链接)ln       source  target

2017-12-06 10:52:06 313

转载 通俗讲解单片机、ARM、MUC、DSP、FPGA、嵌入式错综复杂的关系!

首先,“嵌入式”这是个概念,准确的定义没有,各个书上都有各自的定义。但是主要思想是一样的,就是相比较PC机这种通用系统来说,嵌入式系统是个专用系统,结构精简,在硬件和软件上都只保留需要的部分,而将不需要的部分裁去。所以嵌入式系统一般都具有便携、低功耗、性能单一等特性。然后,MCU、DSP、FPGA这些都属于嵌入式系统的范畴,是为了实现某一目的而使用的工具。MCU俗称”单片机“经过这么多年的

2017-12-05 11:15:50 2915

转载 基于STM32的半导体制冷片(TEC)温度控制系统设计

一些医疗检测仪器在检测时需要模拟人体温度环境以确保检测的精确性,本文以STM32为主控制器,电机驱动芯片DRV8834 为驱动器,驱动半导体致冷器(帕尔贴)给散热片加热或者制冷。但由于常规的温度控制存在惯性温度误差的问题,无法兼顾高精度和高速性的严格要求,所以采用模糊自适应PID控制方法在线实时调整PID参数,计算PID参数Kp、Ki、Kd调整控制脉冲来控制驱动器的使能。从simulink仿真的和

2017-12-04 11:28:01 18651 4

转载 CPU和GPU擅长和不擅长的地方

CPU和GPU都是具有运算能力的芯片,CPU更像“通才”——指令运算(执行)为重+ 数值运算,GPU更像“专才”——图形类数值计算为核心。在不同类型的运算方面的速度也就决定了它们的能力——“擅长和不擅长”。 芯片的速度主要取决于三个方面:微架构、主频、IPC(每个时钟周期执行的指令数)。 1.微架构从微架构上看,CPU和GPU看起来完全不是按照相同的设计思路

2017-12-03 15:43:26 465

转载 手把手教你写Linux设备驱动---定时器(一)(基于友善之臂4412开发板)

在Linux内核中,有这样的一个定时器,叫做内核定时器,内核定时器用于控制某个函数,也就是定时器将要处理的函数在未来的某个特定的时间内执行。内核定时器注册的处理函数只执行一次,即不是循环执行的。如果对延迟的精度要求不高的话,最简单的实现方法如下---忙等待:Unsigned long  j = jiffies + jit_delay * HZ;While(jiffies  { 

2017-12-02 15:56:43 465

转载 如何学习嵌入式系统(硬件篇),含51单片机学习资料

学习嵌入式之前我们需要了解什么是嵌入式。(官方说法)嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。国内普遍认同的嵌入式系统定义为:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。举些例子,手机、电子时钟、智能报警装置、自动监控器、出租车计费器等等都属于嵌入式系统,嵌入式系统是硬件和软件的综合体。硬件篇:

2017-12-01 17:35:00 1737

转载 搞Linux设备驱动,你应该明白这几个问题

想要深入理解linux设备驱动,你必须明确以下几个问题:· 应用程序、库、内核、驱动程序的关系· 设备类型· 设备文件、主设备号与从设备号· 驱动程序与应用程序的区别· 用户态与内核态· Linux驱动程序功能一、应用程序、库、内核、驱动程序的关系1) 应用程序调用一系列函数库,通过对文件的操作完成一系列功能:       应用程序以文件形式访问各种硬件设备(L

2017-12-01 15:59:49 788 1

转载 简单明了!嵌入式Linux启动过程详解

init阶段(1)  1.确定用户登录模式在“/etc/inittab”中列出了如下所示的登录模式,主要有单人维护模式、多用户无网络模式、文字界面多用户模式、X-Windows多用户模式等。其中的单人维护模式(runlevel为1)是类似于Windows中的“安全模式”,在这种情况下,系统不加载复杂的模式从而使系统能够正常启动。在这些模式中最为常见的是3或5,其中本系统中默认的为5,也

2017-11-29 10:25:50 633

转载 高手谈嵌入式调试的复杂性

嵌入式系统的调试往往很复杂,可用的手段并不像PC编程那么多,开发成本较PC系统也要大很多。嵌入式系统调试主要手段只有JTAG为代表的单步追踪、printf夹杀大法等。 这两种调试方法在嵌入式中也不尽然全部能解决问题。Jtag需要调试者有一个调试设备(有可能很昂贵),和目标系统相连。使用类似GDB Client等软件登录调试设备,跟踪运行程序。说实话,这个方法对嵌入式来讲是终极的调试办法,也

2017-11-28 11:31:23 929

转载 对于linux下system()函数的深度理解

这几天调程序(嵌入式linux),发现程序有时就莫名其妙的死掉,每次都定位在程序中不同的system()函数,直接在shell下输入system()函数中调用的命令也都一切正常.就没理这个bug,以为是其他的代码影响到这个,或是内核驱动文件系统什么的异常导致,昨天有出现了这个问题,就随手百了一下度,问题出现了,很多人都说system()函数要慎用要少用要能不用则不用,system()函数不稳定? 

2017-11-27 15:47:59 18118

转载 嵌入式系统知识大总结

嵌入式系统基础 1、嵌入式系统的定义(1)定义:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。(2)嵌入式系统发展的4个阶段:无操作系统阶段、简单操作系统阶段、实时操作系统阶段、面向Internet阶段。(3)知识产权核(IP核):具有知识产权的、功能具体、接口规范、可在多个集成电路设计

2017-11-26 14:26:22 381

转载 PCB阻抗控制

随着 PCB 信号切换速度不断增长,当今的 PCB 设计厂商需要理解和控制 PCB 迹线的阻抗。相应于现代数字电路较短的信号传输时间和较高的时钟速率,PCB 迹线不再是简单的连接,而是传输线。      在实际情况中,需要在数字边际速度高于1ns或模拟频率超过300Mhz时控制迹线阻抗。PCB 迹线的关键参数之一是其特性阻抗(即波沿信号传输线路传送时电压与电流的比值)。印制电路板上导线的特

2017-11-26 14:17:27 2354

转载 STM32入门系列-使用C语言封装寄存器

前面介绍了存储器映射、寄存器和寄存器映射,这些都是为了介绍使用 C语言封装寄存器做铺垫。这里我们通过一个实例来对 C 语言封装寄存器进行介绍。    具体实例:控制 GPIOC 端口的第 0 管脚输出一个低电平。首先我们需要知道GPIOC 端口外设是挂接在哪个总线上的,然后根据总线基地址和本身的偏移地址得到 GPIOC 外设基地址,最后通过这个外设基地址得到里面各种寄存器基地址。总线和外设

2017-11-24 10:07:39 4085

转载 STM32入门系列-STM32外设地址映射

片上外设区分为四条总线,根据外设速度的不同,不同总线挂载着不同的外设,APB1挂载低速外设,APB2和AHB挂载高速外设。相应总线的最低地址我们称为该总线的基地址,总线基地址也是挂载在该总线上的首个外设的地址。APB1总线的地址最低,因此片上外设就从这这个地址开始,也称外设基地址。总线基地址    从存储器映射那张图的Block2可以看到,分为4大块,每块都有一个起始地址,这个起始地址就是

2017-11-24 10:00:14 8884

转载 FPGA的几点总结,你同意吗?

1.  FPGA编程语言为何叫硬件描述语言?        硬件即FPGA硬件,硬件描述语言,也就自然地告诉我们可以通过语言来描述FPGA内部硬件。如:用y=a&b来描述一个2输入的与门,用PLL来描述类似外部时钟管理芯片。        因此,要想学好FPGA,你得用硬件的思维方式来编写代码,注重FPGA的系统结构设计,好的系统结构设计会带来质的飞跃,这就告诉我们RTL Coding其实

2017-11-22 11:36:09 272

转载 基于ARM-contexA9蜂鸣器驱动开发

上次,我们写了一个LED的驱动程序,这一节,我们只需稍微改动一下就可以实现蜂鸣器的驱动,让我们来看看吧。     还是跟之前一样,先找电路图,找到电路板上对应的引脚和相关联的寄存器。     1、看电路图     (1)蜂鸣器接口位于电路板的底板,看电路图可知道是高电平有效。    (2)相对应的找到核心板的接口。由此可知,我们的蜂鸣器是GPD0_0 接下来找数据手册,

2017-11-22 11:26:33 869

转载 Linux中管理EXT2、EXT3和EXT4健康状况的4个工具

文件系统是一个在计算机上帮你去管理数据怎么去存储和检索的数据结构。文件系统也可以被视作是磁盘上的物理(或扩展)分区。如果它没有很好地被维护或定期监视,它可能在长期运行中出现各种各样的错误或损坏。这里有几个可能导致文件系统出问题的因素:系统崩溃、硬件或软件故障、有问题的驱动和程序、不正确的优化、大量的数据过载加上一些小故障。这其中的任何一个问题都可以导致 Linux 不能顺利地挂载(或卸

2017-11-21 10:36:01 433

转载 Linux进程间通信——使用共享内存

一、什么是共享内存顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,就好像它们是由用C语言函数malloc分配的内存一样。而如果某个进程向共享内存写入数据,所做的改动将立即影响到

2017-11-21 10:16:43 198

转载 嵌入式Linux内存管理的一些知识点总结

感觉这个内存管理的知识点还真的需要专门的去理解一下,今天我们一起来学习学习。要求1.不涉及linux内核的汇编知识,仅C语言层面解析1.回答:汇编主要处理的是寄存器地址(包括内容)的计算,进行一部分的地址转换工作(当然,它是重要的);C语言处理了极大部分的系统内存管理工作。 2.虚拟地址、线性地址、物理地址三者映射关系回答:1.虚拟地址:程序员(在缩小范围估计是:应用程序员

2017-11-20 14:30:52 877

转载 嵌入式ARM Linux kernel启动过程之浅尝辄止分析start_kernel函数

了解了kernel启动以前的汇编之后我们来看看正式的c语言启动代码,也就是我们的start_kernel函数了。start_kernel相当大,里面每一个调用到的函数都足够我们伤脑筋了,这里只是浅尝辄止的描述一下函数的功能,从而对kernel启动的过程有一个比较直观的了解。很多函数真正理解需要对linux相关体系有很深的了解。 说实话启动的代码看到现在唯一的感觉就是kernel的全局变量实

2017-11-20 14:18:13 355

转载 看单片机和数字电路怎么抗干扰

(1)干扰源,指产生干扰的元件、设备或信号,用数学语言描述如下:du/dt,di/dt大的地方就是干扰源。如:雷电、继电器、可控硅、电机、高频时钟等都可能成为干扰源。 (2)传播路径,指干扰从干扰源传播到敏感器件的通路或媒介。典型的干扰传播路径是通过导线的传导和空间的辐射。 (3)敏感器件,指容易被干扰的对象。如:A/D、D/A变换器,单片机,数字IC,弱信号等。 抗干扰设

2017-11-18 11:50:32 587

转载 嵌入式学习笔记之GPIO详解

一、什么是GPIO GPIO,英文全称为General-Purpose IO ports,也就是通用IO口。在嵌入式系统中常常有数量众多,但是结构却比较简单的外部设备/电路,对这些设备/电路有的需要CPU为之提供控制手段,有的则需要被CPU用作输入信号。而且,许多这样的设备/电路只要求一位,即只要有开/关两种状态就够了,比如灯亮与灭。对这些设备/电路的控制,使用传统的串行口或并行口都不

2017-11-18 11:06:08 2737 1

转载 STM32入门系列-GPIO结构

已经了解了STM32 GPIO的基本概念及引脚分类。现在来看下STM32 GPIO内部的结构是怎样的。IO端口位的基本结构如下图所示。  从图中可以看出GPIO内部结构还是比较复杂的,只要将这张GPIO结构图理解好,那么关于GPIO的各种应用模式将非常清楚。图中最右端I/O端口就是STM32芯片的引脚,其它部分都在STM32芯片内部。上图中我们将每部分都用红色数字标号了,按照顺序我们逐一讲

2017-11-17 14:09:27 1822

转载 STM32入门系列-GPIO工作模式及LED电路原理

GPIO工作模式    由于GPIO内部的结构关系,决定了GPIO可配置成以下几种模式。· 输入模式·     在输入模式时,施密特触发器打开,输出被禁止。可通过输入数据寄存器GPIOx_IDR读取I/O状态。输入模式可以配置为模拟、上拉、下拉以及浮空模式。上拉和下拉输入很好理解,默认的电平由上拉或者下拉决定。浮空输入的电平是不确定的,完全由外部的输入决定,一般接按键的时候可以

2017-11-17 11:28:20 4794

转载 LabVIEW串口通讯—通信协议

所谓通信协议是指通信双方的一种约定。约定包括对数据格式、同步方式、传送速度、传送步骤、检纠错方式以及控制字符定义等问题做出统一规定,通信双方必须共同遵守。因此,也叫做通信控制规程,或称传输控制规程,它属于ISO'S OSI七层参考模型中的数据链路层。目前,采用的通信协议有两类:异步协议和同步协议。同步协议又有面向字符和面向比特以及面向字节计数三种。其中,面向字节计数的同步协议主要用于DEC

2017-11-16 11:32:35 6981

转载 ARM、DSP、FPGA的技术特点和区别

ARM(Advanced RISC Machines)是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软 件。ARM架构是面向低预算市场设计的第一款RISC微处理器,基本是32位单片机的行业标准,它提供一系列内核、体系扩展、微处理器和系统芯片方案,四个功能模块可供生产厂商根据不同用户的要求来配置生产。由于所有产品均采用一个通用的软件体系,所以相同的软件可

2017-11-16 10:54:53 354

转载 Arm linux 内核构建(2)

本文将继续讲解arm linux内核zImage的生成过程,内核版本号4.10。 在arch/arm/Makefile文件中,可以看到zImage 依赖于vmlinux,这里的vmlinux指的是根目录下的vmlinux。 arch/arm/Makefile:boot := arch/arm/bootBOOT_TARGETS    = zImage Image xipIma

2017-11-15 11:38:47 375

转载 Arm linux 内核构建

一、概述本文基于Linux Kernel 4.10版本讲解。Linux内核采用类似于GNU Make的kbuild构建而成,关于内核的构建系统kbuild,可以先看本公众号内以前的文章:Kbuild结构简介 arm linux 内核的构建分为三次编译链接,一次组合。三次链接的中间结果分别是:        1.arch/arm/boot/compressed/vmlinux

2017-11-15 11:26:38 270

转载 开发经验!嵌入式硬件设计需要考虑的一些问题总结

1.MCU的选择 选择 MCU 时要考虑 MCU 所能够完成的功能、MCU 的价格、功耗、供电电压、I/O 口电平、管脚数目以及 MCU 的封装等因素。MCU 的功耗可以从其电气性能参数中查到。供电电压有 5V、3.3V 以及 1.8V 超低电压供电模式。为了能合理分配 MCU 的I/O资源,在 MCU 选型时可绘制一张引脚分配表,供以后的设计使用。 2.电源 (1)考虑系

2017-11-14 09:54:49 628

转载 详解RS232、RS485、RS485、串口&握手

一、RS232基础知识计算机与计算机或计算机与终端之间的数据传送可以采用串行通讯和并行通讯二种方式。由于串行通讯方式具有使用线路少、成本低,特别是在远程传输时,避免了多条线路特性的不一致而被广泛采用。在串行通讯时,要求通讯双方都采用一个标准接口,使不同的设备可以方便地连接起来进行通讯。RS-232-C接口(又称EIA RS-232-C)是目前最常用的一种串行通讯接口。RS-

2017-11-14 09:39:54 448

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除