Linux系统真的很吃内存? free命令介绍下面为使用free命令查看我们实验室文件服务器内存得到的结果,-m选项表示使用MB为单位: 、 输出的第二行表示系统内存的使用情况:Mem: total(总量)= 3920MB,used(已使用)= 1938MB,free(空闲)= 1982MB,shared(共享内存)= 0MB,buffers = 497MB,ca...
一位久经沙场的嵌入式er站在初学者角度谈谈嵌入式开发与学习的一些问题 一位久经沙场的嵌入式er站在初学者角度谈谈嵌入式开发与学习的一些问题在刚刚涉足嵌入式开发的时候,总想找到这样一本书,它可以解决我一些这样那样的疑惑。但是遗憾的是,到现在也没有这样一本书面世,而且我想永远也不可能面世了。因为我的疑惑太多太杂了。这些疑惑在教科书中又难以寻找到答案。C 教程注重讲C 的语法,编译原理注重讲语法,语义的分析。每一门教科书都是有它的注重,所以那些交叉的问题便成了三不管。
软件和硬件都是对生活的高度抽象---论中断控制 不同的芯片体系设计在集成电路系统设计阶段其实都遵循大体一致的设计思想,芯片设计发展那么多年,真正为人所熟知的就是X86架构和ARM架构,当然还有日渐没落的MIPS,其他都是一些简单的控制器芯片体系。而硬件模块设计又是高度抽象于现实需求,很多时候,X86、ARM和MIPS只有底层寄存器和指令级别的差异,对于软件驱动基本是一致的。本文论及ARM体系的中断控制,以基于Cortex-A8的S5PV210为
嵌入式系统交叉调试原理和方法 嵌入式系统交叉调试方法一般分为两种,一种是基于JTAG的片上调试方法,一种是基于调试代理的远程调试方法。JTAG是一种国际标准芯片测试协议,目前大多数CPU体系都支持JTAG。基于JTAG的片上调试方法最突出的代表就是JLink调试器,其定义了一个软件调试层面的RDI接口标准,然后JLink调试器将调试环境软件(IAR、KEIL等)发出的RDI接口转化为JTAG命令,对芯片进行调试。该方法多适
字符设备驱动、设备驱动模型、sysfs、平台设备驱动的关系 -----从需求的角度去理解Linux之三 学习Linux设备驱动开发的过程中自然会遇到字符设备驱动、平台设备驱动、设备驱动模型和sysfs等相关概念和技术。对于初学者来说会非常困惑,甚至对Linux有一定基础的工程师而言,能够较好理解这些相关技术也相对不错了。要深刻理解其中的原理需要非常熟悉设备驱动相关的框架和模型代码。网络上有关这些技术的文章不少,但多是对其中的某一点进行阐述,很难找到对这些技术进行比较和关联的分析。对于开发者而言,能够
控制器中如何设计MMU--虚拟内存管理机制 高级处理器CPU一般都会实现内存管理单元(MMU),其也是Linux等高级操作系统运行的必备条件。虚拟内存管理是linux操作系统的基本组件之一,其目的是让每个应用程序都单独拥有足够大的(G字节级别)逻辑空间,并共享同一块较小的物理内存空间。虚拟内存管理正是依赖内存管理单元(MMU)来实现的。各进程在内存中的页表和MMU中的TLB(相当于页表的cache)是虚拟内存管理中的重要概念。
从需求的角度去理解嵌入式Linux:总线、设备和驱动 一、软件、面向对象、软件框架软件是为了解决现实问题而产生的,面向对象的软件思维是解决普遍现实问题的一种有效的抽象方法,而软件框架指的是用面向对象的思维去解决某种特定领域的问题而专门设计的一套行之有效的解决方案。一般地,JAVA/C++编程反映面向对象的软件思维,而像Android Framework、Windows MFC和Linux的QT则代表应用层的软件框架。前述应用框架要解决的问
C语言在嵌入式系统编程时的注意事项1 C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。20世纪80年代,为了避免
嵌入式软件学习路线图! 嵌入式学习是一个循序渐进的过程,如果是希望向嵌入式软件方向发展的话,目前最常见的是嵌入式Linux方向,关注这个方向,我认为大概分3个阶段:1、嵌入式Linux上层应用,包括QT的GUI开发2、嵌入式Linux系统开发3、嵌入式Linux驱动 嵌入式目前主要面向的几个操作系统是,Linux,WINCE、VxWorks等等。 Linux是开源免费的,而且其源代码是开放的,
Linux多线程及线程间同步 1、进程和线程的区别进程的目的就是担当分配系统资源(CPU时间、内存等)的基本单位。线程是进程的一个执行流,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。一个进程由几个线程组成,线程与同属一个进程的其他的线程共享进程所拥有的全部资源。地址空间:进程有独立的地址空间,包括文本区域(text region)、数据区域(data region)和堆栈(stack reg
Linux文件系统的硬链接与软链接 Linux 系统中有软链接和硬链接两种特殊的“文件”。软链接可以看作是Windows中的快捷方式,可以让你快速链接到目标档案或目录。硬链接则透过文件系统的inode来产生新档名,而不是产生新档案。创建方法都很简单:1. 软链接(符号链接) ln -s source target 2. 3. 硬链接(实体链接)ln source target
通俗讲解单片机、ARM、MUC、DSP、FPGA、嵌入式错综复杂的关系! 首先,“嵌入式”这是个概念,准确的定义没有,各个书上都有各自的定义。但是主要思想是一样的,就是相比较PC机这种通用系统来说,嵌入式系统是个专用系统,结构精简,在硬件和软件上都只保留需要的部分,而将不需要的部分裁去。所以嵌入式系统一般都具有便携、低功耗、性能单一等特性。然后,MCU、DSP、FPGA这些都属于嵌入式系统的范畴,是为了实现某一目的而使用的工具。MCU俗称”单片机“经过这么多年的
基于STM32的半导体制冷片(TEC)温度控制系统设计 一些医疗检测仪器在检测时需要模拟人体温度环境以确保检测的精确性,本文以STM32为主控制器,电机驱动芯片DRV8834 为驱动器,驱动半导体致冷器(帕尔贴)给散热片加热或者制冷。但由于常规的温度控制存在惯性温度误差的问题,无法兼顾高精度和高速性的严格要求,所以采用模糊自适应PID控制方法在线实时调整PID参数,计算PID参数Kp、Ki、Kd调整控制脉冲来控制驱动器的使能。从simulink仿真的和
CPU和GPU擅长和不擅长的地方 CPU和GPU都是具有运算能力的芯片,CPU更像“通才”——指令运算(执行)为重+ 数值运算,GPU更像“专才”——图形类数值计算为核心。在不同类型的运算方面的速度也就决定了它们的能力——“擅长和不擅长”。 芯片的速度主要取决于三个方面:微架构、主频、IPC(每个时钟周期执行的指令数)。 1.微架构从微架构上看,CPU和GPU看起来完全不是按照相同的设计思路
手把手教你写Linux设备驱动---定时器(一)(基于友善之臂4412开发板) 在Linux内核中,有这样的一个定时器,叫做内核定时器,内核定时器用于控制某个函数,也就是定时器将要处理的函数在未来的某个特定的时间内执行。内核定时器注册的处理函数只执行一次,即不是循环执行的。如果对延迟的精度要求不高的话,最简单的实现方法如下---忙等待:Unsigned long j = jiffies + jit_delay * HZ;While(jiffies {
如何学习嵌入式系统(硬件篇),含51单片机学习资料 学习嵌入式之前我们需要了解什么是嵌入式。(官方说法)嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。国内普遍认同的嵌入式系统定义为:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。举些例子,手机、电子时钟、智能报警装置、自动监控器、出租车计费器等等都属于嵌入式系统,嵌入式系统是硬件和软件的综合体。硬件篇:
搞Linux设备驱动,你应该明白这几个问题 想要深入理解linux设备驱动,你必须明确以下几个问题:· 应用程序、库、内核、驱动程序的关系· 设备类型· 设备文件、主设备号与从设备号· 驱动程序与应用程序的区别· 用户态与内核态· Linux驱动程序功能一、应用程序、库、内核、驱动程序的关系1) 应用程序调用一系列函数库,通过对文件的操作完成一系列功能: 应用程序以文件形式访问各种硬件设备(L
简单明了!嵌入式Linux启动过程详解 init阶段(1) 1.确定用户登录模式在“/etc/inittab”中列出了如下所示的登录模式,主要有单人维护模式、多用户无网络模式、文字界面多用户模式、X-Windows多用户模式等。其中的单人维护模式(runlevel为1)是类似于Windows中的“安全模式”,在这种情况下,系统不加载复杂的模式从而使系统能够正常启动。在这些模式中最为常见的是3或5,其中本系统中默认的为5,也
高手谈嵌入式调试的复杂性 嵌入式系统的调试往往很复杂,可用的手段并不像PC编程那么多,开发成本较PC系统也要大很多。嵌入式系统调试主要手段只有JTAG为代表的单步追踪、printf夹杀大法等。 这两种调试方法在嵌入式中也不尽然全部能解决问题。Jtag需要调试者有一个调试设备(有可能很昂贵),和目标系统相连。使用类似GDB Client等软件登录调试设备,跟踪运行程序。说实话,这个方法对嵌入式来讲是终极的调试办法,也
对于linux下system()函数的深度理解 这几天调程序(嵌入式linux),发现程序有时就莫名其妙的死掉,每次都定位在程序中不同的system()函数,直接在shell下输入system()函数中调用的命令也都一切正常.就没理这个bug,以为是其他的代码影响到这个,或是内核驱动文件系统什么的异常导致,昨天有出现了这个问题,就随手百了一下度,问题出现了,很多人都说system()函数要慎用要少用要能不用则不用,system()函数不稳定?