显示下一条  |  关闭

生命在于折腾

苍海一笑

 
 
 
 
 
 

上海市 浦东新区 金牛座

 发消息  写留言

 
呵呵~
 
近期心愿稳定下来好好生活~
博客等级加载中...
今日访问加载中...
总访问量加载中...
最后登录加载中...
 
 
 
 
 
 
 
心情随笔列表加载中...
 
 
 
 
 
 
 
博友列表加载中...
 
 
 
 
 
 
 
列表加载中...
 
 
 
 
 
 
 
模块内容加载中...
 
 
 
 
 
 
 
 

avr bootloader 开发笔记(原创)

2011-12-30 20:50:52 阅读18 评论1 302011/12 Dec30

折腾了差不多3天,终于调试成功了,不过是个初期的东西,以后还需要加强可靠性和易用性及安全性的考虑,好歹现在可以直接通过bootloader升级程序了,先整理下整个过程吧,方便自己以后查阅,也方便有需要的人,因为开发的过程中借鉴了好多别人的东西。

开发的缘由:公司的定制化软件比较多,用户拿到产品后又会有新的需求,其实很多就是纯软件的修改,现在就是工程师到现成开盖,拿下载器重新烧程序,会比较麻烦,因为产品的对外接口都有串口,而且Atmega 本身支持bootloader功能,于是想到了用串口升级程序这个法子J。

开发环境及工具:硬件平台:用的是公司Atmega128平台下的板子,AVR的一个并口下载器,软件:编译器:ICCAVR 7.22,串口调试助手,serial port monitor(用来监控串口数据的,好东东)及windows的超级终端,下载软件:PonyProg2000(这个软件用来读EEPROM和Flash比较方便,不过用来烧写Atmega2561的话就不能用它了,有问题),hexbin.exe工具(网上找的现成的),用来将intel的hex文件转换成纯16进制文件(单片机Flash中存储的格式)。

要实现的功能:如果要升级程序,则通过超级终端的串口(Xmodem协议),将固件烧写到flash的0地址中,然后跳转到flash的0地址中,否则等待一段时间则自动跳转到flash中的0地址中。bootloader的大小:1024字节以内。

一些注意事项:

1.  

作者  | 2011-12-30 20:50:52 | 阅读(18) |评论(1) | 阅读全文>>

【引用】DHCP协议原理

2011-11-24 10:36:28 阅读24 评论0 242011/11 Nov24

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是IETF为实现IP的自动配置而设计的协议,它可以为客户机自动分配IP地址、子网掩码以及缺省网关、DNS服务器的IP地址等TCP/IP参数。了解DHCP工作过程可以帮助我们排除有关DHCP服务遇到的问题。DHCP 协议是基于UDP层之上的应用,本文结合抓报所得数据分析DHCP协议实现原理

一、先了解一下需要抓取的DHCP报文

客户发出的IP租用请求报文

  DHCP客户机初始化TCP/IP,通过UDP端口67向网络中发送一个DHCPDISCOVER广播包,请求租用IP地址。该 广播包中的源IP地址为0.0.0.0,目标IP地址为255.255.255.255;包中还包含客户机的MAC地址和计算机名。

DHCP回应的IP租用提供报文

  任何接收到DHCPDISCOVER广播包并且能够提供 IP地址的DHCP服务器,都会通过UDP端口68给客户机回应一个DHCPOFFER广播包,提供一个IP地址。该广播包的源IP地址为DCHP服务器 IP,目标IP地址为255.255.255.255;包中还包含提供的IP地址、子网掩码及租期等信息。

客户选择IP租用报文

  客户机从不止一台DHCP服务器接收到提供之后,会选择第一个收到的 DHCPOFFER包,并向网络中广播一个 DHCPREQUEST消息包,表明自己已经接受了一个DHCP服务器提供的IP地址。该广播包中包含所接受的IP地址和服务器的IP地址。所有其他的DHCP服务器撤消它们的提供以便将IP地址提供给下一次IP租用请求。

作者  | 2011-11-24 10:36:28 | 阅读(24) |评论(0) | 阅读全文>>

RTL8019AS 参考资料

2011-10-5 15:47:37 阅读54 评论0 52011/10 Oct5

上网搜了下这方面的东东,发现几个不错的网址,先记录下来:  

 参考一

基于ARM 嵌入式以太网接口设计

(原文来自http://www.eaw.com.cn/news/techhotdisplay/article/15982

S3C44B0X芯片介绍

S3C44B0X 微处理器是三星公司专为手持设备和一般应用提供的高性价比和高性能的微控制器解决方案,它使用ARM7 TDMI 核,最高工作频率为66 MHz。S3C44B0X 通过在ARM7 TDMI 内容基础上扩展一系列完整的通用外围器件,使系统费用降至最低。

RTL8019AS 芯片介绍

RTL8019AS 是在嵌入式领域应用广泛且性价比很高的网络控制芯片。Rtl8019AS 的主要性能有: 符号Et hernet II 与IEEE802.3 ( 10Base5 ,10Base2 ,10Base T) 标准; 全双工,收发可同时达到10 Mbit/ s 的速率;内置16 kB 的SRAM ,用于收发缓冲,降低对主处理器的速度要求;支持8/16 位数据总线,8 个中断申请线以及16 个I/ O 基地址选择;支持UTP , AUI , BNC 自动检测, 还支持对10Base T 拓扑结构的自动极性修正;允许4 个诊断L ED 引脚可编程输出; 100 脚的PQFP 封装,缩小了PCB 尺寸。

作者  | 2011-10-5 15:47:37 | 阅读(54) |评论(0) | 阅读全文>>

【引用】AVR单片机Atmega128外扩RAM

2011-10-5 10:10:42 阅读98 评论0 52011/10 Oct5

由于AVR系列单片机采用的是内部外部RAM统一编址,ATmega128工作在非ATmega 103模式时具有4k+256B的包括寄存器文件(通用工作寄存器)、I/O寄存器、扩展I/O寄存器和内部SRAM的连续内部存储空间。所以在扩展外部RAM时,和内部SRAM地址重叠的外部RAM地址是不能直接访问的。也就是说扩展的外部RAM每64k要浪费掉内部SRAM那么大的空间(AT90系列如此)。所幸的是mega系列解决了这一缺点,专门有一个寄存器XMCRB用来解决对与内部SRAM地址空间相同地址的外部RAM访问。其低三位XMM2 、XMM1 、XMM0三位的设置,决定高位地址线PC口的哪些口线被释放为普通I/O,而不是作为高位地址。这样就可以巧妙地屏蔽高位,就ATmega128而言,要避开内部的4k+245B空间,注意到,只要所访问的地址范围大于0X1100(且MCUCR,XMCRA设置正确),那么所访问的就是外部RAM空间。所以在访问小于4k+245B的外部地址时,只要使地址大于0X10FF就可以访问了。0X1100用二进制表示为:0001,0001,0000,0000,高位地址线PC5、PC6、PC7没有使用到。在访问的时候就可设置XMCRB的XMM1、XMM0位为1,释放该三根地址线为普通I/O,将其设为输出。并且输出0;并在外部地址加上一个虚地址以使地址超过0X1100,如此设置,就可以访问外部0X0000~0X10FF空间了。超出这个空间,CPU就自动将其识别为外部相应的地址了,不用设置XMCRB寄存器(即不需释放任何总线),也不需加虚地址,按照正常外部RAM访问即可。在此约定所加的虚地址为0X2000,XMCRB寄存器设置为****,*011,所释放的地址线输出0。

作者  | 2011-10-5 10:10:42 | 阅读(98) |评论(0) | 阅读全文>>

嵌入式Linux操作系统学习规划 (转)

2011-9-13 21:10:37 阅读75 评论1 132011/09 Sept13

ARM+LINUX路线,主攻嵌入式Linux操作系统及其上应用软件开发目标:

(1)掌握主流嵌入式微处理器的结构与原理(初步定为arm9)

(2)必须掌握一个嵌入式操作系统 (初步定为uclinux或linux,版本待定)

(3)必须熟悉嵌入式软件开发流程并至少做一个嵌入式软件项目。

从事嵌入式软件开发的好处是:

(1)目前国内外这方面的人都很稀缺。这一领域入门门槛较高,所以非专业IT人员很难切入这一领域;另一方面,是因为这一领域较新,目前发展太快,大多数人无条件接触。

(2)与企业计算等应用软件不同,嵌入式领域人才的工作强度通常低一些(但收入不低)。

(3)哪天若想创业,搞自已的产品,嵌入式不像应用软件那样容易被盗版。硬件设计一般都是请其它公司给订做(这叫“贴牌”:OEM),都是通用的硬件,我们只管设计软件就变成自己的产品了。

(4)兴趣所在,这是最主要的。

从事嵌入式软件开发的缺点是:

(1) 入门起点较高,所用到的技术往往都有一定难度,若软硬件基础不好,特别是操作系统级软件功底不深,则可能不适于此行。

(2)这方面的企业数量要远少于企业计算类企业。

(3)有少数公司经常要硕士以上的人搞嵌入式,主要是基于嵌入式的难度。但大多数公司也并无此要求,只要有经验即可。

(4)平台依托强,换平台比较辛苦。

兴趣的由来:

1、成功观念不同,不虚度此生,就是我的成功。

作者  | 2011-9-13 21:10:37 | 阅读(75) |评论(1) | 阅读全文>>

AVR编程感悟

2011-9-10 10:44:30 阅读65 评论0 102011/09 Sept10

公司的项目中用的单片机都是avr,有Atmega128,Atmega2561,和刚刚用的Attiny2313,玩了两三个月了,这三个单片机也玩熟了,因之前都是写上层应用的,一些编程的观念,特别是在玩完2313后有了很大的改变,把最近的一些编程中认识到的问题及想法先记录下来,当个备忘录吧。

首先是“封装”的思想 先说下原先的观念吧,原先参加的项目比较大,芯片资源也很丰富,RAM都是几十兆的,ROM都是过百兆的,自己只负责一个模块的,这方面特别的重视,包括一些用到的变量,都根据实际用途进行封装,这样便于维护,也便于编写程序,同时也便于后期扩展,变量的封装对应要有相应的函数封装,将所有的全局变量的操作都封装起来,会提高程序的灵活度以及移植性,在与别人的模块接口方面也比较灵活,所以养成了习惯,只要抽象成一个功能模块的,都将其封装起来,然后复杂的功能用一些小的功能往起拼,个人觉得这样降低了逻辑的复杂度,而且也是遵循软件工程的“低耦合,高内聚”的原则。这也是先前一直认为很好的编程习惯,所以写程序前都要规划规划,看看那些能做成模块,方便开放和关闭一些功能(应对定制版或多平台的需求)。 最近这几个项目都很小,软件的工作量都是一个人搞定的,资源都很有限,128-->RAM(4K bytes),ROM (128Kbytes),2561->RAM(8K+32K ext),ROM(256K bytes),2313->RAM(128 bytes),ROM(2K bytes),刚开始玩128,哇塞才4K的RAM,记得原来做一个FAX的buffer都超过4

作者  | 2011-9-10 10:44:30 | 阅读(65) |评论(0) | 阅读全文>>

【引用】什么是1U或者2U、4U?

2011-6-12 17:07:44 阅读91 评论0 122011/06 June12

“U”是一种表示机架式服务器外部尺寸的单位,是unit的缩略语,详细尺寸由作为业界团体的美国电子工业协会(EIA)决定。

  

之所以要规定服务器的尺寸,是为了使服务器保持适当的尺寸以便放在铁质或铝质机架上。机架上有固定服务器的螺孔,将它与服务器的螺孔对好,用螺丝加以固定。

  

规定的尺寸是服务器的宽(48.26cm=19英寸)与高(4.445cm的倍数)。由于宽为19英寸,所以有时也将满足这一规定的机架称为“19英寸机架”。

厚度以4.445cm为基本单位。1U就是4.445cm,2U则是1U的2倍为8.89cm。也就是说所谓“1U的PC服务器”,就是外形满足EIA规格,厚度为4.445cm的产品。设计为能放置到19英寸机柜的产品一般被称为机架服务器。

  

将服务器放置到机架上,并不仅仅有利于日常的维护及管理,也可能避免意想不到的故障。首先,放置服务器不占用过多空间。机架服务器整齐地排放在机架中,不会浪费空间。其次,连接线等也能够整齐地收放到机架里。电源线和网线等全都能在机柜中布好线,可以减少堆积在地面上的连接线,从而防止脚踢掉电线等事故的发生。

1U的机箱厚度小,2U的要厚一些,1U的机箱虽然占用空间小,但对电源及散热系统的要求很高,2U的机箱内部空间相对要大一些,散热性能要好些。

1U和2U的机箱小巧玲珑,比较好看。1U机箱占用空间小,因此如果要作托管的话费用低,2U的占用空间要大些,因此托管费要高些,而塔式的就更贵了,但其散热比较好,但很高的

作者  | 2011-6-12 17:07:44 | 阅读(91) |评论(0) | 阅读全文>>

TQ2440 学习笔记之----启动代码

2011-3-13 14:56:38 阅读368 评论0 132011/03 Mar13

买了tq2440大半年了,都没怎么折腾过呢,现在准备好好研究研究,将学习的结果做一个note吧。

板子是采用s3c2440的cpu设计的,先看看s3c2440的一些特点吧(data sheet写的相当的详细了,根本不需要看书,有问题google):

主要应用手持设备(hand-held devices)和一些低功耗之类的东东(不是很在意)。 它是16/32为的RISC微处理器,又查看了RISC何CISC的区别以及存储机构相关的概念。 采用arm920t core(arm家族很多系列,看过介绍,没仔细研究过,先不管了)。 它采取了一个叫做AMBA的总线方式设计的,这个东西不太懂,g下,AMBA,基本上看明白了,一个2440肯定有很多模块,都将这些东东集成到一个芯片上了,但各个模块怎么工作,总要有个说明,arm就定义了一种规则,也就是协议,叫做AMBA(Advanced Micro controller Bus Architecture),通过这个规则来根据模块的特性来进行通信,协作。这点从S3C2440A Block Diagram的框图中可以看出了,还是比较清晰的。

作者  | 2011-3-13 14:56:38 | 阅读(368) |评论(0) | 阅读全文>>

c语言抓取网页,用utf8保存

2011-1-9 18:29:36 阅读324 评论0 92011/01 Jan9

今天用c语言写了个小程序抓取一个网页的内容,原理很简单,就是构建一个HTTP request,用tcp包发送给目的地址,然后将接收到的东东保存起来,此方法需要一个HTTP 头,用wireshark抓包搞定,呵呵,功能有限,测试的时候遇到的问题就是将接收到的东东保存到文件中,发现是乱码,上网搜之,发现下面的一种方法可行,就记录下来,备用。

用二进制方式创建一个文件,然后写UTF-8文件头(必须在后续写之前)

char header[3] = {0xef, 0xbb, 0xbf};  // UTF-8 file header

FILE * fp = fopen(pszFile, "w+b");

fwrite(header, sizeof(char), 3, fp);

/* 在UTF-8文件头部之后写入其他信息 */

fclose(fp);

这样这个文件就成为UTF-8编码的文本文件了。之后其他信息都写在UTF-8文件头部之后就OK了!

作者  | 2011-1-9 18:29:36 | 阅读(324) |评论(0) | 阅读全文>>

hs0038B的引脚说明

2010-6-15 20:30:11 阅读753 评论3 152010/06 June15

本想买个TX1838玩的(因为看别人的电路是用的它),跑到电子城老板说没有,说是hs0038和它的功能一样,所以就买了几个,上网找资料,差引脚,nnd,datasheet上居然没看到怎么辨别引脚,都说什么1,2,3引脚是什么什么,我就靠了,我的这个38上咋就没有标注1,2,3呢,乖乖,继续查,说啥的都有,但都不确定,还是自己测吧,反正就三个引脚,VCC,GND和输出,测啊测啊,终于测出来了,凸面向上,引脚向下,对着自己,从左向右为:输出,GND,VCC。

第一次测试测错了,将输出和地弄反了就给焊上去了,结果单片机死活没反应,我用万用表测试输出的电压,然后按着遥控器(手严重不够用,嘴都用上了),也变化啊,奇怪了,后来才想起了,是变化了,电压才在0.5V左右变化,单片机一直把它当低电平了。。。。,拆掉,重新焊,然后反过来,这次有反应了,一测,电压在4.5V左右波动,差不多了,呵呵呵,下步解码吧,写程序咱还是蛮在行的,理论上应该没什么问题了~~

作者  | 2010-6-15 20:30:11 | 阅读(753) |评论(3) | 阅读全文>>

查看所有日志>>

 
 
 
 
 
 我要留言
 
 
 
留言列表加载中...
 
 
 
 
 
 
 
日志评论
评论列表加载中...
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2012

   
创建博客 登录  
 关注