Davinci DM6446开发攻略-UBOOT-2009.03移植2 nand flash的烧写

  很长一段时间没有更新博客了,是因为要推出新开发方案和做好客户服务工作,忙得不易乐乎。有关DAVINCI U-BOOT的移植,以前写过一篇u-boot-1.3.4(2008年的),其实和这个u-boot-2009.03差别不大,只不过这个u-boot-2009.03是从TI的网站上下载的,是DAVINCI系列最新的u-boot,也适合DM6467和DM365/368,移植的方法承接《Davinci DM6446开发攻略——u-boot-1.3.4移植(1)》,而本篇着重介绍nand flash的烧写。
Davinci产品需要烧写UBL、U-BOOT、KERNEL、ROOTFS这四个最基本的文件。UBL的烧写有两种方式,一个就是TI开发包自带的NandWriter.out文件,这必须使用560-plus仿真器(太贵了!)。另一个就是自己开发u-boot烧写,或开发内核支持mtd block烧写,我们一般移植u-boot进行烧写。这个烧写涉及到ECC校验,移植比较复杂,为了保护自己一点点知识产权的东西,这里就保留不说,不过购买本工作室的开发板或核心板,都会提供烧写UBL的工具,核心板我们直接就帮客户烧写好(没办法,办公房租飞涨,物价飞涨,不,是翻翻倍涨,芯片炒作,TI两款浮点工控芯片MCU F28XX的芯片从年初的120多元飞涨到600~800元!,而且没货!所以说日子越来越不好过)。而u-boot和kernel的烧写,则比较简单,jffs2烧写稍微复杂一点。

关于u-boot-2009.03 nand flash的烧写,命令分nand write 和 nand write.jffs2,这两个命令是有差别的,nand write主要用来烧写u-boot和kernel(uImage),和任何文件系统无关,一些刚刚接触嵌入式LINUX的朋友需要了解这一点,而nand write.jffs2专门用来烧写jffs2文件系统的,当然,你可以添加nand write.yaffs2,nand write.squahfs等等,这个在cmd_nand.c里的do_nand函数加自己的代码,当然几个基本的nand文件u-boot-2009.03/drivers/mtd/nand是需要看看和了解的,但不需要大改。DM6446 U-BOOT很多移植工作就是对davinci_dvevm.h的配置和定义,nand flash的烧写也是在这里定义,我们以这个文件进行讲解和分析,让大家更了解U-BOOT,不单单是nand flash的烧写。

#include/davinci_dvevm.h

/*=======*/

/* Board */

/*=======*/

#define DV_EVM

//#define CONFIG_SYS_NAND_SMALLPAGE   (这个是支持512字节NAND FLASH定义)

#define CONFIG_SYS_NAND_LARGEPAGE (本工作室的开发板核心板是2K—PAGE,目前比较新的NAND,因为有些客户需要移植yaffs2,512字节的只能支持yaffs,超级慢)

#undef    CONFIG_SYS_USE_NOR(现在基本上取消NOR FLASH的支持,价格贵,容量小)

#define    CONFIG_SYS_USE_NAND(定义板子使用NAND FLASH

/*===================*/

/* SoC Configuration */

/*===================*/

#define CONFIG_ARM926EJS                  /* arm926ejs CPU core */

#define CONFIG_SYS_CLK_FREQ    297000000     /* Arm Clock frequency */

#define CONFIG_SYS_TIMERBASE         0x01c21400    /* use timer 0 */

#define CONFIG_SYS_HZ_CLOCK           27000000       /* Timer Input clock freq */

#define CONFIG_SYS_HZ                 1000

#define CONFIG_SOC_DM644X

//#define CONFIG_DISPLAY_CPUINFO (显示CPU的频率信息等,屏蔽不用,以后的版本都有这个)

 

/*====================================================*/

/* EEPROM definitions for Atmel 24C256BN SEEPROM chip */

/* on Sonata/DV_EVM board. No EEPROM on schmoogie.    */

/*====================================================*/

(这个是TI 自己的EVM,带有1个EEPROM,保存MAC地址,我们板子不用,所以屏蔽)

//#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN             2

//#define CONFIG_SYS_I2C_EEPROM_ADDR        0x50

//#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 6

//#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS    20

/*=============*/

/* Memory Info */

/*=============*/

(DDR内存的一些定义)

#define CONFIG_SYS_MALLOC_LEN             (0x10000 + 128*1024) /* malloc() len */

#define CONFIG_SYS_GBL_DATA_SIZE 128         /* reserved for initial data */

#define CONFIG_SYS_MEMTEST_START       0x80000000    /* memtest start address */

#define CONFIG_SYS_MEMTEST_END          0x81000000    /* 16MB RAM test */

#define CONFIG_NR_DRAM_BANKS       1            /* we have 1 bank of DRAM */

#define CONFIG_STACKSIZE    (256*1024)     /* regular stack */

#define PHYS_SDRAM_1           0x80000000    /* DDR Start */

#define PHYS_SDRAM_1_SIZE 0x10000000    /* DDR size 256MB */

#define DDR_8BANKS                      /* 8-bank DDR2 (256MB) */

(我们的核心板使用DDR256M-byte,所以是8 bank

/*====================*/

/* Serial Driver info */

/*====================*/

(串口配置信息,UART0=ttyS0,一般用来打印LINUX调试信息)

#define CONFIG_SYS_NS16550

#define CONFIG_SYS_NS16550_SERIAL

#define CONFIG_SYS_NS16550_REG_SIZE    -4    /* NS16550 register size, byteorder */

#define CONFIG_SYS_NS16550_COM1    0x01c20000    /* Base address of UART0 */

#define CONFIG_SYS_NS16550_CLK              27000000       /* Input clock to NS16550 */

#define CONFIG_CONS_INDEX 1            /* use UART0 for console */

#define CONFIG_BAUDRATE            115200           /* Default baud rate */

#define CONFIG_SYS_BAUDRATE_TABLE     { 9600, 19200, 38400, 57600, 115200 }

/*===================*/

/* I2C Configuration */

/*===================*/

(如果你不需要在U-BOOT对I2C芯片读写操作,可以屏蔽这个)

//#define CONFIG_HARD_I2C

//#define CONFIG_DRIVER_DAVINCI_I2C

//#define CONFIG_SYS_I2C_SPEED         80000     /* 100Kbps won't work, silicon bug */

//#define CONFIG_SYS_I2C_SLAVE         10    /* Bogus, master-only in U-Boot */

/*==================================*/

/* Network & Ethernet Configuration */

/*==================================*/

#define CONFIG_DRIVER_TI_EMAC

#define CONFIG_MII

#define CONFIG_BOOTP_DEFAULT

#define CONFIG_BOOTP_DNS

#define CONFIG_BOOTP_DNS2

#define CONFIG_BOOTP_SEND_HOSTNAME

#define CONFIG_NET_RETRY_COUNT    10

 

#define CONFIG_IPADDR       192.168.1.188    (板子U-BOOT的IP

#define CONFIG_SERVERIP     192.168.1.252   (HOST 你的linux开发主机IP,一般是NFS的IP

/*=====================*/

/* Flash & Environment */

/*=====================*/

#ifdef CONFIG_SYS_USE_NAND

#define CONFIG_NAND_DAVINCI

#undef CONFIG_ENV_IS_IN_FLASH

#define CONFIG_SYS_NO_FLASH

#define CONFIG_ENV_IS_IN_NAND              /* U-Boot env in NAND Flash */

#ifdef CONFIG_SYS_NAND_SMALLPAGE

#define CONFIG_ENV_SECT_SIZE   512 /* Env sector Size */

#define CONFIG_ENV_SIZE             SZ_16K

#else

#define CONFIG_ENV_SECT_SIZE   2048       /* Env sector Size */

#define CONFIG_ENV_SIZE             SZ_128K

#endif

#define CONFIG_SKIP_LOWLEVEL_INIT       /* U-Boot is loaded by a bootloader */

#define CONFIG_SKIP_RELOCATE_UBOOT   /* to a proper address, init done */

#define CONFIG_SYS_NAND_BASE        0x02000000(这个是EMIF CS2的起始地址,类似片选的说法)

#define CONFIG_SYS_NAND_HW_ECC (TI默认 硬件 ECC

#define CONFIG_SYS_MAX_NAND_DEVICE 1     /* Max number of NAND devices */

(上面的定义表示板子只有1片NAND FLASH

#define    CONFIG_MASK_CLE                0x10

#define    CONFIG_MASK_ALE                0x08

#define CONFIG_ENV_OFFSET        0xE0000 /* Block 7--not used by bootcode */

(上面的定义就是存放u-boot参数的地址,源码是0x0,但我们一般把参数放到U-BOOT存储地址前后)

#define DEF_BOOTM          ""

#elif defined(CONFIG_SYS_USE_NOR) (这个是支持NOR FLASH的定义,不用理会)

#ifdef CONFIG_NOR_UART_BOOT

#define CONFIG_SKIP_LOWLEVEL_INIT       /* U-Boot is loaded by a bootloader */

#define CONFIG_SKIP_RELOCATE_UBOOT   /* to a proper address, init done */

#else

#undef CONFIG_SKIP_LOWLEVEL_INIT

#undef CONFIG_SKIP_RELOCATE_UBOOT

#endif

#define CONFIG_ENV_IS_IN_FLASH

#undef CONFIG_SYS_NO_FLASH

#define CONFIG_FLASH_CFI_DRIVER

#define CONFIG_SYS_FLASH_CFI

#define CONFIG_SYS_MAX_FLASH_BANKS 1            /* max number of flash banks */

#define CONFIG_SYS_FLASH_SECT_SZ 0x20000         /* 128KB sect size Intel Flash */

#define CONFIG_ENV_OFFSET        (CONFIG_SYS_FLASH_SECT_SZ*3)

#define PHYS_FLASH_1            0x02000000    /* CS2 Base address       */

#define CONFIG_SYS_FLASH_BASE              PHYS_FLASH_1   /* Flash Base for U-Boot */

#define PHYS_FLASH_SIZE              0x1000000     /* Flash size 16MB */

#define CONFIG_SYS_MAX_FLASH_SECT     512

#define CONFIG_ENV_SECT_SIZE   CONFIG_SYS_FLASH_SECT_SZ      /* Env sector Size */

#define CONFIG_SYS_FLASH_PROTECTION

#endif

/*==============================*/

/* U-Boot general configuration */

/*==============================*/

#undef    CONFIG_USE_IRQ                    /* No IRQ/FIQ in U-Boot */

#define CONFIG_MISC_INIT_R

#define CONFIG_BOOTDELAY 2   (这个DELAY一般定义1~2,3秒太长,为了缩短BOOT的时间,有些产品直接不定义,或0

#define CONFIG_BOOTFILE             "uImage" /* Boot file name */

(这uImage其实是linux内核的镜像文件,也就是uImage=zImage + 被U-BOOT识别的header,或者是mkimage处理过的Image文件)

#define CONFIG_SYS_PROMPT        "U-Boot > "    /* Monitor Command Prompt */

#define CONFIG_SYS_CBSIZE          1024              /* Console I/O Buffer Size */

#define CONFIG_SYS_PBSIZE          (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16)      /* Print buffer sz */

#define CONFIG_SYS_MAXARGS           16           /* max number of command args */

#define CONFIG_SYS_BARGSIZE            CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size */

#define CONFIG_SYS_LOAD_ADDR        0x82000000    /* 0x80700000 default Linux kernel load address */

(这个是TFTP或RS232下载各个镜像文件缓存的地址,默认是0x80700000,但是由于自己制作的ROOTFS文件很大,有些往外超过32M,而U-BOOT本身运行的起始地址是“TEXT_BASE = 0x81080000”,所以我们把下载文件缓存的地址改为0x82000000

#define CONFIG_VERSION_VARIABLE

#define CONFIG_AUTO_COMPLETE              /* Won't work with hush so far, may be later */

#define CONFIG_SYS_HUSH_PARSER

#define CONFIG_SYS_PROMPT_HUSH_PS2   "> "

#define CONFIG_CMDLINE_EDITING

#define CONFIG_SYS_LONGHELP

#define CONFIG_CRC32_VERIFY

#define CONFIG_MX_CYCLIC

#define CONFIG_MUSB_HCD (DAVINCI平台在U-BOOT支持USB HUB

#define CONFIG_USB_DAVINCI

/*===================*/

/* Linux Information */

/*===================*/

#define LINUX_BOOT_PARAM_ADDR     0x80000100

#define CONFIG_CMDLINE_TAG

#define CONFIG_SETUP_MEMORY_TAGS

#define CONFIG_BOOTARGS            "mem=118M console=ttyS0,115200n8 ip=192.168.1.188 noinitrd root=/dev/nfs rw nfsroot=192.168.1.252:/home/davinci/nfs/tirootfs,nolock"

//#define CONFIG_BOOTARGS          "mem=118M console=ttyS0,115200n8 root=/dev/mtdblock2 rw rootfstype=jffs2 noinitrd ip=off"

(上面的定义就是bootargs的参数了,一个是NFS,另一个是产品级的参数)

 

#define CONFIG_ETHADDR       00:03:55:88:00:00(UBOOT一般不在公网上运行,所以可以随便定义一个MAC地址)

#define CONFIG_BOOTCOMMAND "run nand_boot"(这是NAND BOOT的命令定义,见后半部分介绍)

 

/*=================*/

/* U-Boot commands */

/*=================*/

(随着时间的推移,U-BOOT越来越完善,功能越来越强大,同时生产的BIN文件也越大,有些公司产品成本控制很严格,往往使用容量小的FLASH,这时就需要对任何的镜像文件进行“瘦身”,只有保证U-BOOT基本功能,其他功能统统屏蔽掉,这样编译出来的BIN就小多了)

#include <config_cmd_default.h>

#define CONFIG_CMD_ASKENV

#undef CONFIG_CMD_BOOTD

#undef CONFIG_CMD_DHCP

#undef CONFIG_CMD_DIAG

#undef CONFIG_CMD_I2C

#define CONFIG_CMD_MII

#define CONFIG_CMD_PING

#define CONFIG_CMD_SAVES

#undef CONFIG_CMD_EEPROM

#undef CONFIG_CMD_BDI

#undef CONFIG_CMD_FPGA

#undef CONFIG_CMD_NFS

#undef CONFIG_CMD_SETGETDCR

#ifdef CONFIG_SYS_USE_NAND

#undef CONFIG_CMD_FLASH

#undef CONFIG_CMD_IMLS

#define CONFIG_CMD_NAND

#define CONFIG_JFFS2_NAND(为了支持JFFS2在NAND的烧写,必须定义这个)

#elif defined(CONFIG_SYS_USE_NOR)

#define CONFIG_CMD_JFFS2

#else

#error "Either CONFIG_SYS_USE_NAND or CONFIG_SYS_USE_NOR _MUST_ be defined !!!"

#endif

/*==========================*/

/* USB MSC support (if any) */

/*==========================*/

#ifdef CONFIG_USB_DAVINCI

#define CONFIG_CMD_USB

#ifdef CONFIG_MUSB_HCD

#define CONFIG_USB_STORAGE

#define CONFIG_CMD_STORAGE

#define CONFIG_CMD_FAT

#define CONFIG_DOS_PARTITION

#endif

#ifdef CONFIG_USB_KEYBOARD

#define CONFIG_SYS_USB_EVENT_POLL

#define CONFIG_PREBOOT "usb start"

#endif

#endif

#undef CONFIG_CMD_LOADB /* loadb */(“瘦身”)

#undef CONFIG_CMD_LOADS   /* loads */

#undef CONFIG_CMD_ITEST

#undef CONFIG_CMD_XIMG

#undef CONFIG_CMD_KGDB

#undef CONFIG_CMD_SOURCE       /* "source" command support       */

 

/*=======================*/

/* KGDB support (if any) */

/*=======================*/

#ifdef CONFIG_CMD_KGDB

#define CONFIG_KGDB_BAUDRATE       115200    /* speed to run kgdb serial port */

#define CONFIG_KGDB_SER_INDEX      1     /* which serial port to use */

#endif

 

#define CONFIG_EXTRA_ENV_SETTINGS     \

"clearenv=nand erase 0xe0000 0x20000;\0" \

"cleardata=nand erase 0x7000000 0x1000000\0" \

"updateuboot=tftp 0x82000000 davinci_uboot.bin;nand erase 0x100000 0x80000\0" \

"updatecore=tftp 0x82000000 davinci_kernel.bin;nand erase 0x180000 0x480000\0" \

"updaterootfs=tftp 0x82000000 davinci_rootfs.bin;nand erase 0x600000 0x6A00000\0" \

"nand_boot=nboot 0x80008000 0 0x180000;bootm 0x80008000\0" \

"tftp_boot=tftpboot 0x80008000 davinci_kernel.bin;bootm 0x80008000\0"

因为是2k-page的NAND

分区情况:

根据TI 文档说明,对于LARGE PAGE的NAND,UBL只能存放在0x20000~0x40000区间;

U-BOOT: addr=0x00100000, size=0x00080000

KERNEL(CORE): addr=0x00180000,size=0x00480000;

ROOTFS(mtdblock2): addr=0x00600000,size=0x06A00000;

DATA(mtdblock3): addr=0x07000000,size=0x01000000;

注意TFTP要先下载,再擦除,否则网口不行就先擦除FLASH,悲剧是一直上演。

#endif /* __CONFIG_H */

 

根据CONFIG_EXTRA_ENV_SETTINGS的定义,我们可以使用以下命令烧写操作

U-Boot > run updateuboot(U-BOOT支持run命令)

TFTP from server 192.168.1.252; our IP address is 192.168.1.188

Filename 'davinci_uboot.bin'.

Load address: 0x82000000

Loading: ############

done

Bytes transferred = 167920 (28ff0 hex)

NAND erase: device 0 offset 0x100000, size 0x80000

Erasing at 0x160000 -- 100% complete.

OK

U-Boot > nand write 82000000 100000 2A000   (实际长度是0x28ff0,但我们使用0x2A000,128K-byte的倍数)

提示:U-BOOT > 烧写命令能识别82000000 100000这些16进制。

U-BOOT编译时生成的u-boot.bin是不能被UBL给BOOT起来的,因为u-boot.bin没带有文件头header,而u-boot.img是可以被UBL给BOOT起来,这一点要注意。而我们的davinci_uboot.bin是经过U-BOOT自带的mkimage处理的。

 

U-Boot > run updatecore下载davinci_rootfs.bin(uImage);

上面的命令只是下载和erase flash分区,并没有烧写,请参考nand write 82000000 180000 size的格式。

 

U-Boot > run updaterootfs下载davinci_rootfs.bin;怎样产生rootfs镜像文件见《TI Davinci DM6446开发攻略——根文件系统的裁剪》

nand write.Jffs2 82000000 600000 size

 

nand_boot=nboot 0x80008000 0x0 0x180000;bootm 0x80008000

表示从NAND 0x180000的地方COPY内核到DDR内存0x80008000的地址,0x0表示nand_info[0]的下标0,因为我们系统只支持1片nand CONFIG_SYS_MAX_NAND_DEVICE

 

JFFS2的烧写,移植时,需要注意ECC的问题,同时内核移植里也有统一对应,否则内核无法加载JFFS2,这里就保留不多说,本人已经指明了道路,烧写命令也说明了,需要有兴趣的朋友去试试,不试怎么能提高自己呢?

 

下面是我们新的开发板,价格一般是3500多,增加功能另外算,很多环境我们已经帮客户搭建好。可以开%3的增值税发票,不过要另外加100元,免费保修一年(非人为破坏)。核心板价格要看采购的量,一般是几百块RMB,幻想200~300元的朋友不用加我的QQ,因为TI单颗DM6446的价格是不允许我们有这样的幻想,买别的公司产品而又没有洽谈生意和项目合作的朋友,也不要加本人的QQ,毕竟本人能力有限,只能给本工作室的客户服务,要对自己客户负责,请大家理解。联系方式:0755-83660725,QQ:601712635。MSN:zjb_integrated@hotmail.com。做嵌入式产品,没有一套开发板,是很难做出属于你自己的产品,包括算法,LINUX程序。研究生还停留在单片机时代,那是比较落伍的。

 

DM6446开发板介绍:

TY-DM6446-1000开发板基于TI TMS320DM6446AZWT双核处理器,它包括一个以ARM926EJS为核的ARM和一个以DSP C64+为核的DSP,工业级内存DDR2-667或DDR2-800,容量达到256M-BYTE,工业级NAND 128M-BYTE,采用目前流行的2K-page技术,可以同时开发基于达芬奇系列DSP图像算法应用程序和基于达芬奇系列ARM的应用程序,可运行多种音频、视频编解码算法,支持高像素JPEG格式编码,H.264、MPEG-4格式视频D1 编码标准,G711音频编解码算法,同时非常适合加入自己的算法,这一点是DM365-DM368做不到的。TVP5158可以采集4路当中任一路图像,即4路D1切换模式,还可以支持4-CIF同时采集四路图像,实际图像采集清晰度比TVP5146效果好。本开发板还支持美光MT9M112系列CMOS模组,特别适合:

3G视频方案;

安防设备方案;

多路IVS智能视频分析方案;

双目终端设备方案;

机器人方案;

机器视觉方案;

车载3G方案;

人脸识别方案;

车牌识别方案;

VOIP视频电话方案;

 

整套方案特别适合中小公司、算法公司开发自己的产品。我们工作室的目的就是帮助客户缩短底层开发时间,提供一个稳定的平台,让客户尽快开发出自己的产品。

 

图-1 开发板总体硬件结果图

1.1 底板硬件介绍:

◆板载4路模拟视频输入,支持PAL\NTSC制CCD摄像头输入;

◆板载1路CMOS影像传感器连接,比如美光MT9M112模组(可选);

◆板载1路CVBS视频输出接口;

◆板载1路10/100M自适应以太网口;

◆板载USB2.0 HOST接口(可接国内3家3G模块);

◆板载SD卡座,支持2G(SDHC 32G软件可选);

◆板载1路RS232(默认UART2);

◆板载1路RS485(默认UART1,可选配置成GPRS+SIM卡接口);

◆板载 实时时钟PCF8563;

◆板载 I2C加密芯片(可选);

◆板载1路光耦输出;

◆板载1路光耦输入;

◆板载4个独立GPIO引脚座子;

◆板载DSP-JTAG仿真器接口、BOOTMODE选择跳线、UART0 DEBUG;

◆板载2个可控LED;

◆板载1个按键;

◆板载1路音频输入(2路输入可选);

◆板载1路音频输出(2路输出可选);

◆供电要求:DC 12V 供电。

◆主板功耗:<5W

◆尺寸:158mm * 129mm

◆工作温度:商业级(0~70°)

◆相对湿度:5%到95%,非凝结

 

1.2 核心板介绍:

 

图-2 核心板正面

 

图-3 核心板背面

 

序号   资源          具体资源描述                             参数及作用说明

1        DM6446     TMS320DM6446AZWT          双核:ARM926EJS-300MHz,DSP(C64+)-600MHz

2        DDR2         DDR2-667(可选DDR2-800)     32bit总线,256M-byte

3        NAND         NAND FLASH                              1.8V,128M-byte,2K-page

                                                                            (支持JFFS2、SQUASHFS、YAFFS2)

4   3.3V电源                                                              由底板提供

5   1.8V电源                                                              由底板提供

6   1.2V电源                                                             DSP核心电压,由底板提供

10 图像采集     VPFE                                          CCD/CMOS接口,支持BT656(8~10-bit)接口,

                                                                           YCrCb 16-bit接口,行信号、场信号控制

11 USB        USB2.0                                                 可设置主从设备,默认为HOST

12 网口       EMAC+MDIO(10M/100M)                 芯片内集成EMAC和MDIO,

                                                                       外接一个PHY网口芯片就满足网络传输

13 UART串口 UART0,UART1,UART2                          同时支持3个UART接口

14 SD卡                                                                    TI提供的软件直接支持2G的SD卡

15 SPI                                                                        标准SPI接口

16 音频接口                                                              ASP接口可以直接接音频采集芯片

17 I2C接口                                                               1.8V的I2C接口

18 JTAG接口                                                            提供仿真器调试接口

19 BOOT MODE                                                      可以控制主芯片从NAND FLASH BOOT,

                                                                        NOR FLASH BOOT, UART BOOT等方式

20 GPIO        GPIO1,GPIO7,GPIO8,GPIO9, GPIO10,

                       GPIO11, GPIO12, GPIO13, GPIO14,

                        GPIO15, GPIO16, GPIO17, GPIO18,

                       GPIO19, GPIO21, GPIO24, GPIO25,

                       GPIO26, GPIO28, GPIO37, GPIO50,

                      GPIO52, GPIO53 

                                                                23个独立控制的GPIO(不是复用),可以做很多

                                                                            控制,GPIO脚也可以用作中断信号输入

21 复合视频输出 DAC_IOUT_A,DAC_IOUT_C     A和C口可以独立作为复合视频输出,直接接电视机;

                                                                         或者A和C口组合成S-VIDEO输出或Y/C输出

22   输出时钟   CLK_OUT0, CLK_OUT1                CLK_OUT0可输出13.5MHz或27MHz频率

                                                                             CLK_OUT1可输出12MHz或24MHz频率

23   功耗                                                                        低功耗,均为1.8V芯片

24   LOGO                                                                     可以加入客户的LOGO

25   板子颜色                                                               绿色,蓝色,红色均可选

26   板子尺寸                                                              75mm x 47mm

27   定位柱                                                            3个定位柱配合5个I/O插针座子,完全满足

                                                                                    车载设备这种工作在颠簸振动的环境

28   板厚                                                                      1.6mm

29   工作温度                                                               -20°——70°可选(-40°——80°)

30   相对湿度                                                              5%到95%,非凝结

 

         TY-DM6446-SYS-V0.3A核心板采用高精度工艺,低功耗芯片合理布局,使其具有最佳的电气性能和抗干扰性能。核心板解决了DAVINCI系统中最为复杂的高速布线问题,绝大部分的接口信号都引出到母座PIN上,提供完整的接口说明,底板公座PCB封装和电源设计电路,及公座座子配套,这些特点可以让客户随心所欲的设计自己的底板,容易衍生系列产品,降低硬件设计风险,更快推进项目进度。客户只需根据自己的系统的特殊性,设计相应的底板,及配套的软件即可。核心板目前已经批量出货给客户,工业级的IC适合国内绝大多数省份的环境。

 

软件资源工具介绍

 

◆ Davinci整套LINUX开发开发环境(含VM虚拟机文件,RedHat EL5,GCC交叉编译工具链和DVSDK_2_00_00_22,我们全部帮客户设置好);

◆ 源码包TI ubl(经过移植修改);

◆ 源码包TI u-boot-2009.03(经过移植修改,支持jffs2);

◆ 源码包linux-2.6.18_pro5.0.0 (经过移植修改):

           * 串口uart1、uart2驱动;

           * 视频tvp5158 单路D1采集驱动(4路切换驱动,4CIF采集可选);

           * 复合视频输出驱动;

           * 文件系统jffs2、squasfs3.4;

           * rtc8563驱动;

           * 音频tlv320aic3x驱动,支持MIC和LINE输入;

           * gpio驱动;

           * SD卡驱动(默认2G,可选SDHC 32G);

           * USB2.0 HOST驱动(完全支持国内3加3G模块);

           * CMOS设计美光MT9M112模组驱动(可选);

           * PHY网口驱动;

            * I2C加密芯片驱动(可选);

 

◆ 根文件系统:TI源 target和本工作室裁减的rootfs;

◆ dvsdk_2_00_00_22 整个开发环境(全部配置好,客户可以方便设计CODEC);

◆ Decode(h.264、mpeg4、g711)(音视频解码);

◆ Encode(h.264、mpeg4、g711)(音视频编码);

◆ Encodedecode(h.264、mpeg4)(视频编解码);

◆ jpegenc(jpeg编码);

◆ jpegdec(jpeg解码);

◆ thttp-2.25b(WEB网络服务);

◆ V4L2视频输入输出源码;

◆ Audio loopback源码;

◆ rtc8563 应用程序源码;

◆ gpio应用程序源码;

◆ UART1-rs485应用程序源码;

◆ UART2-rs232应用程序源码;

◆ TI的DSP开发环境CCS V3.3;

◆生产烧写ubl和uboot工具;

(注:该工具可以直接方便烧写ubl和运行uboot,根本不用昂贵的仿真器烧写ubl,并可以通过串口动态下载uboot进行软件调试!)

◆ VMware-workstation-6.5.2.exe;

◆ TI dvsdk_2_00_00_22相关软件安装包。

时间: 2024-10-31 01:18:32

Davinci DM6446开发攻略-UBOOT-2009.03移植2 nand flash的烧写的相关文章

Davinci DM6446开发攻略——u-boot-1.3.4移植(1)

UBOOT的版本更新速度比较快,截止今天,稳定正式的版本是u-boot-2009.11-rc2,而TI最新的EVM开发包里的UBOOT是1.2.0版本,国内很多公司还一直使用u-boot-1.1.4和u-boot-1.1.6.其实,我们也没必要追风跟上最新版本,程序跑稳定才是最重要的.当然,有兴趣研究研究也不错,毕竟最新版本增加很多实用的功能.在移植之前,我们简单介绍u-boot这些版本架构的变化.从u-boot-1.3.0到u-boot-1.3.2基本上架构是一样的,而从u-boot-1.3.

Davinci DM6446开发攻略——linux-2.6.18移植

 TI DAVINCI 使用最新的内核是montavista linux-2.6.18,之前说过,国内很多公司,包括开发板的软件包,一直在使用montavista linux-2.6.10,这个版本准确来说是比较低的,实时性肯定没2.6.18好(MontaVista Linux Professional Edition 5.0以linux-2.6.18为基础,打破了Linux不适用于实时和嵌入式应用的迷思):使用devfs,没有使用udev:对DM365等新出的DAVINCI芯片支持限度很小:u

Davinci DM6446开发攻略——LINUX GPIO驱动源码移植

一.             DM6446 GPIO的介绍      说到LINUX 驱动移植,没有移植过的朋友,或刚刚进入LINUX领域的朋友,最好去看看<LINUX 设备驱动程序>第三版,有个理论或感性的认识.该版本是基于2.6.10的基础上描述的,经典读物,网上有电子版,但是建议花几十元买本书是值得的.        GPIO是嵌入式系统最简单.最常用的资源了,比如点亮LED,控制蜂鸣器,输出高低电平,检测按键,等等.GPIO分输入和输出,在Montavista linux-2.6.18

TI Davinci DM6446开发攻略——根文件系统的裁剪和移植

一.补充文件系统知识 Linux根文件系统是存放tool软件.lib文件.script(脚本).配置文件.其他特殊文件.自己开发的应用程序的地方.嵌入式linux的根文件系统rootfs就像windows操作系统的C.D盘这种概念机制,FLASH对应硬盘.但linux是挂载点的概念,根文件系统是一个整体,组织到一个树状的目录结构中.这种文件组织遵守文件系统科学分类标准FHS,一种国际标准.运行.维护系统所必须的各种 在开发.测试阶段,基本上都是使用NFS(网络文件系统),NFS文件系统是在你的开

TI Davinci DM6446开发攻略——开发环境搭建

TI DAVINCI DM6446的开发环境搭建不像三星S3C2410,S3C2440,ATMEL的AT91SAM9260之类的单核ARM那么简单,因为DM6446还有DSP端的开发环境,以及双核之间的通信和程序编译等问题,所以开发攻略第一步就是要搭好开发环境.其实TI的EVM(TI 的开发板)也提供相关的EVM start guide(sprue66f.pdf),适合参考.         DAVINCI开发环境搭建基本上可分以下几步:         1) 准备好各种相关的windows,l

Davinci DM6446开发攻略——DSP开发工程建立

前段时间一直忙一个项目,同时在生活上时时提防和抵抗中国地沟油.国外核心转基因调和油.大豆油.色拉油.大米玉米.可怕的喂药鱼.药水泡农药喷无虫咬的青菜,所以没时间打理自己的博客,让开发攻略停顿了一段时间.还好,这个世界上还有很多善良和正义的人们,值得我们继续战斗下去. DAVINCI DSP的开发环境分两部分来讲,一是单核DSP运行的环境,二是和ARM建立相互通信DSP SERVER机制.本片先从简单的单核DSP运行环境说起,因为这个是基础的必须的东西,同时适合DM643X.DM644X平台.说到

TI Davinci DM6446开发攻略——UBL移植

 UBL的程序设计,相对UBOOT.KERNEL.ROOTFS.设备驱动.DSP开发来说,还是比较简单.我们先从DAVINCI的启动说起,了解UBL在DAVIN系统中的位置和作用.对于固件程序烧写在NAND FLASH 的Davinci dm644x嵌入式系统, 上电启动的过程如下:     RBL(ARM ROM Boot Loader)在芯片出厂的时候就已经烧写到ROM里了,这不需要大家关心,上电后,RBL会自动从EMIFA EM_CS2 memory space (0x0200 0000)

DAVINCI DM6446 开发攻略——V4L2视频驱动和应用分析

 针对DAVINCI DM6446平台,网络上也有很多网友写了V4L2的驱动,但只是解析Montavista linux-2.6.10 V4L2的原理.结构和函数,深度不够.本文决定把Montavista 的Linux-2.6.18 V4L2好好分析一下,顺便讲解在产品中的应用,满足一些客户提出要求,毕竟V4L2是LINUX一个很重要的视频驱动,适合很多嵌入式芯片平台.本文首先讲解DM6446 DAVINCI视频处理技术的硬件工作原理,然后讲解DM6446 V4L2采集驱动和输出驱动,然后对TI

《Android应用开发攻略》——1.15 程序:Android OS下的小费计算器Tipster

1.15 程序:Android OS下的小费计算器Tipster Sunit Katkar1.15.1 问题 当你和朋友前往饭店就餐并且希望计算各自的账单和小费时,可能陷入许多手动计算和分歧之中.你希望使用一个应用程序,简单地将小费比例加到总额上,并且按照就餐人数分配.Tipster就是Android中的一个实现,用它展示一个完整的应用程序.1.15.2 解决方案 这是一个简单的练习,使用Android中的基本GUI元素,然后用一些简单的计算和事件驱动UI代码将它们组合起来.将用到如下GUI组件