51单片机编程技巧

1.定义的变量不要太多。低128位为用户定义变量的存放区域(默认时),也可以把变量放在高128位,但容易出错,尽量少放,最好不放。通过*.M51可以查看内存变量的存放,最好不要超过110个字节,否则程序无法运行或出错。2.如一个变量多...

AVR单片机程序设计

AVR单片机程序设计一、程序设计的方法1.模块化设计模块化设计是将整个单片机程序分解成若干个功能相对独立的、较小的程序模块,对各程序模块分别进行编程和调试,最后将这些程序模块集成为实现特定功能的程序。采用模块化...

单片机的汇编语言与程序设计题解

第3章单片机的汇编语言与程序设计习题 1.MCS-51单片机有哪几种寻址方式?适用于什么地址空间? 答:MCS-51单片机有7种寻址方式:直接寻址、寄存器寻址、寄存器间接寻址、立即寻址、变址寻址、位寻址、相对寻址。 直接寻址方式...

如何有效降低编码阶段的错误

软件设计更多地是一种工程,而不是一种个人艺术。如果不统一编程规范,最终写出的程序,其可读性将较差,这不仅给代码的理解带来障碍,增加维护阶段的工作量,同时不规范的代码隐含错误的可能性也比较大。 分析表明,编码阶段产生...

PIC汇编编程及审核规范(V1.1)

PIC汇编编程及审核规范(V1.1)一、程序命名规范程序文件名由两部分构成:一部分为产品型号或功能描述,一部分为软件版本号。产品型号用字母描述,可为英文或中文拼音。软件版本号为4位,前一位固定为字母”V”,后3位为...

51单片机编程规范

1单片机C51编程规范-前言 为了提高源程序的质量和可维护性,从而最终提高软件产品生产力,特编写此规范。 2单片机C51编程规范-范围 本标准规定了程序设计人员进行程序设计时必须遵循的规范。本规范主要针对C51编程语言和k...

PIC单片机C语言编程实例之秒表

第7章秒表 7.2.2程序清单 该源程序已在实验板上调试通过,读者可直接引用,并可利用软件编程的灵活性,加以拓展,实现更为复杂的功能。#include#include //此程序实现计时秒表功能,时钟显示范围00.00~99.99秒,分辨度:0.01秒uns...

AVR单片机C语言编程技巧

AVR单片机C语言编程技巧1、选择合适的算法和数据结构应该熟悉算法语言,知道各种算法的优缺点,具体资料请参见相应的参考资料,有很多计算机书籍上都有介绍。将比较慢的顺序查找法用较快的二分查找或乱序查找法代替,插入排...

用AVR单片机来产生正弦波信号

用AVR单片机来产生正弦波信号使用AVR定时/计数器的PWM功能设计要点一、定时/计数器PWM设计要点根据PWM的特点,在使用ATmega128的定时/计数器设计输出PWM时应注意以下几点:1.首先应根据实际的情况,确定需要输出的PWM频率...

嵌入式系统学习误区

由于微处理器与微控制器种类繁多,也可能由于不同公司、机构出于自身的利益,给出一些误导性宣传,特别是我国嵌入式微控制器制造技术落后,使得人们对微控制器的发展,在认识与理解上存在差异,导致一些初学者进入嵌入式系统的学...

什么是嵌入式系统

无所不在的嵌入式系统多年前,比尔.盖茨曾经预言,随着后PC时代的到来,PC将无处不在。今天,伴随着二十一世纪的曙光,嵌入式系统的迅猛发展正验证了比尔.盖茨的预言,人类正迎来一个充满希望的新时代——后PC时代。这...

嵌入式软件开发下的数据积累

大多数软件开发都会涉及到数据参数的保存与读取,小至运行的单片机的软件,大至操作系统级别的软件(如linux,windows,mac),均会有专门的子程序或者模块进行参数的保存和读取。不同的平台下开发,参数的保存与读取会存在一定...

达人教你如何选择嵌入式操作系统

嵌入式操作系统是ARM CPU的软件基础,从8位/16位单片机发展到以arm CPU核为代表的32位嵌入式处理器,嵌入式操作系统将替代传统的由手工编制的监控程序或调度程序,成为重要的基础组件。更重要的是嵌入式操作系统对应用程序...

嵌入式软件技术的缺陷查找方法介绍

本文将介绍如何避免那些隐蔽然而常见的错误,并介绍的几个技巧帮助工程师发现软件中隐藏的错误。大部分软件开发项目依靠结合代码检查、结构测试和功能测试来识别软件缺陷。尽管这些传统技术非常重要,而且能发现大多数软...

详细分析Linux系统计算机死机的故障原因

系统出现死机,一般分为两种情况:一是硬件问题;二是软件问题。一、硬件问题可以考虑分析以下几点:1、不要超频CPU,如果已经超频的先回复到原来的频率虽然平时运行没有问题,但可能在高负载的使用中就会出现不可预料的故障了。...

Linux操作系统常见的小程序

只在shell命令行里跑的“df”,查看已经挂装的文件系统空间的占用情况.“df -k”,以KB为单位显示:“df -m”,以MB为单位显示.“fdisk”,一个功能强大的分区工具,对分区的调整...

单片机编程规范之注释

1. 程序应该包括两个部分注释,说明部分和语句注释。一般情况下,源程序有效注释量必须在30%以上。2. 说明部分:1) 源文件说明部分位于每个源文件的最前面,主要描述:文件名、作者、生成日期、联络方式、功能描述、版本号、软...

单片机编程规范之变量名命名规则

1. 变量的名称要采用有意义的英文单词小写缩写。可以采用以下几种方式进行缩写命名:1) 去掉所有不在词头的元音字母。如screen 可以简写为scrn。2) 使用每个单词的头几个字母。如channelactivation 可以简写为chanactiv...

单片机C基本编程规范

1.基本规则格式清晰、注释简明扼要、命名规范易懂、函数模块化、程序易读易维护、功能准确实现、代码空间效率和时间效率高、适度的可扩展性、单片机编程规范-标识符命名。2.标识符命名2.1命名基本原则(1)命名清晰明了,有明...

单片机C51编程规范

1单片机C51编程规范- 前言 为了提高源程序的质量和可维护性,从而最终提高软件产品生产力,特编写此规范。2 单片机C51编程规范-范围 本标准规定了程序设计人员进行程序设计时必须遵循的规范。本规范主要针对C51编程语言和k...

单片机汇编程序编码规范

软件设计更多地是一种工程,而不是一种个人艺术。如果不统一编程规范,最终写出的程序,其可读性将较差,这不仅给代码的理解带来障碍,增加维护阶段的工作量,同时不规范的代码隐含错误的可能性也比较大。分析表明,编码阶段产生的...

PIC汇编编程规范

一、程序命名规范程序文件名由两部分构成:一部分为产品型号或功能描述,一部分为软件版本号。产品型号用字母描述,可为英文或中文拼音。软件版本号为4位,前一位固定为字母”V”,后3位为数字,编写软件版本号应按照...

单片机编程规范之常量、标号和文件名的命名规则

常量命名规则1. 常量的名称要采用有意义的英文单词大写缩写。2. 常量要定义在“.CONST“ 段中。3. 在定义部分要加入注释来说明常量含义。4. 常量标识符的长度不超过16个字符。5. 系统寄存器中常用到的某些...

ARM仿真器应用指导

本文提供了一些关于在线 ARM 仿真器的信息,以及给作为嵌入式系统设计师的你带来的好处。根据你的需要,你将在产品开发中对开发工具作出更恰当的选择。 一、嵌入式产品的开发周期 典型的嵌入式微控制器开发项目的第一个...

AVR32怎么建立AP7linux开发环境

AVR32怎么建立AP7linux开发环境?虽然官方提供了cygwin这个模拟工具来编译文件,但是速度和兼容性上没有保证,并且官方也推荐使用linux环境来编译文件。我们就以使用的ubuntu6.06来给大家做一下介绍,希望能起到抛砖引玉的作...

Keil C51开发系统基本知识介绍

Keil C51开发系统基本知识1. 第一节 系统概述Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语...

嵌入式系统设计必备ARM仿真器知识

一、嵌入式产品的开发周期典型的嵌入式微控制器开发项目的第一个阶段是用C编译器从源程序生成目标代码,生成的目标代码将包括物理地址和一些调试信息。目前代码可以用软件模拟器、目标Monitor或在线仿真器来执行和调试...

FPGA仿真方法介绍及其仿真程序设计

一、概述FPGA仿真方法:(1)交互式仿真方法:利用EDA工具的仿真器进行仿真,使用方便,但输入输出不便于记录规档,当输入量较多时不便于观察和比较。(2)测试平台法:为设计模块专门设计的仿真程序,可以实现对被测模块自动输入测试矢量,...

基于DSP TMS320F206的仿真调试

TMS320F206(以下简称F206)是C2XX系列DSP中的一个产品,其独有的片内32KB的闪速存储器FLASH使其仿真调试与众不同。F206带有程序、数据和I/O三个相互独立的存储空间,每个存储空间均为64K×16位,其中片内双访问RAM为54...

软件项目管理

软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对人员(People)、产品(Product)、过程(Process)和项目(Project)进行分析和管理的活动。软件项目管理的根本目的是为了让软件项目尤其是大型项目的整...

手机项目开发过程

手机项目开发过程手机项目开发过程涉及到几个“工种”:项目经理,软件工程师,电子工程师,结构工程师,布局布线工程师,中试,采购,测试等。下图描述了手机硬件设计和生产的基本过程,并标识了每个阶段所需要的时间。下面...

项目管理系统相关资料汇总

项目管理是一个管理学分支的学科,指在项目活动中运用专门的知识、技能、工具和方法,使项目能够在有限资源限定条件下,实现或超过设定的需求和期望。 基于软件的项目管理工具或者说项目管理软件,则从软件的角度为项目管理...

温控PID参数调节实验过程

对于温度控制系统参数的整定过程及方法,搜索了很多论坛,大家都只提到PID数学原型,很少看到有实验过程及Kp,Ki,Kd参数的整定过程及方法,这2天闲着没事,来做个温度控制实验,并将一些实验过程写上来,我也是正在摸索阶段,希望大家...

如何选择适合当前项目的最佳操作系统?

编者按:过去由于认识上的局限性,对如何选用合适的操作系统博主同样走过了很多弯路。在企业的发展过程中,为了满足客户的需求,我们大批量使用了正版uC/OS-II、WinCE、Vxworks、MontaVista Realtime Linux以及开源的嵌入式L...

小白学Linux之内核模块编程

Linux内核模块编程Linux内核模块编程是一个很重要的知识点。尤其是编写底层驱动程序时,一定会涉及到它。内核模块编程也是Tiger哥学习Linux时第一节课所接触的知识。由此可以看出它的important,也可以看出其实它很easy...

PowerPC嵌入式系统中的以太网接口设计

1 引 言 PowerPC是1993年IBM,Apple和Motorola公司(其半导体部门现在分拆为Freescale公司)联盟的共同设计的。 PowerPC技术以RISC(精简指令集计算机)为基础,该技术由IBM的POWER(性能优化的增强RISC)体系结构而来。因Pow...

嵌入式Linux的GDB远程调试的实现

远程调试环境由宿主机GDB和目标机调试stub共同构成,两者通过串口或TCP连接。使用GDB标准远程串行协议协同工作,实现对目标机上的系统内核和上层应用的监控和调试功能。调试stub是嵌入式系统中的一段代码,作为宿主机GDB和...

实时Linux与其它嵌入式实时操作系统的比较(1)

实时Linux与其它RTOS的比较本文对四种实时操作系统(RTOS)特性进行分析和比较。它们是:Lynx实时系统公司的LynxOS、QNX软件系统有限公司的QNX以及两种具有代表性的实时Linux——新墨西哥工学院的RT-Linux和堪...

实时Linux与其它嵌入式实时操作系统的比较(2)

操作系统服务比较QNX的系统服务:*多种资源管理器,包括各种文件系统和设备管理,支持多个文件系统同时运行,包括提供完全POSIX.1及UNIX语法的POSIX文件系统,支持多种闪存设备的嵌入式文件系统,支持对多种文件服务器(如Windows ...

linux 驱动调试时在线读写I2C寄存器的方法(1)

调试I2C设备时经常需要修改寄存器的值,通常的方法是修改-》编译-》烧写-》重启,哪怕改一个寄存器也要这样折腾一下,很消耗时间,下面提供一种在线修改寄存器的方法,在终端中敲命令就可以写寄存器,不要上面那些步骤.这个方法...

linux 驱动调试时在线读写I2C寄存器的方法(3)

3.使用上面步骤完成后就可以使用了写寄存器在adb shell下输入echo "addr value w">/proc/dir_name简单解释一下:addr 要写的寄存器地址value 要写入的值w/r 读或写的标志位注意addr value r之间是有一个空格proc/di...

在Linux下搭建STM32开发环境攻略 (上)

Linux发行版是64bit的Fedora19,方案选择为:Eclipse+CodeSourcery+OpenOCD+STLINKv2。NO1.准备STM32的开发板,购买仿真器STLINKv2。NO2.安装 CodeSourcery如果是64bit机器,首先确认它能够运行32bit的软件。CodeSourcery可...

在Linux下搭建STM32开发环境攻略 (下)

NO7.编译STM代码使用Eclipse新建C Project,将STM代码放进去。根据你自己的STM32芯片类型,修改.S和.ld文件内容,注意.ld文件中要使用绝对路径。修改工程属性,注意要修改头文件路径、芯片类型和GCC工具(即CodeSourcery,同样使...

高效的C编程之:C编译器及其优化(中)

2.冗余代码的清除下面例子显示了一段急待优化的代码。intdummy(){inta=10,b=20;intc;c=a+b;return0;}当使用arm–c–O0进行编译时,产生的汇编码如下所示。dummy:0000807CE3A0100AMOV r1,#0xa>>>REDUNDANT\#3...

高效的C编程之:C编译器及其优化(下)

下面的例子显示了同一段程序,使用内嵌功能和不使用内嵌功能编译出的不同结果。要编译的源文件如下。intbar(inta){a=a+5;returna;}intfoo(inti){i=bar(i);i=i-2;i=bar(i);i++;returni;}下面的汇编程序为不使用内嵌功能...

高效的C编程之:C编译器及其优化(上)

本章将帮助读者在ARM处理器上编写高效的C代码。本章涉及的一些技术不仅适用于ARM处理器,也适用于其他RISC处理器。本章首先从ARM编译器及其优化入手,讲解C编译器在优化代码时所碰到的一些问题。理解这些问题,将有助于编...

高效的C编程之:条件执行

4.3条件执行ARM指令都是可以条件执行的。在代码中使用条件执行指令可以减小代码密度并提高程序执行效率。典型的条件执行语句用在比较指令之后,形成程序的分支跳转结构。下面的例子显示了条件执行指令的典型用法。CMPx...

高效的C编程之:除法运算

14.2除法运算因为ARM体系结构本身并不包含除法运算硬件,所以在ARM上实现除法是十分耗时的。ARM指令集中没有直接提供除法汇编指令,当代码中出现除法运算时,ARM编译器会调用C库函数(有符合除法调用_rt_sdiv,无符合除法调用_...

高效的C编程之:布尔表达式(上)

14.4布尔表达式14.4.1范围检测通常,布尔表达式被用来检测某个数值是否在特定的范围内。例如,在图形窗口处理程序中,常使用布尔表达式判断屏幕中一个点是否在当前活动窗口范围内。下面的程序使用结构体定义点坐标并计算坐...

高效的C编程之:布尔表达式(下)

14.4.2和零的比较操作比较指令(CMP)将设置程序状态字的条件标志位。另外,基本的算术指令也可以设置条件标志位,如使用指令MOVS、ADDS等。如果程序中的算术指令的执行目的是为了将计算结果和零比较,那么就可以直接使用带标...

高效的C编程之:C循环结构(下)

14.5.2循环展开在14.5.1节中可以发现,每次循环需要在循环体外加两条指令:一条减法指令来减少循环计数值和一条条件分支指令。通常这些指令称为循环开销(LoopOverhead)。在ARM7或ARM9处理器上,加法指令需要1个周期,条件分支...

高效的C编程之:Switch语句(下)

编译后的代码如下所示。ConditionStr2:00008188E1A01000MOVr1,r0>>>SWITCH\#26if((unsigned)condition>=15)return0;0000818CE351000FCMPr1,#0xf000081903A000001BCC0x819c>>>SWITCH\#26if((unsigned)condition...

高效的C编程之:寄存器分配(上)

14.7寄存器分配编译器一项很重要的优化功能就是对寄存器的分配。与分配在寄存器中的变量相比,分配到内存的变量访问要慢得多。所以如何将尽可能多的变量分配到寄存器,是编程时应该重点考虑的问题。注意当使用-g或-dubug...

高效的C编程之:寄存器分配(中)

14.7.2指针别名C语言中的指针变量可以给编程带来很大的方便。但使用指针变量时要特别小心,它很可能使程序的执行效率下降。在一个函数中,编译器通常不知道是否有2个或2个以上的指针指向同一个地址对象。所以编译器认为,...

高效的C编程之:寄存器分配(下)

编译后的结果如下。test2STMDBsp!,{v1,lr}STRa1,[sp,#-4]!MOVa1,spBLfLDRv1,[sp,#0]MOVa1,v1BLgADDv1,a1,v1MOVa1,v1BLgADDa1,a1,v1ADDsp,sp,#4LDMIAsp!,{v1,pc}从编译结果可以看出,修改后的代码只使用了2次内存访问,而...

高效的C编程之:寄存器分配(终)

3.指针链指针链(PointerChains)常被用来访问结构体内部变量。下面的例子显示了一个典型的指针链的使用。typedefstruct{intx,y,z;}Point3;typedefstruct{Point3*pos,*direction;}Object;voidInitPos1(Object*p){p->pos->...

高效的C编程之:Switch语句(上)

14.6Switch语句编译器通常将C语言中的Switch语句编译一个查找表(TableLookup)以便跳转到合适的入口处。下面的例子显示了编译器如何处理程序中的Switch语言的。C源程序如下。char*ConditionStr1(intcondition){switch(c...

高效的C编程之: 函数调用(中)

func2STRlr,[sp,#-4]!ADDr0,r0,r1ADDr0,r0,r2ADDr0,r0,r3LDMIBsp,{r12,r14}ADDr0,r0,r12ADDr0,r0,r14LDRpc,{sp},#4caller2STMFDsp!,{r2,r3,lr}MOVr3,#6MOVr2,#5STMIAsp,{r2,r3}MOVr3,#4MOVr2,#3MOVr1...

高效的C编程之: 函数调用(终)

14.9.5单纯子函数所谓单纯子函数(PureFunctions)是指那些函数返回值只和调用参数有关。换句话说,就是如果调用函数的参数相同,那么函数的返回结果也相同。如果程序中存在这样的函数,可以在函数定义时使用_pure进行声明,这样...

高效的C编程之: 函数调用(补充)

14.9.6内嵌函数ARM编译器支持函数内嵌功能。使用关键字“_inline”声明函数,可以使函数内嵌。下面的例子显示了如何使用函数内嵌功能。程序源文件如下。__inlineintsquare(intx){returnx*x;}#includedoublel...

高效的C编程之: 函数调用(上)

14.9函数调用函数设计的基本原则是使其函数体尽量的小。这样编译器可以对函数做更多的优化。14.9.1减少函数调用开销ARM上的函数调用开销比非RISC体系结构上的调用开销小:·调用返回指令“BL”或&ldqu...

高效的C编程之: 变量类型(上)

14.8变量类型ARMC编译器支持基本的数据类型:char、short、int、longlong、float和double。表14.2说明了armcc对C语言所使用的数据类型的映射。表14.2 C编译器数据类型映射C数据类型表示的意义char无符号8位字节数据sho...

高效的C编程之: C循环结构(上)

14.5C循环结构循环体是程序设计与优化的重点考虑对象。本节将着重讲解在ARM上处理for和while循环最有效的方法。14.5.1循环中止首先来看下面的例子,两个不同的循环退出条件,产生的不同汇编代码。C源程序如下所示。intfa...

高效的C编程之: 浮点运算

14.10浮点运算大多数的ARM处理器硬件上并不支持浮点运算。但ARM上提供了以下几个选项来实现浮点运算。·浮点累加协处理器FPA(Floating-PointAccelerator):ARM上提供了一组协处理器指令专门实现浮点运算。但这需要...

高效的C编程之: 移植问题

14.11移植问题当对源代码使用不同的编译器时,可能会出现一些移植上的问题,这时可以宏将一些ARM特有的关键字“打包”。例如:#ifdef__arm#defineINLINE__inline#defineVALUE_IN_REGS__value_in_regs#definePURE...

RS232转RS485转换器在485总线系统施工时的注意事项

在长距离通信的诸多方案中,RS485(RS232转RS485转换器)因其独特的电器性能,可靠的应用于主控机之间、主控机与单片机或外设之间构成点到点、点到多点远程多机通信网络,实现多机应答通信。但RS485总线在抗干扰、自适应、通信...

不可不知的嵌入式工程师

一.工程师眼中的“嵌入式系统”在工程师看来:着重理解“嵌入”的概念,主要从三个方面来理解:1.从硬件上,将基于CPU 的外围器件,整合到CPU 芯片内部,比如早期基于X86体系结构下的计算机,CPU 只是有运算器...

嵌入式硬件学习(经典)

总线(Bus)将每个外设采用独立的信号线连到处理器不可行,且处理器在单一时间内只会对一个外设进行访问,那么久采用共享的信号线将所有的芯片连在一起呢?这就是总线概念的由来。对于总线,我们往往说总线是处理器的,而其它的...

嵌入式系统基础知识的学习方法

1、Linux 基础安装Linux操作系统:Linux文件系统 ,Linux常用命令,Linux启动过程详解,熟悉Linux服务能够独立安装Linux操作系统,能够熟练使用Linux系统的基本命令,认识Linux系统的常用服务安装Linux操作系统,Linux基本命令实...

嵌入式系统的基础知识

导读:嵌入式Linux 是将日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统。随着嵌入式系统被越来越广泛的应用在更多领域,如:手表、微波炉、录像机、汽车等,都使用嵌入式系统,有些嵌入式...

什么是嵌入式Linux

一、什么是嵌入式linux?Linux从1991年问世到现在,短短的十几年时间已经发展成为功能强大、设计完善的操作系统之一,不仅可以与各种传统的商业操作系统分庭抗争,在新兴的嵌入式操作系统领域内也获得了飞速发展。嵌入式Lin...

嵌入式平台搭建(经典)

1、 Linux操作系统官网http://www.Linux.org/2、 VMware配置:在NetWork Type中选择NetWork connection类型为Use bridged net working项Select I/O Adapter Types中默认新建一个IDE虚拟硬盘3、 Linux安装配置a)安装类...

PIC单片机程序设计基础格式

为了快速掌握PIC单片机源程序的基本结构,这里给出一个典型的程序结构框架。建立源程序时首先用伪指令TITLE提供程序的标题,接着给出整个程序的总说明,并用列表伪指令LIST指定所用单片机型号和文件输出格式,再利用INCLUDE...

ARM的开发步骤:看后开发思路会比较清晰了

1 . 做个最小系统板:如果你从没有做过ARM的开发,建议你一开始不要贪大求全,把所有的应用都做好,因为ARM的启动方式和dsp或单片机有所不同,往往会遇到各种问题,所以建议先布一个仅有Flash,SRAM或SDRAM、CPU、JTAG、和复位信...

Linux查看端口使用状态及启动

LINUX网络性能之管理工具三剑客 本文是介绍管理Linux查看端口这些输出信息,该命令将显示从每个数据包传出的头和来自主机hostname对端口80的编址。Netstat -tln 命令是Linux查看端口使用情况/etc/init.d/vsftp start ...

linux下查看用户及用户组的方法

whois功能说明:查找并显示用户信息。语法:whois [帐号名称]补充说明:whois指令会去查找并显示指定帐号的用户相关信息,因为它是到Network Solutions 的WHOIS数据库去查找,所以该帐号名称必须在上面注册方能寻获,且名称没有...

FPGA 6部分组成基本结构简析

FPGA由6部分组成,分别为可编程输入/输出单元、基本可编程逻辑单元、嵌入式块RAM、丰富的布线资源、底层嵌入功能单元和内嵌专用硬核等。每个单元简介如下:1.可编程输入/输出单元(I/O单元)目前大多数FPGA的I/O单元被设计...

PIC单片机中断程序的设计技巧

PIC单片机中断程序的设计技巧 所有的中档系列PIC单片机,PORTB端口最高的4个引脚(RB7~RB4)在设为输入模式时,当输入电平由高到低或由低到高发生变化时,可以让单片机产生中断。这就是通常所说的引脚状态变化中断。 在设计...

GUI的种类及uC/GUI的架构

一.GUI概述GUI(Graphic User Interface)是图形化的用户界面,它能提供友好的人机交互接口。它有以下特性:体积小,运行时耗用系统资源少,层次化的结构,易移植,可靠性高嵌入式GUI种类嵌入式GUI种类有很多,下面列举几种:1. WINC...

LabView嵌入式开发模块技术要点

无论使用什么设计语言,不良的编程技术都会给一个应用的性能带来负面影响,对一个嵌入式应用尤其如此。尽管对于绝大部分应用来说,高效率的编程技术是重要的,但对于嵌入式应用所工作的资源极度缺乏的环境,则要求对性能和存储...

JTAG协议基础知识

到底什么是JTAG呢?JTAG(Joint Test Action Group)联合测试行动小组)是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试。现在多数的高级器件都支持JTAG协议,如DSP、FPGA器件等。标准的JTAG接口是4线:TMS、 TCK...

菜鸟学ARM

我不是高手,仍然是菜鸟。但是回想起自己当时的迷茫,特意写了这篇东西,当作给和我一样的兄弟姐妹的帮助吧。问这个问题的人多半不是已经工作的工程师,而是和我一样是学生,所以今天就用我这个菜鸟的眼光来说说我的ARM是如何...

总结:我的ARM嵌入式开发的六步学习法

总结:我的ARM嵌入式开发的六步学习法学习ARM嵌入式开发,尤其对于初学者而言,不应该过早地、过多地将精力用在嵌入式系统移植、Linux内核的研究和学习上,这些诱人的“热点”很容易使初学者迷失方向,进而忽视对基...

所谓完整的linux系统包括哪些部分呢?

下面是笔者针对网上bootloader、linuxkernel(linux内核)、rootfile(根文件系统),三者关系的一个总结,包括提问和回答。1.LINUX中bootloader、linuxkernel、rootfile三者之间的确切关系是怎么样的呢?bootloader->linuxkernel-...

UCOS-II培训材料

内容介绍1、介绍uC/OS-II嵌入式操作系统2、基于uC/OS-II的用电管理终端软件的设计书籍:《嵌入式实时操作系统uC/OS-II》作者:JeanLabrosseuC/OS-IIV2.52通过了美国航空航天管理局(FAA)的安全认证;安全性、可靠性是得到认证...

一篇写得不错的uCOS-II移植文章

今天突然有个想法,是否在其他结构比较简单的平台上移植比较容易一点,正好同学有一个凌阳的精简板,反正今天是星期天,就当是休息了。首先肯定是去熟悉SPCE061A的结构和IDE了。主要是存储器结构、指令系统和中断这几个部分...

uC/OS-II源码分析

uC/OS-II源码分析(总体思路一)首先从main函数开始,下面是uC/OS-IImain函数的大致流程:main(){OSInit();TaskCreate(...);OSStart();}首先是调用OSInit进行初始化,然后使用TaskCreate创建几个进程/Task,最后调用OSStart,操...

硬件工程师需要知道的8个软件设计技巧

嵌入式系统设计不仅要了解硬件还应该了解它与软件之间的相互影响和作用。硬件设计需要一定的设计范例,这点对于软件设计却不那么适用。如何从单纯的硬件设计过渡到硬软结合的设计,在你着手开发软件时需注意以下八个软件...

牛人通俗解释嵌入式系统概念

看到很多人,特别是初学者对嵌入式感兴趣,想学嵌入式,但又十分困惑,痛苦, 因此,我觉得有必要抽空写些东西来"普渡众生",当然我不是佛,用"普渡众生"这个词不大合适,但一时也找不到合适的词了,先将就一下吧. 还有就是别叫我大...

linux操作系统交叉编译环境的建立方法

基于linux操作系统的应用开发环境一般是由目标系统硬件(开发板)和宿主PC机所构成。目标硬件开发板用于运行操作系统和系统应用软件,而目标板所用到的操作系统的内核编译、应用程序的开发和调试则需要通过宿主PC机来完...

linux RTC测试

先简单介绍date与hwclock的异同。相同点:都是表示时间的。差异点:date 是表示系统的时间,假如在系统启动时没有设置的话,系统都会从1970年开始。hwclock是表示硬件的时间,如时钟芯片或主芯片自带的rtc里面的时间。Date就不...

Linux下vim编辑器的使用小技巧

一、备份个性化配置文件。Vim文本编辑器有很多默认的设置。但是当系统管理员熟悉了这个工具之后,可能这个默认的设置就不符合他们的需求了。为此系统管理员希望能够像Word等文本处理器一样对其进行一些个性化的设置,以...

Linux用户管理:典型应用案例

一、批量添加用户1、按照/etc/passwd文件格式编写用户信息文件users.info如:xiao01::2001:888::/home/xiao01:/bin/bash【注意不能有空行,不然会报错】2、newusers < users.info //newusers命令 导入用户信息文件3、pwu...

Linux用户模式和内核模式

MS-DOS等操作系统在单一的CPU模式下运行,但是一些类Unix的操作系统则使用了双模式,可以有效地实现时间共享。在Linux机器上,CPU要么处于受信任的内核模式,要么处于受限制的用户模式。除了内核本身处于内核模式以外,所有的...

Linux系统死机的软硬件问题分析

系统出现死机,一般分为两种情况:一是硬件问题;二是软件问题。一、硬件问题可以考虑分析以下几点:1、不要超频CPU,如果已经超频的先回复到原来的频率虽然平时运行没有问题,但可能在高负载的使用中就会出现不可预料的故障了...

Linux软件加速消费与车载电子融合

汽车与电子两大行业的两大冲突市场与需求的巨变,将为车载电子设备厂商带来前所未有的机会。目前,摆在车载电子产品厂商的关键问题在于,如何才能在最适当的时机推出消费者想要的产品?其中最重要的挑战在于灵活性,也就是怎...

在linux模拟uC/OS-II操作系统的实现

1 引言uCOS-II是一个短小而功能强大的实时嵌入式操作系统。在Jean J.Labrosse先生所着。由邵贝贝教授翻译的Micro/uCOS-II THE REAL-TIME KERNEL(Second Edition)一书中对这一操作系统作出了精彩的讲解,该书是一部关于...

Linux中Workqueue机制分析

走入 Linux 的殿堂已经有一年有余了,在这里我想将 Linux 的各种实现机制分析一遍,一方面对自己来说也是温故而知新,另一方面,促进大家的交流,最好能够给大家一些抛砖引玉的启迪。我是硬件出身,搞硬件已经好多年了,从是专门软...

Linux内核驱动程序的配置

Linux 2.6 内核的配置系统由以下 3 个部分组成:> Makefile:分布在 Linux 内核源代码中的 Makefile,定义 Linux 内核的编译规则> 配置文件 Kconfig:给用户提供配置选择的功能> 配置工具:包括配置命令解释器(对配置脚本中使...

网站建设 电商