Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1639920
  • 博文数量: 311
  • 博客积分: 7778
  • 博客等级: 少将
  • 技术积分: 4186
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-09 19:59
个人简介

蓝点工坊(http://www.bluedrum.cn) 创始人,App和嵌入式产品开发。同时也做相应培训和外包工作。 详细介绍 http://pan.baidu.com/s/1y2g88

文章存档

2012年(3)

2011年(115)

2010年(170)

2009年(23)

分类: 嵌入式

2011-11-25 18:52:42

Andrew Huang 转载请注明作者及出处 http://bluedrum.cublog.cn

   因为要帮学生的产品看一下telechip8902的adv7180的问题,此我系统了解一下telechip 8902这一款在平板电脑上用得很火的CPU。
   
 一.telechip 8902的介绍
  
    看这一款的CPU的介绍,内核采用 ARM1176JZF-S.跟s3c6410极为相似
   主频为
   多部模块没有S3C6410多,除了常见的UART/I2C/ADC/PWM/触摸屏/I2S/GPBS(这个可能是GSPI?),还以醒目的颜色标明支持红外接收和CAN。表明这个CPU的目标市场包括MP4和车载领域. 

   telechip的主要卖点就是视频的播放能力。从datasheet看硬件直接支持, H.263 /MPEG1/MPGE 2/MPEG4 /VC-1/RV (就是Real Video)以及 JPEG/H.264播放.

   另外2D/3D加速支持OpenGL ES v2.0, v1.x
  视频输出支持HDMI,LCD和TV。看资料还支持 DVB-H输出。输入支持CCIR-601/656和摄像头的
 
    
   网上有一个关于telechips 8900 相关资料下载 http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3901903& 大多可以用在8902之上。
  
   原厂网站   也有开源软件下载.选择technical support.再选择 technical Masterial 中再选择 opensource SW里面有内核和Android框架下载
   

二.Linux下开发环境安装
   
一个完整的系统包括 
     编译器
     内核
     根文件系统。
     及应用测试程序
   我分别整理一下。将所有的软件安装在/home/hxy/tc8902

      从linux的BSP的目录结构来看,建议是这样的目录布局

         /home/hxy/tc8902
             |
             +--kenrel (linux 2.6.28) #内核源码目录
             |
             +-- bootloader
             |       |
             |       +-- tcboot      #bootloader 源码        
             |
             + -- toolchain          #编译工具目录,(可选)
             |
             +---  drivers           #以动态形式提供的驱动源码
             |
             +--   util              #专用工具或开源工具
             |
             +-- ramdisk             #ramdisk 格式的根文件系统,
  
     在这里只有kernel和bootloader的相对路径不能改,因为在内核中用相对路径
    arch/arm/mach-tcc8900/tcc_ckc_ctrl.c:42:58: error: ../../../../../bootloader/tcboot/include/ddr.h: No such file or directory
 
   解压BSP源码. 
    主要bootloader/util/ramdisk目录.

   2.1编译器
     编译器直接是采用  codesourcery  的 4.3.2 .
      缺省的路径是安装在 /opt/armv6/codesourcery/bin/arm-none-linux-gnueabi-gcc

     但是因为考虑我有多个开发板开发环境安装在同一机器上,因此我的规划是将编译器安装在自己的开发目录.
      
      将编译器在项目目录解压后 tar xvf armv6_compiler.tar.bz2.
        将armv6/codesourcery  改名大家习惯 arm/4.3.2并安装在开发板目录 /home/hxy/tc8902目录下.
       修改~/.bash_profile 将gcc路径增加PATH变量中.
        
    在arm/4.3.2/bin目录下,把gcc名字改为常用的arm-linux-gcc
       ln -s arm-none-linux-gnueabi-gcc arm-linux-gcc
       ln -s arm-none-linux-gnueabi-ar arm-linux-ar
       ln -s arm-none-linux-gnueabi-objdump arm-linux-objdump
       ln -s arm-none-linux-gnueabi-g++ arm-linux-g++
       ln -s arm-none-linux-gnueabi-readelf arm-linux-readelf
       ln -s arm-none-linux-gnueabi-objcopy arm-linux-objcopy
       ln -s arm-none-linux-gnueabi-size arm-linux-size
       ln -s arm-none-linux-gnueabi-ld arm-linux-ld
        ln -s arm-none-linux-gnueabi-cpp arm-linux-cpp
      ln -s arm-none-linux-gnueabi-gdb arm-linux-gdb
       ln -s arm-none-linux-gnueabi-strings arm-linux-strings
       ln -s arm-none-linux-gnueabi-nm arm-linux-nm
      ln -s arm-none-linux-gnueabi-ranlib arm-linux-ranlib
      ln -s arm-none-linux-gnueabi-as arm-linux-as

   安装后注销用户重登录即可生效.运行 arm-linux-gcc -v 如果出现如下提示表示安装成功
    
  1. [root@android /]# arm-linux-gcc -v
  2. Using built-in specs.
  3. Target: arm-none-linux-gnueabi
  4. Configured with: /scratch/julian/lite-respin/linux/src/gcc-4.3/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=arm-none-linux-gnueabi --enable-threads --disable-libmudflap --disable-libssp --disable-libstdcxx-pch --with-gnu-as --with-gnu-ld --enable-languages=c,c++ --enable-shared --enable-symvers=gnu --enable-__cxa_atexit --with-pkgversion='Sourcery G++ Lite 2008q3-72' --with-bugurl= --disable-nls --prefix=/opt/codesourcery --with-sysroot=/opt/codesourcery/arm-none-linux-gnueabi/libc --with-build-sysroot=/scratch/julian/lite-respin/linux/install/arm-none-linux-gnueabi/libc --with-gmp=/scratch/julian/lite-respin/linux/obj/host-libs-2008q3-72-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr --with-mpfr=/scratch/julian/lite-respin/linux/obj/host-libs-2008q3-72-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr --disable-libgomp --enable-poison-system-directories --with-build-time-tools=/scratch/julian/lite-respin/linux/install/arm-none-linux-gnueabi/bin --with-build-time-tools=/scratch/julian/lite-respin/linux/install/arm-none-linux-gnueabi/bin
  5. Thread model: posix
  6. gcc version 4.3.2 (Sourcery G++ Lite 2008q3-72)
 

 2.2 编译bootloader
    在bootloader/tcboot 生成Makefile
        make tcc8900 KERNEL_START_OFFSET=0x300000 SDRAM_M_SIZE=256 REVISION=TCC_R_AX

    修改编译器 把config.mk的编译器语句
       CROSS_COMPILE  = /opt/armv6/codesourcery/bin/arm-none-linux-gnueabi-
     修改成
        CROSS_COMPILE   = arm-linux-
  
    编译
           make 
 
    成功后生成tcboot.rom 就是烧录文件
      
  1. arm-linux-objcopy --gap-fill=0xff -O srec tcboot tcboot.srec
  2. arm-linux-objcopy --gap-fill=0xff -O binary tcboot tcboot.bin
  3. [MK] tcboot.rom for TCC8900
  4. image length: [0x000C40C0] (803008 byte)
  5. second crc: [0x546DD635]
  6. first crc: [0x07F0B334]
 
  2.3 内核安装
      
     我使用的是linux 2.6.28内核,项目目录在 /home/hxy/tcc8902/linux-2.6.28上
    首先下载内核源码 
    1.首先下载原始内核 源码
           wget

   2.给内核打补丁
          patch -p1 < patch-linux-2.6.28-100705-R0191B3463
 
   3.拷贝配置文件
       把arch/arm/configs/tcc8900_defconfig 拷到内核根目录下方便使用
    
         在内核目录下将tcc8900_defconfig作为缺省配置
           cp tcc8900_defconfig .config


4.打开内核配置菜单
      检测系统类型是否为tc8900系统
      
         make meuuconfig

     

     修改Makefile的编译器的路径

       CROSS_COMPILE  ?= /home/hxy/tc8902/arm/4.3.2/bin/arm-none-linux-gnueabi-

   5.编译内核和动态模块 
        make 
      成功后会提示
         
  1. OBJCOPY arch/arm/boot/Image
  2. Kernel: arch/arm/boot/Image is ready
  3. AS arch/arm/boot/compressed/head.o
  4. GZIP arch/arm/boot/compressed/piggy.gz
  5. AS arch/arm/boot/compressed/piggy.o
  6. CC arch/arm/boot/compressed/misc.o
  7. LD arch/arm/boot/compressed/vmlinux
  8. OBJCOPY arch/arm/boot/zImage
  9. Kernel: arch/arm/boot/zImage is ready
  10. Building modules, stage 2.
  11. MODPOST 4 modules
  12. CC drivers/hid/hid-dummy.mod.o
  13. LD [M] drivers/hid/hid-dummy.ko
  14. CC drivers/net/tcc_dm9000.mod.o
  15. LD [M] drivers/net/tcc_dm9000.ko
  16. CC drivers/scsi/scsi_wait_scan.mod.o
  17. LD [M] drivers/scsi/scsi_wait_scan.ko
  18. CC drivers/usb/gadget/g_file_storage.mod.o
  19. LD [M] drivers/usb/gadget/g_file_storage.ko
  6.生成内核烧录文件
      在内核目录下运行 ./tcc_mkrd.sh
    
 2.4 生成根文件系统
   在ramdisk目录执行 ./tcc_mk_rootfs.sh 
    
  1. [root@android ramdisk]# ./tcc_mk_rootfs.sh
  2. Input the filename of ramdisk. [default: ./ramdisk.rom] =>
  3. Input the size of ramdisk. (unit: MByte) [default: 16 MByte] =>
  4. Input the directory of rootimg. [default: ./rootimg] =>
  5. ## make the ramdisk with mnt directory
  6. ============ make ramdisk ============
  7. 16+0 records in
  8. 16+0 records out
  9. 16777216 bytes (17 MB) copied, 0.855896 seconds, 19.6 MB/s
  10. mke2fs 1.39 (29-May-2006)
  11. Filesystem label=
  12. OS type: Linux
  13. Block size=1024 (log=0)
  14. Fragment size=1024 (log=0)
  15. 4096 inodes, 16384 blocks
  16. 819 blocks (5.00%) reserved for the super user
  17. First data block=1
  18. Maximum filesystem blocks=16777216
  19. 2 block groups
  20. 8192 blocks per group, 8192 fragments per group
  21. 2048 inodes per group
  22. Superblock backups stored on blocks:
  23. 8193
  24. Writing inode tables: done
  25. Writing superblocks and filesystem accounting information: done
  26. This filesystem will be automatically checked every 36 mounts or
  27. 180 days, whichever comes first. Use tune2fs -c or -i to override.
  28. ======================================
      
三.开发板固件安装
  
   启动时tcboot的提示画面

  1. =============================================
  2. tcboot ver 0.5 for TCC8900 Linux
  3. Board ver TCC8900_WINCE_LINUX_DEMO
  4. DATE:Oct 28 2011, TIME:17:11:04
  5. =============================================
  6. CHIP ID: 0x00000395770423C8
  7. CLOCK: PLL0:540, PLL1:560, PLL2:468, PLL3:528, CPU:506, BUS:280
  8. DDI:264, GRP:0, IOB:156, VBUS:0, VPU:0, SMU:117
  9. FWDN: checking...
  10. Press any key to enter shell mode.
  11. =========================================
  12. TcBoot Shell Menu
  13. L/l - Loading Linux Kernel.
  14. U/u - Updating Firmware from SD card.
  15. =========================================
  16. [TCBOOT]
   



阅读(5882) | 评论(3) | 转发(1) |
给主人留下些什么吧!~~

bluedrum2012-01-06 13:15:29

tekkamanninja: 看芯片结构的确和6410很像,但是要比6410强大~~,起码从外设来看。
只亲眼见过这公司的芯片用于车载终端的方案.....
深圳用这个做平板不少,我在想是不是做s3c6410那帮人出来创业做的。它在成本和性能有一个折衷

bluedrum2012-01-06 13:15:21

tekkamanninja: 看芯片结构的确和6410很像,但是要比6410强大~~,起码从外设来看。
只亲眼见过这公司的芯片用于车载终端的方案.....
深圳用这个做平板不少,我在想是不是做s3c6410那帮人出来创业做的。它在成本和性能有一个折衷

tekkamanninja2011-12-27 17:00:28

看芯片结构的确和6410很像,但是要比6410强大~~,起码从外设来看。
只亲眼见过这公司的芯片用于车载终端的方案