tag 标签: tq210

相关博文
  • 热度 11
    2016-2-18 15:05
    801 次阅读|
    0 个评论
    作者:天嵌科技 时间:2016-02-17 14:33:10    系统环境:Ubuntu 12.04 64bit   开发平台: TQ 210开发板   一、总体流程:   二、Ubuntu12.04下安装tslib 1.4 出现各种问题汇总:   出现./autogen.sh: 4: ./autogen.sh: autoreconf: not found的错误解决   我看教程说的是直接执行命令 ./autogen.sh就可以了,后来我执行出错: ./autogen.sh: 4: ./autogen.sh: autoreconf: not found   上网查了查说是我的版本没有安装automake工具。解决方法如下   sudo apt-get install autoconfautomakelibtool 这时候再次执行./autogen.sh就不出错了   在执行make的时候出现: 在函数‘open’中   内联自‘main’于 ts_calibrate.c:227:11:   /usr/include/i386-linux-gnu/bits/fcntl2.h:51:24: 错误:调用‘__open_missing_mode’,声明有错误属性:open with O_CREAT in second argument needs 3 arguments 在函数‘open’中,   内联自‘main’于 ts_calibrate.c:229:11:   /usr/include/i386-linux-gnu/bits/fcntl2.h:51:24: 错误:调用‘__open_missing_mode’,声明有错误属性:open with O_CREAT in second argument needs 3 arguments 去 tests目录下打开ts_calibrate.c,修改 227和229行   解决方法:   gcc新版本编译器对语法检查严格,在源文件 ./tests/ts_calibrate.c中   // 源文件   // if ((calfile = getenv("TSLIB_CALIBFILE")) != NULL) { // cal_fd = open (calfile, O_CREAT | O_RDWR); // } else {   // cal_fd = open ("/etc/pointercal", O_CREAT | O_RDWR); // }   // 需要更改成如下形式   if ((calfile = getenv("TSLIB_CALIBFILE")) != NULL) { cal_fd = open (calfile, O_CREAT | O_RDWR, 0777); } else {   cal_fd = open ("/etc/pointercal", O_CREAT | O_RDWR, 0777); }   保存后重新编译即可   三、Arm-linux-gcc交叉编译器安装详解:   1、天嵌入提供的4.4.6交叉编译器的位置;   2、解压该安装包:sudo tar -xjvf ~~~~~~~~~ -C /   3、他会解压到:/opt/EmbedSky/4.4.6路径下,可以看到里面有个bin   4、添加环境变量: vi /etc/profile 在最后添加:export PATH=$PATH:/opt/EmbedSky/4.4.6/bin wq保存退出后 source /etc/profile 然后重启电脑   5、输入arm-linux-gcc -v可能会提示如下错误:   遇到这种情况请先检查自己的路径有没有出错,如果确定没有;如果Ubuntu系统是64位,那么很可能就是如下的原因:   安装完这个之后再输入arm-linux-gcc -v应该就没有问题了。 至此,交叉编译器安装完成。   四、编译qt-4.5 for arm:   在你arm-linux-gcc配置好之后,做到这里,我们就可以开始编译qt-4.5 for arm了! 1,解压qt-4.5源码包:sudo tar xjvf qt-4.5_for_TQ210_V1.0.tar.bz2 -C /   2、解压好了之后,我们就会在/opt/EmbedSky/qt-4.5里面发现一下各个文件   第一个是源码包,第二个是天嵌编译好的arm开发板上qt-4.5的脚本文件,第三个可以不用管,(如果需要你可以去pdf中查看下),本来编译arm上的qt-4.5正常的做法是进源码包,然后控制执行./configure 的参数的,但是这里既然有官方脚本,那我们就不自己输了。   3、执行脚本sudo ./arm_qt4.5_build,我们很可能会遇到这个问题。 The tslib functionality test failed! You might need to modify the include and library search paths by editing QMAKE_INCDIR and QMAKE_LIBDIR in /opt/EmbedSky/qt-4.5/qt-embedded-linux-opensource-src- 4.5.0/mkspecs/qws/linux-arm-g++. Build Qt4.5 library now, please wait ... gmake: *** 没有指明目标并且找不到makefile。停止。 Install Qt4.5 library now, please wait ... gmake: *** 没有规则可以创建目标“install”。停止。   这个时候我们首先输入arm-linux-gcc -v查看自己交叉编译器是否正常,确定正常后再执行脚本如果还是发现这个错误。这个时候需要做的是 先转化为root用户:su – root 然后再执行脚本:./arm_qt4.5_build   虽然不知道是为什么,但是这样的确是可以了。   五、配置Ubuntu下QT-4.5的环境:   正常情况下,我们的系统已经装好了PC上的Qt版本,譬如我这里装好了qt-4.8.5,我们要装用于开发板的qt-4.5,应该在装完上一步之后进行Qtcreater进行配置,但是我们的这里Qtcreater版本好像是太高的原因,添加qt-4.5的qmake路径时候老是会出错,所以我的做法是修改环境为qt-4.5,然后通过纯代码来编译,现在打开终端输入which qmake,可以看到qmake的信息是我们原先装的qt-4.8.5。接下来我们来添加qt-4.5的环境变量:   修改/etc/profile:sudo vi /etc/profile 在最后我们添加如下内容:   具体路径要根据自己的实际情况而定, 然后老规矩:source /etc/profile   这个时候再查看:whichqmake   OK!可以了,不过这里需要指出的这样配置的qmake只适用于当前的终端窗口,你一但关闭这个终端窗口或者重启,qmake又会变成了4.8.5。所以呢,每次需要qt-4.5编译之前都需要source /etc/profile一下。
  • 热度 11
    2016-1-26 10:36
    891 次阅读|
    0 个评论
      S5PV210的Nand flash跟2440和6410的Nand flash配置差不多,不同的是S5PV210的功能更加强大,尤其是S5PV210的硬件ECC(本文不涉及S5PV210中Nand ECC配置)。整体上来讲,S5PV210的Nand flash配置还是非常简单的。   这样,Nand flash的初始化函数就出来了: void  nand_init(){       NFCONF = (323)|(112)|(28)|(04)|(11);       NFCONT = (10)|(11);          MP0_1CON = ~(0xffff8);       MP0_1CON |= 0x33338;       MP0_3CON = 0x22222222;       MP0_6CON = 0x22222222;          nand_reset();   }     至于nand_reset,通常是Nand flash配置完成之后就进行一次reset,这样使Nand flash恢复到最初状态。   这样,Nand flash初始化好了,但是要访问Nand flash还需要按照时序对其操作,Nand方式启动时只需要实现Nand flash的读操作,为此,这里只列举一下几个读相关的操作:     (1)Nand flash reset static   void  nand_reset(){       nand_select_chip();       nand_cmd(0xff);       nand_wait();       nand_deselect_chip();   }     (2)Nand flash写地址 static   void  nand_addr(unsigned  long  page_addr, unsigned  long  page_offset){       NFADDR = (page_offset0)  0xFF;       NFADDR = (page_offset8)  0x7;       NFADDR = (page_addr)  0xFF;       NFADDR = (page_addr8)  0xFF;       NFADDR = (page_addr16)  0x07;   }     (3)Nand flash读ID void  nand_read_id( char  id  = nand_read();          nand_deselect_chip();   }     (4)Nand flash读页数据 void  nand_read_page(unsigned  char * buf, unsigned  long  page_addr){        int  i;       nand_select_chip();       nand_cmd(0);       nand_addr(page_addr, 0);       nand_cmd(0x30);       nand_wait();        for (i = 0; i != PAGE_SIZE; ++i){           *buf++ = nand_read();       }       nand_deselect_chip();   }     上面是几个比较重要的Nand flash读相关的操作函数,到这里,您自己补充一下引用到的小函数就可以正常的进行Nand flash操作了,我把我写的代码上传到我的CSDN资源里,如果需要的话可以拿去参考。另外,如果需要编写Nand flash写操作的代码可以参考一下本人博客中6410的Nand flash配置部分和Nand flash的芯片手册,原理都是相通的。
  • 热度 12
    2016-1-26 10:35
    903 次阅读|
    0 个评论
       S5PV210 的Nand flash跟2440和6410的Nand flash配置差不多,不同的是 S5PV210 的功能更加强大,尤其是 S5PV210 的硬件ECC(本文不涉及S5PV210中Nand ECC配置)。整体上来讲, S5PV210 的Nand flash配置还是非常简单的。   其实,配置一个模块往往需要以下几个步骤:   (1)根据原理图,理清模块的接线方式,对于Nand flash来说,就是看看Nand flash接到了哪些GPIO上,然后把对应的GPIO配置为Nand功能即可。   (2)阅读 S5PV210 手册,掌握相关模块控制器的功能、操作方式及寄存器配置。   (3)阅读模块芯片手册,掌握模块的访问控制时序。     我们按照以上步骤进行配置,首先是模块GPIO的配置,我的 开发板 是TQ210,Nand flash芯片是K9K8G08U0B,接线方式如下图 其中:   (1)Xm0FRnB0~Xm0FRnB3,Xm0FCLE,Xm0FALE,Xm0FWEn,Xm0FREn这八根脚连接到了MP0_3上,查看MP0_3控制寄存器可知,需将MP0_3CON配置为0x22222222;   (2)Xm0CSn2~Xm0CSn5四根脚连接到了MP0_1的2~5脚上,故MP0_1CON的8~23位应该配置为0x3333;   (3)Xm0DATA0~Xm0DATA7这八根脚连接到了MP0_6上,故MP0_6应该配置为0x22222222;   这样,GPIO配置好了,接下来我们配置下Nand flash的控制寄存器,大体浏览下Nand flash的寄存器功能后我们可以发现,如果不使用ECC功能可以只配置NFCONF和NFCONT两个寄存器,我们的Nand flash是SLC型Nand,Page大小为2048,写入地址需要5个周期(这些从Nand flash芯片手册上很容易找到),故NFCONF应该配置如下:   NFCONF=(323)|(112)|(28)|(04)|(11); //依次为:禁止ECC,TACLS,TWPRH0,TWPRH1,SLC、2K、5周期。   其中TACLS、TWPRH0和TWPRH1需要阅读手册来确定,韦东山老师讲述了确定方式,但是,我配置时完全按照手册上的最小时间设置时没有能够正常访问,我是自己尝试出来的,先将三个参数都设置为7,然后慢慢减小,最后测试出来设置为1、2、0,但是这样不一定是最稳定的,一般来讲,数值略大一些会更稳定,但是为了不影响访问效率,这个值也不能设太大,先按照最小情况设置,当发现有读取错误或其他不稳定现象时再适当提高参数值。   然后就是NFCONT寄存器,NFCONT的配置就更简单了,我们不设置ECC,只需要设置0位和1位就可以了:   NFCONT = (11)|(10);//禁止片选,使能Nand
  • 热度 15
    2016-1-13 15:59
    928 次阅读|
    0 个评论
     S5PV210有两个独立的DRAM控制器,分别是DMC0和DMC1,其中,DMC0最大支持512MByte,DMC1最大支持1GByte,而DMC0和DMC1又同时支持两个片选CS0和CS1。S5PV210的内存模块相比2440和6410来讲要更加复杂一些,要想正确的配置S5PV210的内存,应该仔细阅读芯片手册相关部分,在配置参数时也应该适当的阅读下内存芯片的手册。这部分的寄存器和配置过程比较复杂(但是不难),我只简单的讲一下我配置时遇到的问题。   一、 接线原理   我的开发板是 TQ210 ,开发板上有8片128M*8bits的内存芯片,从原理图上可以看到,其中4片并联接在DMC0上,另外四片并联在DMC1上,这里我只贴出一个链接方式,因为8片都是一样的,只是前四片跟后四片挂载的位置不同。  我们可以注意到, TQ210 是将四片K4T1G084QQ的地址线并联,将数据线串联,这样正好是32位数据。另外,我们还可以看到K4T1G084QQ只接了14根地址线,这是因为K4T1G084QQ有14根行地址,10根列地址,这14根线是复用的。但是K4T1G084QQ有8个bank,而DMC只有两根bank线,为此, S5PV210 给出了以下几个解决方案: 根据注释3,我们可以看到当S5PV210挂载8bank内存时CS1复用为BANK2,这中状态下S5PV210相当于只有一根片选引脚CS0,这样就可以理解了,我们从这里也可以知道配置num_chip参数时可以设置为1(经测试设置为2也可以,不过MEMCONFIG1的配置没有意思,因为8bank时只有CS0而没有CS1)。对于8banks且15根行地址的内存芯片也有一套解决方案,所以,一定要注意下面的注释,我当时配置时阅读手册就不够仔细,没有看下面的注释,结果卡了我一上午,没有弄明白内存芯片的接线原理,甚至认为开发板接线接错了。   二、 地址映射   S5PV210的DMC跟6410和2440的DMC有个重要区别,S5PV210可以控制内存地址映射,DMC0的地址空间为0x2000,0000~0x3fff,ffff,DMC1的地址空间为0x4000,0000~0x7fff,ffff,DMC可以通过配置寄存器来使内存芯片映射到其内存段内的适当位置。这个配置在MEMCONFIG寄存器中,这个地址映射让我纠结了很长一段时间,最后还是查资料看明白的。   如果设置chip_base为0x20:   (1)我们挂载的内存为128M,那么这个chip_mask应该设置为0xF8   (2)我们挂载256M内存时,chip_mask应该设置为0xF0   (3)我们挂载512M时,chip_mask应该设置为0xE0   (4)我们挂载1GB内存时,chip_mask就应该设置为0xC0。   以DMC0为例,当DMC0接收到来自AXI的0x2000,0000~0x3fff,ffff内的地址时,会作如下处理:   (1)将AXI地址的高8位与chip_mask相与得到结果,记为X。   (2)将X分别与MEMCONFIG0和MEMCONFIG1的chip_base相比较,如果相等,则打开相应的片选。   假如挂载的内存为128M,且CS0和CS1上分别挂了一片,那么128M=128*1024*1024=0x8000000,则128M内存的偏移范围应该是0x0000,0000~0x07ff,ffff,高位剩余5位,那么,我们把MEMCONFIG0的chip_base设置为0x20,chip_mask设置为0xF8,为了保持内存连续,则需要将MEMCONFIG1的chip_base设置为0x28,chip_mask设置为0xF8,当AXI发来的地址为0x23xx,xxxx时,0x230xF8得到0x20,所以,会打开片选CS0,当AXI发来的地址为0x28xx,xxxx时,0x280xF8得到0x28,所以,会打开片选CS1,依此类推。   特别的,当载在的内存芯片为8bank(8bank内存芯片一般为14/15行地址,10列地址,即容量一般为512M或者1G)时,由于CS1为bank2引脚,为了保持CS0时钟处于片选状态,对于512M内存来讲需要将chip_mask设置为0xE0,这是因为512M=512*1024*1024=0x2000,0000,也就是说,512M内存的偏移应该为0x0000,0000~0x1fff,ffff,所以高位剩余3位,即0xE0,当然了,如果内存为1G=1024*1024*1024=0x4000,0000,即偏移为0x0000,0000~0x3fff,ffff,高位剩余2为,故设置chip_mask为0xC0。这样,就会计算偏移这两个值了。   三、 配置流程   内存芯片的配置比较复杂,好在芯片手册上给出了常用内存类型的初始化序列, TQ210 的内存是DDR2的,可以按照如下顺序进行初始化: 源文件下载地址: https://code.csdn.net/snippets/124229   上面就是手册上给出的DDR2型内存芯片的初始化序列,但是单纯的根据上面的步骤配置可能有些困难,这时,我们可以参考u-boot的内存初始化代码来初始化内存,最后你会发现u-boot的操作顺序跟上面是完全一致的。   四、 内存初始化代码   我将我配置内存的代码上传到CSDN的下载空间,如果需要的话可以去我资源里下载,是C语言版的。   五 、USB启动   S5PV210的USB启动过程跟Nand启动方式不一样,S5PV210以USB方式启动时会先将三星提供的一个固件程序下载到0xd0020010处运行,然后,再将用户代码下载0x23e00000处运行,也就是说,固件程序完成了内存的初始化,因为我们的代码位于0x23e00000处。而我们的代码中再次配置内存时会重置内存,下载到内存中的代码也就丢失了,所以程序执行到内存初始化函数就会挂掉。   为了证明上面的假设,我在代码中加上一段程序,该程序将内存的中代码拷贝到iram的16K以后的位置上(直接拷贝到0xd0020000处有问题,我是拷贝到了0xd0024000处,现在还不知道什么原因),然后将代码跳转到IRAM中,如果代码可以正常运行就可以证明内存初始化部分正常,实验结果是肯定的,下面总结下:   S5PV210以USB方式启动时用户代码是下载到内存中的(0x23e00000处),要使代码以USB方式启动时正常运行,应该注意以下两点:   (1)如果是位置相关的代码,连接地址应该链接到0x23e00000,如果是位置无关码,可以随便指定连接地址。   (2)用户代码需要检验自己运行时的位置,如果运行在内存中则需跳过内存初始化,根据需要决定是否需要代码重定位。
  • 热度 10
    2015-5-8 11:44
    837 次阅读|
    0 个评论
       天嵌2015年最新开发平台——TQ335XB,已经上市接近一个月了,嵌入式用户表示TQ335XB相对之前TQ210V6有比较大的区别。所以,天嵌科技为了方便广大嵌入式厂商进行产品选型,现在对同是ARM cortex A8系列的TQ335XB与TQ210V6的各个方面进行对比分析,总结两者的不同之处。 TQ335XB开发平台功能端口示意图     1.性能配置 产品 TQ335XB TQ210V6 系列 Cortex-A8  Cortex-A8  CPU TI AM335X ARM Cortex A8 Samsung S5PV210 主频 1GHz 1GHz 内存 512MB DDR3 512MB DDR2 FLASH 512MB Nand(4GB eMMC可选) 512MB Nand or 4GB eMMC定制 设计工艺 底板+核心板 底板+核心板     TQ335XB与TQ210V6在性能上的有两点不同。   第一,所用CPU不同,TQ335XB采用的是TI AM335X ARM Cortex A8,是德州仪器TI公司研发的嵌入式CPU,TQ210V6采用的是比较广泛的Samsung S5PV210。对于CPU有不同要求的产品,可以根据实际要求进行产品选型。     第二,内存类型的不同,两者的内存都是512MB,但是TQ335XB采用的是DDR3,TQ210V6采用的是DDR2。对内存有所要求的,建议选择TQ335XB.     2.尺寸参数 产品 TQ335XB TQ210V6 核心板引脚数 160pin,采用B2B高速接口 200pin,SMD接口 核心板层数 6层 8层 核心板尺寸 50x41x7mm 80x52x9mm 底板尺寸 145x100mm 183x131x20mm     大小尺寸上,无论是核心板或者底板的尺寸,TQ335XB都比TQ210v6小。TQ210V6是采用的插针接口,开发板的核心板与底板拆卸比较方便。TQ335XB采用的是B2B告诉接口,由于采用B2B接口,TQ335XB的开发平台的尺寸比较小,成本较低,并且传输速度较快。这不但为产品开发提供更好的尺寸配置,也为降低开发板成本。       3.功能端口 产品 TQ335XB TQ210V6 串口 2路3线RS232 2路5线RS232,4路TTL,1路RS485(复用) AD 支持8路 12位AD 无 GPIO IO接口兼容Beaglebone接口   PCIE接口 无 1路 SPI 无 2路SPI接口,支持加速度传感器模块(广州天嵌独有) HDMI 无 HDMI v1.3,1080p@30fps 高清数字输出     上述表格主要列出TQ335XB与TQ210V6功能端口上的不同之处,其他功能端口基本相同,可参考产品介绍的硬件特性。   AD端口上,TQ335XB有8路12位AD端口,而TQ210V6没有AD端口。   TQ335XB有GPIO端口,并且可以兼容Beaglebone接口,TQ210V6没有GPIO端口。   SPI与PCIE接口,TQ210V6支持,而TQ335XB不支持。   在高清视频端口上,TQ210V6有HDMI端口,TQ335XB没有,对高清视频输出建议选择TQ210V6。   在功能端口上,TQ335XB与TQ210V6正所谓各有千秋,客户可根据需求端口的不同,进行选购。       4.独特功能 产品 TQ335XB TQ210V6 GPIO IO接口兼容Beaglebone接口     TQ335XB独家功能在于其GPIO接口功能,其IO接口可兼容Beaglebone接口。就是说,可相当于Beaglebone开发平台可作为核心板,通过IO接口连接到TQ335XB底板上,成为一个完整的开发平台。这部分功能主要针对Beaglebone研发用户可进行扩展与更深层次的产品开发,Beaglebone研发用户可在不重新开发产品的前提下,进行开发平台的二次开发。       5.性价比 产品 TQ335XB TQ210V6 套装价格 659元/套(5寸高清屏) 669元/套(5寸高清屏) 核心板价格 310元(消费级) 310元(消费级)   上述价格表,可得出天嵌最新推出的两个开发平台的价钱基本相同,在标配上TQ335XB便宜10元。并且,近期TQ335XB在做5月促销活动,零售TQ335XB套装优惠50元并送配件,批发TQ335XB有9.5折与9折优惠。所以说,现在购买TQ335XB的性价比比较高。   相关产品: TQ335XB套装:http://www.embedsky.com/Index.php?s=/Product/show/id/86.html