【嵌入式开发】
文章平均质量分 64
非著名码农
Coding to change the world.
展开
-
移植librt库到uclinux
最近一个ARM7+uClinux项目需用到定时器,但定时精度要求不是很高。所以想到了LibRT库。Librt库实现的POSIX 100b.3标准的定时器和消息队列接口,在Linux 2.6内核中已普遍支持,部分后期2.4内核版本也已补丁形式提供了librt库。 uClinux 2.4.x 并未提供现成的Librt库,虽然uClibc0.9.7提供了Librt库原创 2008-11-10 21:09:00 · 5530 阅读 · 4 评论 -
tiny6410开发板使用NFS访问Ubuntu主机
FriendlyArm官方推荐的tiny6410开发环境是Fedora9,相关的NFS配置也是基于Fedora9的,通过Superboot向Nand写入NFS启动参数的方法虽然很方便,但不便于理解NFS原理。但我还是喜欢Ubuntu,以目前最新的Ubuntu 11.04为例来配置原创 2011-08-05 20:45:55 · 1841 阅读 · 0 评论 -
NXPLPC ARM 必须知道的知识
NXPLPC ARM必须知道的知识2010-09-28 21:40:37 寄存器和工作模式:7种工作模式:fiq/irq/abt/und/sys/usr/svc。通过"MSRcpsr_c,#0xdx"切换。上电时进入svc模式。svc和usr的区别是:转载 2011-08-06 17:36:10 · 1680 阅读 · 0 评论 -
ARM中的异常和中断
ARM中的异常和中断 ARM处理器中主要有7个异常(2个中断异常): 1、复位异常;在以ARM为核的单片机中,常把下列事件作为引起复位的原因。 • 上电复位:在上电后,复位使内部达到预定的状态,特别是程序跳到初始入口;转载 2011-08-06 17:34:04 · 1942 阅读 · 0 评论 -
LPC2103之PLL寄存器
· LPC2103之PLL寄存器// PLL操作相关的 寄存器 /* Phase Locked Loop(PLL) *//* PLL控制寄存器*/#define PLLCON (*((volatile unsigned char *)转载 2011-08-06 17:35:02 · 2665 阅读 · 0 评论 -
tiny6410 Linux启动信息
NAND read: device 0 offset 0x400000, size 0x500000 //0x500000是2G?.....Boot with zImageStarting kernel ...Uncompressing Li原创 2011-08-06 21:02:52 · 1598 阅读 · 0 评论 -
Proteus中常用元件在库中的位置
小tips 电源,地,总线在"Terminal"视图下ARM,51芯片在 Micorprocessor ICs下电阻在 Resistors下DB9,晶振,电池,交通灯在 Miscellaneous下开关在 Switches&Relays下LED,LCD原创 2011-08-06 17:39:48 · 9132 阅读 · 0 评论 -
链路汇聚
链路汇聚,即Link Aggregation,把多个物理链路捆绑在一起形成一个逻辑链路,它可以用于扩展链路带宽,同时,各个汇聚成员相互之间起到了动态备份的作用,提供更高的连接可靠性。对交换机来说,链路汇聚是一种逻辑上的抽象过程,将一组具备相同属性的端口序列,抽象成一个逻辑端口转载 2011-08-06 18:29:05 · 1211 阅读 · 0 评论 -
UBIFS
UBIFS维基百科,自由的百科全书跳转到: 导航, 搜索跳过字词转换说明汉漢▼▲为了阅读方便,本文使用全文手工转换。转换内容:本文采用电脑和信息技术组全文转换[查看] • [编辑] • [强制刷新]显转载 2011-08-06 20:33:46 · 986 阅读 · 0 评论 -
tiny6410开发板的Linux系统修改IP地址
Linux系统启动时执行了\etc\init.d\ifconfig-eth0脚本,这个ifconfig-eth0脚步会查找/etc下是否存在eth0-setting文件,如果有则执行"source eth0-setting",使用其中配置的IP,如果没有找到这个文件则使用默认的1原创 2011-08-07 18:12:50 · 5070 阅读 · 2 评论 -
Linux的I/O多路转接模型和select()
Linux的I/O多路转接模型: 在这种模型下,如果请求的I/O操作阻塞,它不是真正阻塞I/O,而是让其中一个函数等待,在这期间,I/O还能进行其他操作。select()和poll()就属于这种模型。 select()函数说明头文件#incl原创 2011-09-05 15:43:43 · 1336 阅读 · 0 评论 -
Linux ioctl函数
我这里说的ioctl函数是在驱动程序里的,因为我不知道还有没有别的场合用到了ioctl,所以就规定了我们讨论的范围。为什么要写篇文章呢,是因为我前一阵子被ioctl给搞混了,这几天才弄明白它,于是在这里清理一下头脑。一、 什么是ioctl。ioctl是设备驱动程序转载 2011-09-06 16:06:23 · 893 阅读 · 0 评论 -
【转载】linux-2.6.38到tiny6410的移植手册(连载3)__ LCD&触摸屏
原文作者:prettybxp linux-2.6.38到tiny6410的移植手册(连载1)__nand flashhttp://www.arm9home.net/read.php?tid-14196.htmllinux-2.6.38到tiny6410的移植手转载 2011-08-08 19:58:09 · 1652 阅读 · 0 评论 -
【转】linux-2.6.38到tiny6410的移植手册(连载1)__nand flash
原文作者:prettybxp 原文链接:http://www.arm9home.net/read.php?tid-14196.html 2440的linux移植手册满天飞,到了6410怎么就没有了呢? 既然源码都给了,为什么不把移植步骤写出来,好让转载 2011-08-08 19:53:38 · 1503 阅读 · 0 评论 -
【转载】 linux-2.6.38到tiny6410的移植手册(连载2)__网卡&NFS
原文作者:prettybxp 原文链接:http://www.arm9home.net/read.php?tid-14211.html linux-2.6.38到tiny6410的移植手册(连载1)__nand flashhttp://www.arm9home.n转载 2011-08-08 19:55:43 · 1059 阅读 · 0 评论 -
Socket相关函数定义
#includeint socket(int family,int type,int protocol)int bind(int sockfd,struct sockaddr *my_addr,int addrlen)int listen(int sockfd,int原创 2011-08-17 16:13:25 · 676 阅读 · 0 评论 -
TCP UDP Socket流程
一.TCP二.UDP原创 2011-08-17 16:02:37 · 2925 阅读 · 0 评论 -
TCP Socket编程实例1---Client端
/**TcpClient.c*/#include#include#include#include#include#include#include#include#include#define SERVPORT 1888#defi原创 2011-08-17 16:47:49 · 1911 阅读 · 1 评论 -
TCP Socket编程实例1---Sever端
/**TcpServer.c*/#include#include#include#include#include#include#include#include#define SERVPORT 1888#define MAX_CON原创 2011-08-17 16:36:05 · 945 阅读 · 1 评论 -
【转】"网卡"(MAC+PHY)的相关知识
一块以太网网卡包括OSI(开方系统互联)模型的两个层。物理层和数据链路层。物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口。数据链路层则提供寻址机构、数据帧的构建、数据差错检查、传送控制、向网络层提供标准的数据接口等功能。1.网卡的基本结构以太网卡中数据链路层的芯片一般简称之为MAC控制器,物理层的芯片我们简称之为PHY。许转载 2011-10-31 15:08:40 · 1287 阅读 · 0 评论 -
嵌入式开发基础----register和volatile关键字
register: 在函数内部定义变量时,默认是auto类型,即分配给变量内存。如果定义一个变量用register关键字,那么编译器尽可能把变量存放在CPU内部寄存器中,这样就不必通过内存寻址来访问变量,提高访问效率 volatile: 这个是嵌入式开发必须知道的。用volatile修饰变量或地址,相当于告诉编译器这个值会随时发生变化,每次使用都要去内存中重新读取它原创 2011-11-21 20:13:14 · 3902 阅读 · 0 评论 -
考虑了内存重叠的字符串拷贝函数strcpy
考虑了内存重叠的字符串复制函数char * strcpy(char *dest, char *src){char *d = dest; //backup inputchar *s = src;int count = 0;assert(dest); //非空指针检查assert(src);if(src == dest)return src;count =原创 2011-11-24 15:19:05 · 3633 阅读 · 1 评论 -
ARM7 VS Cortex-M3
要使用低成本的32位处理器,开发人员面临两种选择,基于Cortex-M3内核或者ARM7TDMI内核的处理器。如何做出选择?选择标准又是什么?本文主要介绍了ARM Cortex-M3内核微控制器区别于ARM7的一些特点,帮助您快速选择。1.ARM实现方法ARM Cortex-M3是一种基于ARM7v架构的最新ARM嵌入式内核,它采用哈佛结构,使用分离的指令和数据总线(冯诺伊曼结构下转载 2011-11-07 21:25:02 · 2202 阅读 · 0 评论 -
IAP与ISP的区别
转载自:http://guangfengji2007.blog.163.com/blog/static/4322956020082493417675/IAP(In Appplication Program),即在应用中可编程。顾名思义,就是在系统运行的过程中动态编程,这种编程是对程序执行代码的动态修改,而且毋须借助于任何外部力量,也毋须进行任何机械操作。这一点有别于isp。转载 2012-01-18 15:56:22 · 2059 阅读 · 0 评论 -
ARM地址重映射的通俗解释
ARM芯片的地址重映射 映射就是一一对应的意思。重映射就是重新分配这种一一对应的关系。 我们可以把存储器看成一个具有输出和输入口的黑盒子。如下图所示,输入量是地址,输出的是对应地址上存储的数据。当然这个黑盒子是由很复杂的半导体电路具现的,具体的实现的方式我们现在不管。存储单位一般是字节。这样,每个字节的存储单元对应一个地址,当一个合法地址从存储器的地址总线输入后,该地址对应的存储单元上存储的数据就转载 2012-01-30 16:56:30 · 1265 阅读 · 0 评论 -
startup.s中用到的几个ARM伪指令
名称范例说明EQUName EQU 0x46545定义一个名称AREAAREA hello,CODE,READONLY定义一个段开始SPACE{lable}SPACE 100(label内存块起始地址,分配100字节空间)分配一块内存,并用0初始化PRESERVE8PRESERVE8指示当前文件保持8字节对齐原创 2011-12-29 09:29:06 · 1422 阅读 · 0 评论 -
启动代码和Bootloader
最近查了很多关于基于ARM嵌入式系统上电复位后启动过程的资料。搞得晕晕乎乎,不知如何理解。现在终于有一点头绪,总结如下:我主要遇到了这样一个问题,启动代码和Bootloader的区别以及它们在ARM上运行操作系统和不运行操作系统(只有用户程序)的关系。启动代码和Bootloader的关系类似于“男人”和“人类”的关系。可以说男人是人类的一种,但不能说人类只有男人。也就是说可以说启动代码是B转载 2012-01-04 10:46:39 · 1679 阅读 · 0 评论 -
LPC17xx Uart0,Uart1,Uart2,Uart3的区别
LPC1700系列ARM具有4个异步串口(Uart0,1,2,3),具有以下特性- 16字节收发FIFO- 内置小数分频器- 支持DMA发送 区别是:UART1增加Modem和RS-485/EIA485模式Uart0,2,3增加IrDA接口,可用于扩展红外功能原创 2012-02-29 14:02:50 · 6812 阅读 · 0 评论 -
Keil4 Ulink2调试Cortex-M3 LPC1788的配置
上两张图,懂的自然看得懂。原创 2012-02-29 11:29:48 · 5075 阅读 · 2 评论 -
LPC17xx管脚复用之Uart部分
管脚复用,即一个管脚可以用作多种用途,通过寄存器的设置来选取相应的功能,这在微处理器中很常见。之前用过LPC2xxx系列芯片就有很多管脚复用,但不同管脚的复用功能不会重复。 最近再调试LPC17xx时候发现复用的新情况:不同管脚可以有同一种复用功能,如Uart1的可以有三组管脚来实现:(P0.15,P0.16),(P2.0,P2.1)和(P3.16,P3.17),根据需要设计电路原创 2012-03-31 14:19:35 · 2027 阅读 · 0 评论 -
KEIL MDK输出map文件分析
原作者:nthq2004 标题:KEIL MDK输出map文件分析01 零、前言 前面写了一篇文章对__main函数的执行过程做了一个粗略的跟踪描叙,对一个烧录了程序的STM32开发板从启动复位到进入用户main函数的过程有了一个大概的了解,但是有很多问题感觉还是模模糊糊,因此,今天又把KEIL MDK编译、链接后生成的map文件简单分析一下,加深对链接器、嵌入式系转载 2012-04-24 12:40:25 · 25275 阅读 · 7 评论 -
RealView MDK中使用内联函数时需要注意的问题
笔者在做移植时,将Embest IDE环境下的例程移到RealView MDK的过程中,曾经遇到这样一个问题:在生成工程时,编译全部通过,但在链接时提示许多符号未定义!如果读者也遇到过这个问题,请继续看下去,如果链接时提示未定义的变量是一些内联函数(即使用了关键字__inline)。那么就是笔者遇到的问题了。希望这篇文章对您有所帮助。在MDK中使用关键字__inline时,除了执行速度和占用空转载 2012-04-24 11:20:28 · 3827 阅读 · 0 评论 -
RealView MDK在链接时提示空间不够的解决方案总结
RealView MDK具有强大的编译、链接功能。嵌入式设备拥有的资源往往有限,如果一个程序编译、链接之后的可执行文件大小略大于存储大小时,则不能生成可执行文件进行调试或固化到Flash中。在这种情况下我们一般不去从硬件上调整存储空间的大小(有些存储空间在片内,实在无法调整),而是去修改程序,试图将程序简化、将缓存减小、减少全局变量、少用大数组多用指针等等人工方法,有些时候这些方法很有效。但如果使转载 2012-04-24 11:21:23 · 7547 阅读 · 0 评论 -
LPC1700 Vs STM32
转一个网友的评论:NXP的东西在汽车上用的很多。我从毕业就在车载行业混。车上用的东西,飞思卡尔的最多,英飞凌那是车厂级别的采用,就是所谓的前装标准.汽车收音机出了ST的TDA7540外,最大的还是NXP的、ST的东西才是有不少BUG。比如STM32刚出来的时候,为了快速抢占市场,那些芯片问题很多的,只是说现在好很多。ST最成功的还是STM8 深圳车载行业以前用的MCU都8位的,转载 2012-05-08 10:59:00 · 3533 阅读 · 1 评论 -
Keil中 Program Size: Code RO-data RW-data ZI-data 所代表的意思
在Keil中编译工程成功后,在下面的Bulid Ouput窗口中会输出下面这样一段信息:Program Size: Code=6320 RO-data=4864 RW-data=44 ZI-data=1636 代表的意思:Code :是程序中代码所占字节大小RO-data :程序中所定义的指令和常量大小 (个人理解 :Read Only)RW-data :程序中已初原创 2011-11-15 09:35:58 · 38895 阅读 · 10 评论 -
ARM芯片的定时器功能:匹配输出,捕获输入
匹配输出: 匹配的是“时间/计数”。先计时/计数,达到预设的时间/数字触发一个动作:输出某种脉冲/产生一个中断。捕获输入: 捕获的是的”信号/脉冲“,开始计时/计数后先接收脉冲/信号,当收到指定的信号/脉冲时记下此时的时间。注:信号/脉冲的输入,输出使用芯片相关的管脚。原创 2012-06-14 18:53:56 · 3662 阅读 · 0 评论 -
shtml是什么?
很多人知道ASP,JSP,PHP的原理,古老的CGI知道的人也不少,但真正知道shtml具体是啥的人不多,包括我在内啊。最近在给一个嵌入式设备做内嵌网页用到了shtml,网页服务器使用了CGI。 百度百科对SHTML的定义: ssi是Server Side Include的首字母缩略词。包含有嵌入式服务器方包含命令的 HTML 文本。在被传送给浏览器之前,服原创 2012-08-13 13:08:02 · 7778 阅读 · 0 评论 -
LPC1788 emWin应用笔记
前不久照着ZLG的范例移植了emWin到LPC1788开发板,过程比较顺利,也感受到了emWin的强大,目前继续深入学习中。先整理个移植笔记吧。 NXP提供的emWin资源链接:http://www.lpcware.com/zh-hans/content/project/emwin-graphics-library 移植需要修改的地方见下图: 具体修改原创 2012-09-05 16:51:42 · 9460 阅读 · 3 评论 -
netsnmp的mib解析配置
关于netsnmp的mib解析配置。 1.为了避免麻烦安装时候就选择默认路径 C:\usr吧。把需要添加的mib文件拷贝到C:\usr\share\snmp\mibs下。 2.修改C:\usr\etc\snmp\snmp.conf文件,添加"mibs All"一行。如下: mibdirs C:/usr/share/snmp/mibs persistentDir原创 2012-09-17 16:47:22 · 2668 阅读 · 0 评论 -
LPC2387 RS485通信
最近一款基于LPC2387方案的产品要用到RS485通信,查了下datasheet,LPC2387的Uart没有内置RS485功能,故只能采用电平转化了。最后选择了MAX485和英联的UM3085,两款芯片管脚兼容,都能进行TTL和RS485转化。 因为采用半双工通信,所以用一个GPIO口同时控制DE和RE,某一刻只能是接收或发送。LPC2387的TXD1和RXD1分别和485的DI和原创 2012-05-03 20:41:50 · 2948 阅读 · 0 评论