
嵌入式开发
文章平均质量分 86
girlkoo
这个作者很懒,什么都没留下…
展开
-
I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之根文件系统挂载
经过前面的移植,新版BSP的uboot和kernel已经能够在tqimx6q开发板上运行了,接下来我们来挂载文件系统。DTB整理前面的文章中提到,新版BSP的DTB管理感觉不是太好,在之前移植的BSP上我发现即便有根文件系统,内核也会挂掉,由于原来的DTS文件中配置内容太多,不好确定问题的源头,本文对DTS进行了整理,整理后只需要一个DTS文件,其内容如下:/* * Copyrigh原创 2015-05-04 00:03:27 · 11675 阅读 · 12 评论 -
I.MX6Q(TQIMX6Q/TQE9)学习笔记——LTIB安装配置
Freescale提供了I.MX6的BSP开发包,可以在Freescale的官网下载到。为了与天嵌提供的版本一致,本文使用的BSP版本是:L3.0.35_4.1.0_130816_source,这版本的内核是3.0.35版本的,u-boot是2009.8版本的。使用这个版本的BSP可以充分使用天嵌提供的源码包,参考天嵌的源码包进行移植,之后如果有时间的话再来移植下较新版本的u-boot和kerne原创 2015-03-23 09:36:25 · 14237 阅读 · 6 评论 -
I.MX6Q(TQIMX6Q/TQE9)学习笔记——内核启动与文件系统挂载
经过前面的移植,u-boot已经有能力启动内核了,本文主要来看下如何通过之前移植的u-boot来启动内核。如果按照前面的文章完成了LTIB的编译,那么,Linux的内核应该就会出现rpm/BUILD/目录下,接下来,我们就开始移植这个3.0.35版本的内核到TQIMX6Q。内核的编译为了简化内核编译的过程,可以在内核目录下创建如下脚本:原创 2015-03-25 21:08:04 · 22169 阅读 · 13 评论 -
AM335x(TQ335x)学习笔记——u-boot-2014.10移植
最近移植了下u-boot-2014.10到TQ335x,如果基于am335x evm进行移植,需要修改的地方并不多。由于TI的am335x evm开发使用了一个eeprom保存了板载配置信息,用来区分不同板子的型号的,而TQ335x没有这个eeprom,因此,需要修改eeprom相关的部分,使u-boot适应TQ335x开发板。使用source insight查看代码,很容易发现,所有获取原创 2014-11-16 23:44:29 · 27857 阅读 · 53 评论 -
AM335x(TQ335x)学习笔记——使用dtb方式启动内核
老式的u-boot使用ATAGS的方式启动linux内核,本文使用新式的dtb方式启动内核。我使用的内核是linux-3.17.2版本,下面开始编译内核。(1) 解压内核tar jxf linux-3.17.2.tar.bz2(2)配置linux内核:make ARCH=arm am335x_evm_defconfig(3)编译内核:make ARCH=arm CROSS_原创 2014-11-17 23:35:29 · 22459 阅读 · 11 评论 -
AM335x(TQ335x)学习笔记——USB驱动移植
对于AM335x来讲,TI维护的USB驱动已经非常完善了,本文称之为移植,实际上仅仅是配置内核选项使能USB HOST/OTG功能。废话少说,直接动手开启AM335x的USB驱动配置项。Step1. 配置内核支持USB默认的配置项没有配置USB相关的选项,但是DTS已经配置好了,我们不需要对DTS作任何修改,详细的内核配置项如下:Device Drivers ---> [*] US原创 2014-12-26 22:33:29 · 16446 阅读 · 1 评论 -
AM335x(TQ335x)学习笔记——Nand&&网卡驱动移植
移植完成声卡驱动之后本想再接再励,移植网卡驱动,但没想到的是TI维护的内核太健壮,移植网卡驱动跟之前移植按键驱动一样简单,Nand驱动也是如此,于是,本人将Nand和网卡放在同一篇文章中介绍。介绍之前先感慨一下:TI的维护的内核真的很健壮,DTS真的很强大。原创 2014-12-23 23:04:49 · 13996 阅读 · 1 评论 -
AM335x(TQ335x)学习笔记——WM8960声卡驱动移植
经过一段时间的调试,终于调好了TQ335x的声卡驱动。TQ335x采用的Codec是WM8960,本文来总结下WM8960驱动在AM335x平台上的移植方法。Linux声卡驱动架构有OSS和ALSA两种架构,目前最常用的架构是ALSA,本文也使用ALSA架构对WM8960驱动进行移植。ASoC是对ALSA驱动架构的进一步封装。ASoC将ALSA驱动中的各模块抽象为三部分:Platform、Co原创 2014-12-20 16:25:52 · 25890 阅读 · 18 评论 -
AM335x(TQ335x)学习笔记——触摸屏驱动编写
前面几篇文章已经通过配置DTS的方式完成了多个驱动的移植,接下来我们解决TQ335x的触摸驱动问题。由于种种原因,TQ335x的触摸屏驱动是以模块方式提供的,且Linux官方内核中也没有带该触摸屏的驱动源码,单纯的配置DTS是无法完成TQ335x的触摸驱动移植工作的,因此,本文参考内核中原有的pixcir_i2c_ts驱动编写TQ335x的触摸屏(TN92)驱动。在之前移植TQ210时,我已经原创 2014-11-26 22:50:44 · 13323 阅读 · 11 评论 -
AM335x(TQ335x)学习笔记——GPIO按键驱动移植
还是按照S5PV210的学习顺序来,我们首先解决按键问题。TQ335x有六个用户按键,分别是上、下、左、右、Enter和ESC。开始我想到的是跟学习S5PV210时一样,编写输入子系统驱动解决按键问题,但是浏览driver/input/keyboard目录时意外的发现了gpio-keys.c,大体上看下该驱动程序,其功能是实现了通用的gpio按键。再去看了下DTS,发现DTS中有对gpio-key原创 2014-11-20 23:15:36 · 17249 阅读 · 1 评论 -
AM335x(TQ335x)学习笔记——挂载Ramdisk
上篇文章中我们已经能够通过u-boot启动内核了,但是没有能够启动成功,从内核的log中可以看出,内核启动失败的原因是没有挂载到root文件系统,本文将使用busybox制作根文件系统并打包成ramdisk供u-boot启动内核使用。(1)制作根文件系统使用busybox构建根文件系统的步骤可以参考本博客的另外一篇文章“S5PV210(TQ210)学习笔记——内核移植与文件系统构建”,该文原创 2014-11-18 23:35:15 · 13038 阅读 · 14 评论 -
I.MX6Q(TQIMX6Q/TQE9)学习笔记——U-Boot移植
其实Freescale的BSP移植文档已经将u-boot的移植步骤讲述的非常详细了,但为了以后方便查阅,还是按照自己的理解记录在这里。获取源码根据前一篇文章搭建好LTIB环境后就可以非常方便的导出u-boot源码了。切换到ltib目录,并运行如下指令: ./ltib -m prep -p u-boot该指令执行需要一些时间,指令执行完成后Freescale维护的u-boot-200原创 2015-03-23 09:40:11 · 29438 阅读 · 10 评论 -
I.MX6Q(TQIMX6Q/TQE9)学习笔记——开发板的选择
其实入手这块TQIMX6Q的时候手头上已经有一块E9开发板了,但还是选择了TQIMX6Q开发板,主要原因是个人感觉开发板更适合学习或研发,E9卡片电脑更适合应用,而且这两款单板使用的是相同的芯片(Freescale的IMX6Q),因此,学习过程中还可以在开发板上实验,然后在卡片上验证。本文主要是简单的介绍下TQIMX6Q,希望有更多的朋友一块研究。开发板简介TQIMX6Q是天嵌新推出的原创 2015-03-23 09:35:17 · 24858 阅读 · 13 评论 -
I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之UART移植
我们在内核启动时候已经配置系统了UART,但是tqimx6q这块开发板上引出了imx6q的5路TTL接口,其中,uart1和uart2转成232接口,本文将配置这5路Uart接口。DTS配置由于内核中已经有imx6q的uart控制器驱动,因此,我们只需要配置各端口的pinctrl即可。根据tqimx6q的原理图,我们对我们的DTS作如下修改:...&uart1 { pinctrl原创 2015-05-10 23:24:21 · 7438 阅读 · 6 评论 -
I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之eMMC移植
前一篇文章已经移植好CAN,本文来移植eMMC。eMMC的移植一般来讲比较简单,因为MMC驱动是由官方维护的,一般来讲,不会有什么问题,对我们来说,只需要正确的配置各个pin脚的复用关系,这种情况也是DTS最擅长的。下面我们开始eMMC移植。DTS编写参考sabresd的DTS,我们可以如下编写DTS:&usdhc4 { pinctrl-names = "default"; pi原创 2015-05-14 20:15:07 · 9702 阅读 · 1 评论 -
I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之触摸屏驱动移植
之所以说是驱动移植是因为之前已经在TQ210、AM335x两个平台上移植过了,因此,仅需要少量修改就可以将驱动移植到imx6q。下面开始触摸驱动移植。DTS编写参考其它DTS的i2c设备写法,我们可以添加如下内容:&i2c1 { clock-frequency = ; pinctrl-names = "default"; pinctrl-0 = ; status = "okay原创 2015-05-18 00:31:55 · 10467 阅读 · 9 评论 -
I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之KEY、LED
经过前面的移植,内核已经可以在tqimx6q上正常挂载根文件系统了,接下来开始移植各类设备驱动,本文先来移植按键和LED。之所以从按键和LED开始是因为这两种设备的驱动是最简单的。按键驱动移植查看tqimx6q的原理图可知,这块开发板有5个按键,其中,除了reset键之外还有个电源键,这个电源键与其它键有些不同,因此,本文移植剩余的这三个键(电源键在移植电源管理模块时处理)。通过阅读原理图原创 2015-05-07 20:37:23 · 9500 阅读 · 7 评论 -
I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之声卡驱动移植
经过前面的移植,tqimx6q已经可以正常驱动触摸屏了,本文我们来移植声卡驱动。DTS编写由于tqimx6q搭载的声卡是sgtl5000芯片,因此,参考dts目录下其它开发板的相应信息,我们可以在DTS中添加如下内容:/ { ... regulators { ... reg_3p3v: 3p3v { compatible = "regulator-fixed"原创 2015-05-19 23:58:21 · 15680 阅读 · 9 评论 -
I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之LCD移植
经过前面的移植,eMMC已经可以在tqimx6q上正常运行了,本文将来移植LCD驱动。DTS编写imx6的LCD控制器与之前的芯片略有不同,详细的信息可以阅读芯片手册。参考sabrelite开发板的DTS,我们可以添加如下内容:/ { ... aliases { mxcfb0 = &mxcfb1; }; ... regulators { ... reg_mi原创 2015-05-16 23:20:51 · 14668 阅读 · 4 评论 -
I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之CAN移植
经过前面的移植,tqimx6q已经完美支持网卡,现在,我们来移植CAN。其实这里所谓的移植,仅仅是配置DTS,使内核能够检测到CAN设备,CAN驱动本身是freescale维护的。下面开始CAN的移植。DTS编写参考imx6q其它的DTS编写方式,我们可以如下编写DTS文件:...&flexcan1 { pinctrl-names = "default"; pinctrl-0原创 2015-05-13 20:23:10 · 7450 阅读 · 4 评论 -
I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之网卡驱动移植
由于对网卡这块不是很熟悉,误以为网卡驱动也可以简单的配置下DTS就可以正常工作了,实际移植中遇到了些问题。闲话少说,下面开始tqimx6q的网卡驱动移植。DTS编写首先在我们的DTS中添加网卡配置,参考sabrelite的DTS,我们可以如下编写:&fec { pinctrl-names = "default"; pinctrl-0 = ; phy-mode =原创 2015-05-13 00:29:57 · 15099 阅读 · 9 评论 -
I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之USB HOST移植
USB HOST驱动一般都是由芯片厂商维护的,因此,我们仍然只需要配置下DTS即可完成USB HOST驱动的移植。DTS配置参考sabresd相关的DTS,在我们的DTS中添加如下内容:/ { ... regulators { compatible = "simple-bus"; reg_usb_otg_vbus: usb_otg_vbus { compatible原创 2015-05-11 23:34:38 · 9969 阅读 · 6 评论 -
I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之kernel移植
前篇文章已经在tqimx6q上成功跑起了新版BSP的uboot,本文来配置下新版BSP的kernel,使kernel能在tqimx6q上正常启动。准备工作每次移植kernel的时候都会做的工作就是找到与当前开发板接近的config,其实uboot移植的时候也是一样的。由于tqimx6q的芯片是imx6q的,所以,还是以mx6q_sabresd为例。另外,自己动手移植BSP时应该充分使用官方原创 2015-05-03 13:31:30 · 33690 阅读 · 18 评论 -
I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之u-boot移植
前段时间就开始学习I.MX6Q了,但是最近工作实在是忙,间断了一些时间了。为了提高移植效率,还是考虑移植Freescale维护的3.10版本的内核。源码获取Freescale维护的3.10的内核是使用git管理的,但是直接使用git下载代码会比较慢,下面是我下载好的uboot和kernel:I.MX6Q BSP源码(Freescale官方维护)代码下载好后,先将u-boot解压原创 2015-05-01 23:38:47 · 26377 阅读 · 43 评论 -
AM335x(TQ335x)学习笔记——LCD驱动移植
本文基于TQ335x进行了LCD驱动的移植,详细的讲述的移植的思路及分析过程。其中,移植的主要手段是修改DTS,捎带一些内核menuconfig,参数调整等。原创 2014-11-22 21:02:28 · 21064 阅读 · 4 评论 -
S5PV210(TQ210)学习笔记——触摸屏驱动编写
电阻式触摸屏的驱动比较简单,可以采用输入子系统驱动框架来编写,而电容式触摸屏的驱动程序相对比较复杂,因为电容触控一般采用I2C引脚才控制,我在自己编写电容触控驱动的时候郁闷了好几天,当然,并不是因为I2C电容触控驱动繁琐,主要是天嵌TQ210的触摸屏驱动程序是以模块方式提供的,并不开发源代码,也没有提供触控的芯片手册,我曾通过技术咨询群和电话咨询的方式咨询过天嵌相关人士,想跟他们索取触控协议而不要原创 2013-04-03 19:02:31 · 12830 阅读 · 32 评论 -
Arm 2440——Nand flash启动模式详解(LED程序为例)
断断续续的研究arm也有2个月了,现在才感觉理解了arm在Nand flash模式下的启动过程,现在来这里记录下来以表达我无比喜悦的心情。闲话少说,趁着还没有忘记学习过程中的感受,直接进入正题。大家都知道,arm在Nand flash启动模式下启动时系统会将Nand flash中的前4KB代码拷贝到SRAM(也就是Steppingstone中),由SRAM配置中断向量表和完成Nand flas原创 2011-10-18 15:54:49 · 6935 阅读 · 6 评论 -
Ubuntu下配置FTP服务器并用CuteFTP登陆
研究嵌入式开发,开始使用的是Linux平台,用的是Ubuntu环境,但是发现Ubuntu的图形界面仍然存在诸多问题,但是限于嵌入式Linux系统移植需要Linux环境,而且本人也是Linux终端的忠实爱好者,最终决定在Windows上配置Linux虚拟机后台运行,然后使用SSH登陆控制Linux,并在Linux上配置FTP服务器来实现Windows实体机与Linux虚拟机之间的文件传输。Win原创 2012-08-04 19:54:43 · 5101 阅读 · 0 评论 -
Eclipse在线调试ARM11——Tiny6410+OpenJTAG
Eclipse、CDT、OpenJTAG驱动、工具链以及OpenOCD的安装这里就不多说了,请根据OpenJTAG附带光盘中的说明进行安装,这里是OpenJTAG附带光盘中的配置文档,需要的话可以下载:http://download.youkuaiyun.com/detail/girlkoo/46323481.工程的创建及编译Eclipse配置完成后我们来创建一个工程,首先是启动Eclipse原创 2012-10-10 16:03:23 · 11588 阅读 · 3 评论 -
S3C6410学习——Nand flash陷阱
当系统以Nand方式启动时,硬件将Nand Flash的前8KB拷贝到Steppingstone,然后从0地址开始运行程序,在这8KB以内代码中,我们需要完成必要的硬件初始化,如果代码超过8K,我们还需要将剩余代码的搬移到链接地址处,一般在SDRAM/DDR中。其中,硬件部分需要初始化系统时钟、DDR和NAND Flash三部分。这就是S3C6410以Nand方式启动时的大致流程,看上去跟ARM9原创 2012-10-26 17:23:41 · 8797 阅读 · 21 评论 -
S5PV210(TQ210)学习笔记——系统时钟和串口
TQ210的系统时钟配置和串口配置非常简单,本文从TQ210的系统时钟配置开始讨论。TQ210的时钟配置跟2440/6410的时钟配置差不多,只是锁相环的个数略有不同,配置步骤是一样的。配置系统时钟,无非要经过以下几个步骤:(1)设置系统PLL锁定时间(2)配置PLL(3)配置各模块分频系数(4)切换到PLL时钟简单的看着四步似乎没有头绪,但是看到手册中的“S5PV210时原创 2013-03-09 17:55:02 · 10066 阅读 · 1 评论 -
S5PV210(TQ210)学习笔记——内存配置(DDR2)
S5PV210有两个独立的DRAM控制器,分别是DMC0和DMC1,其中,DMC0最大支持512MByte,DMC1最大支持1GByte,而DMC0和DMC1又同时支持两个片选CS0和CS1。S5PV210的内存模块相比2440和6410来讲要更加复杂一些,要想正确的配置S5PV210的内存,应该仔细阅读芯片手册相关部分,在配置参数时也应该适当的阅读下内存芯片的手册。这部分的寄存器和配置过程比较复原创 2013-03-13 12:12:38 · 17110 阅读 · 14 评论 -
Fedora下手动双卡切换,无需任何安装
对于双显卡的问题,linux在默认情况下是两个显卡都开启,且电源管理极差,导致电脑温度超高,如果在BIOS里面强行切换为一个显卡,当然也可以解决这个问题,但是在双系统的情况下,就极为不便。如果需要切换显卡还要重启电脑,那实在是太落后了。注:需要在root权限下执行1. 查看当前机器的显示信息# lspci | grep VGA这个命令就可以看到目前可以使用的显卡是哪些2转载 2012-09-01 15:50:17 · 5894 阅读 · 0 评论 -
S3C6410学习——MemoryMap
S3C6410跟S3C2440不同,S3C6410支持32位物理地址空间并将该地址空间分为2个部分,一部分是“存储空间”,另一部分是“外设空间”。其中主存储空间通过SPINE总线访问,其地址空间为0x0000,0000~0x6FFF,FFFF,主存储空间又分为4个区域——引导镜像区(boot image area),内部存储区(internal memory area),静态存储区(static原创 2012-10-10 17:39:11 · 7045 阅读 · 0 评论 -
S5PV210(TQ210)学习笔记——Nand配置
S5PV210的Nand flash跟2440和6410的Nand flash配置差不多,不同的是S5PV210的功能更加强大,尤其是S5PV210的硬件ECC(本文不涉及S5PV210中Nand ECC配置)。整体上来讲,S5PV210的Nand flash配置还是非常简单的。其实,配置一个模块往往需要以下几个步骤:(1)根据原理图,理清模块的接线方式,对于Nand flash来说,就是原创 2013-03-18 12:35:46 · 5672 阅读 · 0 评论 -
S5PV210(TQ210)学习笔记——按键驱动程序
经过前面的配置,S5PV210开发已经可以成功进入Linux控制台了,那么,有了这个环境就可以开始学习Linux驱动的编写和测试了。学习Linux设备驱动,通常是从字符设备驱动开始。我写的第一个驱动程序是Led的,其实也就是熟悉下字符设备驱动的基本结构,本文以中断方式的按键驱动为例,简单的介绍下字符设备驱动程序。一 按键驱动程序的简单实现下面是基于中断和消息的按键驱动程序,其工作原理是:当原创 2013-03-28 15:49:19 · 6528 阅读 · 10 评论 -
Linux内核的Nand驱动流程分析
最近在做Linux内核移植,总体的感觉是这样的,想要彻底的阅读Linux内核代码几乎是不可能的,至少这还不是嵌入式学期初期的重要任务。内核代码解压后有250M左右,据统计,有400多万行,而且涉及到了软件和硬件两方面的诸多知识,凭一人之力在短时间内阅读Linux内核代码是根本不可能的,强行阅读可能会打消我们嵌入式学习的积极性,最后甚至可能放弃嵌入式学习,如果真的想阅读内核代码来提高自己水平的话可以原创 2012-09-03 16:55:00 · 8386 阅读 · 2 评论 -
S5PV210(TQ210)学习笔记——输入子系统驱动
前面的文章简单的讲述了字符设备驱动程序的编写,用字符设备驱动的方式实现了按键驱动,但是,出了我们的自己编写的针对我们的这个驱动程序的应用程序之外,其他应用程序都无法接收我们这个驱动的键值输入,为了让所有应用程序都可以接收我们的按键驱动解析的键值,Linux内核定义了“输入子系统”的概念,也就是说,只要我们按照这个模型进行驱动开发,并为其提供必须的接口函数,那么,Linux内核就可以正常来获取我们的原创 2013-03-29 13:48:57 · 5351 阅读 · 1 评论 -
S5PV210(TQ210)学习笔记——8位HWECC与YAFFS2的OOB布局
最近又重新调试了下8位的HWECC,最后发现S5PV210的8位HWECC的确是可以用的,但是,使用yaffs2文件系统的时候的时候仍然会出问题,这是由于yaffs2文件系统与mtd层的oob布局冲突导致的。当我们使用8位HWECC时,会生成52字节的ECC校验数据并写入oob,而yaffs2自身也有28字节的数据写日oob,也就是说,至少需要28+52=80字节的oob空间,而对于我们的na原创 2013-05-09 13:22:52 · 6231 阅读 · 5 评论 -
Linux下arm裸机开发环境搭建与实例
折腾了很长时间,总算是弄明白怎么在linux编译运行arm裸机程序了。编译运行arm裸机程序可以考虑用arm工具链搭建编译环境,由minicom和dnw来下载程序,至于调试,还没有去耐心研究,着急来这里先备份一下,免得时间久了,忘记怎么回事。首先是arm工具链,arm工具链的原创 2011-10-16 22:20:47 · 15881 阅读 · 7 评论