自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

BaikalHU

野性的呼唤----玩魔方的老叟(dndxhej@gmail.com)

原创 blog说明

今后主要专注于arm系列芯片的嵌入式linux的各种有意思的东西!         个人blog基本上个人的一个学习笔记,见识有限,若有问题,欢迎大家指出。真诚的用开放的心态去交流。

2012-02-25 22:20:02

阅读数 1286

评论数 3

原创 一步步玩pcDuino3--uboot下的ping,添加命令可以接受来自host的ping

uboot是一个非常优秀的开源项目。不仅仅可以学习bootloader,嵌入式,各种总线协议。还可以了解网络协议栈。在嵌入式开发中,经常使用uboot的tftp和nfs来加快开发的效率。那么在tftp可以使用之前,我们要保证host和pcDuino3可以ping通。在uboot下可以ping通ho...

2014-05-23 16:58:55

阅读数 6271

评论数 0

原创 一步步玩pcDuino3--mmc下的bootloader

pcDuino3下支持mmc启动,官方的Uboot是采用SPL框架实现的,因为内部的SRAM空间达到32K,我们完全可以在这32K空间内编写一个完整可用小巧的bootloader来完成引导Linux kernel的目的。     我们首先介绍下SPL框架,可以先看下《GNU ARM汇编--(十八)...

2014-05-19 16:23:17

阅读数 9739

评论数 0

原创 一步步玩pcDuino3--mmc下的裸机流水灯

第一部分是玩pcduino3下的裸机,这个过程可以让我们更好的理解嵌入式系统,熟悉我们使用的这个平台。         首先介绍下开发环境: 虚拟机:VMware® Workstation 10.0.2 build-1744117 系统:Linux slackware 3.2.29-smp #2 ...

2014-05-09 18:54:17

阅读数 12763

评论数 0

原创 记录#pragma pack()的问题

在Cortex M0平台上做开发的时候,遇到一个纠结了两三天的问题。 代码添加了PWM马达控制后,继续做USB复合设备。在做好USB复合设备,发现原来的PWM马达控制不起作用了,首先对比了模块的寄存器设置,完全一致,然后对比代码,除了USB部分, 没有任何差别,接着尝试对比了bin档和map文...

2014-01-28 17:56:59

阅读数 9468

评论数 0

原创 TortoiseSVN实现本地版本控制

以前组里做项目用过P4和SVN,装个客户端就很容易上手使用。最近一个人做一个项目,没有服务器进行代码管理,就得在自己的电脑中进行版本管理。         每有一次大的改动就建立新的文件备份实在太麻烦,想来想去还是在本地建立一个版本控制,方便自己,节省空间和时间。         因为本地已经...

2014-01-22 15:34:08

阅读数 13729

评论数 4

原创 记录两个关于Qt的小问题

1.在程序如何使用qt的库,在解析ini文件格式时,Qt中的QSettings类可以很好的解析ini文件格式,ini文件格式简单,但是写个功能完善而且较强大的库还是要花点时间和功力的。在写代码时遇到这个问题,不想写自己的解析ini格式的类,想直接使用qt的库,结果发现Qt对ini格式无法真正的写入...

2013-09-06 13:57:54

阅读数 4707

评论数 0

原创 linux下使用getopt处理命令行

以前在linux的shell下运行程序时也带过参数,在参数的处理上是自己写个简单的解析函数来处理argv[]的,显得很麻烦而且笨拙。今天学习代码时才发现有个getopt函数可以轻松的处理命令行参数。难怪linux的那些程序的参数处理都做的很强大。比如ls -al --color=auto,ls -...

2013-03-15 18:55:52

阅读数 7730

评论数 0

原创 slackware的一些常用配置

花了点时间在本子上装了slackware14 x86_64的,感觉还行。这次没有装linux和win的双系统,单跑slackware,然后在虚拟机中跑个xp,主要是为了网银的使用和解决office的兼容性问题。         slackware的安装比一般的发行版要复杂,但是对于比较熟悉lin...

2013-03-08 13:26:46

阅读数 7759

评论数 0

原创 qt和linux下的input设备

在嵌入式开发中,qt的键盘往往都是特制的,如何让特制的键盘被qt用起来,需要对linux的input子系统有一定了解,并且特别要追一下qt对外界输入时间的处理方式。应用层和驱动层相互关联,在此仅先粗略分析下qt这部分:     在qt的源码中grep下/dev/input/event之类的,就可...

2013-01-31 23:42:24

阅读数 11479

评论数 0

原创 linux驱动实践(五)--linux下的按键驱动之查询方式

虽然好几个月之前就对linux下的阻塞,非阻塞,select poll的实现,工作队列,tasklet等等做了较为深入的分析,但是在遇到实际的硬件驱动中,才真正去思考怎么将这些用到实际中,构建一个稳定高效的驱动。         板子上有四个按键,linux内核中有input子系统来很好的完成这...

2013-01-01 22:26:37

阅读数 5416

评论数 0

原创 linux驱动实践(四)--linux下读写寄存器

arm裸机下读写寄存器很容易,各个寄存器和内存的地址是单一地址空间,他们是用相同的指令进行读写操作的.而在linux下就要复杂很多,因为linux支持多个体系架构的CPU。比如arm和x86就不一样,具体的差别我暂时也说不上来,这个涉及到CPU体系的设计。目前我只关心:linux为了支持多个硬件体...

2012-12-23 23:22:01

阅读数 18102

评论数 0

原创 linux驱动实践(三)--不大一般的LED驱动

看了这么多内核代码,终于要自己开始做驱动了.按照由易到难,由浅入深的顺序,就从LED开始.         LED驱动可以说是hello world之后最简单的驱动模块了.如果自己写一个LED驱动那是很简单的,其实用linux内核中的leds子系统来做也是比较简单的,内核中的leds子系统是将l...

2012-12-18 17:33:54

阅读数 11563

评论数 0

原创 linux驱动实践(二)--linux3.0.46移植和NFS根文件系统

将近两个月之前就准备开始了,但是在移植linux时候发现编译出来的Image有2.4M之大,而开发板提供的uboot最大只能烧写最大2M。所以本来准备跳过uboot的,但是如果自己不搞个好点的bootloader,我的kernel都烧不了。索性花了一个多月的时间移植了u-boot-2012.07,...

2012-12-10 21:36:44

阅读数 5332

评论数 3

原创 GNU ARM汇编--(二十)总结

从这个系列第一篇开始,那是4月22号,到今天做一个总结,已经有7个多月的时间了,利用业余时间学习自己感兴趣的东西,进度比较慢,也是比较累的,但收获也是很多的.         这个系列之所以写出来,是因为自己在玩linux文件系统和驱动的时候,总是觉得自己应该回头看看bootloader到底是怎...

2012-12-01 15:13:01

阅读数 7968

评论数 9

原创 GNU ARM汇编--(十九)u-boot-nand-spl启动过程分析

在理解bootloader后,花些时间重新学习了开源软件的makefile和相关脚本之后,自己的u-boot移植工作也比较顺利的完成了:         移植环境:         ubuntu 12.04         U-Boot 2012.07 (Nov 28 2012 - 20:0...

2012-12-01 14:25:43

阅读数 10492

评论数 8

原创 GNU ARM汇编--(十八)u-boot-采用nand_spl方式的启动方法

在《GNU ARM汇编--(十七)u-boot的makefile和mkconfig解读》中分析完u-boot-2012.07的makefile以及mkconfig脚本后,发现一个现象:在makefile中少了许多xxx_config之类的目标,而在目录下多了一个boards.cfg文件.仔细看下m...

2012-11-26 21:09:07

阅读数 13187

评论数 1

原创 linux下共享库的系统路径和查找

在使用qvfb做framebuffer模拟的时候,发现几个问题:第一个就是ubuntu的确不专业,没有很多库的支持,最好使用redhat,fedora之类的发行版本,这样会少很多编译之类的麻烦.         由于在ubuntu下编译qvfb缺少了很多库文件,而在没有网络的情况下,补齐这些库和...

2012-11-11 10:53:54

阅读数 7698

评论数 0

原创 GNU ARM汇编--(十七)u-boot的makefile和mkconfig解读

自己写的bootloader可以引导kernel了,我以为曾经神秘的u-boot代码将变得毫无挑战,然事实表明u-boot作为优秀的开源代码,阅读起来还是很有挑战的,值得一读!         阅读碰到的头等问题:Makefile和shell脚本看不懂...         说起来做linux...

2012-10-31 21:43:08

阅读数 15997

评论数 5

原创 linux驱动实践(一)--开篇

《GNU ARM汇编》系列写了不少,收获亦不小.依然还有很多可以继续往下写:一直想利用arm9的MMU写个小的os:包含简单设备模型,任务调度和内存管理的os,网络和文件系统就不要了.这个想法先放一下.另外对于uboot这样一个优秀的开源代码也想做个深入的分析,但考虑到自己的bootloader也...

2012-10-16 22:02:03

阅读数 4841

评论数 0

原创 GNU ARM汇编--(十六)bootloader与kernel之间的commandline的传递

在《GNU ARM汇编--(十五)linux下的printascii》中已经初步分析了自己写的bootloader在引导kernel时候出现的commandline在bootloader和kernel之间传递的问题,今天终于解决了,并对参数传递有一些研究:         传递的参数为: p...

2012-10-09 00:10:58

阅读数 12020

评论数 7

原创 GNU ARM汇编--(十五)linux下的printascii

在前面对很多s3c2440的功能模块进行学习后,已经具备了将这些模块综合起来的条件,基于此,将前面的代码综合成一个简单的bootloader.自己写的bootloader在引导kernel的时候,串口输出只有Uncompressing Linux...和done, booting the kern...

2012-10-04 23:09:55

阅读数 5250

评论数 3

原创 GNU ARM汇编--(十四)GNU ARM汇编下做任务调度

以前工作中用过arm7,没有MMU,也没有用任何OS.现在回忆当时的代码结构,我觉得可以叫无限循环的有限状态机.arm7不跑OS,就相当于单片机,单片机跑的肯定是无限死循环.有限状态机是因为整个代码要处理很多外部的事情,那就是大的循环里面来套小循环,以轮询的方式来检查外界的变化,然后系统作出变化,...

2012-09-08 23:24:25

阅读数 2862

评论数 13

原创 GNU ARM汇编--(十三)GNU ARM汇编下的linker script

在写GNU ARM汇编下的linker script之前,还是有必要看一下ldr指令,以及ldr和adr伪指令.         ldr指令:         LDR       load word into a register                                ...

2012-08-26 23:27:13

阅读数 3263

评论数 2

原创 GNU ARM汇编--(十二)arm汇编指令的B真的那么简单吗?

说句题外话,在输入“指令”二字的时候,就想起了google搜索时,提示“令”不能搜索,要我换词汇.如果不能说脏话,我真就无语了.         在前面对具体芯片的各个基本模块做完了学习后,在上一篇小结中自以为已经具备了自己写个bootloader的条件,但其实错了,我还有很多基本的知识不了解....

2012-08-23 23:15:15

阅读数 6508

评论数 1

原创 linux下valgrind的使用概述

Valgrind简介:         Valgrind是动态分析工具的框架。有很多Valgrind工具可以自动的检测许多内存管理和多进程/线程的bugs,在细节上剖析你的程序。你也可以利用Valgrind框架来实现自己的工具。         Valgrind通常包括6个工具:一个内存错误侦...

2012-08-11 20:36:58

阅读数 11315

评论数 0

原创 I2C之知(六)--s3c2440用I2C接口访问EEPROM

在前面阅读理解了I2C的官方协议文档后,就拿s3c2440和EEPROM来验证一下.         本来是想用s3c2440的SDA和SCL管脚复用为GPIO来模拟的,但在没有示波器的情况下搞了一周,怎么都出不来,最后还是放弃了.甚至参考了linux下i2c-algo-bit.c和i2c-gp...

2012-08-05 20:50:28

阅读数 4854

评论数 1

原创 I2C之知(五)--I2C总线的10bit地址以及通用广播地址

其实,10bit地址我没用过,通用广播地址更没用过.通用广播地址应该是在多个mcu之间用i2c进行通信时使用的.虽说没用到,但还是做了翻译,说不定以后有机会用到: 10bit地址 10bit的寻址扩展可能寻址的数目.有7bit地址和10bit地址的设备可以连接到相同的I2C总线上,而且7bit...

2012-08-05 17:27:27

阅读数 14499

评论数 0

原创 I2C之知(四)--I2C总线的7bit从机地址

时钟拉伸(Clock stretching) clock stretching通过将SCL线拉低来暂停一个传输.直到释放SCL线为高电平,传输才继续进行.clock stretching是可选的,实际上大多数从设备不包括SCL驱动,所以它们不能stretch时钟. 从字节级来看,一个设备可能在...

2012-07-19 00:17:34

阅读数 25375

评论数 4

原创 I2C之知(三)--I2C总线的字节格式、时钟同步和仲裁

字节格式         发送到SDA线上的每个字节必须是8位.每次传输的字节数量是不受限制的.每个字节后必须跟着一个ACK应答位.数据从最高有效位(MSB)开始传输.如果从机要执行一些功能后才能接收或者发送新的完整数据,比如说服务一个内部中断,那么它可以将时钟线SCL拉低来强制使主机进入wai...

2012-07-17 23:06:33

阅读数 9979

评论数 0

原创 I2C之知(二)--I2C总线SDA\SCL以及开始终止条件

I2C只用两条线(SDA和SCL)在连接到总线上的设备之间传送数据.每一个设备都由唯一的地址来识别(不管是微处理器、LCD驱动器、存储器或者键盘接口),并且可以依照设备的功能作为发送器或者接收器使用.LCD驱动器可能只是个接收器,而存储器可以发送和接受数据.除了发送器和接收器,当传送数据时设备还可...

2012-07-16 22:51:42

阅读数 20129

评论数 0

原创 I2C之知(一)--I2C的简介和特性

I2C我是想全面深入的从嵌入式软件工程师的角度做个理解,刚刚还申请了一个专栏,这个好好写.         学习技术从外文文档看起~~         要全面了解I2C,可以从《I2C-bus specification and user manual》看起.I2C最初是由Philips提...

2012-07-15 16:42:01

阅读数 4714

评论数 0

原创 GNU ARM汇编--(十一)小结一下

对s3c2440的一部分做了学习,更深的了解了汇编以及arm体系,还有中断,调试底层汇编过程的最大感触就是仔细阅读datasheet,因为那是英文文档.         前面写的都是嵌入式底层比较基础的东西,后面要做的内容:         1.先裸机搞定iic,iic包括用控制器实现的和用G...

2012-07-12 22:50:43

阅读数 2827

评论数 0

原创 GNU ARM汇编--(十)s3c2440的RTC

RTC 概述     在系统电源关掉时RTC可以在备份电池的支持下来工作.RTC可以使用STRB/LDRB指令传输8bit的BCD值到CPU.数据包括秒,分,时,日期,天,月和年.RTC工作在外部32.768KHz的晶振下,而且有报警功能. 属性     BCD:秒,分,时...

2012-07-12 22:22:43

阅读数 2635

评论数 4

原创 GNU ARM汇编--(九)s3c2440的PWM

依旧从datasheet开始看起,锻炼下阅读英文技术手册的能力 PWM TIMER 概述     s3c2440有5个16bit的定时器.Timer0,1,2和3有PWM功能.Timer4是没有输出管脚的内部定时器.Timer0有一个dead-zone产生器,用于大电流设备.     Ti...

2012-06-30 21:08:46

阅读数 3244

评论数 0

原创 GNU ARM汇编--(八)s3c2440的watchdog

从单片机起,watchdog就是必不可少的.在各种应用环境中,程序很可能跑飞或死掉,这时候就需要通过watchdog来保证整个系统重新恢复到正常状态.         照旧,给出s3c2440的datasheet说明: 概述:     watchdog timer用于由于噪声或者系统错误引起...

2012-06-26 22:19:06

阅读数 2875

评论数 0

原创 GNU ARM汇编--(七)s3c2440的串口控制

在配置完s3c2440的系统时钟后,我们来控制串口.之所以将串口放在这么靠前,是因为串口会给我们带来更多的信息.在没有串口的时候,uboot启动阶段只能靠led来显示一些信息.那么有了串口,debug就方便很多了.在工作中,一般情况下,很少有机会用jtag口加上昂贵的codeviser工具进行de...

2012-06-24 13:02:00

阅读数 4602

评论数 0

原创 GNU ARM汇编--(六)s3c2440的时钟控制

前面几篇利用GNU ARM汇编控制LED以及ARM的中断处理的设计,对ARM汇编以及体系结构有了一定的认识.后面的汇编学习会结合具体的芯片进行,一个为了更灵活熟练的使用汇编,二也是为了通过学习一款具体芯片来提炼出一些有价值的经验.此次选择的芯片是三星的s3c2440,arm920t的核,整个板子是...

2012-06-23 00:10:26

阅读数 4384

评论数 0

原创 GNU ARM汇编--(五)中断汇编之嵌套中断处理

在上篇《GNU ARM汇编--(四)中断汇编之非嵌套中断处理》中分析了最简单的中断处理的写法,再看TQ2440启动代码中的中断向量表的写法就一目了然了.今天抽时间对嵌套中断处理的学习做下整理.         嵌套中断处理的核心代码如下: ;/* ; * ______________...

2012-06-08 22:49:21

阅读数 4409

评论数 0

原创 GNU ARM汇编--(四)中断汇编之非嵌套中断处理

在写这篇blog之前,不得不感慨一句:纸上得来终觉浅,绝知此事要躬行.作为EE出身的,虽然好久好久没用汇编写单片机的中断了,但自我感觉对中断的理解还是比较深入的,本以为在GNU ARM汇编下搞个中断会很容易,谁知道断断续续花了我几周.完全用汇编写中断和用c中的_irq写中断还是有区别的,谁用谁知道...

2012-06-03 11:06:41

阅读数 5614

评论数 1

提示
确定要删除当前文章?
取消 删除