weiqi7777

cortex-a8裸机系列:第一章 九鼎开发板介绍

2
阅读(2873)

       之前,跟着朱有鹏大神,一起学习物联网。记录下了一些笔记。现在将这些笔记,整理发到博客。供大家参考。 大神,用的开发板,是九鼎的x210-v3开发板,因此我也是使用的这个开发板。如果大家想学习物联网的话,可以购买朱有鹏大神的视频,跟着学习。

 

1、  开发板信息

CPU 三星S5PV210,基于cortex-a8

内存:512M ddr2

FLASH 4GB  INAND

LCD屏:7存,带触摸

 

电源: 9V1.5A供电适配器

 

2、交叉编译器

arm-2009q3.tar.bz2:三星官方的编译器

 

3、  硬件手册

电源开关使用软按键,长按电源开关键才开启电源。使用电源芯片。

复位键用来给系统关机

 

4、  安装USB驱动

驱动在A\tools\USB驱动\x210_android_driver

 

5、  fastboot

命令

fastboot devices  查看当前连接的设备

fastboot flash xxx(分区)  xxx(文件)  烧录

fastboot reboot   用来重启系统

 

分区:

bootloader

kernel

ramdisk

config

system

cache

userdata

 

使用fastboot烧录android4.0.4镜像

fastboot flash bootloader android4.0.4/uboot.bin     uboot

fastboot flash kernel android4.0.4/zImage-android    linux kernel

fastboot flash system android40.4/x210.img         android rom

 

6、  DNW刷机

1、  开发板置于USB启动

2、  长按电源键不放,使用dnw下载x210_usb.bin。下载地址是0xd0020010,这部分代码是负责初始化dram

3、  使用dnw下载uboot.bin。下载地址是0x23e00000,下载完后,即可松开电源键。此时uboot就在dram中运行了。

4、  使用fdisk –c 0 进行重新分区

5、  使用fastboot进行刷机

DNW刷机下,使用的是串口0

 

7、  破坏系统

进入到linux系统中。执行以下的命令。

busybox dd if=/dev/zero of=/dev/block/mmcblk0 bs=512 seek=1 count=1 conv=sync

sync

 

qt系统。

busybox dd if=/dev/zero of=/dev/mmcblk0 bs=512 seek=1 count=1 conv=sync

sync

 

8、  linux下刷SDuboot

1、  window下的VMware USB Arbitration Service服务开启(参考http://blog.163.com/solylee@126/blog/static/171823157201138113230489/

2、  在虚拟机下,将SD卡设备连接到虚拟机

3、  uboot_sd_fusing文件夹拷贝到linux

4、  使用ls /dev/sd* 查看SD卡的设备名,一般是sdb

5、  使用./ nand_fusing.sh SD卡设备名,对SD卡进行刷uboot

 

9、  android2.0中不能使用fastboot

要先使用fdisk –c  0进行重新分区,就可以使用fastboot

 

 

10FLASH存储器

NANDFLASH

SLC:容量小,价格高,不易产生坏块,可以不用ECC校验

MLC:容量大,价格低,易产生坏块,但是要ECC校验。

 

eMMCembeded MMCMMC协会所订立的、主要是针对手机或平板电脑等产品的内嵌式存储器标准规格。eMMC的一个明显优势是在封装中集成了一个控制器,它提供标准接口并管理闪存,使得手机厂商就能专注于产品开发的其它部分,并缩短向市场推出产品的时间。这些特点对于希望通过缩小光刻尺寸和降低成本的NAND供应商来说,同样的重要。

 

  eMMCSD的接口是一样的。

 

iNand sandisk公司出产的eMMC

Movinand 是三星公司出产的eMMC

Onenand 是三星公司出产的一种nand

有两种类型,muxeddemuxed

对于muxed型,地址引脚和数据引脚结合在一起,而demuxed型芯片这两个引脚是分开的。当关注的是减少引脚数时,选择muxed OneNAND可能好一些。另外,muxed OneNAND只工作在1.8Vdemuxed的密度较低,不到1 Gbitdemuxed1.8V 3.3V两种选择。如果muxeddemuxed器件的密度超过1 Gbit,则只能选择1.8V的工作电压。

 

 

11、SD/MMC通道接口

S5PV210支持4SD/MMC通道,通道0和通道2依次用作启动通道使用。SD/MMC通道0用于连接板载MMC。外部启动时要使用SD/MMC通道2

 

以下是SD/MMC的地址空间

 

从芯片的存储地址分布,看出SD/MMC是属于SFRS区域的。

 

 

12、RAM

SRAM 静态内存,容量小,价格高,访问快,不需要软件初始化直接上电就能使用。

DRAM 动态内存,容量大,价格低,访问慢,上电后不能直接使用,需要软件初始化后才可以使用。

 

 

13

   PC 很小容量的BIOSnorflash + 很大容量的硬盘(类似于NANDFLASH + 大容量的DRAM

   一般的单片机 很小容量的NORFLASH + 很小容量的SRAM

   嵌入式系统 因为NORFLASH很贵,所以现在很多嵌入式系统不用NORFLASH,一般用外接的大容量NAND + 外接的大容量DRAM + SOC内置SRAM

 

14uboot命令下擦除inand

    movi 命令

movi write u-boot 0x30000000

把内存地址中0x30000000中的数据写入到inand中的uboot区域

 

 

另外一种方法,

mw  0x30000000   0x0  0x100000 将内存地址0x30000000开始的0x1000000大小擦除成0

movi  write u-boot 0x30000000   uboot分区的内容用内存地址0x30000000开始的数据擦除

 

15、通过usb下载,程序超过16KB怎么办

         通过USB下载最多也只能下载96KB大小的bin,如果bin大于96KB肯定SRAM放不下会出错。

         如果用SD卡驱动,那么mkv210_image.c决定了bin文件最大不能超过16kb

 

         两种解决办法:

第一、   USB下载时,先下载一个x210_usb.bin,然后再将裸机程序链接到0x23e00000,然后再修改dnw中下载地址,将裸机代码下载到0x23e00000运行。(这个时候不需要重定位了。因为程序已经在DRAM中运行了)

第二、   SD卡启动时,将整个裸机工程分为2部分,第一部分大小16KB以内,第二部分放剩下的(方在SD卡的后面的某个扇区开始的位置,比如放在第50个扇区开始的位置),然后再裸机代码中进行重定位(SD卡中重定位)。