11 dndxhej

尚未进行身份认证

暂无相关简介

等级
TA的排名 5k+

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

uboot是一个非常优秀的开源项目。不仅仅可以学习bootloader,嵌入式,各种总线协议。还可以了解网络协议栈。在嵌入式开发中,经常使用uboot的tftp和nfs来加快开发的效率。那么在tftp可以使用之前,我们要保证host和pcDuino3可以ping通。在uboot下可以ping通host,但是host不能ping通uboot,这是因为uboot不是操作系统,我们需要做了个命令来循环等

2014-05-23 16:58:55

一步步玩pcDuino3--mmc下的bootloader

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

2014-05-19 16:23:17

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

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

2014-05-09 18:54:17

记录#pragma pack()的问题

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

2014-01-28 17:56:59

TortoiseSVN实现本地版本控制

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

2014-01-22 15:34:08

记录两个关于Qt的小问题

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

2013-09-06 13:57:54

linux下使用getopt处理命令行

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

2013-03-15 18:55:52

slackware的一些常用配置

花了点时间在本子上装了slackware14 x86_64的,感觉还行。这次没有装linux和win的双系统,单跑slackware,然后在虚拟机中跑个xp,主要是为了网银的使用和解决office的兼容性问题。        slackware的安装比一般的发行版要复杂,但是对于比较熟悉linux的人来说还是可以搞定的。安装的时候用的是ultraiso制作的启动U盘,修改bios中改为U盘启动

2013-03-08 13:26:46

qt和linux下的input设备

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

2013-01-31 23:42:24

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

虽然好几个月之前就对linux下的阻塞,非阻塞,select poll的实现,工作队列,tasklet等等做了较为深入的分析,但是在遇到实际的硬件驱动中,才真正去思考怎么将这些用到实际中,构建一个稳定高效的驱动。        板子上有四个按键,linux内核中有input子系统来很好的完成这个事情。先按照自己的思路一步步来,最后看下人家input子系统是如何实现的,肯定有不少值得借鉴的。

2013-01-01 22:26:37

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

arm裸机下读写寄存器很容易,各个寄存器和内存的地址是单一地址空间,他们是用相同的指令进行读写操作的.而在linux下就要复杂很多,因为linux支持多个体系架构的CPU。比如arm和x86就不一样,具体的差别我暂时也说不上来,这个涉及到CPU体系的设计。目前我只关心:linux为了支持多个硬件体系,在IO访问上做了自己的接口。可以通过IO内存和IO端口这两种方式进行IO访问。在LED的例子上给出

2012-12-23 23:22:01

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

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

2012-12-18 17:33:54

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

将近两个月之前就准备开始了,但是在移植linux时候发现编译出来的Image有2.4M之大,而开发板提供的uboot最大只能烧写最大2M。所以本来准备跳过uboot的,但是如果自己不搞个好点的bootloader,我的kernel都烧不了。索性花了一个多月的时间移植了u-boot-2012.07,采用nand-spl方式启动的。可以支持tftp下载,那么我的开发流程就是用开发板自带的nor f

2012-12-10 21:36:44

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

从这个系列第一篇开始,那是4月22号,到今天做一个总结,已经有7个多月的时间了,利用业余时间学习自己感兴趣的东西,进度比较慢,也是比较累的,但收获也是很多的.        这个系列之所以写出来,是因为自己在玩linux文件系统和驱动的时候,总是觉得自己应该回头看看bootloader到底是怎么工作的.本来只想着重新看下arm体系结构和汇编语言的,没想到一路上还学习了以前从没想过的编译链接的细

2012-12-01 15:13:01

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

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

2012-12-01 14:25:43

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

在《GNU ARM汇编--(十七)u-boot的makefile和mkconfig解读》中分析完u-boot-2012.07的makefile以及mkconfig脚本后,发现一个现象:在makefile中少了许多xxx_config之类的目标,而在目录下多了一个boards.cfg文件.仔细看下makefile和mkconfig就明白其实也没什么实质性的变化.也就是说,我们在make xxx_

2012-11-26 21:09:07

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

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

2012-11-11 10:53:54

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

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

2012-10-31 21:43:08

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

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

2012-10-16 22:02:03

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

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

2012-10-09 00:10:58

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!