- 博客(25)
- 资源 (17)
- 收藏
- 关注
转载 成功应该养成的习惯
要成功,就马上准备有所付出吧!这就是每天你应该养成的习惯。1、不说“不可能”; 2、凡事第一反应: 找方法,不找借口; 3、遇到挫折对自己说声:太好了,机会来了! 4、不说消极的话,不落入消极的情绪,一旦发生立即正面处理; 5、凡事先订立目标; 6、行动前,预先做计划; 7、工作时间,每一分、每一秒做有利于生产的事情; 8、随时用零碎的时间做零碎的事情; 9、守时; 10、写点日记,不要太依靠
2008-10-14 13:13:00 779
转载 objcopy使用说明
objcopy用于将object的部分获全部内容拷贝到另一个object,从而可以实现格式的变换。objcopy可用用于将文件转换成S-record格式或者raw二进制格式。例如, xxxx-elf-objcopy –O srec test.o test.s19则将test.o转换成s-record文件中。通常涉及到text段。 xxxx-elf
2008-10-31 14:06:00 15517 1
原创 objdump说明
objdump有点象那个快速查看之流的工具,就是以一种可阅读的格式让你更多地了解二进制文件可能带有的附加信息。使用objdump显示vxWorks的文件头信息以及入口地址例子:D:/ftproot>C:/Tornado2.2Arm/host/x86-win32/bin/objdumparm -f vxWorks_SoftDebug_armvxWorks_SoftDebug_arm:
2008-10-31 14:05:00 3560
原创 avr的I/O口使用示例
#include #include /* 实现跑马灯效果 */int main(void){ DDRB = 0xFF; /* 设置端口为输出 */ PORTB = 0x00; /* 端口清零 */ int i = 0; while (1) { outp(1 i++; /* 循环 */ if
2008-10-30 18:55:00 767
原创 avr的eeprom的使用示例
#include #include #include /*EEPROM读取函数*//*addr:地址;number:长度;p_buff:读出数据存放指针*/void my_eeprom_read(unsigned char *p_buff, unsigned char addr, unsigned char number){ EEARH = 0x00; /* 高地址位为0 */
2008-10-30 17:52:00 2336
转载 bss段和.data段的区别
【例一】用cl编译两个小程序如下:程序1:int ar[30000];void main(){ ......} 程序2:int ar[300000] = {1, 2, 3, 4, 5, 6 };void main(){ ......} 发现程序2编译之后所得的.exe文件比程序1的要大得多。当下甚为不解,于是手工编译了一下,并使用了/FAs编译选项来查看了一下其各
2008-10-27 10:00:00 710
原创 BSS段,数据段,代码段,堆,栈简单介绍
BSS段:BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。数据段:数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。代码段:代码段(code segment/text segment)通常是指用
2008-10-27 09:56:00 1527
原创 avr-gcc的EEPROM的api
EEPROMAVR内部有EEPROM,但地址空间与SRAM的不相同。在访问时必须通过I/O寄存器来进行。EEPROM API封装了这些功能,为用户提供了高级接口。使用时要包含eeprom.h。在程序里定义EEPROM数据的例子如下:static uint8_t variable_x __attribute__((section(".eeprom"))) = 0;不同的AVR器件具有不同数目的EEP
2008-10-24 16:36:00 2856
转载 AVR-GCC的I/O端口API
1. BV用法:BV(pos); #define _BV(bit) (1 说明:将位定义转换成屏蔽码(MASK)。与头文件io.h里的位定义一起使用。例如,置位WDTOE和WDE可表示为“BV(WDTOE) | BV(WDE)”2.bit_is_clear用法:uint8_t bit_is_clear(uint8_t port, uint8_t bit);描述:如果port的bit位清零则返回1。
2008-10-24 16:22:00 2155
原创 位操作说明与日常用法
位操作有& 按位与 | 按位或 ^ 按位异或1. 按位与运算 按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。 例如:9&5可写算式如下: 00001001B&00000101B = 00000001B,可见9&5=12. 按位或运算 按位或运算符“|”是双目运算符。其功能是参与运算的两数
2008-10-24 10:33:00 898
原创 AVR-GCC程序存储器api
程序存储器如果要将数据(如常量,字符串,等等)放在FLASH里,用户需要指明数据类型__ATTR_PROGMEM__。为了方便使用,AVR-GCC定义了一些更直观的符号,如下表所示。类型数据定义typedef void PROGMEM prog_void typedef char PROGMEM prog_char typedef unsigned char PROGMEM prog_u
2008-10-24 10:31:00 2686 1
转载 破解网页无法复制的绝招
很多资料性的网络文章,往往在网页禁止使用“复制”、“粘贴”命令。这让笔者很苦恼,无法把好的文章保留下来。关于这个问题,相信有众多的网友曾经遇到过这问题,所以笔者才把这问题拿出来说。 笔者经过多番收集解决方法和不断尝试,总结出突破网页文章禁止复制的多个办法。 破解方法一:把网页文件另存为,保存为txt文本文件,然后把里面的代码都去掉,这样就可以留下内容。但有的网页无法保存,我们又可以
2008-10-23 20:22:00 2115 1
转载 AVR-GCC里定义的API
嵌入式编程的代码可以简单地分为两部分,一是与硬件无关的算法部分,对其编程与普通C编程没有区别;二是与硬件相关的寄存器/端口操作部分。不同的MCU实现方法各有不同。在AVR-GCC里则通过一系列的API来解决。当然,用户也可以定义自己的API。在此简单地介绍目前AVR-GCC里定义的API,以及AVR-GCC的工作过程。一.应用程序启动过程(Start Up)标准库文件包含一个启
2008-10-23 15:08:00 1175
原创 avr单片机INT0模拟代码
#include #include #include /* 主函数 */int main(void){ DDRA = 0x00; /*方向输入*/ PORTA = 0xFF; /*打开上拉*/ DDRB = 0xFF; /*方向输出*/ PORTB = 0xFF; /*电平设置*/ DDRC = 0x00; /*方向输入*/
2008-10-22 17:52:00 1336
原创 avr单片机的进入各种睡眠模式,并使用INT2唤醒代码
#include #include #include #include /* 外部INT2处理函数 *//* 该函数可以使用调试器调试,改变PORTB的PINB2的值从而触发中断 */SIGNAL(SIG_INTERRUPT2){ PORTB ^= (1 }/*主函数*/int main(void) { DDRA = 0x00; /*方向输入*/ POR
2008-10-22 17:44:00 6154
原创 vxWorks的config.h注释
/*This file contains the configuration parameters for the CPU evaluation board.*/#ifndef INCconfigh#define INCconfigh/* BSP version/revision identification, before configAll.h */#define BSP_VER_1_2 1#
2008-10-21 17:14:00 3419
原创 usrConfig.c和prjConfig.c的关系
遇到一个相当恼人的问题: 当我修改bootConfig.c的内容时,重新编译bootrom和vxWorks后被修改的内容是可以起作用的。可是一旦相对usrConfig的内容作修改时,就没有办法让usrConfig.C被自动重新编译并链接。不知哪位高手可以协助兄弟解决这个问题? 这个问题主要是tornado使用了工程产生vxworks!为什么可以改bootConfig.c,而不可以
2008-10-21 17:01:00 3539 2
转载 big-endian/little-endian
一、引子 在各种计算机体系结构中,对于字节、字等的存储机制有所不同,因而引发了计算机通信领域中一个很重要的问题,即通信双方交流的信息单元(比特、字节、字、双字等等)应该以什么样的顺序进行传送。如果不达成一致的规则,通信双方将无法进行正确的编/译码从而导致通信失败。目前在各种体系的计算机中通常采用的字节存储机制主要有两种:big-edian和little-endian。本文简要描述这两种存储机制的
2008-10-21 10:21:00 760
转载 忘记root用户密码解决办法
首先重新启动系统。待系统启动到grub或lilo(现在一般是grub)引导菜单时,找到系统当前引导项(可以按方向键展开隐藏的菜单);把光标定位在该选项上按下字母“e”键进入这个引导的编辑状态;该选项有三行语句,请用光标选中第二行,也就是“Kernel”开头的 那一行;在这一行再按下字母“e”键进入这一行的编辑状态;在该行行尾加个空格,写上数字1,类似这样: kernel /boot/vmlin
2008-10-20 16:07:00 598
原创 VxWorks的block设备驱动--ram disk驱动
file fooDrv.h#ifndef __INCFOODRV#define __INCFOODRV#include "vxWorks.h"#include "sioLib.h"typedef struct{ BLK_DEV devHdr; /* generic block device structure */ char *addr; /* memory l
2008-10-15 15:32:00 1173
转载 哈佛结构和冯·诺伊曼结构
哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。中央处理器首先到程序指令存储器中读取程序指令内容,解码后得到数据地址,再到相应的数据存储器中读取数据,并进行下一步的操作(通常是执行)。程序指令存储和数据存储分开,可以使指令和数据有不同的数据宽度,如Microchip公司的PIC16芯片的程序指令是14位宽度,而数据是8位宽度。 哈佛结构的微处理器通常具有较高的执行效率。其程序指令和
2008-10-15 10:54:00 1177
转载 锁存器应用辨析
所谓锁存器,就是输出端的状态不会随输入端的状态变化而变化,仅在有锁存信号时输入的状态被保存到输出,直到下一个锁存信号到来时才改变。典型的锁存器逻辑电路是 D 触发器电路。 锁存,就是把信号暂存以维持某种电平状态。锁存器的最主要作用是缓存,其次完成高速的控制其与慢速的外设的不同步问题,再其次是解决驱动的问题,最后是解决一个 I/O 口既能输出也能输入的问题。 在某些应用中,单片机的 I/O
2008-10-15 10:34:00 5569 2
原创 vxWorks字符设备驱动模板
file fooDrv.h#ifndef __INCfooDrv#define __INCfooDrv#include "vxWorks.h"#include "sioLib.h"STATUS fooDrv();STATUS fooDevCreate(char *devName);STATUS fooDelete(char *devName);int fooOpen(DEV_HDR *pf
2008-10-14 17:40:00 1069
转载 VxWorks romStar函数分析
以下对romStart进行了必要的删减,主要去掉了一些预编译选项。void romStart ( FAST int startType /* start type */ ){ volatile /* to force absolute adressing */FUNCPTR absEntry; /* to a
2008-10-14 13:18:00 1239
转载 VxWorks启动过程
从映像的分类和各种映像的大致加载流程上看VxWorks的启动过程,这一节让我们从函数级看一下VxWorks的启动过程:1. Boot Image + Loadable Images: 下面是具体的流程图: 其中第一阶段的执行流程使用的是上图的左边的源文件中的那些函数(romInit->romStart->usrInit->sysHwinit->usrKernelinit->usrRoot
2008-10-14 09:11:00 2536 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人