嵌入式软件
文章平均质量分 57
sun shang chao
这个作者很懒,什么都没留下…
展开
-
C51中嵌入汇编
#pragma ASM POP IE;#pragma ENDASM原创 2014-08-22 10:25:17 · 927 阅读 · 0 评论 -
在Freescale中如何定义位标…
原文地址:在Freescale中如何定义位标志作者:狼之行因为标志位大部分只有两个状态:1和0.因此用一个位就能够表示.那么在Freescale中如何定义位的呢?其实它是通过联合体进行表示的(在单片机头文件中对寄存器的位表示就可以看出)如下:typedef union{ byte bByte; struct{ bytebit0:1; bytebit1:1;转载 2014-08-19 16:29:38 · 554 阅读 · 0 评论 -
vim支持中文注释
VIM中文支持问题:Vim语言设置,编码可能一直是操作系统要处理的一个麻烦问题.我的Linux上有不少的gb2312 的文件.没法子,只有让Vim也支持他啦。如果你的系统你自己的主目录中有.vimrc就加入下面二行,如果没有,就建一个这个文件. let&termencoding=&encoding setfileencodings=utf-8,gbk,ucs-bom,c原创 2014-08-19 16:28:38 · 1276 阅读 · 0 评论 -
Android开发之旅:环境搭建及Hello…
引言本系列适合0基础的人员,因为我就是从0开始的,此系列记录我步入Android开发的一些经验分享,望与君共勉!作为Android队伍中的一个新人的我,如果有什么不对的地方,还望不吝赐教。在开始Android开发之旅启动之前,首先要搭建环境,然后创建一个简单的HelloWorld。本文的主题如下:1、环境搭建1.1、JDK安装1.2、Eclipse安装1.3、Andro原创 2014-08-19 16:28:13 · 318 阅读 · 0 评论 -
基于ATMEG8AVR单片机的频率…
原文地址:基于ATMEG8AVR单片机的频率计的protues仿真附源码和仿真图片作者:SUN_403#include#include#define SYSCLK 16000000L#pragma interrupt_handler timer1_ovf_isr:9#pragma interrupt_handler timer0_ovf_isr:10unsigned char转载 2014-08-19 16:26:34 · 776 阅读 · 0 评论 -
keil软件中C语言嵌套汇编
原文地址:keil软件中C语言嵌套汇编作者:SUN_403一、讲解背景在单片机学习的过程中,掌握一点汇编语言是非常有必有的,作为低级语言汇编语言在单片机开发中有它不可取代的作用,比如每条指令可以精确的确定延时时间,便于理解非常适合硬件工程师学习。但是要提高单片机技能,必须掌握C语言编程,因为C 语言有强大的模块化管理思想。我想在很多人学习的过程中即学了汇编语言,又学习了C语言,那么一个问转载 2014-08-19 16:26:11 · 3446 阅读 · 0 评论 -
嵌入式软件工程师经典笔试题
> 预处理器(Preprocessor) 1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等) 2). 懂得预处理器将为你计算常数表达式的值,因原创 2014-10-10 18:30:12 · 429 阅读 · 0 评论 -
C printf() 详解——printf('%08x',number); 程序员面试宝典中的一个错误 char * b=(char *)&a
本文转自:http://www.cppblog.com/wuzimian/archive/2012/05/23/175925.aspx1 #include 2 using namespace std; 3 int main() 4 { 5 unsigned int a = 0xFFFFFFF7; 6 unsigned char i = (unsign转载 2014-10-10 19:17:49 · 658 阅读 · 0 评论 -
讲讲volatile的作用
一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子: 1). 并行设备的硬件寄存器(如:状态寄存器) 2). 一个中断服务子程序中会访问到的非自动变量(Non-automatic原创 2014-10-10 19:19:31 · 347 阅读 · 0 评论 -
什么是可重入函数
这个概念在嵌入式操作系统中比较重要,由于存在任务的调度,它实时系统,可剥夺型内核中是危险的,如同一个安静的水雷。可能会被触发,也可能安然无恙。由于它运行结果的不可预期性,会使系统带来隐患。下面引用一段别人的解释:这主要在多任务环境中使用,一个可重入的函数简单来说,就是:可以被中断的函数。就是说,你可以在这个函数执行的任何时候中断他的运行,在OS的调度下去执行另外一段代码而不会出现什原创 2014-10-10 19:40:38 · 1044 阅读 · 0 评论 -
文章标题
从数据存储类型来说,8051系列有片内、片外程序存储器,片内、片外数据存储器,片内程序存储器还分直接寻址区和间接寻址类型,分别对应code、data、xdata、idata以及根据51系列特点而设定的pdata类型,使用不同的存储器,将使程序执行效率不同,在编写C51程序时,最好指定变量的存储类型,这样将有利于提高程序执行效率(此问题将在后面专门讲述)。与ANSI-C稍有不同,它只分SAMLL、CO转载 2015-03-19 09:28:42 · 424 阅读 · 0 评论 -
TI DSP cmd
在cmd文件中能看到各种段.text .cinit .const等,这和通常系统中仅有TEXT, DATA, BSS( 或者arm系统的code,data,zi段 ),heap, stack有很大的区别:TI段的定义:已初始化的段:.text .cinit .const .econst ..pinit .switch.text: 所有可以执行的代码和常量原创 2015-09-17 14:41:48 · 566 阅读 · 0 评论 -
嵌入式代码结构
嵌入式项目代码结构的分层——HAL(硬件抽象层)、FML(功能模块层)、APL(应用程序层) 2011-03-07 20:09 by 鹏程, 1954 visits, 收藏, 编辑 一、遇到的问题 在“Zigbee 之旅”系列博文中,每写一篇笔者都会编写一个小实验来展开讲解。通过这一段时间的实践,我积累了一些编码经验,但也体会到了之前 的代码结构的缺陷: (1)开发效率低:每次使用片内的某原创 2016-02-14 09:31:09 · 2510 阅读 · 1 评论 -
ccs5命令行编译
Code Composer Studio提供了几个命令行工具,用户可以使用这些工具创建工程,编译工程,导入工程文件到本地工作空间。使用这些工具,用户可以在不启动CCS图形界面的情况下对工程进行操作,简化工程文件的版本维护,方便自动化测试等。创建工程的格式:eclipsec –noSplash -data -application com.ti.ccstudio.apps.projec原创 2016-03-09 14:38:02 · 6906 阅读 · 1 评论 -
马潮按键扫描状态机思想10ms执行一次
#define key_input PIND.7 // 按键输入口#define key_state_0 0#define key_state_1 1#define key_state_2 2char read_key(void){ st原创 2016-12-22 09:37:21 · 3126 阅读 · 0 评论 -
时间触发调度器
/********************************************************************************//******************************数据结构******************************************/typedef tWord unsigned int;typedef tB原创 2016-12-23 10:36:38 · 1666 阅读 · 1 评论 -
在eclipse中查看Android源代码
当我们在eclipse中开发android程序的时候,往往需要看源代码(可能是出于好奇,可能是读源码习惯),那么如何查看Android源代码呢? 比如下面这种情况 图一 假设我们想参看Activity类的源代码,按着Ctrl键,左击它,现实的结果却看不到代码的,提示的信息便是“找不到Activit原创 2014-08-19 16:30:05 · 883 阅读 · 0 评论 -
ARM中的RO、RW和ZI DATA说明
RO段、RW段和ZI段 要了解RO,RW和ZI需要首先了解以下知识:ARM程序的组成 此处所说的“ARM程序”是指在ARM系统中正在执行的程序,而非保存在ROM中的bin映像(image)文件,这一点清注意区别。 一个ARM程序包含3部分:RO,RW和ZI。RO是程序中的指令和常量;RW是程序中的已初始化变量转载 2014-08-21 20:59:25 · 369 阅读 · 0 评论 -
BSS段,数据段,代码段,堆内存和栈
BSS段:BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。 数据段:数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。 代码段:代码段(code segment/text seg原创 2014-08-26 09:51:32 · 514 阅读 · 0 评论 -
linux2.6下驱动模块编译问题
linux(red hat)2.6总编译失败提示说头文件之类东西找请大家帮忙看看啊实没有办法才提问点分全部用了请大家帮帮忙只有led.c文件和Makefileled.c文件里面只基本init和exit源文件下:(源文件放/1_led(包含led.c,Makefiel两文件)错误信息因字数限制我删除了些类似错误信息)==========led.c===========#include #i原创 2014-08-19 16:30:22 · 730 阅读 · 0 评论 -
CMSIS
ARM Cortex™ 微控制器软件接口标准(CMSIS:Cortex Microcontroller SoftwareInterface Standard) 是 Cortex-M 处理器系列的与供应商无关的硬件抽象层。使用CMSIS,可以为处理器和外设实现一致且简单的软件接口,从而简化软件的重用、缩短微控制器新开发人员的学习过程,并缩短新设备的上市时间。软件的创建被嵌入式行业公认为主要成本系原创 2014-08-19 16:29:20 · 1025 阅读 · 0 评论 -
xz解压工具
1.解压安装包$tar -jxvf xz-4.999.9beta.tar.bz2 2.配置&安装$./configure --prefix=/opt/gnu/xz$make$sudo make install$ln -s /opt/gnu/xz/bin/xz /bin/xz 3.解压xz包$xz -d ***.tar.xz 4.解压tar包$ta原创 2014-08-19 16:28:40 · 618 阅读 · 0 评论 -
VMware Linux使用Xshell登陆
VMware Linux使用Xshell登陆 环境:WinXP SP3、VMware 8.0、SUSE Linux Enterprise 11 64bit虚拟机网络连接模式使用NAT方式(其他方式还没有试过):Linux使用Xshell登陆" TITLE="VMware Linux使用Xshell登陆" /> Linux安装过程略……完成! 1)当SUSE安装完原创 2014-08-19 16:28:36 · 535 阅读 · 0 评论 -
Fedora 13 字符界面和图…
1、使用root登录。操作:命令行输入su,再输入密码即可。2、输入 vi /etc/inittab 进入vi 编辑界面,按 i 键进入编辑模式:# Default runlevel. The runlevels used by RHS are:# 0 – halt (Do NOT set initdefault to this)# 1 – Single user mode# 2 –原创 2014-08-19 16:28:22 · 398 阅读 · 0 评论 -
编译报错LINK : fatal&n…
Win7旗舰版Microsoft Visual Studio 2008SP1 (VC++ 2008)看文后,抱着试试看的想法,先走正统之路下补丁,结果:一样提示“此计算机上没有安装本软件更新支持的产品。单击“取消”退出安装程序。”看来:补丁之路不通,若是这个编号VS90-KB948127的,大家就不要试了以下为原文:返回错误:LINK : fatal errorLNK100原创 2014-08-19 16:28:16 · 484 阅读 · 0 评论 -
GCC与MinGW的简单安装与使用
简单的GCC用法总的来说,gcc应该是一个编译器。但整套的gcc环境并不是由gcc构成的,它是由多个包所组成的,这些包的互相作用产生了gcc的开发环境。其中,有一些包是你开发应用程序所必备的基本包,离开这些包你将无法正常使用gcc。 gcc开发环境包括如下几大包: binary 基本包 提供基本的汇编器,连接器等 g原创 2014-08-19 16:28:00 · 754 阅读 · 0 评论 -
在Windows下使用gcc编译器
在Windows下使用gcc编译器:1.首先介绍下MinGW MinGW是指只用自由软件来生成纯粹的Win32可执行文件的编译环境,它是MinimalistGNU on Windows的略称。 实际上 MinGW并不是一个 单纯的C/C++ 编译器,而是一套 GNU 工具集合。除开 GCC 以外,MinGW 还包含有一些其他的 GNU程序开发工具 (比如 gawk bis原创 2014-08-19 16:27:58 · 6012 阅读 · 0 评论 -
同步串行通信和异步串行通信
原文地址:同步串行通信和异步串行通信作者:SUN_403 串行通信的数据是逐位传送的,发送方发送的每一位都具有因定的时间间隔,这就要求接收方也要按照发送方同样的时间间隔来接收每一位。不仅如此,接收方还要确定一个信息组的开始和结束。为此,串行通信对传送数据的格式作了严格的规定。不同的串行通信方式具有不同的数据格式。下面简单介绍一下常用的两种基本串行通信方式:同步通信和异步通信及其数据传送格式。转载 2014-08-19 16:27:40 · 4765 阅读 · 0 评论 -
USB设备开发
原文地址:USB设备开发作者:SUN_403 USB通过两次总线列举(EnumerationandRenumertion)来实现设备识别以及驱动程序析加载。其具体过程为:USB设备连到主机后,主机依据USB规范在特定地址通过端口0(endpoint0)与外设通信,并将外设视为默认设备。外设与主机通信将其6设备标识(DID、PID、VID)发给主机进行第二次总线列举。主机根据设备标识,加载转载 2014-08-19 16:27:09 · 2634 阅读 · 1 评论 -
按键扫描程序仅三行
原文地址:按键扫描程序仅三行作者:SUN_403新型的按键扫描程序不过我在网上游逛了很久,也看过不少源程序了,没有发现这种按键处理办法的踪迹,所以,我将他共享出来,和广大同僚们共勉。我非常坚信这种按键处理办法的便捷和高效,你可以移植到任何一种嵌入式处理器上面,因为C语言强大的可移植性。同时,这里面用到了一些分层的思想,在单片机当中也是相当有用的,也是本文的另外一个重点。转载 2014-08-19 16:25:57 · 768 阅读 · 0 评论 -
POSIX 可移植操作系统接口
POSIX 表示可移植操作系统接口(PortableOperating System Interface ,缩写为 POSIX),POSIX标准定义了操作系统应该为应用程序提供的接口标准,是IEEE为要在各种UNIX操作系统上运行的软件而定义的一系列API标准的总称,其正式称呼为IEEE1003,而国际标准名称为ISO/IEC 9945。POSIX标准意在期望获得源代码级别的软件可移植性原创 2014-08-19 16:28:29 · 1287 阅读 · 0 评论 -
make命令小结
1GUN make工具在当前目录下按如下顺序搜索Makefile GUNmakefile makefile Makefile2.make的命令行选项 命令格式 含义 -Cdir 读入指定目录下的Makefile -ffile 读入当前目录下的file文件作为Makefi原创 2014-08-19 16:28:47 · 503 阅读 · 0 评论 -
MC9S12XS128驱动LEDP10显示屏
#include #include "derivative.h" #define B PORTA_PA0 //数据串行输入时钟#define C PORTA_PA2 //数据输出时钟#define D PORTA_PA4 //74LS138使能时钟#define A PORTA_PA1 //行选#define CP PORTA_PA原创 2014-08-19 16:28:07 · 1017 阅读 · 0 评论 -
快速关闭SElinux
使用如下命令就可以:02 03/usr/sbin/setenforce 0 立刻关闭 SELINUX04/usr/sbin/setenforce 1 立刻启用 SELINUX05 062、加到系统默认启动里面07 0原创 2014-08-19 16:28:27 · 461 阅读 · 0 评论 -
ping-pong操作
下图给出了pingpang的基本原理框图,从图上可以看出使用pingpang的主要作用 就是使用多个低速的数据预处理模块处理高速的输入数据流。这样做可以提高系统的数据吞吐量(如果不使用乒乓的话数据预处理模块会成为设计中限制系统数据吞 吐量的瓶颈),同时增加了数据缓冲延迟。另一个解释:所谓ping-pong buffer,也就是定义两个buffer,当原创 2017-03-20 09:53:24 · 4148 阅读 · 0 评论