自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

girlkoo的专栏

专注于嵌入式、软件开发,热爱技术交流

  • 博客(63)
  • 资源 (15)
  • 收藏
  • 关注

原创 I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之声卡驱动移植

经过前面的移植,tqimx6q已经可以正常驱动触摸屏了,本文我们来移植声卡驱动。DTS编写由于tqimx6q搭载的声卡是sgtl5000芯片,因此,参考dts目录下其它开发板的相应信息,我们可以在DTS中添加如下内容:/ { ... regulators { ... reg_3p3v: 3p3v { compatible = "regulator-fixed"

2015-05-19 23:58:21 15476 9

原创 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 10386 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 14488 4

原创 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 9587 1

原创 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 7395 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 14913 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 9878 6

原创 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 7381 6

原创 I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之KEY、LED

经过前面的移植,内核已经可以在tqimx6q上正常挂载根文件系统了,接下来开始移植各类设备驱动,本文先来移植按键和LED。之所以从按键和LED开始是因为这两种设备的驱动是最简单的。按键驱动移植查看tqimx6q的原理图可知,这块开发板有5个按键,其中,除了reset键之外还有个电源键,这个电源键与其它键有些不同,因此,本文移植剩余的这三个键(电源键在移植电源管理模块时处理)。通过阅读原理图

2015-05-07 20:37:23 9444 7

原创 I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之根文件系统挂载

经过前面的移植,新版BSP的uboot和kernel已经能够在tqimx6q开发板上运行了,接下来我们来挂载文件系统。DTB整理前面的文章中提到,新版BSP的DTB管理感觉不是太好,在之前移植的BSP上我发现即便有根文件系统,内核也会挂掉,由于原来的DTS文件中配置内容太多,不好确定问题的源头,本文对DTS进行了整理,整理后只需要一个DTS文件,其内容如下:/* * Copyrigh

2015-05-04 00:03:27 11581 12

原创 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 33395 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 26028 43

原创 I.MX6Q(TQIMX6Q/TQE9)学习笔记——内核启动与文件系统挂载

经过前面的移植,u-boot已经有能力启动内核了,本文主要来看下如何通过之前移植的u-boot来启动内核。如果按照前面的文章完成了LTIB的编译,那么,Linux的内核应该就会出现rpm/BUILD/目录下,接下来,我们就开始移植这个3.0.35版本的内核到TQIMX6Q。内核的编译为了简化内核编译的过程,可以在内核目录下创建如下脚本:

2015-03-25 21:08:04 21951 13

原创 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 29200 10

原创 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 14123 6

原创 I.MX6Q(TQIMX6Q/TQE9)学习笔记——开发板的选择

其实入手这块TQIMX6Q的时候手头上已经有一块E9开发板了,但还是选择了TQIMX6Q开发板,主要原因是个人感觉开发板更适合学习或研发,E9卡片电脑更适合应用,而且这两款单板使用的是相同的芯片(Freescale的IMX6Q),因此,学习过程中还可以在开发板上实验,然后在卡片上验证。本文主要是简单的介绍下TQIMX6Q,希望有更多的朋友一块研究。开发板简介TQIMX6Q是天嵌新推出的

2015-03-23 09:35:17 24646 13

原创 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 16270 1

原创 AM335x(TQ335x)学习笔记——Nand&&网卡驱动移植

移植完成声卡驱动之后本想再接再励,移植网卡驱动,但没想到的是TI维护的内核太健壮,移植网卡驱动跟之前移植按键驱动一样简单,Nand驱动也是如此,于是,本人将Nand和网卡放在同一篇文章中介绍。介绍之前先感慨一下:TI的维护的内核真的很健壮,DTS真的很强大。

2014-12-23 23:04:49 13842 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 25523 18

原创 AM335x(TQ335x)学习笔记——触摸屏驱动编写

前面几篇文章已经通过配置DTS的方式完成了多个驱动的移植,接下来我们解决TQ335x的触摸驱动问题。由于种种原因,TQ335x的触摸屏驱动是以模块方式提供的,且Linux官方内核中也没有带该触摸屏的驱动源码,单纯的配置DTS是无法完成TQ335x的触摸驱动移植工作的,因此,本文参考内核中原有的pixcir_i2c_ts驱动编写TQ335x的触摸屏(TN92)驱动。在之前移植TQ210时,我已经

2014-11-26 22:50:44 13041 11

原创 AM335x(TQ335x)学习笔记——LCD驱动移植

本文基于TQ335x进行了LCD驱动的移植,详细的讲述的移植的思路及分析过程。其中,移植的主要手段是修改DTS,捎带一些内核menuconfig,参数调整等。

2014-11-22 21:02:28 20832 4

原创 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 17065 1

原创 AM335x(TQ335x)学习笔记——挂载Ramdisk

上篇文章中我们已经能够通过u-boot启动内核了,但是没有能够启动成功,从内核的log中可以看出,内核启动失败的原因是没有挂载到root文件系统,本文将使用busybox制作根文件系统并打包成ramdisk供u-boot启动内核使用。(1)制作根文件系统使用busybox构建根文件系统的步骤可以参考本博客的另外一篇文章“S5PV210(TQ210)学习笔记——内核移植与文件系统构建”,该文

2014-11-18 23:35:15 12833 14

原创 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 22250 11

原创 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 27422 53

转载 嵌入式PowerPC上的扁平设备树FDT

本文在网络上引用甚广,详细的讲述了新版内核dts架构,这里引来详细拜读,本人对原文格式略作调整,原文地址:嵌入式PowerPC上的扁平设备树FDT摘 要:设备树的引入减少了内核为支持新硬件而需要的改变,提高代码重用,加速了Linux支持包的开发,使得单个内核镜像能支持多个系统。作为U-Boot和Linux内核之间的动态接口,本文阐述了设备树的数据存储格式以及源码描述语法,进而分

2014-02-24 10:31:11 3623

原创 常用排序算法——快速排序法

快速排序法是一种高效的排序法,算法的最终性能取决于选取的中间值,直接实现的快速排序法如下:#include #include static int partition( int* array, int start, int end){ int key = array[start]; int l = start; int r = end; while(l <

2013-12-27 10:23:46 4080 1

原创 常用排序算法——堆排序

堆排序的逻辑非常简单,但是效率较高,代码如下:#include #include class heap {public: heap(int* array, size_t len):arr (array), length(len){ size_t point = (length -1)/2; for(size_t i = 0; i != point;

2013-12-27 10:17:19 2920

原创 常用排序算法——归并排序法

归并排序采用的是分治思想,将数组不断分解为子数组,直到子数组只有一个元素,每次分解对应一个归并函数,归并函数可以将当前分解的两个子数组合并起来。有两种方式可以实现归并排序,第一种是递归方式实现的,代码如下:#include static void merge( int* array, int* tmp, size_t start, size_t end){ size_t i = sta

2013-12-27 10:11:38 3724

原创 常用排序算法——冒泡、插入、选择

冒泡排序法是初学者最早接触的排序法,实现比较简单,代码如下:#include void bubble_sort(int *array, int len){ for(int i = 1; i != len; ++i){ for(int j = 0; j != len-i; ++j){ if(array[j] > array[j+1]){

2013-12-27 10:05:34 5062

原创 交换二叉树的左右子树——非递归方式

这是华为的一道机试题,其实并不难,不让用递归可以用栈来解决,具体的代码如下:#include #include struct node{ char data ; struct node* left ; struct node* right ;};struct tree{ struct node* root ;};void tree_create(

2013-12-27 09:31:18 12700

原创 最短路径算法——Floyd

Floyd算法相比Dijkstra算法最大的区别是计算出了任意点起始到任意点的最短路径,算法也不难理解,需要注意的是三层for循环的顺序问题,k必须为最外层循环,具体的代码如下:#include #include #include void shortest_floyd(const std::vector >& graphic, std::vector >& paths){ p

2013-12-24 10:29:14 3338

原创 最短路径算法——Dijkstra

Dijkstra的最短路径算法是基于前驱顶点的最短路径计算的,整体上来讲还是比较简单的,下面是代码:#include #include #include void shortestpath( const std::vector >& paths, int from, std::vector& path){ std:: vector flags(paths.size(), fals

2013-12-24 10:25:44 3744 1

原创 最小生成树算法——Kruskal

Kruskal算法的原理是先将图中的所有边按照权从小到大排序,然后循环取边,判断添加上该边后是子图中否有闭合回路,如果没有,则添加该边,否则舍弃该边。直到所有的边都遍历一遍。我认为该算法的核心是排序和判断闭合,判断闭合的原理还没有真正搞明白,不过这种算法很容易记忆,暂且记住!!下面是具体的代码:#include #include #include #include struct

2013-12-20 09:49:36 3443 1

原创 最小生成树算法——Prim

Prim算法是任选一顶点作为起始点,从当前已纳入的顶点与未纳入的顶点间的所有路径中找出权最小的一条进行连接,循环直到所有的顶点都被纳入。代码如下:#include #include #include #include class graphic {public: graphic(int n){ std::cout << "请输入顶点信息" << std::e

2013-12-20 09:46:59 3401

原创 栈——中缀表达式转后缀表达式

中缀表达式转后缀表达式的算法较为简单,采用栈来实现。规则如下:遇到数字:直接输出遇到'(':压栈遇到')':持续出栈,如果出栈的符号不是'('则输出,否则终止出栈。遇到符号则判断该符号与栈顶符号的运算优先级,如果栈顶符号的运算优先级高,则出栈并输出,直到优先级相等或栈为空;如果栈顶符号的运算优先级低于或等于当前符号的运算优先级,则将当前符号压栈。处理完字符串后将栈中剩余的符号全部输出。

2013-12-20 09:35:35 21829 6

原创 KMP字符串查找

KMP算法KMP字符串查找算法的目的是减少不必要的比较次数,举个简单的例子,从字符串A:"abcdeabcdfg"中查找字符串B:"abcdf"。使用普通的查找法查找字符串的步骤是这样的:先拿A[0:4]分别与B对应位置的字母比较,如果不相等则拿A[1:5]与B比较,依次类推,直到结束。而KMP算法先分析要朝朝的字符串,以B为例,由于a与后面的四个字节都不相同,而在比较A[0:4]

2013-12-20 09:31:53 4782 2

原创 MSP430(F5529)学习笔记——UCS配置详解

MSP430(F5529)相比MSP430(F149)来讲,功能更加强大。UCS简介MSP430F5XX/MSP430F6XX系列器件的UCS包含有五种时钟源,依次是:XT1CLK、VLOCLK、REFOCLK、DCOCLK和XT2CLK。这五种时钟的详细介绍请参考该系列芯片的指导手册,其中XT1CLK、VLOCLK、REFOCLK和XT2CLK跟MSP430F1XX系列没有太大区别,学习

2013-06-09 16:43:36 39665 22

原创 MSP430(F149)学习笔记——红外接收

用MSP430(F149)做红外接收比发送更为简单,我采用的红外传感器是HS0038B,这个原件在接收到38K红外时输出低电平,否则输出高电平,因此,我们就可以从这点开始编写程序了,由于HS0038B的电路图很多,我这里就不贴出来了,下面是具体的代码:#include #include "delay.h"static unsigned short addr = 0x00;stati

2013-06-07 14:13:55 8392 6

原创 解决CCS5.1或者Eclipse类产品中文偏小的问题

首先,下载微软雅黑和Consolas的混合字体,字体下载链接如下:http://download.csdn.net/detail/girlkoo/5536397然后就是安装该字体,安装有两种方式,一种是解压后将该字体放到C:/Windows/Fonts目录,另一种是直接双击解压后的字体文件,系统会自行将该字体安装到C:/Windows/Fonts目录下。最后需要配置下CCS或者其他

2013-06-07 10:33:06 4063

TN92(GT811)触摸屏驱动源码for TQIMX6Q/TQE9

触摸屏驱动for TQIMX6Q/TQE9。

2015-05-18

u-boot-2014.10.tar.bz2 for TQ3358

基于TQ3358的u-boot移植,支持SD启动。

2014-12-31

WM8960驱动移植

基于TQ335x的WM8960驱动移植,其中,WM8960为Master,TQ335x的McASP为Slave。详细的移植过程请参考本人博客文章:AM335x(TQ335x)学习笔记——WM8960声卡驱动移植

2014-12-20

TQ335x触摸屏驱动源码(TN92)

TQ335x的触摸屏驱动是模块方式提供的,这是自己编写的TQ335x触摸屏驱动,代码清晰整洁,支持5点触摸,可以直接编译使用。本人博客中有篇文章详细讲述了该驱动的分析及编写思路,如有需要可参考,文章标题为: AM335x(TQ335x)学习笔记——触摸屏驱动编写

2014-11-26

bootloader

自己编写的bootloader,适合TQ210,可以初始化硬件并引导Linux内核启动。

2013-07-14

TQ210电容触摸屏驱动

TQ210电容触摸屏驱动,官方是以模块方式给出的,但是Linux驱动本应遵循GPL协议,开发源代码,本人本着开元精神自己编写了该模块驱动程序,现在发布在这里(资源分有点高,请见谅哈),本人博客blog.csdn.net/girlkoo,如有疑问,请到这里留言。。。

2013-04-03

S5PV210 Nand flash配置(TQ210)

S5PV210的Nand flash配置,附带实现了系统时钟配置、DDR2配置、串口配置,同时支持Nand flash方式启动和USB方式启动

2013-03-18

S5PV210内存配置代码(TQ210)

S5PV210(TQ210)配置内存初始化,C语言编写,讲解部分请参考博客: http://blog.csdn.net/girlkoo/article/details/8660872

2013-03-13

Tiny6410裸机程序

Tiny6410的裸机程序,arm-linux-gcc环境: 系统时钟 DDR nand uart 其他的正在完善

2012-10-26

OpenJTAG初始化文件

OpenJTAG在线调试时S3C6410开发板的DDR初始化文件,适用于所有支持OpenJTAG的S3C6410开发板,相关介绍请参考:http://blog.csdn.net/girlkoo/article/details/8056334

2012-10-12

OpenJTAG配置文档

详细讲述了OpenJTAG在Windows或Linux下的配置

2012-10-10

gcc-4.7.0安装依赖库

gcc4.7.0的详细安装手册可以参考如下网站http://hi.baidu.com/girlkoo/blog/item/04338a1ad54b29f5ac6e756a.html

2012-04-22

linux下dnw修改版

dnw for linux 最初版本的linux下dnw,但是我下载下来在ubuntu下使用时有错误,就意断的修改了源码,请作者和诸位大神原谅,如果需要使用尽管拿去使用。 使用说明都在包内,包括usb驱动和dnw,以源码的形式,带有makefile

2011-10-16

arm交叉编译工具链

linux arm交叉编译环境,直接解压然后添加环境变量即可使用,比如放在目录 /usr/local/arm-linux, 最好是在/etc/profile中添加 export PATH=$PATH:/usr/local/arm-linux/bin 然后执行 source /etc/profile 就可以在任何地方执行arm-linux-gcc等一系列相关指令了

2011-10-16

OpenGL读取3DS文件并重现原图形

采用C++(没有使用系统函数)编写,读取3DS文件并将原3D图形重新画出,内带模型实例,如果你想用3DS max自己做模型记得导出为3DS文件哦,最后需要指出的是本代码在VS2005编译通过,不保证其他编译器能顺利通过

2009-08-01

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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