- 博客(26)
- 资源 (2)
- 收藏
- 关注
转载 想成为嵌入式程序员应知道的16个基本问题
这是嵌入式C程序员的基本知识。作者在Embedded Systems Programming杂志上发表了很多嵌入式系统开发方面的文章。 C语言测试是招聘嵌入式系统程序员过程中必须而且有效的方法。这些年,我既参加也组织了许多这种测试,在这过程中我意识到这些测试能为面试者和被面
2011-08-15 17:47:06 1057
原创 mini2440之UART简单通信
<br /> 最近一直在弄UART,书和资料都不知道看了多少遍了,真怀疑是自己记忆力不好,搞了那么久都从来没把程序运行正确过,今天终于成功了。虽然并不是所有的程序都是自己写的,但对这个UART总算有点明白了,看开发板送的那个程序,虽然弄懂了是怎么回事,但是有很多地方始终不能理解,想从上面改也是相当的有难度,所以一直再找一个简洁版的程序,让自己明白到底UART要设置那些寄存器才能正常通讯,我觉得这一点也是相当重要的,从简单到复杂,那些培训搞的那些程序虽然功能齐全,但不利于我们学习,太太太复杂了。想从上面改,
2011-06-03 01:17:00 970
原创 套用国嵌例程的2440init.s文件需要注意的事项
<br /> 今天搞那个启动代码,以前不知道怎么用国嵌例程中的启动代码,复制过去老是出错,感觉关联性太大了,要复制好多文件才行,但是又不想搞那么多。最开始出现了两个问题,<br />1、问题如下<br /><br />说是少了两个函数,最后在国嵌例程中找到了找到了2440slib.h文件,在这个文件找到这两个函数声明,然后选择函数点击右键,选择go to function definition of MMU_SetFastBusMode这一项,就可以跳转到函数,这个函数在2440slib.s文件中,所以就需
2011-06-03 01:17:00 969
原创 ARM外部中断控制寄存器EXTINTn设置方法
<br />把前面的那些中断基本搞懂之后,突然出现了这个外部中断控制寄存器,找了好多资料都只是泛泛而谈,根本不知道具体是干什么的,搞的我一头雾水,后来知道了这个是设置EINT0~EINT23的触发方式的,但又没讲怎么去设置。就连芯片的数据手册上面都没有,晕菜了。后来终于在网上收到了如何设置这几个寄存器。<br />EXTINT[2~0]:设置24个外部中断源的中断信号的触发类型。<br />EXTINT0:设置EINT0~EINT7的中断触发类型。<br /> bit0~bit2:设置EINT
2011-06-03 01:15:00 1971
转载 2440中UART的使用以及相关函数详解
<br />一、UART原理及UART部件使用方法<br />1、UART原理<br />通用异步收发器UART,用来传输串行数据:<br /> 发送数据时,CPU将并行数据写入UART,UART按照一定格式在TxD线上串行发出;<br /> 接收数据时,UART检测到RxD线上的信号,将串行收集放到缓冲区中,CPU即可读取UART获得的这些数据。<br />UART最精简的连线只有3根电线,TxD用于发送,RxD用于接收,Gnd用于提供参考电平。TxD和RxD数据线以“位”为最
2011-06-03 01:15:00 915
转载 2440-中断寄存器详解
<br />刚开始时一直搞不懂EINTPEND到底是怎么回事,莫名奇妙的就出来这个,并且在中断8中还用到了,本来以前看手册的时候感觉自己还懂了,结果一上程序就莫名其妙了,那几个寄存器把我搞晕了,清除的时候也搞不懂到底是置1还是置0。使我很无语,后来在网上找了一下,终于找到了一篇文章,对中断寄存器的分析和解释,这下总算比较明白了是怎么回事了,下面看文章·······<br />这是一小段程序:<br />static void __irq key_handler(void)<br />{<br /> i
2011-06-03 01:14:00 1040
原创 裸机程序按键中断问题,求解
今天做了一个按键中断程序,主要实现功能是:按下k1键,LED全亮;按下k2键,LED计数;按下k3键,流水灯;按下k4键,LED全灭。基本功能能实现,但有两个问题: 第一,当我按下k2时,必须得等到计数子程序完成之后才能进行下一次按键,如果在计数程序进行当中,按下k3键,并不能打断计数程序执行,必须等到计数完成之后,才会响应流水灯程序。但我想实现,只要一有按键按下,立马去执行对应程序,不知道能否实现。但由于进入IRQ中断之后,CPSR的I(不是第一位)位会被置1,也就是屏蔽掉IRQ中断。如
2011-06-02 21:47:00 915
原创 ARM裸机程序设计—LCD程序设计
LCD裸机驱动程序总结:LCD裸机驱动程序流程:一、LCD初始化: 1、端口初始化:设置GPC和GPD为LCD输出端口模式 2、显示模式初始化: LCDCON1:选择BBP(位每像素)模式、选择显示模式、决定VLCK频率 LCDCON2:bit[31:24](1:VPBD)、bit[23:14](320-1:行数)、bit[13:6](5:VFPD)、bit[5:0](1:VSPW) LCDCON3:bit[25:19](36:HB
2011-06-02 21:46:00 842
原创 ARM裸机程序设计—触摸屏程序设计
触摸屏程序设计总结:触摸屏工作流程以及程序设计流程:一、触摸屏初始化: 1、设置触摸屏接口为中断等待模式(ADCTSC寄存器),等待触摸笔按下 2、清除源挂起寄存器(SRCPND)、中断挂起寄存器(INTPND)、子源挂起寄存器(SUBSRCPND) 3、程序入口函数,关中断屏蔽寄存器和子中断屏蔽寄存器(INTMSK,INTSUBMSK),中断模式和中断优先级默认即可二、触摸屏中断服务子程序: 一)触摸笔按下中断 4、如果中断发生,设置x,y
2011-06-02 21:44:00 1388
原创 ARM裸机程序设计—ADC驱动程序设计
<br /> 对ADC裸机程序设计做个总结:<br /> 首先是程序设计流程:<br /> 一、时钟频率设置<br /> 二、ADC初始化<br /> 1、转换通道选择(ADCCON寄存器中的[5:3]位)<br /> 2、转换频率设置(主要是设置预分频器的值)(ADCCON寄存器中的[13:6]位)<br /> 3、预分频器使能(ADCCON寄存器中的第14位)<br /> 三、读取AD转换值<br /> 1、转换启动(ADCCON寄存器中的第0位)<br /> 2、
2011-06-02 21:42:00 1182
原创 ARM裸机程序设计—按键中断程序设计
<br />按键程序设计总结:<br /> 中断处理框图:<br /><br />首先是按键中断处理过程:<br /> 1、中断控制器汇集各类外设发出的中断信号,然后告诉CPU<br /> 2、CPU保存当前程序的运行环境(各个寄存器等),调用中断服务程序(ISR,Interrupt Service Routine)<br /> 3、在ISR中通过读中断控制器、外设的相关寄存器来识别这是哪个中断,并进行相应的处理<br /> 4、清楚中断:通过读写中断控制器和外设的相关寄存器来实现<br /> 5、最好恢复
2011-06-02 21:39:00 3200
原创 Makefile基本规则
1、targets(目标) : prerequisites(依赖) command(命令) (注意:命令行要以【TAB】键开始) 例1: main.o:mian.c gcc -c main.c 例2: hello: main.o func1.o func2.o gcc main.o func1.o func2.o -o hello main.o:main.c
2011-06-02 21:28:00 669
原创 ubuntu10.4设置桥接方式实现开发板和虚拟机之间通讯
<br /> 由于虚拟机以前采用的是NAT方式上网,所以基本上不用怎么设置。但是前不久做uboot移植,所以需要tftp服务,需要开发板和虚拟机之间进行通信。<br /> 首先,要在uboot下设置ipaddr(开发板的ip地址)、serverip(虚拟机的ip地址),让他们两和主机(pc机)的ip地址设置在同一个网段,三者必须在同一个网段,这是前提条件。但是由于以前采用的是NAT方式,所以虚拟机上的ip地址是默认的(我的虚拟机ip是192.168.121.128),无法把开发板和虚拟机ping通。所
2011-06-02 21:27:00 1856
转载 ubuntu10.04版本TFTP安装方法(转)
tftpd-hpa 是一个功能增强的TFTP服务器。它提供了很多TFTP的增强功能,它已经被移植到大多数的现代UNIX系统。网上有很多配置tftp的方法,但是试了N次都配置不起来,最后试了试这个,一切OK。1.安装sudo apt-get install tftpd-hpa tftp-hpa2.配置tftp-hpa 的配置文件為 /etc/default/tftpd-hpa $sudo gedit /etc/default/tftpd-hpa对tftpd-hpa文件进行
2011-06-02 21:19:00 759
转载 ubuntu下arm-linux-gcc交叉编译环境搭建
<br />1、首先获得arm-linux-gcc-4.4.3.tar.gz <br />2、解压arm-linux-gcc-4.4.3.tar.gz :<br /> #tar xzvf arm-linux-gcc-4.4.3.tar.gz -C /usr/local 这个命令就是我把压缩包解压到了/usr/local目录下面面,我的解压出来是opt文件<br />3、设置<br /> 由于我们要使用交叉工具链的命令,但是解压之后并不能使用,所以我们要设置他的环境变量 。<br />
2011-06-02 21:17:00 905
转载 (转)Ubuntu10.04安装及配置samba
<br /><br />1. 安装<br />$ sudo apt-get install samba<br />$ sudo apt-get install samba-common (可能会提示已经安装)<br />$ sudo apt-get install samba-common-bin (可能会提示已经安装)<br />$ sudo apt-get install system-config-samba <br />2. 配置<br />面我们来共享群组可读写文件夹,假设你要共享的文件
2011-06-02 21:16:00 919
转载 Linux下的目录介绍
这是一片非常简单的介绍Linux标准系统下各种目录的文章。现在,各种公司的Linux都是换汤不换药,但是还是多少有些区别,所以小虎不能保证下面的介绍适用于所有的Linux系统,比如说Debian。 Windows下的软件一般都会放在一个固定的目录里面。比如说程序X放在C:/Program_ComeOnBaby/X,程序Y放在C:/Program_Skybird/Y。但是Linux系统就有很大的不同,它更加复杂。因为它不是根据程序的目的或者类型来放在一个目录里的,而是把二进制可执行文件放在一个目
2011-06-02 21:14:00 486
转载 gcc/g++ 编译器使用简介(转)
<br /><br />gcc/g++ 编译器使用简介<br />wite by hzh<br /> date:2010-1-19<br /><br />GNU CC(简称gcc)是GNU项目中符合ANSI C标准的编译系统,能够编译用C、C++、Object C、Jave等多种语言编写的程序。gcc又可以作为交叉编译工具,它能够在当前CPU平台上为多种不同体系结构的硬件平台开发软件,非常适合在嵌入式领域的开发编译,如常用的arm-linux-gcc交叉编译工具<br /><br />
2011-06-02 21:13:00 532
转载 vi编辑器的基本使用方法(转)
1、vi的基本概念 基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:1) 命令行模式command mode) 控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。2) 插入模式(Insert mode) 只有在Insert mode下,才可以做文字输入,按「ESC」键可回
2011-06-02 21:09:00 508
转载 Ubuntu VMware Tools安装
安装linux过程还是比较顺利的,就是在安装“VMware Tool”时,遇到点麻烦,经过搜索资料,终于装好了,记一下流程。VMware Tool就相当于虚拟机的驱动,因为Ubuntu出于安全的原因,默认是限制root帐号的使用,安装Ubuntu时会随机设置root密码。所以要安装VMware Tool必须先取得root管理员权限。要用这个命令:sudo,一开始我装Ubuntu-server版的时候,就纳闷,怎么关机还不给关了,原来是要root权限,具体就是$sudo halt。一、
2011-06-02 21:07:00 666
原创 五、多线程
<br />一、线程理论基础<br />1、使用多线程的优点:<br /> 1)、和进程相比,它是是一种非常“节俭”的多任务操作方式。在linux下启动一个新的进程必须分配给它独立的地址空间,简历众多的数据表来维护它的代码段、堆栈段、和数据段,这是一种“昂贵”的多任务工作方式。运行于一个进程中的多个线程,它们之间使用相同的地址空间,而且线程间彼此切换所需的时间也远远小于进程间切换所需的时间。据统计,一个进程的开销大约是一个线程开销的30倍左右。<br /> 2)、线程间方便通信机制。对不同进程来
2011-06-02 00:46:00 484
原创 四、进程间通信二
<br />五、消息队列<br /> 消息队列就是一个消息的链表。可以把消息看作是一个记录,具有特定格式。进程可以向中按照一定的规则添加新消息;另一些进程则可以从消息队列中读走消息。目前有POSIX消息队列,但系统V消息队列被大量使用。<br />1、持续性<br /> 系统V消息队列是随内核持续的,只有在内核重启或人工删除时,该消息队列才会被删除。<br />2、键值<br /> 消息队列的内核持续性要求每个消息队列都在系统范围内对应唯一的键值,所以,要获得一个消息队列的描述字,必须提供
2011-06-02 00:45:00 427
原创 三、进程间通信一
<br />一、进程间通讯概述<br />1、原因:为什么进程间需要通讯<br /> a.数据传输:一个进程需要将它的数据发送给另一个进程。<br /> b.资源共享:多个进程之间共享同样的资源。<br /> c.通知事件:一个进程需要向另一个或者一组进程发送消息,通知它们发生了某事件。主要是在进程同步时,A进程完了需要向B进程发送消息,告知自己结束了。<br /> d.进程控制:有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另外一个进程的所有操作,并能够
2011-06-02 00:44:00 475
原创 二、进程控制
<br />一、进程控制原理<br />1、进程定义:进程是一个具有一定独立功能的程序的一次运行活动。<br />2、特点:动态性、并发性、独立性、异步性。<br />3、状态:就绪态、执行态、阻塞态。<br />4、进程ID(PID):标识进程的唯一数字<br /> 父进程的ID:PPID<br /> 启动进程的用户ID:UID<br />5、进程互斥:进程互斥是指当有如干进程都要使用某一共享资源时,任何时<br />刻最多允许一个进程使用,其他要使用该资源的进程必须等待,直到占用该资<br />源者释放
2011-06-02 00:43:00 406
原创 一、文件编程
<br />文件编程<br />linux中文件编程可以使用两种方法:<br /> @:Linux系统调用(依赖于Linux系统)<br /> @:C语言库函数(这种方法与操作系统是独立的,在任何操作系统下,使用C语言库函数操作文件的方法都是相同的)<br />一、系统调用-文件访问<br />1、系统调用-创建文件<br /> int creat(const char *filename,mode_t mode)<br /> @:filename:要创建的文件名(包含路径,缺省为当前路径)<br />
2011-06-02 00:38:00 536
原创 从QQ空间转向CSDN的第一天
一直都是在QQ空间上总结自己的知识,由于最近QQ空间频频出现敏感词汇的问题,让我很费解,所以就转向这个博客了,哈哈哈,其实一直都想建一个博客的,感觉太麻烦,所以一直没行动。这次腾讯真把我搞火了,所以毅然决定改个平台。记录下自己的学习心得、总结自己的知识。
2011-06-02 00:30:00 393
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人