tag 标签: tq2440

相关博文
  • 热度 35
    2016-3-24 15:37
    996 次阅读|
    6 个评论
      TQ2440 是由广州天嵌计算机科技有限公司精心打造的一款开发板。以稳定的性能,过硬的质量,丰富的扩展接口,优质的售后服务和技术支持,赢得众多企业的青睐和支持。   基于tq2440开发板,内核2.6.30   功能   能进中断了,而且通道2读出来的数据也正确。   点击触摸屏的时候可能会混淆。因为触摸屏用的也是 adc-irq .   #include   #include   #include   #include   #include   #include   #include   #include   #include   #include   #include   #include   #include   #include   #include   #include   #include   #include   #include   #include   #include   #include   #include   #include   #include   #include   #include   #include   #define DEVICE_NAME "driver_adc"   volatile unsigned long *adccon = NULL; //adc控制寄存器   volatile unsigned long *adctsc = NULL; //adc 触摸屏控制寄存器   volatile unsigned long *adcdly = NULL; //adc 起始延迟寄存器   volatile unsigned long *adcdat0 = NULL; //adc 转换数据寄存器   volatile unsigned long *adcdat1 = NULL; //adc 转换数据寄存器   volatile unsigned long *intmsk = NULL;   //*gpbdat = ~((15) );   //ain2   static DECLARE_WAIT_QUEUE_HEAD(adc_waitq);   static volatile int val=0;   static volatile int ev_press = 0;   static irqreturn_t adc_irq(int irq, void *dev_id)   {   printk("-------------adc_irq is ok ------------\n");   ev_press=1;   //*adccon |= 0X1; //开始转换   val=(*adcdat00x3ff);   wake_up_interruptible(adc_waitq);   return IRQ_RETVAL(IRQ_HANDLED);   }   // ------------------- OPEN ------------------------   ssize_t drive_open (struct inode * inode ,struct file * file)   {   printk("-----------------drive open ok----------------\n");   request_irq(IRQ_ADC,adc_irq, IRQF_SAMPLE_RANDOM|IRQF_SHARED,"adc_irq",1);   return 0;   }   // ------------------- RELEASE/CLOSE ---------------   ssize_t drive_release (struct inode * inode ,struct file * file)   {   printk("-----------------drive close ok----------------\n");   free_irq(IRQ_ADC, 1);   return 0;   }   // ------------------- READ ------------------------   ssize_t drive_read (struct file * file ,char * buf, size_t count, loff_t * f_ops)   {   printk("-----------------drive read ok----------------\n");   *adccon |= (114)|(0xff6)|(23);//设置分频倍数0xff,设置输入通道为2   //*intmsk |= (131)| (15)|(18);   *adccon |= 0X1; //开始转换   wait_event_interruptible(adc_waitq, ev_press);   ev_press = 0;   /*   while( !(*adccon 0x8000) ) //等待转换结束   ;   val=(*adcdat00x3ff);   */   *adccon =~1; //关adc   printk("----------------drive -----val=%d \n",val);   copy_to_user( buf,val,sizeof(val) );   printk("---------------drive-close-ok-------------\n",val);   return val;   }   // ------------------- WRITE -----------------------   ssize_t drive_write (struct file * file ,const char * buf, size_t count, loff_t * f_ops)   {   printk("-----------------drive write ok----------------\n");   return 0;   }   // ------------------- IOCTL -----------------------   ssize_t drive_ioctl (struct inode * inode ,struct file * file, unsigned int cmd, unsigned long arg)   {   printk("-----------------drive ioctl ok----------------\n");   return 0;   }   // -------------------------------------------------   static struct file_operations drive_ops ={   .owner = THIS_MODULE,   .open = drive_open,   .read = drive_read,   .write = drive_write,   .ioctl = drive_ioctl,   .release = drive_release,   };   static struct miscdevice misc = {   .minor = MISC_DYNAMIC_MINOR,   .name = DEVICE_NAME,   .fops = drive_ops,   };   static int __init init_drive(void)   {   int ret;   ret = misc_register(misc);   adccon = (volatile unsigned long *)ioremap(0x58000000, 16);   adctsc = (volatile unsigned long *)ioremap(0x58000004, 8);   adcdly = (volatile unsigned long *)ioremap(0x58000008, 16);   adcdat0= (volatile unsigned long *)ioremap(0x5800000c, 16);   adcdat1= (volatile unsigned long *)ioremap(0x58000010, 16);   intmsk = (volatile unsigned long *)ioremap(0x4a000008, 32);   printk("-----------------drive button init ok----------------\n");   return 0;   }   static void __exit exit_drive(void)   {   misc_deregister(misc);   printk("-----------------drive button exit ok----------------\n");   }   module_init(init_drive);   module_exit(exit_drive);   MODULE_LICENSE("GPL");   //-------------------------------------应用程序------------------------------------------------   #include   #include   #include   #include // open() close()   #include // read() write()   #define DEVICE_NAME "/dev/driver_adc"   //------------------------------------- main ---------------------------------------------   int main(int argc, char **argv)   {   int fd,ret;   int val;   fd = open(DEVICE_NAME, O_RDWR);   if (fd == -1)   {   printf("can't open device mknod %s c zhu ci \n",DEVICE_NAME);   return 0;   }   while(1)   {   read(fd,val,sizeof(val));   printf("------------------app--------------------\n");   printf("val=%d\n",val);   sleep(3);   }   // close   ret = close(fd);   if (ret == -1)   {   printf("app close error!!!!!!!!!!\n");   return 0;   }   return 0;   }// end main   感谢chen4013874的分享!   供货情况:   天嵌科技提供专业嵌入式板卡和行业解决方案。如有需要,可以联系天嵌科技的销售人员。   销售电话:020-38219416 38373101   技术支持:020-38219416转807 820   网址:http://www.embedsky.com
  • 热度 22
    2016-3-21 11:18
    947 次阅读|
    6 个评论
      TQ2440 是由广州天嵌计算机科技有限公司精心打造的一款开发板。以稳定的性能,过硬的质量,丰富的扩展接口,优质的售后服务和技术支持,赢得众多企业的青睐和支持。   硬件:TQ2440,USB RT3070   编译环境:ubuntu、TQ提供的EABI-4.3.3、网上下载的2010_0203_RT3070_SoftAP_v2.4.0.1_DPA包   配置好编译环境,解压2010_0203_RT3070_SoftAP_v2.4.0.1_DPA   移植过程:   1、修改配置相关文件   进入2010_0203_RT3070_SoftAP_v2.4.0.1_DPA   下面有3个文件夹MODULE、NETIF、UTIL   分别修改3个Makefile文件   将PLATFORM = SMDK打开,其他注释掉   然后配置平台,LINUX_SRC是内核的绝对路径   ifeq ($(PLATFORM),SMDK)   LINUX_SRC = /opt/EmbedSky/linux-2.6.30.4   CROSS_COMPILE = arm-linux-   endif   另外需要修改的地方   NETIF/os/linux/usb_main_dev.c中添加MODULE_LICENSE("GPL");   MODULE/common/rtmp_init.c中的MODULE_LICENSE("RALINK");改为MODULE_LICENSE("GPL");   2、编译   用make或者make ARCH=arm KBUILD_NOPEDANTIC=1编译都行   但是make编译时没有生成rtnet3070ap.ko   进入NETIF文件夹直接make也可以生成ko文件   3、拷到开发板上的文件   上述三个文件夹的os/linux下的ko文件rtutil3070ap.ko、rt3070ap.ko、rtnet3070ap.ko   再加一个MODULE下的RT2870AP.dat文件   四个文件copy到u盘,插到开发板上   4、开发板配置   在开发板的/etc/Wireless下创建一个文件夹RT2870AP,将RT2870AP.dat放到此文件夹下   将另外三个ko文件放到/usr下,这个可以自己定义   5、加载   按顺序加载   #insmod rtutil3070ap.ko   #insmod rt3070ap.ko   #insmod rtnet3070ap.ko   如果不允许加载   用lsmod查看目前存在的模块   如果有rt5370就卸载再上述顺序加载,TQ开发板默认安装了这个ko文件,卸载命令rmmod rt5370sta.ko   6、可能遇到问题   如果上述一切正常   下面继续   问题一:    # ifconfig ra0 up   -- ERROR in Alloc TX TxContext HTTX_BUFFER !!   -- RTMPAllocTxRxRingMemory, Status=3   ERROR!!! RTMPAllocDMAMemory failed, Status   !!! rt28xx Initialized fail !!!   ifconfig: SIOCSIFFLAGS: Operation not permitted   解决:   修改MODULE NETIF UTIL三个目录下的include/os/rt_linux.h中BULKAGGRE_SIZE参数,将100改为60   问题二:    # ifconfig ra0 up   -- RTMPAllocTxRxRingMemory, Status=0   --RTUSBVenderReset   --RTUSBVenderReset   RtmpOSFileOpen(): Error 2 opening /etc/Wireless/RT2870AP/RT2870AP.dat   Open file "/etc/Wireless/RT2870AP/RT2870AP.dat" failed!   1. Phy Mode = 0   ERROR!!! RTMPReadParametersHook failed, Status   --- RTMPFreeTxRxRingMemory   --- RTMPFreeTxRxRingMemory   !!! rt28xx Initialized fail !!!   ifconfig: SIOCSIFFLAGS: Operation not permitted   解决:   应该是没有创建RT2870AP文件夹,创建好再把RT2870AP.dat烤过去,因为我先移植过RT3070STA,所以以为这个RT2870××.dat是通用的   7、正常工作   下面是正常打印    # ifconfig ra0 up   -- RTMPAllocTxRxRingMemory, Status=0   --RTUSBVenderReset   --RTUSBVenderReset   Key1Str is Invalid key length(0) or Type(0)   Key2Str is Invalid key length(0) or Type(0)   Key3Str is Invalid key length(0) or Type(0)   Key4Str is Invalid key length(0) or Type(0)   1. Phy Mode = 9   2. Phy Mode = 9   NVM is Efuse and its size =2d   3. Phy Mode = 9   MCS Set = ff 00 00 00 01   SYNC - BBP R4 to 20MHz.l   SYNC - BBP R4 to 20MHz.l   SYNC - BBP R4 to 20MHz.l   SYNC - BBP R4 to 20MHz.l   SYNC - BBP R4 to 20MHz.l   SYNC - BBP R4 to 20MHz.l   SYNC - BBP R4 to 20MHz.l   SYNC - BBP R4 to 20MHz.l   Main bssid = 7c:dd:90:56:6d:84   ==== rt28xx_init, Status=0   0x1300 = 00064320   配置IP命令:   ifconfig ra0 192.168.8.25   #iwconfig ra0   ra0 RTWIFI SoftAP ESSID:"RT2860AP" Nickname:""   Mode:Managed Channel=11 Access Point: 7C:DD:90:56:6D:84   Bit Rate=150 Mb/s   用android手里可以查到RT2870AP的wifi信号   8、关闭模块   结束后,可以通过以下命令卸载模块:   #ifconfig ra0 down   #rmmod rtnet3070ap.ko   #rmmod rt3070ap.ko   #rmmod rtutil3070ap.ko   修改后的源码包可以到下面地址下载,注意内核路径的设置   http://download.csdn.net/detail/stephen_yu/7179827   感谢stephen_kl的分享!   供货情况:   天嵌科技提供专业嵌入式板卡和行业解决方案。如有需要,可以联系天嵌科技的销售人员。   销售电话:020-38219416 38373101   技术支持:020-38219416转807 820   网址:http://www.embedsky.com
  • 热度 20
    2013-9-5 10:43
    1216 次阅读|
    0 个评论
    TQ2440(W43)编译详解 开发板提供的环境:虚拟机VMware+Linux系统Fedora10, 1.交叉编译器的安装         1.为了和视频保持同步,我在Ubuntu下创建了/mnt/hgfs/linux/目录,然后将需要的资源都放到该目录下,交叉编译器是TQ自带的EABI-4.3.3_EmbedSky_20100610.tar.bz2         2. #tar jxvf EABI-4.3.3_EmbedSky_20100610.tar.bz2 -C /;使用该命令将交叉编译器解压到/opt/EmbedSky/目录下,/opt/Embedky目录是解压后自动生成的,不是用mkdir命令建立的目录。然后在/opt/Embedky/目录下会生成4.3.3目录和crosstools_3.4.5_softfloat目录,其中4.3.3是4.3.3版本的交叉编译器,3.4.5就是3.4.5版本的交叉编译器了,/usr/local/sbin/目录下会为我们生成制作yaffs文件系统的工具mkyaffs2image。/opt/Embedky/是TQ2440管理源码的总目录        3.然后就是修改环境变量,教程上提示是修改/etc/profile文件以对所有的用户均有效,而~/.profile是仅对当前用户有效,可是我在~.profile中修改后之后发现没有其作用,于是我就修改了~/.bashrc文件,经source .bashrc之后,发现修改后有效,一下是在.bashrc文件的最后一行所添加的信息: export PATH="/opt/EmbedSky/4.3.3/bin:$PATH" #export PATH="/opt/EmbedSky/crosstools_3.4.5_softfloat/gcc-3.4.5-glibc-2.3.6/arm-linux/bin:$PATH" 当我们用4.3.3的编译器的时候就把第二行注释了,当我们用3.4.5的编译器时就把第一行注释了。     4.然后就在终端下运行$source .bashrc,使刚才的修改立即生效,然后我们使用$arm-linux-gcc -v 就可以查看我们的编译器版本了,使用$mkyaffs,然后双击tab键盘就可以查看生成的制作文件系统的工具了。到这里我们就把TQ自带的交叉编译器完整安装到自己机器上了        下一步工作:这里的交叉编译器是天嵌公司帮我们制作的,但如果我们想定制自己的交叉编译器,又该怎么做的,网上有很多教程,下一步就是要实现自己的交叉编译器的制作。 2.编译uboot      1.首先把要用到的uboot源码u-boot-1.1.6_20100601.tar.bz2复制到/mnt/ghfs/linux/目录下,然后利用$tar jxvf u-boot-1.1.6_20100601.tar.bz2 -C /命令解压到/opt/EmbedSky/目录下      2.然后$cd uboot进入到uboot的源码目录      3.然后就是利用$make EmbedSky_config配置文件进行uboot配置,其中EmbedSky_config是在uboot目录下Makefile文件中的一个单独配置文件      4.$make 命令就可以生成相应的uboot.bin文件了      5.打开include/configs/EmbedSky.h文件,主要的配置选项都在该文件下     下一步工作:弄动uboot的原理,尽量理解uboot更多内容,以后碰见任意的处理器都可以自己解决。 3.linux内核编译       1.将linux-2.6.30.4_20100531.tar.bz2复制到/mnt/hgfs/linux目录下       2.$tar linux-2.6.30.4_20100531.tar.bz2 -C /将linux源码解压到/opt/EmbedSky/目录下,       3.进入到linxu的源码目录,调用TQ已经为我们做好的配置单(不同的屏调用不同的配置单)        4.复制制作好的配置单为系统编译时所需要的.config配置单。$cp -f  config_EmbedSky_W43_256M .config        5. $make menuconfig 进入配置单进行配置        6.配置完成之后$make zImage即可生成相应的内核文件        7.编译内核内的驱动模块(配置内核选项为M的项)$make modules    补充:修改内核的开机logo          1.首先准备一张符合屏的bwp图片,如果是W35的屏就选320*240的bmp位图,如果是W43的屏幕,就选择480*272的bmp          2.视频为选择的TQ_LOGO_320_240.bmp位图,24位色。          3.将准备好的位图复制到内核的driver/video/logo/目录下          4.对bmp格式的图片进行处理,以使linux系统能够识别,这里是修改成PPM格式的,修改工具为ubuntu主机自带的GNU Image Manipulation Programer          5.选择Image-》Mode-》indexed,将256色改为224色-》convert-》Save As为ppm格式的文件-》save-》ASCII-》SAVE          6。将自己的图片替换自带的开机图片,然后重新$make zImage。       下一步就是要弄懂kernel的各项功能,摆脱对TQ的依赖,配置自己的.config 4.编译BusyBox        1.  首先将busybox-1.16.0.tar.bz2复制到/mnt/ghfs/linux/目录下        2. 进入到/opt/EmbedSky/下$tar jxvf busybox-1.16.0.tar.bz2 -C /解压到/opt/EmbedSky/目录下,        3。进入busybox源码$cd busybox-1.16.0        4.使用$make menuconfig对busybox进行配置,导入TQ自带的配置单,把.config修改为config_EmbedSky        5.对修改的config_EmbedSky进行保存,保存为编译busybox时所能识别的.config文件       6。$make就可以编译成busybox了.      7.输入$make install安装刚刚编译的busybox,安装后会在busybox源码目录下生成一个_install目录,安装后的busybox就在该目录下            安装busybox后会在_install目录下生成/bin,/sbin,/usr,linuxrc三个文件夹和一个文件      8。在/opt/EmbedSky/目录下新建一个文件夹,用于制作跟文件系统,     9.将利用busybox生成的三个文件夹和一个文件复制到根文件系统目录下,以生成跟文件系统的工具 5.linux应用程序编译教程      1.将应用程序apps_20100601.tar.bz2复制到/mnt/hgfs/linux/目录下      2.$tar jxvf apps_20100601.tar.bz2 -C /解压到/opt/EmbedSky/下      3.cd /opt/EmbedSky/apps/目录下就可以编译应用程序了      4.编译无线网卡的工具集例子:      5.cd /wireless_.../      6.$make clean   清除编译产生的文件      7.rm -rf _install/    清除编译产生的目标文件      8.$make 命令编译应用程序      9.$make install命令安装刚刚编译好的应用程序      10.在——install目录下会产生该应用程序的include ,lib,man,sbin文件夹,      11.将sbin/目录下所有文件复制到利用busybox建立的文件系统中/sbin目录下,如果应用程序产生的/lib/目录下存在*.o的库文件,把该      库文件一并复制到利用busybox建立的跟文件系统的/lib/目录下,将头文件复制到文件系统的include/目录下       5.编译buttons的例子       1.cd /Buttons/目录下       2.$make clean清除编译产生的文件       3.$make 编译应用程序       4.将生成的可执行文件复制到跟文件系统的/sbin/目录下 6.QT_4.5编译教程        1.复制qt-embedded-linux-opensource-src-4.5.0_20100601.tar.bz2到/mnt/hgfs/linux/目录下        2,$tar qt-embedded-linux-opensource-src-4.5.0_20100601.tar.bz2 -C /解压到/mnt/EmbedSky/目录下        3.$cd qt-4.5/目录下        4.编译TQ2440用的是qt4.5的版本的库        5. $./arm-qt4.5_build编译TQ2440的qt        6.编译号的qt4.5的库,字库在/opt/EmbedSky/qt-4.5/_install/arm/lib/目录下        7.安装qt_creater工具        8./mnt/hgfs/linux/qt-creator-linux-x86-opensource-1.3.0.bin  
  • 热度 16
    2013-7-22 10:26
    991 次阅读|
    2 个评论
    裸奔程序下载中关于USB无法连接问题 花了很长的时间,一直没有弄好DNW软件的USB连接问题:   虽然没有理论上解决这个问题,但通过下面几步,我用天嵌的DNW下载程序与USB设备取得联系:1.升级为NetFramework4.0版本,2.使用天嵌的DNW下载程序 并将TQ2440_Test.bin文件通过USB下载进入开发板,断电,拨到NandFlash处,开启在SecureCRT软件中得到: 实现了裸奔程序的下载!
  • 热度 17
    2013-1-26 16:18
    2491 次阅读|
    0 个评论
    广州天嵌计算机科技再度率先推出--QT4.5 移植手册,及源码下载。 拥有QT4, 使您的产品更出众,更具时尚品位。天嵌科技继续引领潮流,总被 跟随,从未被超越,同行中,第一个推出QT4.5 移植手册,欢迎大家到天嵌BBS :http://www.embedsky.net/bbs下载,开题讨论。手册下载地址: http://bbs.embedsky.net/viewthread.php?tid=859extra=page%3D1, TQ2440 QT4.5 移植手册及源码,您下载了吗?